updated JavaScript utils file to include new methods.
created a unified flow to be an example.
This commit is contained in:
1 parent
63703b966e
commit
61e04723f3
4 files changed
+232
-51
No files matched your search
+105
-43
@@ -1,11 +1,21 @@
|
||||
'use strict';
|
||||
|
||||
var exec = require('cordova/exec');
|
||||
|
||||
var SERVICE = 'BluememeUtils';
|
||||
var eventHandlers = {};
|
||||
var EVENT_PREFIX = 'bluememeutils.';
|
||||
var eventHandlers = Object.create(null);
|
||||
|
||||
function noop() {}
|
||||
|
||||
function isFunction(value) {
|
||||
return typeof value === 'function';
|
||||
}
|
||||
|
||||
function callbackOrNoop(callback) {
|
||||
return isFunction(callback) ? callback : noop;
|
||||
}
|
||||
|
||||
function asWifiOptions(input) {
|
||||
if (typeof input === 'string') {
|
||||
return { ssid: input };
|
||||
@@ -14,11 +24,35 @@ function asWifiOptions(input) {
|
||||
}
|
||||
|
||||
function call(action, args, success, error) {
|
||||
exec(success || noop, error || noop, SERVICE, action, args || []);
|
||||
exec(callbackOrNoop(success), callbackOrNoop(error), SERVICE, action, args || []);
|
||||
}
|
||||
|
||||
function noArgs(action) {
|
||||
return function (success, error) {
|
||||
call(action, [], success, error);
|
||||
};
|
||||
}
|
||||
|
||||
function oneArg(action, normalize) {
|
||||
return function (value, success, error) {
|
||||
call(action, [normalize ? normalize(value) : value], success, error);
|
||||
};
|
||||
}
|
||||
|
||||
function isPermissionGranted(permission) {
|
||||
return !!permission && (permission.enabled === true || permission.granted === true);
|
||||
}
|
||||
|
||||
function permissionError(type, permission) {
|
||||
return {
|
||||
code: 'PERMISSION_REQUIRED',
|
||||
message: type + ' permission is required.',
|
||||
permission: permission || null
|
||||
};
|
||||
}
|
||||
|
||||
function createCustomEvent(name, detail) {
|
||||
var eventName = 'bluememeutils.' + name;
|
||||
var eventName = EVENT_PREFIX + name;
|
||||
|
||||
if (typeof window.CustomEvent === 'function') {
|
||||
return new window.CustomEvent(eventName, { detail: detail });
|
||||
@@ -36,7 +70,13 @@ function dispatchLocalEvent(event) {
|
||||
|
||||
var handlers = eventHandlers[event.type] || [];
|
||||
handlers.slice().forEach(function (handler) {
|
||||
handler(event);
|
||||
try {
|
||||
handler(event);
|
||||
} catch (ex) {
|
||||
setTimeout(function () {
|
||||
throw ex;
|
||||
}, 0);
|
||||
}
|
||||
});
|
||||
|
||||
if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function') {
|
||||
@@ -44,50 +84,70 @@ function dispatchLocalEvent(event) {
|
||||
}
|
||||
}
|
||||
|
||||
function ensurePushPermission(success, error) {
|
||||
var onSuccess = callbackOrNoop(success);
|
||||
var onError = callbackOrNoop(error);
|
||||
|
||||
api.getPushPermissionStatus(function (status) {
|
||||
if (isPermissionGranted(status)) {
|
||||
onSuccess(status);
|
||||
return;
|
||||
}
|
||||
|
||||
api.requestPushPermission(function () {
|
||||
api.getPushPermissionStatus(function (updatedStatus) {
|
||||
if (isPermissionGranted(updatedStatus)) {
|
||||
onSuccess(updatedStatus);
|
||||
return;
|
||||
}
|
||||
onError(permissionError('notification', updatedStatus));
|
||||
}, onError);
|
||||
}, onError);
|
||||
}, onError);
|
||||
}
|
||||
|
||||
function getFirebaseTokenWithPermission(success, error) {
|
||||
var onSuccess = callbackOrNoop(success);
|
||||
var onError = callbackOrNoop(error);
|
||||
|
||||
ensurePushPermission(function (permission) {
|
||||
api.getFirebaseToken(function (result) {
|
||||
if (result && typeof result === 'object') {
|
||||
result.permission = permission;
|
||||
}
|
||||
onSuccess(result);
|
||||
}, onError);
|
||||
}, onError);
|
||||
}
|
||||
|
||||
var api = {
|
||||
getDeviceInfo: function (success, error) {
|
||||
call('getDeviceInfo', [], success, error);
|
||||
},
|
||||
getDeviceInfo: noArgs('getDeviceInfo'),
|
||||
|
||||
saveWifi: function (options, success, error) {
|
||||
call('saveWifi', [asWifiOptions(options)], success, error);
|
||||
},
|
||||
saveWifi: oneArg('saveWifi', asWifiOptions),
|
||||
|
||||
connectWifi: function (options, success, error) {
|
||||
call('connectWifi', [asWifiOptions(options)], success, error);
|
||||
},
|
||||
connectWifi: oneArg('connectWifi', asWifiOptions),
|
||||
|
||||
disconnectWifi: function (success, error) {
|
||||
call('disconnectWifi', [], success, error);
|
||||
},
|
||||
disconnectWifi: noArgs('disconnectWifi'),
|
||||
|
||||
removeWifi: function (options, success, error) {
|
||||
call('removeWifi', [asWifiOptions(options)], success, error);
|
||||
},
|
||||
removeWifi: oneArg('removeWifi', asWifiOptions),
|
||||
|
||||
requestWifiPermission: function (success, error) {
|
||||
call('requestWifiPermission', [], success, error);
|
||||
},
|
||||
requestWifiPermission: noArgs('requestWifiPermission'),
|
||||
|
||||
isBiometricAvailable: function (success, error) {
|
||||
call('isBiometricAvailable', [], success, error);
|
||||
},
|
||||
isBiometricAvailable: noArgs('isBiometricAvailable'),
|
||||
|
||||
unlockWithBiometrics: function (options, success, error) {
|
||||
call('unlockWithBiometrics', [options || {}], success, error);
|
||||
},
|
||||
unlockWithBiometrics: oneArg('unlockWithBiometrics', function (options) {
|
||||
return options || {};
|
||||
}),
|
||||
|
||||
requestPushPermission: function (success, error) {
|
||||
call('requestPushPermission', [], success, error);
|
||||
},
|
||||
requestPushPermission: noArgs('requestPushPermission'),
|
||||
|
||||
getPushPermissionStatus: function (success, error) {
|
||||
call('getPushPermissionStatus', [], success, error);
|
||||
},
|
||||
getPushPermissionStatus: noArgs('getPushPermissionStatus'),
|
||||
|
||||
getFirebaseToken: function (success, error) {
|
||||
call('getFirebaseToken', [], success, error);
|
||||
},
|
||||
ensurePushPermission: ensurePushPermission,
|
||||
|
||||
getFirebaseToken: noArgs('getFirebaseToken'),
|
||||
|
||||
getFirebaseTokenWithPermission: getFirebaseTokenWithPermission,
|
||||
|
||||
subscribeToTopic: function (topic, success, error) {
|
||||
call('subscribeToTopic', [topic], success, error);
|
||||
@@ -97,9 +157,7 @@ var api = {
|
||||
call('unsubscribeFromTopic', [topic], success, error);
|
||||
},
|
||||
|
||||
getInitialNotification: function (success, error) {
|
||||
call('getInitialNotification', [], success, error);
|
||||
},
|
||||
getInitialNotification: noArgs('getInitialNotification'),
|
||||
|
||||
startNotificationListener: function (success, error) {
|
||||
call('startNotificationListener', [], function (event) {
|
||||
@@ -110,15 +168,19 @@ var api = {
|
||||
}, error);
|
||||
},
|
||||
|
||||
stopNotificationListener: function (success, error) {
|
||||
call('stopNotificationListener', [], success, error);
|
||||
},
|
||||
stopNotificationListener: noArgs('stopNotificationListener'),
|
||||
|
||||
on: function (type, handler) {
|
||||
if (!isFunction(handler)) {
|
||||
return noop;
|
||||
}
|
||||
if (!eventHandlers[type]) {
|
||||
eventHandlers[type] = [];
|
||||
}
|
||||
eventHandlers[type].push(handler);
|
||||
return function () {
|
||||
api.off(type, handler);
|
||||
};
|
||||
},
|
||||
|
||||
off: function (type, handler) {
|
||||
|
||||
Reference in new issue
Block a user