Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | 4x 2x 2x 2x 2x 2x 2x 2x 2x 2x | import {
AuthorizationStatus,
hasPermission as messagingHasPermission,
requestPermission as messagingRequestPermission,
} from '@react-native-firebase/messaging';
import notifee from '@notifee/react-native';
import { isAndroid, isIOS } from '@repo/utils/platform';
export { isIOS, isAndroid };
import type { FirebaseMessagingTypes } from '@react-native-firebase/messaging';
import type { PermissionStatus } from './types';
// Check current status
export async function checkPermissionStatus(
messaging: FirebaseMessagingTypes.Module,
): Promise<PermissionStatus> {
if (isIOS()) {
const authStatus = await messagingHasPermission(messaging);
const authorized =
authStatus === AuthorizationStatus.AUTHORIZED ||
authStatus === AuthorizationStatus.PROVISIONAL;
return {
authorized,
status: AuthorizationStatus[authStatus] || 'UNKNOWN',
};
}
const settings = await notifee.getNotificationSettings();
return {
authorized: settings.authorizationStatus >= 1,
status: settings.authorizationStatus.toString(),
};
}
// Request iOS permissions
export async function requestIOSPermission(
messaging: FirebaseMessagingTypes.Module,
): Promise<boolean> {
const authStatus = await messagingRequestPermission(messaging, {
alert: true,
badge: true,
sound: true,
provisional: false,
announcement: false,
});
return (
authStatus === AuthorizationStatus.AUTHORIZED || authStatus === AuthorizationStatus.PROVISIONAL
);
}
// Request Android permissions
export async function requestAndroidPermission(): Promise<boolean> {
const settings = await notifee.requestPermission();
return settings.authorizationStatus >= 1;
}
|