mirror of
https://github.com/immich-app/immich.git
synced 2026-05-21 07:06:31 -04:00
aeaf846482
cleanup unused store keys Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
57 lines
2.2 KiB
Dart
57 lines
2.2 KiB
Dart
import 'package:easy_localization/easy_localization.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
|
import 'package:immich_mobile/providers/notification_permission.provider.dart';
|
|
import 'package:immich_mobile/widgets/settings/settings_button_list_tile.dart';
|
|
import 'package:immich_mobile/widgets/settings/settings_sub_page_scaffold.dart';
|
|
import 'package:permission_handler/permission_handler.dart';
|
|
|
|
class NotificationSetting extends HookConsumerWidget {
|
|
const NotificationSetting({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final permissionService = ref.watch(notificationPermissionProvider);
|
|
final hasPermission = permissionService == PermissionStatus.granted;
|
|
|
|
openAppNotificationSettings(BuildContext ctx) {
|
|
ctx.pop();
|
|
openAppSettings();
|
|
}
|
|
|
|
// When permissions are permanently denied, you need to go to settings to
|
|
// allow them
|
|
showPermissionsDialog() {
|
|
showDialog(
|
|
context: context,
|
|
builder: (ctx) => AlertDialog(
|
|
content: const Text('notification_permission_dialog_content').tr(),
|
|
actions: [
|
|
TextButton(child: const Text('cancel').tr(), onPressed: () => ctx.pop()),
|
|
TextButton(onPressed: () => openAppNotificationSettings(ctx), child: const Text('settings').tr()),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
final notificationSettings = [
|
|
if (!hasPermission)
|
|
SettingsButtonListTile(
|
|
icon: Icons.notifications_outlined,
|
|
title: 'notification_permission_list_tile_title'.tr(),
|
|
subtileText: 'notification_permission_list_tile_content'.tr(),
|
|
buttonText: 'notification_permission_list_tile_enable_button'.tr(),
|
|
onButtonTap: () =>
|
|
ref.watch(notificationPermissionProvider.notifier).requestNotificationPermission().then((permission) {
|
|
if (permission == PermissionStatus.permanentlyDenied) {
|
|
showPermissionsDialog();
|
|
}
|
|
}),
|
|
),
|
|
];
|
|
|
|
return SettingsSubPageScaffold(settings: notificationSettings);
|
|
}
|
|
}
|