feat(gDriveSync): add auto login

This commit is contained in:
Johannes Millan 2018-03-09 20:56:21 +01:00
parent 29d5f175ce
commit c3885ac05a
4 changed files with 36 additions and 22 deletions

View file

@ -88,6 +88,7 @@
if (this.$rootScope.r.googleTokens.accessToken && !isExpired) {
this.accessToken = this.$rootScope.r.googleTokens.accessToken;
this.isLoggedIn = true;
return new Promise((resolve) => resolve());
}
@ -99,6 +100,7 @@
this.accessToken = token;
this.$rootScope.r.googleTokens.accessToken = this.accessToken;
//this.$rootScope.r.googleTokens.refreshToken = data.refresh_token;
this.isLoggedIn = true;
resolve();
// TODO remove
// mainWindow.webContents.removeListener('did-finish-load', handler);
@ -109,11 +111,13 @@
return this.initClientLibraryIfNotDone()
.then((user) => {
if (user && user.Zi && user.Zi.access_token) {
this.isLoggedIn = true;
this.saveToken(user);
} else {
return window.gapi.auth2.getAuthInstance().signIn()
.then((res) => {
console.log(res);
this.isLoggedIn = true;
this.saveToken(res);
});
}
@ -131,6 +135,8 @@
}
logout() {
this.isLoggedIn = false;
if (this.IS_ELECTRON) {
this.accessToken = undefined;
this.$rootScope.r.googleTokens.accessToken = undefined;
@ -138,12 +144,18 @@
resolve();
});
} else {
return window.gapi.auth2.getAuthInstance().signOut();
if (window.gapi) {
return window.gapi.auth2.getAuthInstance().signOut();
} else {
return new Promise((resolve) => {
resolve();
});
}
}
}
handleError(err) {
console.log(err);
this.$log(err);
this.SimpleToast('ERROR', 'GoogleApi Error');
return this.$q.reject();
}

View file

@ -13,10 +13,17 @@
class GoogleDriveSync {
/* @ngInject */
constructor(AppStorage, GoogleApi, $rootScope) {
constructor(AppStorage, GoogleApi, $rootScope, SimpleToast, $q) {
this.AppStorage = AppStorage;
this.GoogleApi = GoogleApi;
this.$rootScope = $rootScope;
this.SimpleToast = SimpleToast;
this.$q = $q;
if (this.$rootScope.r.config.googleDriveSync.isAutoLogin) {
GoogleApi.login();
}
}
getLocalAppData() {
@ -37,7 +44,11 @@
}
loadFrom() {
return this.GoogleApi.loadFile(this.$rootScope.r.googleDriveSync.backupDocId);
return this.GoogleApi.loadFile(this.$rootScope.r.googleDriveSync.backupDocId)
.then((res) => {
console.log(res);
return this.$q.when(res);
});
}
}

View file

@ -39,20 +39,20 @@
<div>
<md-button class="md-raised md-primary"
promise-btn
ng-show="!vm.isLoggedIn"
ng-show="!vm.GoogleApi.isLoggedIn"
ng-click="vm.login()">
<ng-md-icon icon="login"></ng-md-icon>
Login
</md-button>
<md-button class="md-raised md-primary"
ng-show="vm.isLoggedIn"
ng-show="vm.GoogleApi.isLoggedIn"
ng-click="vm.logout()">
<ng-md-icon icon="logout"></ng-md-icon>
Logout
</md-button>
<md-button class="md-raised md-primary"
ng-show="vm.isLoggedIn"
ng-show="vm.GoogleApi.isLoggedIn"
external-link
target="_blank"
href="https://myaccount.google.com/permissions">
@ -61,14 +61,14 @@
</md-button>
<md-button class="md-raised md-primary"
promise-btn
ng-show="vm.isLoggedIn"
ng-show="vm.GoogleApi.isLoggedIn"
ng-click="vm.backupNow()">
<ng-md-icon icon="backup"></ng-md-icon>
Save Backup now
</md-button>
<md-button class="md-raised md-primary sync-from-btn"
promise-btn
ng-show="vm.isLoggedIn"
ng-show="vm.GoogleApi.isLoggedIn"
ng-click="vm.loadRemoteData()">
<ng-md-icon icon="backup"></ng-md-icon>
Load from Google Drive

View file

@ -54,23 +54,14 @@
};
vm.login = () => {
vm.isLoading = true;
return GoogleApi.login()
.then(() => {
vm.isLoggedIn = true;
vm.isLoading = false;
});
return GoogleApi.login();
};
vm.logout = () => {
vm.isLoading = true;
return GoogleApi.logout()
.then(() => {
vm.isLoggedIn = false;
vm.isLoading = false;
});
return GoogleApi.logout();
};
vm.GoogleApi = GoogleApi;
}
})();