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); };