UNPKG

ng-cordova

Version:

[ngCordova](http://ngcordova.com/) ==========

148 lines (127 loc) 4.99 kB
// install : cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-3dtouch.git // link : https://github.com/EddyVerbruggen/cordova-plugin-3dtouch angular.module('ngCordova.plugins.3dtouch', []) .factory('$cordova3DTouch', ['$q', function($q) { var quickActions = []; var quickActionHandler = {}; var createQuickActionHandler = function(quickActionHandler) { return function (payload) { for (var key in quickActionHandler) { if (payload.type === key) { quickActionHandler[key](); } } }; }; return { /* * Checks if Cordova 3D touch is present and loaded * * @return promise */ isAvailable: function () { var deferred = $q.defer(); if (!window.cordova) { deferred.reject('Not supported in browser'); } else { if (!window.ThreeDeeTouch) { deferred.reject('Could not find 3D touch plugin'); } else { window.ThreeDeeTouch.isAvailable(function (value) { deferred.resolve(value); }, function (err) { deferred.reject(err); }); } } return deferred.promise; }, /* * Add a quick action to menu * * @param string type * @param string title * @param string iconType (optional) * @param string subtitle (optional) * @param function callback (optional) * @return promise */ addQuickAction: function(type, title, iconType, iconTemplate, subtitle, callback) { var deferred = $q.defer(); var quickAction = { type: type, title: title, subtitle: subtitle }; if (iconType) { quickAction.iconType = iconType; } if (iconTemplate) { quickAction.iconTemplate = iconTemplate; } this.isAvailable().then(function() { quickActions.push(quickAction); quickActionHandler[type] = callback; window.ThreeDeeTouch.configureQuickActions(quickActions); window.ThreeDeeTouch.onHomeIconPressed = createQuickActionHandler(quickActionHandler); deferred.resolve(quickActions); }, function(err) { deferred.reject(err); }); return deferred.promise; }, /* * Add a quick action handler. Used for static quick actions * * @param string type * @param function callback * @return promise */ addQuickActionHandler: function(type, callback) { var deferred = $q.defer(); this.isAvailable().then(function() { quickActionHandler[type] = callback; window.ThreeDeeTouch.onHomeIconPressed = createQuickActionHandler(quickActionHandler); deferred.resolve(true); }, function(err) { deferred.reject(err); }); return deferred.promise; }, /* * Enable link preview popup when force touch is appled to link elements * * @return bool */ enableLinkPreview: function() { var deferred = $q.defer(); this.isAvailable().then(function() { window.ThreeDeeTouch.enableLinkPreview(); deferred.resolve(true); }, function(err) { deferred.reject(err); }); return deferred.promise; }, /* * Add a hanlder function for force touch events, * * @param function callback * @return promise */ addForceTouchHandler: function(callback) { var deferred = $q.defer(); this.isAvailable().then(function() { window.ThreeDeeTouch.watchForceTouches(callback); deferred.resolve(true); }, function(err) { deferred.reject(err); }); return deferred.promise; } }; }]);