fix(mobile): prevent upload intent replacement in splash screen and reset upload button when minimize app (#18914)

fix(mobile): prevent upload intent replacement in splash screen

- Added a check in the SplashScreenPage to ensure that the route is only replaced when it's not a share intent
- Added lifecycle event to reset the isUpload.value when minimize the app
This commit is contained in:
JobiJoba 2025-06-04 20:30:23 +07:00 committed by GitHub
parent 70b9a4c8f1
commit 1fb8861e35
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 17 additions and 1 deletions

View File

@ -72,7 +72,9 @@ class SplashScreenPageState extends ConsumerState<SplashScreenPage> {
return;
}
context.replaceRoute(const TabControllerRoute());
if (context.router.current.name != ShareIntentRoute.name) {
context.replaceRoute(const TabControllerRoute());
}
final hasPermission =
await ref.read(galleryPermissionNotifier.notifier).hasPermission;

View File

@ -7,6 +7,7 @@ import 'package:immich_mobile/extensions/build_context_extensions.dart';
import 'package:immich_mobile/models/upload/share_intent_attachment.model.dart';
import 'package:immich_mobile/pages/common/large_leading_tile.dart';
import 'package:immich_mobile/providers/asset_viewer/share_intent_upload.provider.dart';
import 'package:immich_mobile/routing/router.dart';
import 'package:immich_mobile/utils/url_helper.dart';
@RoutePage()
@ -20,6 +21,11 @@ class ShareIntentPage extends HookConsumerWidget {
final currentEndpoint = getServerUrl() ?? '--';
final candidates = ref.watch(shareIntentUploadProvider);
final isUploaded = useState(false);
useOnAppLifecycleStateChange((previous, current) {
if (current == AppLifecycleState.resumed) {
isUploaded.value = false;
}
});
void removeAttachment(ShareIntentAttachment attachment) {
ref.read(shareIntentUploadProvider.notifier).removeAttachment(attachment);
@ -66,6 +72,14 @@ class ShareIntentPage extends HookConsumerWidget {
),
],
),
leading: IconButton(
onPressed: () {
context.navigateTo(
const TabControllerRoute(),
);
},
icon: const Icon(Icons.arrow_back),
),
),
body: ListView.builder(
itemCount: attachments.length,