nativescript-app-shortcuts
Version:
Add shortcut actions to your app icon.
96 lines • 3.86 kB
JavaScript
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