TF-2877 Create notification data source & repo

This commit is contained in:
DatDang
2024-06-04 10:02:19 +07:00
committed by Dat H. Pham
parent 2652a99e0e
commit b89820618c
16 changed files with 550 additions and 2 deletions
@@ -0,0 +1,28 @@
import 'package:permission_handler/permission_handler.dart';
import 'package:tmail_ui_user/features/base/isolate/background_isolate_binary_messenger/background_isolate_binary_messenger_mobile.dart';
import 'package:tmail_ui_user/main/permissions/permission_service.dart';
class NotificationPermissionService extends PermissionService {
Future<bool> checkGroupPermissionByGroupId(String groupId) async {
if (groupId.isEmpty) {
return false;
}
const methodChannel = MethodChannel('com.linagora.android.teammail.notification.group.permission');
const methodName = 'getNotificationGroupPermission';
final invokeResult = await methodChannel.invokeMethod<bool>(
methodName,
groupId);
return invokeResult ?? false;
}
Future<bool> checkNotificationPermissionEnabled(String groupId) async {
final permissionGranted = await isGranted(Permission.notification);
if (!permissionGranted) {
return false;
}
return await checkGroupPermissionByGroupId(groupId);
}
}
@@ -0,0 +1,17 @@
import 'package:permission_handler/permission_handler.dart';
class PermissionService {
Future<bool> isGranted(Permission permission) async {
final current = await permission.status;
switch (current) {
case PermissionStatus.granted:
return true;
case PermissionStatus.denied:
final requestResult = await permission.request();
final permissionGranted = requestResult == PermissionStatus.granted;
return permissionGranted;
default:
return false;
}
}
}