@notifee/react-native
Version:
Notifee - a feature rich notifications library for React Native.
104 lines • 3.67 kB
JavaScript
;
/*
* Copyright (c) 2016-present Invertase Limited
*/
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../utils");
const Trigger_1 = require("../types/Trigger");
const MINIMUM_INTERVAL = 15;
function isMinimumInterval(interval, timeUnit) {
switch (timeUnit) {
case Trigger_1.TimeUnit.SECONDS:
return interval / 60 >= MINIMUM_INTERVAL;
case Trigger_1.TimeUnit.MINUTES:
return interval >= MINIMUM_INTERVAL;
case Trigger_1.TimeUnit.HOURS:
return interval >= 1;
case Trigger_1.TimeUnit.DAYS:
return interval >= 1;
}
return true;
}
function validateTrigger(trigger) {
if (!utils_1.isObject(trigger)) {
throw new Error("'trigger' expected an object value.");
}
switch (trigger.type) {
case Trigger_1.TriggerType.TIMESTAMP:
return validateTimestampTrigger(trigger);
case Trigger_1.TriggerType.INTERVAL:
return validateIntervalTrigger(trigger);
default:
throw new Error('Unknown trigger type');
}
}
exports.default = validateTrigger;
function validateTimestampTrigger(trigger) {
if (!utils_1.isNumber(trigger.timestamp)) {
throw new Error("'trigger.timestamp' expected a number value.");
}
const now = Date.now();
if (trigger.timestamp <= now) {
throw new Error("'trigger.timestamp' date must be in the future.");
}
const out = {
type: trigger.type,
timestamp: trigger.timestamp,
repeatFrequency: -1,
};
if (utils_1.objectHasProperty(trigger, 'repeatFrequency') && !utils_1.isUndefined(trigger.repeatFrequency)) {
if (!utils_1.isValidEnum(trigger.repeatFrequency, Trigger_1.RepeatFrequency)) {
throw new Error("'trigger.repeatFrequency' expected a RepeatFrequency value.");
}
out.repeatFrequency = trigger.repeatFrequency;
}
if (utils_1.objectHasProperty(trigger, 'alarmManager') && !utils_1.isUndefined(trigger.alarmManager)) {
if (utils_1.isBoolean(trigger.alarmManager)) {
if (trigger.alarmManager) {
out.alarmManager = validateTimestampAlarmManager();
}
}
else {
try {
out.alarmManager = validateTimestampAlarmManager(trigger.alarmManager);
}
catch (e) {
throw new Error(`'trigger.alarmManager' ${e.message}.`);
}
}
}
return out;
}
function validateTimestampAlarmManager(alarmManager) {
const out = {
allowWhileIdle: false,
};
if (!alarmManager) {
return out;
}
if (utils_1.isBoolean(alarmManager.allowWhileIdle) && alarmManager.allowWhileIdle) {
out.allowWhileIdle = true;
}
return out;
}
function validateIntervalTrigger(trigger) {
if (!utils_1.isNumber(trigger.interval)) {
throw new Error("'trigger.interval' expected a number value.");
}
const out = {
type: trigger.type,
interval: trigger.interval,
timeUnit: Trigger_1.TimeUnit.SECONDS,
};
if (utils_1.objectHasProperty(trigger, 'timeUnit') && !utils_1.isUndefined(trigger.timeUnit)) {
if (!utils_1.isValidEnum(trigger.timeUnit, Trigger_1.TimeUnit)) {
throw new Error("'trigger.timeUnit' expected a TimeUnit value.");
}
out.timeUnit = trigger.timeUnit;
}
if (!isMinimumInterval(trigger.interval, out.timeUnit)) {
throw new Error("'trigger.interval' expected to be at least 15 minutes.");
}
return out;
}
//# sourceMappingURL=validateTrigger.js.map