diff options
author | Stefan Malzner <stefan@adlk.io> | 2019-02-11 12:48:04 +0100 |
---|---|---|
committer | Stefan Malzner <stefan@adlk.io> | 2019-02-11 12:48:04 +0100 |
commit | 3262ab46335ba42fe521c0b3f6165b87b990dbdd (patch) | |
tree | b88bcbf50e7ca8d3723eeb7b4765fbaf3acec054 /src/stores | |
parent | fix(App): Ignore network changed error (diff) | |
download | ferdium-app-3262ab46335ba42fe521c0b3f6165b87b990dbdd.tar.gz ferdium-app-3262ab46335ba42fe521c0b3f6165b87b990dbdd.tar.zst ferdium-app-3262ab46335ba42fe521c0b3f6165b87b990dbdd.zip |
Add option to login via deep link
Diffstat (limited to 'src/stores')
-rw-r--r-- | src/stores/AppStore.js | 1 | ||||
-rw-r--r-- | src/stores/UserStore.js | 27 |
2 files changed, 24 insertions, 4 deletions
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index dd4642d70..f8030a9ac 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js | |||
@@ -143,6 +143,7 @@ export default class AppStore extends Store { | |||
143 | 143 | ||
144 | // Handle deep linking (franz://) | 144 | // Handle deep linking (franz://) |
145 | ipcRenderer.on('navigateFromDeepLink', (event, data) => { | 145 | ipcRenderer.on('navigateFromDeepLink', (event, data) => { |
146 | debug('Navigate from deep link', data); | ||
146 | const { url } = data; | 147 | const { url } = data; |
147 | if (!url) return; | 148 | if (!url) return; |
148 | 149 | ||
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js index 7addb5760..ad714a62d 100644 --- a/src/stores/UserStore.js +++ b/src/stores/UserStore.js | |||
@@ -129,10 +129,6 @@ export default class UserStore extends Store { | |||
129 | return Boolean(localStorage.getItem('authToken')); | 129 | return Boolean(localStorage.getItem('authToken')); |
130 | } | 130 | } |
131 | 131 | ||
132 | // @computed get isTokenValid() { | ||
133 | // return this.authToken !== null && moment(this.tokenExpiry).isAfter(moment()); | ||
134 | // } | ||
135 | |||
136 | @computed get isTokenExpired() { | 132 | @computed get isTokenExpired() { |
137 | if (!this.authToken) return false; | 133 | if (!this.authToken) return false; |
138 | 134 | ||
@@ -160,6 +156,14 @@ export default class UserStore extends Store { | |||
160 | gaEvent('User', 'login'); | 156 | gaEvent('User', 'login'); |
161 | } | 157 | } |
162 | 158 | ||
159 | @action _tokenLogin(authToken) { | ||
160 | this._setUserData(authToken); | ||
161 | |||
162 | this.stores.router.push('/'); | ||
163 | |||
164 | gaEvent('User', 'tokenLogin'); | ||
165 | } | ||
166 | |||
163 | @action async _signup({ | 167 | @action async _signup({ |
164 | firstname, lastname, email, password, accountType, company, | 168 | firstname, lastname, email, password, accountType, company, |
165 | }) { | 169 | }) { |
@@ -206,6 +210,8 @@ export default class UserStore extends Store { | |||
206 | } | 210 | } |
207 | 211 | ||
208 | @action async _update({ userData }) { | 212 | @action async _update({ userData }) { |
213 | if (!this.isLoggedIn) return; | ||
214 | |||
209 | const response = await this.updateUserInfoRequest.execute(userData)._promise; | 215 | const response = await this.updateUserInfoRequest.execute(userData)._promise; |
210 | 216 | ||
211 | this.getUserInfoRequest.patch(() => response.data); | 217 | this.getUserInfoRequest.patch(() => response.data); |
@@ -222,6 +228,7 @@ export default class UserStore extends Store { | |||
222 | // workaround mobx issue | 228 | // workaround mobx issue |
223 | localStorage.removeItem('authToken'); | 229 | localStorage.removeItem('authToken'); |
224 | window.localStorage.removeItem('authToken'); | 230 | window.localStorage.removeItem('authToken'); |
231 | |||
225 | this.getUserInfoRequest.invalidate().reset(); | 232 | this.getUserInfoRequest.invalidate().reset(); |
226 | this.authToken = null; | 233 | this.authToken = null; |
227 | } | 234 | } |
@@ -262,6 +269,18 @@ export default class UserStore extends Store { | |||
262 | const { router } = this.stores; | 269 | const { router } = this.stores; |
263 | const currentRoute = router.location.pathname; | 270 | const currentRoute = router.location.pathname; |
264 | if (!this.isLoggedIn | 271 | if (!this.isLoggedIn |
272 | && currentRoute.includes('token=')) { | ||
273 | router.push(this.WELCOME_ROUTE); | ||
274 | const token = currentRoute.split('=')[1]; | ||
275 | |||
276 | const data = this._parseToken(token); | ||
277 | if (data) { | ||
278 | // Give this some time to sink | ||
279 | setTimeout(() => { | ||
280 | this._tokenLogin(token); | ||
281 | }, 100); | ||
282 | } | ||
283 | } else if (!this.isLoggedIn | ||
265 | && !currentRoute.includes(this.BASE_ROUTE)) { | 284 | && !currentRoute.includes(this.BASE_ROUTE)) { |
266 | router.push(this.WELCOME_ROUTE); | 285 | router.push(this.WELCOME_ROUTE); |
267 | } else if (this.isLoggedIn | 286 | } else if (this.isLoggedIn |