UNPKG

rn-quick-actions

Version:

iOS Home screen Quick Actions & Android App Shortcuts for react-native

122 lines (95 loc) 4.38 kB
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } import { NativeModules, NativeEventEmitter, Platform } from 'react-native'; /** * Maps a ShortcutItem to ShortcutItemIOS by converting id to type */ export const mapToIOSShortcut = item => { const { id } = item, rest = _objectWithoutProperties(item, ["id"]); return _objectSpread(_objectSpread({}, rest), {}, { type: id }); }; /** * Maps a ShortcutItemIOS to ShortcutItem by converting type to id */ export const mapFromIOSShortcut = item => { const { type } = item, rest = _objectWithoutProperties(item, ["type"]); return _objectSpread(_objectSpread({}, rest), {}, { id: type }); }; const { RNShortcuts } = NativeModules; const ShortcutsEmitter = new NativeEventEmitter(RNShortcuts); class Shortcuts { /** * Set the shortcut items. * @returns a promise with the items that were set */ setShortcuts(items) { if (Platform.OS === 'ios') { const iosItems = items.map(mapToIOSShortcut); return RNShortcuts.setShortcuts(iosItems).then(result => result.map(mapFromIOSShortcut)); } return RNShortcuts.setShortcuts(items); } /** * Add the shortcut item. * @returns a promise with boolean */ addShortcut(shortcutItem) { if (Platform.OS === 'ios') { const iosItem = mapToIOSShortcut(shortcutItem); return RNShortcuts.addShortcut(iosItem); } return RNShortcuts.addShortcut(shortcutItem); } /** * @returns a promise with the items that were set */ getShortcuts() { if (Platform.OS === 'ios') { return RNShortcuts.getShortcuts().then(result => result.map(mapFromIOSShortcut)); } return RNShortcuts.getShortcuts(); } /** * Removes all the shortcut items */ clearShortcuts() { return RNShortcuts.clearShortcuts(); } /** * Gets the initial shortcut the app was launched with */ getInitialShortcut() { if (Platform.OS === 'ios') { return RNShortcuts.getInitialShortcut().then(result => result ? mapFromIOSShortcut(result) : null); } return RNShortcuts.getInitialShortcut(); } /** * Listens for new shortcut events */ onShortcutPressed(handler) { if (Platform.OS === 'ios') { return ShortcutsEmitter.addListener('onShortcutItemPressed', shortcut => { handler(mapFromIOSShortcut(shortcut)); }); } return ShortcutsEmitter.addListener('onShortcutItemPressed', handler); } } export default new Shortcuts(); //# sourceMappingURL=index.js.map