diff --git a/public/views/glidera.html b/public/views/glidera.html
index 8dde8d635..c222eef6b 100644
--- a/public/views/glidera.html
+++ b/public/views/glidera.html
@@ -66,11 +66,10 @@
Testnet wallets only work with Glidera Sandbox Accounts
-
+
Do you already have the Oauth Code?
diff --git a/public/views/glideraUri.html b/public/views/glideraUri.html
new file mode 100644
index 000000000..5e5412b52
--- /dev/null
+++ b/public/views/glideraUri.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
Connecting to Glidera...
+
+
+
+
+
+
+

+
+
+
+
{{glidera.error}}
+
+
+
+
+
diff --git a/src/js/controllers/glideraUri.js b/src/js/controllers/glideraUri.js
new file mode 100644
index 000000000..56e031d03
--- /dev/null
+++ b/src/js/controllers/glideraUri.js
@@ -0,0 +1,37 @@
+'use strict';
+angular.module('copayApp.controllers').controller('glideraUriController',
+ function($scope, $stateParams, $timeout, profileService, glideraService, storageService, go) {
+
+ this.submitOauthCode = function(code) {
+ var fc = profileService.focusedClient;
+ var self = this;
+ this.loading = true;
+ this.error = null;
+ $timeout(function() {
+ glideraService.getToken(code, function(err, data) {
+ self.loading = null;
+ if (err) {
+ self.error = err;
+ $timeout(function() {
+ $scope.$apply();
+ }, 100);
+ }
+ else if (data && data.access_token) {
+ storageService.setGlideraToken(fc.credentials.network, data.access_token, function() {
+ $scope.$emit('Local/GlideraTokenUpdated', data.access_token);
+ $timeout(function() {
+ go.path('glidera');
+ $scope.$apply();
+ }, 100);
+ });
+ }
+ });
+ }, 100);
+ };
+
+ this.checkCode = function() {
+ this.code = $stateParams.code;
+ this.submitOauthCode(this.code);
+ };
+
+ });
diff --git a/src/js/init.js b/src/js/init.js
index 81673661e..069440edc 100644
--- a/src/js/init.js
+++ b/src/js/init.js
@@ -9,8 +9,14 @@ angular.element(document).ready(function() {
var handleBitcoinURI = function(url) {
if (!url) return;
+ if (url.indexOf('glidera') != -1) {
+ url = '#/uri-glidera' + url.replace('bitcoin://glidera', '');
+ }
+ else {
+ url = '#/uri-payment/' + url;
+ }
setTimeout(function() {
- window.location = '#/uri-payment/' + url;
+ window.location = url;
}, 1000);
};
diff --git a/src/js/routes.js b/src/js/routes.js
index adfab01a5..28e8e0937 100644
--- a/src/js/routes.js
+++ b/src/js/routes.js
@@ -288,6 +288,15 @@ angular
},
}
})
+ .state('uriglidera', {
+ url: '/uri-glidera?code',
+ needProfile: true,
+ views: {
+ 'main': {
+ templateUrl: 'views/glideraUri.html'
+ },
+ }
+ })
.state('glidera', {
url: '/glidera',
walletShouldBeComplete: true,
@@ -527,6 +536,7 @@ angular
copayers: -1,
cordova: -1,
payment: -1,
+ uriglidera: -1,
preferences: 11,
glidera: 11,
diff --git a/src/js/services/glideraService.js b/src/js/services/glideraService.js
index 2fa48275a..b57a1c0ab 100644
--- a/src/js/services/glideraService.js
+++ b/src/js/services/glideraService.js
@@ -1,15 +1,22 @@
'use strict';
-angular.module('copayApp.services').factory('glideraService', function($http, $log) {
+angular.module('copayApp.services').factory('glideraService', function($http, $log, isCordova) {
var root = {};
var credentials = {};
root.setCredentials = function(network) {
if (network == 'testnet') {
credentials.HOST = 'https://sandbox.glidera.io';
- credentials.REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob';
- credentials.CLIENT_ID = '9915b6ffa6dc3baffb87135ed3873d49';
- credentials.CLIENT_SECRET = 'd74eda05b9c6a228fd5c85cfbd0eb7eb';
+ if (isCordova) {
+ credentials.REDIRECT_URI = 'bitcoin://glidera';
+ credentials.CLIENT_ID = 'dfc56e4336e32bb8ba46dde34f3d7d6d';
+ credentials.CLIENT_SECRET = '5eb679058f6c7eb81123162323d4fba5';
+ }
+ else {
+ credentials.REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob';
+ credentials.CLIENT_ID = '9915b6ffa6dc3baffb87135ed3873d49';
+ credentials.CLIENT_SECRET = 'd74eda05b9c6a228fd5c85cfbd0eb7eb';
+ }
}
else {
credentials.HOST = 'https://glidera.io';
diff --git a/src/js/services/go.js b/src/js/services/go.js
index 3e55e2939..782683e7f 100644
--- a/src/js/services/go.js
+++ b/src/js/services/go.js
@@ -29,12 +29,13 @@ angular.module('copayApp.services').factory('go', function($window, $rootScope,
}
};
- root.openExternalLink = function(url) {
+ root.openExternalLink = function(url, target) {
if (nodeWebkit.isDefined()) {
nodeWebkit.openExternalLink(url);
}
else {
- var ref = window.open(url, '_blank', 'location=no');
+ target = target || '_blank';
+ var ref = window.open(url, target, 'location=no');
}
};
@@ -89,8 +90,8 @@ angular.module('copayApp.services').factory('go', function($window, $rootScope,
root.path(path);
};
- $rootScope.openExternalLink = function(url) {
- root.openExternalLink(url);
+ $rootScope.openExternalLink = function(url, target) {
+ root.openExternalLink(url, target);
};