@ammarahmed/notifee-react-native
Version:
Notifee - a feature rich notifications library for React Native.
55 lines (43 loc) • 1.45 kB
text/typescript
/*
* Copyright (c) 2016-present Invertase Limited
*/
import { objectHasProperty, isObject, isString, isUndefined } from '../utils';
import { AndroidAction } from '../types/NotificationAndroid';
import validateAndroidPressAction from './validateAndroidPressAction';
import validateAndroidInput from './validateAndroidInput';
export default function validateAndroidAction(action: AndroidAction): AndroidAction {
if (!isObject(action)) {
throw new Error("'action' expected an object value.");
}
if (!isString(action.title) || !action.title) {
throw new Error("'action.title' expected a string value.");
}
let pressAction;
try {
pressAction = validateAndroidPressAction(action.pressAction);
} catch (e: any) {
throw new Error(`'action' ${e.message}.`);
}
const out: AndroidAction = {
title: action.title,
pressAction,
};
if (objectHasProperty(action, 'icon') && !isUndefined(action.icon)) {
if (!isString(action.icon) || !action.icon) {
throw new Error("'action.icon' expected a string value.");
}
out.icon = action.icon;
}
if (objectHasProperty(action, 'input') && !isUndefined(action.input)) {
if (action.input === true) {
out.input = validateAndroidInput();
} else {
try {
out.input = validateAndroidInput(action.input);
} catch (e: any) {
throw new Error(`'action.input' ${e.message}.`);
}
}
}
return out;
}