mirror of
https://github.com/h3poteto/whalebird-desktop
synced 2025-02-03 10:47:34 +01:00
Check local access token and redirect to timeline
This commit is contained in:
parent
77d50b1923
commit
c2a982b503
5
package-lock.json
generated
5
package-lock.json
generated
@ -8068,6 +8068,11 @@
|
||||
"integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
|
||||
"dev": true
|
||||
},
|
||||
"is-empty": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz",
|
||||
"integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s="
|
||||
},
|
||||
"is-equal-shallow": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
|
||||
|
@ -59,6 +59,7 @@
|
||||
"axios": "^0.16.1",
|
||||
"electron-json-storage": "^4.0.2",
|
||||
"element-ui": "^2.2.1",
|
||||
"is-empty": "^1.2.0",
|
||||
"mastodon-api": "^1.3.0",
|
||||
"vue": "^2.3.3",
|
||||
"vue-electron": "^1.0.6",
|
||||
|
@ -1,5 +1,6 @@
|
||||
import Mastodon from 'mastodon-api'
|
||||
import storage from 'electron-json-storage'
|
||||
import empty from 'is-empty'
|
||||
|
||||
const appName = 'whalebird'
|
||||
const scope = 'read write follow'
|
||||
@ -46,5 +47,20 @@ export default class Authentication {
|
||||
})
|
||||
}
|
||||
|
||||
loadTokenFromLocal () {
|
||||
return new Promise((resolve, reject) => {
|
||||
storage.get('token', (err, json) => {
|
||||
if (err) return reject(err)
|
||||
if (empty(json)) return reject(new EmptyTokenError())
|
||||
return resolve(json.accessToken)
|
||||
})
|
||||
})
|
||||
}
|
||||
// TODO: Refresh access token when expired
|
||||
}
|
||||
|
||||
class EmptyTokenError {
|
||||
constructor (message) {
|
||||
this.message = message
|
||||
}
|
||||
}
|
||||
|
@ -67,6 +67,17 @@ ipcMain.on('get-access-token', (event, code) => {
|
||||
.then(token => console.log(token))
|
||||
})
|
||||
|
||||
ipcMain.on('load-access-token', (event, _) => {
|
||||
auth.loadTokenFromLocal()
|
||||
.catch((err) => {
|
||||
console.errror(err)
|
||||
event.sender.send('error-access-token', err)
|
||||
})
|
||||
.then((token) => {
|
||||
event.sender.send('local-access-token', token)
|
||||
})
|
||||
})
|
||||
|
||||
/**
|
||||
* Auto Updater
|
||||
*
|
||||
|
@ -7,6 +7,20 @@
|
||||
<script>
|
||||
export default {
|
||||
name: 'login',
|
||||
created () {
|
||||
this.$store.dispatch('Login/checkToken')
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
message: 'Please login',
|
||||
type: 'error'
|
||||
})
|
||||
})
|
||||
.then(() => {
|
||||
// TODO: redirect to home timeline
|
||||
console.log('ok')
|
||||
this.$router.push({ path: '/timelinespace' })
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
login () {
|
||||
this.$store.dispatch('Login/fetchLogin')
|
||||
|
14
src/renderer/components/TimelineSpace.vue
Normal file
14
src/renderer/components/TimelineSpace.vue
Normal file
@ -0,0 +1,14 @@
|
||||
<template>
|
||||
<div id="timeline_space">
|
||||
timeline
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'timeline-space'
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
@ -20,6 +20,11 @@ export default new Router({
|
||||
name: 'authorize',
|
||||
component: require('@/components/Authorize').default
|
||||
},
|
||||
{
|
||||
path: '/timelinespace',
|
||||
name: 'timeline-space',
|
||||
component: require('@/components/TimelineSpace').default
|
||||
},
|
||||
{
|
||||
path: '*',
|
||||
redirect: '/'
|
||||
|
@ -5,6 +5,17 @@ const Login = {
|
||||
state: {},
|
||||
mutations: {},
|
||||
actions: {
|
||||
checkToken ({ commit }) {
|
||||
return new Promise((resolve, reject) => {
|
||||
ipcRenderer.send('load-access-token', 'load')
|
||||
ipcRenderer.on('error-access-token', (event, err) => {
|
||||
reject(err)
|
||||
})
|
||||
ipcRenderer.on('local-access-token', (event, _) => {
|
||||
resolve()
|
||||
})
|
||||
})
|
||||
},
|
||||
fetchLogin ({ commit }) {
|
||||
return new Promise((resolve, reject) => {
|
||||
ipcRenderer.send('get-auth-link', 'get')
|
||||
|
8
src/renderer/store/TimelineSpace.js
Normal file
8
src/renderer/store/TimelineSpace.js
Normal file
@ -0,0 +1,8 @@
|
||||
const TimelineSpace = {
|
||||
namespaced: true,
|
||||
state: {},
|
||||
mutations: {},
|
||||
actions: {}
|
||||
}
|
||||
|
||||
export default TimelineSpace
|
@ -4,6 +4,7 @@ import createLogger from 'vuex/dist/logger'
|
||||
|
||||
import Login from './Login'
|
||||
import Authorize from './Authorize'
|
||||
import TimelineSpace from './TimelineSpace'
|
||||
|
||||
Vue.use(Vuex)
|
||||
|
||||
@ -14,6 +15,7 @@ export default new Vuex.Store({
|
||||
: [],
|
||||
modules: {
|
||||
Login,
|
||||
Authorize
|
||||
Authorize,
|
||||
TimelineSpace
|
||||
}
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user