UNPKG

angular-pixlive

Version:

Plugin to use PixLive Augmented Reality toolkit the Angular way

75 lines (63 loc) 2.73 kB
/* * angular-pixlive v1 * (c) 2015-2016 Vidinoti https://vidinoti.com * License: MIT * * Remote Controller * */ 'use strict'; pixliveModule /** * @memberof pixlive * @ngdoc service * @name PxlRemoteController * @param {service} $ionicPlatform The Ionic Platform helper * @param {service} $q Angular promise service * @param {service} PxlEventService PixLive SDK Event service * @description * Manage and trigger PixLive Maker content synchronization with the app. */ .factory('PxlRemoteController', [ '$ionicPlatform', '$q', 'PxlEventService', function PxlRemoteController($ionicPlatform, $q, PxlEventService) { /*private*/ /*public*/ return { /** * Start an asynchronous content synchronization with PixLive Maker backend * * **Warning**: Only one synchronization can be started at a time. * * @memberof PxlRemoteController * @param {string[]} tags The array of tags to start the synchronization with. Pass an empty array for synchronizing your app with all the available content. * @returns {Promise} The Angular promise that can be used for checking asynchronously the result of the call. */ synchronize: function(tags) { var deferred = $q.defer(); var callbackListener = function(event) { deferred.notify(event.progress*100); }; //Register progress listener PxlEventService.addListener('syncProgress',callbackListener); $ionicPlatform.ready(function () { if(window.cordova && window.cordova.plugins && window.cordova.plugins.PixLive) { window.cordova.plugins.PixLive.synchronize(tags, function(contexts) { PxlEventService.removeListener('syncProgress',callbackListener); deferred.resolve(contexts); }, function(reason) { PxlEventService.removeListener('syncProgress',callbackListener); deferred.reject(reason); }); } else { PxlEventService.removeListener('syncProgress',callbackListener); deferred.resolve([]); } }); return deferred.promise; } }; } ]);