diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-02-26 19:23:53 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-02-26 19:23:53 +0900 |
| commit | d939e552f3b42a3f38981c9e650001f01a73bfad (patch) | |
| tree | df6799e574737afd362912a55dc8c98a3d755def /src/web/app | |
| parent | Fix bug (diff) | |
| download | misskey-d939e552f3b42a3f38981c9e650001f01a73bfad.tar.gz misskey-d939e552f3b42a3f38981c9e650001f01a73bfad.tar.bz2 misskey-d939e552f3b42a3f38981c9e650001f01a73bfad.zip | |
Fix bugs
Diffstat (limited to 'src/web/app')
| -rw-r--r-- | src/web/app/common/mios.ts | 13 | ||||
| -rw-r--r-- | src/web/app/common/scripts/signout.ts | 7 | ||||
| -rw-r--r-- | src/web/app/common/scripts/streaming/home-stream-manager.ts | 7 | ||||
| -rw-r--r-- | src/web/app/common/scripts/streaming/home-stream.ts | 6 | ||||
| -rw-r--r-- | src/web/app/common/scripts/streaming/stream-manager.ts | 13 | ||||
| -rw-r--r-- | src/web/app/common/scripts/streaming/stream.ts | 9 | ||||
| -rw-r--r-- | src/web/app/common/views/components/stream-indicator.vue | 24 | ||||
| -rw-r--r-- | src/web/app/desktop/views/components/ui.header.account.vue | 7 |
8 files changed, 47 insertions, 39 deletions
diff --git a/src/web/app/common/mios.ts b/src/web/app/common/mios.ts index 6c95e5b9b5..6cc441cd1d 100644 --- a/src/web/app/common/mios.ts +++ b/src/web/app/common/mios.ts @@ -1,9 +1,8 @@ import Vue from 'vue'; import { EventEmitter } from 'eventemitter3'; -import { apiUrl, swPublickey, version, lang } from '../config'; +import { host, apiUrl, swPublickey, version, lang } from '../config'; import api from './scripts/api'; -import signout from './scripts/signout'; import Progress from './scripts/loading'; import HomeStreamManager from './scripts/streaming/home-stream-manager'; import DriveStreamManager from './scripts/streaming/drive-stream-manager'; @@ -153,7 +152,7 @@ export default class MiOS extends EventEmitter { this.once('signedin', () => { // Init home stream manager - this.stream = new HomeStreamManager(this.i); + this.stream = new HomeStreamManager(this, this.i); // Init other stream manager this.streams.driveStream = new DriveStreamManager(this.i); @@ -184,6 +183,12 @@ export default class MiOS extends EventEmitter { console.error.apply(null, args); } + public signout() { + localStorage.removeItem('me'); + document.cookie = `i=; domain=.${host}; expires=Thu, 01 Jan 1970 00:00:01 GMT;`; + location.href = '/'; + } + /** * Initialize MiOS (boot) * @param callback A function that call when initialized @@ -209,7 +214,7 @@ export default class MiOS extends EventEmitter { .then(res => { // When failed to authenticate user if (res.status !== 200) { - return signout(); + return this.signout(); } // Parse response diff --git a/src/web/app/common/scripts/signout.ts b/src/web/app/common/scripts/signout.ts deleted file mode 100644 index 2923196549..0000000000 --- a/src/web/app/common/scripts/signout.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare const _HOST_: string; - -export default () => { - localStorage.removeItem('me'); - document.cookie = `i=; domain=.${_HOST_}; expires=Thu, 01 Jan 1970 00:00:01 GMT;`; - location.href = '/'; -}; diff --git a/src/web/app/common/scripts/streaming/home-stream-manager.ts b/src/web/app/common/scripts/streaming/home-stream-manager.ts index ad1dc870eb..ab56d5a73a 100644 --- a/src/web/app/common/scripts/streaming/home-stream-manager.ts +++ b/src/web/app/common/scripts/streaming/home-stream-manager.ts @@ -1,18 +1,21 @@ import StreamManager from './stream-manager'; import Connection from './home-stream'; +import MiOS from '../../mios'; export default class HomeStreamManager extends StreamManager<Connection> { private me; + private os: MiOS; - constructor(me) { + constructor(os: MiOS, me) { super(); this.me = me; + this.os = os; } public getConnection() { if (this.connection == null) { - this.connection = new Connection(this.me); + this.connection = new Connection(this.os, this.me); } return this.connection; diff --git a/src/web/app/common/scripts/streaming/home-stream.ts b/src/web/app/common/scripts/streaming/home-stream.ts index b8e417b6d4..57bf0ec2a6 100644 --- a/src/web/app/common/scripts/streaming/home-stream.ts +++ b/src/web/app/common/scripts/streaming/home-stream.ts @@ -1,11 +1,11 @@ import Stream from './stream'; -import signout from '../signout'; +import MiOS from '../../mios'; /** * Home stream connection */ export default class Connection extends Stream { - constructor(me) { + constructor(os: MiOS, me) { super('', { i: me.token }); @@ -25,7 +25,7 @@ export default class Connection extends Stream { // このままではAPIが利用できないので強制的にサインアウトさせる this.on('my_token_regenerated', () => { alert('%i18n:common.my-token-regenerated%'); - signout(); + os.signout(); }); } } diff --git a/src/web/app/common/scripts/streaming/stream-manager.ts b/src/web/app/common/scripts/streaming/stream-manager.ts index 5bb0dc701c..a4a73c561f 100644 --- a/src/web/app/common/scripts/streaming/stream-manager.ts +++ b/src/web/app/common/scripts/streaming/stream-manager.ts @@ -23,6 +23,14 @@ export default abstract class StreamManager<T extends Connection> extends EventE this.emit('disconnected'); } else { this.emit('connected', this._connection); + + this._connection.on('_connected_', () => { + this.emit('_connected_'); + }); + + this._connection.on('_disconnected_', () => { + this.emit('_disconnected_'); + }); } } @@ -37,6 +45,11 @@ export default abstract class StreamManager<T extends Connection> extends EventE return this._connection != null; } + public get state(): string { + if (!this.hasConnection) return 'no-connection'; + return this._connection.state; + } + /** * コネクションを要求します */ diff --git a/src/web/app/common/scripts/streaming/stream.ts b/src/web/app/common/scripts/streaming/stream.ts index 770d77510f..8799f6fe6b 100644 --- a/src/web/app/common/scripts/streaming/stream.ts +++ b/src/web/app/common/scripts/streaming/stream.ts @@ -1,13 +1,12 @@ -declare const _API_URL_: string; - import { EventEmitter } from 'eventemitter3'; import * as ReconnectingWebsocket from 'reconnecting-websocket'; +import { apiUrl } from '../../../config'; /** * Misskey stream connection */ export default class Connection extends EventEmitter { - private state: string; + public state: string; private buffer: any[]; private socket: ReconnectingWebsocket; @@ -25,7 +24,7 @@ export default class Connection extends EventEmitter { this.state = 'initializing'; this.buffer = []; - const host = _API_URL_.replace('http', 'ws'); + const host = apiUrl.replace('http', 'ws'); const query = params ? Object.keys(params) .map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k])) @@ -58,7 +57,7 @@ export default class Connection extends EventEmitter { */ private onClose() { this.state = 'reconnecting'; - this.emit('_closed_'); + this.emit('_disconnected_'); } /** diff --git a/src/web/app/common/views/components/stream-indicator.vue b/src/web/app/common/views/components/stream-indicator.vue index c1c0672e48..1f18fa76ed 100644 --- a/src/web/app/common/views/components/stream-indicator.vue +++ b/src/web/app/common/views/components/stream-indicator.vue @@ -1,5 +1,5 @@ <template> -<div class="mk-stream-indicator" v-if="stream"> +<div class="mk-stream-indicator"> <p v-if=" stream.state == 'initializing' "> %fa:spinner .pulse% <span>%i18n:common.tags.mk-stream-indicator.connecting%<mk-ellipsis/></span> @@ -20,16 +20,14 @@ import Vue from 'vue'; import * as anime from 'animejs'; export default Vue.extend({ - data() { - return { - stream: null - }; + computed: { + stream() { + return (this as any).os.stream; + } }, created() { - this.stream = (this as any).os.stream.borrow(); - - (this as any).os.stream.on('connected', this.onConnected); - (this as any).os.stream.on('disconnected', this.onDisconnected); + (this as any).os.stream.on('_connected_', this.onConnected); + (this as any).os.stream.on('_disconnected_', this.onDisconnected); this.$nextTick(() => { if (this.stream.state == 'connected') { @@ -38,13 +36,11 @@ export default Vue.extend({ }); }, beforeDestroy() { - (this as any).os.stream.off('connected', this.onConnected); - (this as any).os.stream.off('disconnected', this.onDisconnected); + (this as any).os.stream.off('_connected_', this.onConnected); + (this as any).os.stream.off('_disconnected_', this.onDisconnected); }, methods: { onConnected() { - this.stream = (this as any).os.stream.borrow(); - setTimeout(() => { anime({ targets: this.$el, @@ -55,8 +51,6 @@ export default Vue.extend({ }, 1000); }, onDisconnected() { - this.stream = null; - anime({ targets: this.$el, opacity: 1, diff --git a/src/web/app/desktop/views/components/ui.header.account.vue b/src/web/app/desktop/views/components/ui.header.account.vue index 68cf8477dc..ad65333393 100644 --- a/src/web/app/desktop/views/components/ui.header.account.vue +++ b/src/web/app/desktop/views/components/ui.header.account.vue @@ -37,13 +37,11 @@ import Vue from 'vue'; import MkSettingsWindow from './settings-window.vue'; import MkDriveWindow from './drive-window.vue'; import contains from '../../../common/scripts/contains'; -import signout from '../../../common/scripts/signout'; export default Vue.extend({ data() { return { - isOpen: false, - signout + isOpen: false }; }, beforeDestroy() { @@ -77,6 +75,9 @@ export default Vue.extend({ settings() { this.close(); (this as any).os.new(MkSettingsWindow); + }, + signout() { + (this as any).os.signout(); } } }); |