Files
mattermost-mobile/app/notifications/index.ts
2020-11-17 14:20:58 -03:00

41 lines
1.5 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {NativeModules, PermissionsAndroid} from 'react-native';
const {NotificationPreferences} = NativeModules;
const defaultPreferences: NativeNotificationPreferences = {
sounds: [],
shouldBlink: false,
shouldVibrate: true,
};
export default {
getDeliveredNotifications: NotificationPreferences.getDeliveredNotifications,
getPreferences: async () => {
try {
const hasPermission = await PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE);
let granted;
if (!hasPermission) {
granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
);
}
if (hasPermission || granted === PermissionsAndroid.RESULTS.GRANTED) {
return await NotificationPreferences.getPreferences();
}
return defaultPreferences;
} catch (error) {
return defaultPreferences;
}
},
play: NotificationPreferences.previewSound,
removeDeliveredNotifications: NotificationPreferences.removeDeliveredNotifications,
setNotificationSound: NotificationPreferences.setNotificationSound,
setShouldBlink: NotificationPreferences.setShouldBlink,
setShouldVibrate: NotificationPreferences.setShouldVibrate,
} as NativeNotification;