UNPKG

nativescript-app-shortcuts

Version:
96 lines 3.86 kB
import { Application, Utils } from "@nativescript/core"; const iOSApplication = Application.ios; const iOSUtils = Utils.ios; let quickActionCallback = null; let lastQuickAction = null; const callback = (application, shortcutItem, completionHandler) => { if (quickActionCallback !== null) { quickActionCallback(shortcutItem); } else { lastQuickAction = shortcutItem; } }; var AppShortcutsUIApplicationDelegate = /** @class */ (function (_super) { __extends(AppShortcutsUIApplicationDelegate, _super); function AppShortcutsUIApplicationDelegate() { return _super !== null && _super.apply(this, arguments) || this; } AppShortcutsUIApplicationDelegate.prototype.applicationPerformActionForShortcutItemCompletionHandler = function (application, shortcutItem, completionHandler) { callback(application, shortcutItem, completionHandler); }; AppShortcutsUIApplicationDelegate.ObjCProtocols = [UIApplicationDelegate]; return AppShortcutsUIApplicationDelegate; }(UIResponder)); (() => { if (iOSApplication.delegate !== undefined) { iOSApplication.delegate.prototype.applicationPerformActionForShortcutItemCompletionHandler = callback; } else { iOSApplication.delegate = AppShortcutsUIApplicationDelegate; } })(); export class AppShortcuts { constructor() { this.availability = null; } available() { return new Promise((resolve, reject) => { if (this.availability !== null) { resolve(this.availability); return; } if (iOSUtils.MajorVersion >= 13) { resolve(true); return; } if (iOSUtils.MajorVersion >= 9) { if (iOSApplication.nativeApp.keyWindow === null) { setTimeout(() => { this.availability = 2 === iOSApplication.nativeApp.keyWindow.rootViewController.traitCollection.forceTouchCapability; resolve(this.availability); }); } else { this.availability = 2 === iOSApplication.nativeApp.keyWindow.rootViewController.traitCollection.forceTouchCapability; resolve(this.availability); } } else { this.availability = false; resolve(this.availability); } }); } setQuickActionCallback(callback) { quickActionCallback = callback; if (lastQuickAction !== null) { quickActionCallback(lastQuickAction); lastQuickAction = null; } } configureQuickActions(actions) { return new Promise((resolve, reject) => { this.available().then(avail => { if (!avail) { reject("3D Touch not available"); return; } const items = []; actions.map(action => { let uiApplicationShortcutIcon = null; if (action.iconType) { uiApplicationShortcutIcon = UIApplicationShortcutIcon.iconWithType(action.iconType); } else if (action.iconTemplate) { uiApplicationShortcutIcon = UIApplicationShortcutIcon.iconWithTemplateImageName(action.iconTemplate); } items.push(UIApplicationShortcutItem.alloc().initWithTypeLocalizedTitleLocalizedSubtitleIconUserInfo(action.type, action.title, action.subtitle, uiApplicationShortcutIcon, null)); }); iOSApplication.nativeApp.shortcutItems = items; resolve(); }); }); } } //# sourceMappingURL=app-shortcuts.ios.js.map