TF-3082 Discard PublicAsset changes on browser back

This commit is contained in:
DatDang
2024-08-30 14:21:05 +07:00
committed by Dat H. Pham
parent 5be6e5b5cd
commit 1c6371cdb5
@@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:async/async.dart'; import 'package:async/async.dart';
import 'package:back_button_interceptor/back_button_interceptor.dart';
import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.dart'; import 'package:core/utils/app_logger.dart';
@@ -54,6 +55,8 @@ class PublicAssetController extends BaseController {
AccountId? get accountId => arguments?.accountId; AccountId? get accountId => arguments?.accountId;
Identity? get identity => arguments?.identity; Identity? get identity => arguments?.identity;
static const String _backButtonInterceptorName = 'PublicAssetControllerBackButtonInterceptor';
void _handleUploadState(Either<Failure, Success> uploadState) { void _handleUploadState(Either<Failure, Success> uploadState) {
log('PublicAssetController::handleUploadState::${uploadState.runtimeType}'); log('PublicAssetController::handleUploadState::${uploadState.runtimeType}');
uploadState.fold( uploadState.fold(
@@ -90,6 +93,10 @@ class PublicAssetController extends BaseController {
void onInit() { void onInit() {
super.onInit(); super.onInit();
_publicAssetStreamSubscription = _publicAssetStreamGroup.stream.listen(_handleUploadState); _publicAssetStreamSubscription = _publicAssetStreamGroup.stream.listen(_handleUploadState);
BackButtonInterceptor.add((_, __) {
discardChanges();
return false;
}, name: _backButtonInterceptorName);
} }
@override @override
@@ -98,6 +105,7 @@ class PublicAssetController extends BaseController {
newlyPickedPublicAssetIds.clear(); newlyPickedPublicAssetIds.clear();
_publicAssetStreamSubscription?.cancel(); _publicAssetStreamSubscription?.cancel();
_publicAssetStreamGroup.close(); _publicAssetStreamGroup.close();
BackButtonInterceptor.removeByName(_backButtonInterceptorName);
super.onClose(); super.onClose();
} }