react-native-ios-alarmkit
Version:
React Native wrapper for iOS AlarmKit framework
104 lines (103 loc) • 3.56 kB
JavaScript
import { AlarmKitManager } from './AlarmKitManager';
const createDefaultButton = (text, color, icon) => ({
text,
textColor: color,
systemImageName: icon,
});
export const AlarmKit = {
get isSupported() {
return AlarmKitManager.shared.isSupported;
},
async getAuthorizationState() {
return AlarmKitManager.shared.getAuthorizationState();
},
async requestAuthorization() {
return AlarmKitManager.shared.requestAuthorization();
},
async scheduleTimer(id, config) {
const stopButton = createDefaultButton('Stop', '#FFFFFF', 'stop.circle');
const secondaryButton = config.snoozeEnabled
? createDefaultButton('Snooze', '#FFFFFF', 'zzz')
: undefined;
return AlarmKitManager.shared.scheduleOrReschedule(id, {
countdownDuration: {
preAlert: config.duration,
postAlert: config.snoozeDuration || 300,
},
presentation: {
alert: {
title: config.title,
stopButton,
secondaryButton,
secondaryButtonBehavior: config.snoozeEnabled
? 'countdown'
: undefined,
},
countdown: {
title: 'Time Remaining',
},
},
tintColor: config.tintColor,
soundName: config.sound,
});
},
async scheduleAlarm(id, config) {
const stopButton = createDefaultButton('Stop', '#FFFFFF', 'stop.circle');
const secondaryButton = config.snoozeEnabled
? createDefaultButton('Snooze', '#FFFFFF', 'zzz')
: undefined;
return AlarmKitManager.shared.scheduleOrReschedule(id, {
countdownDuration: {
preAlert: 0,
postAlert: config.snoozeEnabled ? config.snoozeDuration || 0 : 0,
},
schedule: {
type: 'relative',
hour: config.hour,
minute: config.minute,
weekdays: config.weekdays,
},
presentation: {
alert: {
title: config.title,
stopButton,
secondaryButton,
secondaryButtonBehavior: config.snoozeEnabled
? 'countdown'
: undefined,
},
},
tintColor: config.tintColor,
soundName: config.sound,
});
},
async cancel(id) {
return AlarmKitManager.shared.cancel(id);
},
async stop(id) {
return AlarmKitManager.shared.stop(id);
},
async pause(id) {
return AlarmKitManager.shared.pause(id);
},
async resume(id) {
return AlarmKitManager.shared.resume(id);
},
async countdown(id) {
return AlarmKitManager.shared.countdown(id);
},
async getAlarms() {
return AlarmKitManager.shared.getAlarms();
},
addAlarmsListener(callback) {
return AlarmKitManager.shared.addAlarmUpdatesListener(callback);
},
addAuthorizationListener(callback) {
return AlarmKitManager.shared.addAuthorizationUpdatesListener(callback);
},
};
export { AlarmKitManager } from './AlarmKitManager';
export { AlarmConfigurationFactory } from './AlarmConfiguration';
export { useAlarms, useAuthorizationState, } from './hooks';
export * from './types';
export default AlarmKit;