UNPKG

react-native-ios-alarmkit

Version:
104 lines (103 loc) 3.56 kB
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;