This commit is contained in:
2025-05-25 15:21:57 +03:00
parent e2f91225d4
commit 5c0a959b62
4 changed files with 8 additions and 5 deletions

View File

@@ -11,6 +11,7 @@ class SnapshotHelper {
T? data = snapshot.data; T? data = snapshot.data;
T? previousData = lastFetchedData; T? previousData = lastFetchedData;
dynamic error = snapshot.error; dynamic error = snapshot.error;
StackTrace? errorST = snapshot.stackTrace;
dynamic previousError = lastError; dynamic previousError = lastError;
// //
bool hasError = error != null && snapshot.hasError; bool hasError = error != null && snapshot.hasError;
@@ -83,7 +84,7 @@ class SnapshotHelper {
} else { } else {
//S2 -- Done loading but there is NO data! (errored) //S2 -- Done loading but there is NO data! (errored)
rState = AstromicPresenterState.error; rState = AstromicPresenterState.error;
rModel = PresenterFailureReturnModel<T>(error: error, initialData: previousData, oldBatchId: oldBatchId, batchId: currentBatchId); rModel = PresenterFailureReturnModel<T>(error: error, errorST: errorST, initialData: previousData, oldBatchId: oldBatchId, batchId: currentBatchId);
} }
} }
// //

View File

@@ -4,19 +4,21 @@ class PresenterReturnModel<T> {
final T? initialData; // The old data if exists final T? initialData; // The old data if exists
final T? data; // New data if exists final T? data; // New data if exists
final dynamic error; // Errors if exists final dynamic error; // Errors if exists
final StackTrace? errorST; // StackTrace for that error.
PresenterReturnModel({ PresenterReturnModel({
required this.batchId, required this.batchId,
this.oldBatchId, this.oldBatchId,
this.error, this.error,
this.data, this.data,
this.initialData, this.initialData,
this.errorST,
}); });
} }
class PresenterSuccessReturnModel<T> extends PresenterReturnModel<T> { class PresenterSuccessReturnModel<T> extends PresenterReturnModel<T> {
PresenterSuccessReturnModel({super.initialData, super.data, super.error, required super.batchId, super.oldBatchId}); PresenterSuccessReturnModel({super.initialData, super.data, super.error, super.errorST, required super.batchId, super.oldBatchId});
} }
class PresenterFailureReturnModel<T> extends PresenterReturnModel<T> { class PresenterFailureReturnModel<T> extends PresenterReturnModel<T> {
PresenterFailureReturnModel({super.initialData, super.data, super.error, required super.batchId, super.oldBatchId}); PresenterFailureReturnModel({super.initialData, super.data, super.error, super.errorST, required super.batchId, super.oldBatchId});
} }

View File

@@ -172,7 +172,7 @@ class _AstromicFuturePresenterState<T> extends State<AstromicFuturePresenter<T>>
} }
// //
if (returnedState == AstromicPresenterState.error && returnedModel?.error != null) { if (returnedState == AstromicPresenterState.error && returnedModel?.error != null) {
log('Got this error in the future presenter `${widget.id}`: ${returnedModel?.error}'); log('Got this error in the future presenter `${widget.id}`', error: returnedModel?.error, stackTrace: returnedModel?.errorST);
} }
// //
return widget.stateBuilder != null return widget.stateBuilder != null

View File

@@ -167,7 +167,7 @@ class _AstromicStreamPresenterState<T> extends State<AstromicStreamPresenter<T>>
} }
// //
if (returnedState == AstromicPresenterState.error && returnedModel?.error != null) { if (returnedState == AstromicPresenterState.error && returnedModel?.error != null) {
log('Got this error in the stream presenter `${widget.id}`: ${returnedModel?.error}'); log('Got this error in the stream presenter `${widget.id}`', error: returnedModel?.error, stackTrace: returnedModel?.errorST);
} }
// //
return widget.stateBuilder != null return widget.stateBuilder != null