summaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2020-08-19 21:47:18 +0900
committersyuilo <syuilotan@yahoo.co.jp>2020-08-19 21:47:18 +0900
commitc34f302b1c91bd3b091cd03fa60fae86b385f902 (patch)
treeaff533d9acc24952c5bac0e3e190a117824f0a61 /src/client
parentenhance(client): Better element visible detection (diff)
downloadsharkey-c34f302b1c91bd3b091cd03fa60fae86b385f902.tar.gz
sharkey-c34f302b1c91bd3b091cd03fa60fae86b385f902.tar.bz2
sharkey-c34f302b1c91bd3b091cd03fa60fae86b385f902.zip
enhance(client): サーバーから切断されたときにダイアログで警告を表示できるように
Diffstat (limited to 'src/client')
-rw-r--r--src/client/components/stream-indicator.vue11
-rw-r--r--src/client/init.ts20
-rw-r--r--src/client/pages/preferences/index.vue13
-rw-r--r--src/client/store.ts2
4 files changed, 29 insertions, 17 deletions
diff --git a/src/client/components/stream-indicator.vue b/src/client/components/stream-indicator.vue
index ec00f4cbfe..9005cb9a8b 100644
--- a/src/client/components/stream-indicator.vue
+++ b/src/client/components/stream-indicator.vue
@@ -1,5 +1,5 @@
<template>
-<div class="nsbbhtug" v-if="hasDisconnected" @click="resetDisconnected">
+<div class="nsbbhtug" v-if="hasDisconnected && $store.state.device.serverDisconnectedBehavior === 'quiet'" @click="resetDisconnected">
<div>{{ $t('disconnectedFromServer') }}</div>
<div class="command">
<button class="_textButton" @click="reload">{{ $t('reload') }}</button>
@@ -23,21 +23,12 @@ export default Vue.extend({
},
},
created() {
- this.$root.stream.on('_connected_', this.onConnected);
this.$root.stream.on('_disconnected_', this.onDisconnected);
},
beforeDestroy() {
- this.$root.stream.off('_connected_', this.onConnected);
this.$root.stream.off('_disconnected_', this.onDisconnected);
},
methods: {
- onConnected() {
- if (this.hasDisconnected) {
- if (this.$store.state.device.autoReload) {
- this.reload();
- }
- }
- },
onDisconnected() {
this.hasDisconnected = true;
},
diff --git a/src/client/init.ts b/src/client/init.ts
index b80df44c88..3931329aa5 100644
--- a/src/client/init.ts
+++ b/src/client/init.ts
@@ -237,6 +237,26 @@ os.init(async () => {
document.documentElement.style.setProperty('--modalBgFilter', v ? 'blur(4px)' : 'none');
}, { immediate: true });
+ let reloadDialogShowing = false;
+ os.stream.on('_disconnected_', async () => {
+ if (store.state.device.serverDisconnectedBehavior === 'reload') {
+ location.reload();
+ } else if (store.state.device.serverDisconnectedBehavior === 'dialog') {
+ if (reloadDialogShowing) return;
+ reloadDialogShowing = true;
+ const { canceled } = await app.dialog({
+ type: 'warning',
+ title: app.$t('disconnectedFromServer'),
+ text: app.$t('reloadConfirm'),
+ showCancelButton: true
+ });
+ reloadDialogShowing = false;
+ if (!canceled) {
+ location.reload();
+ }
+ }
+ });
+
os.stream.on('emojiAdded', data => {
// TODO
//store.commit('instance/set', );
diff --git a/src/client/pages/preferences/index.vue b/src/client/pages/preferences/index.vue
index 9d3959fcc2..4e171bfcbe 100644
--- a/src/client/pages/preferences/index.vue
+++ b/src/client/pages/preferences/index.vue
@@ -95,9 +95,10 @@
<section class="_card _vMargin">
<div class="_title"><fa :icon="faCog"/> {{ $t('general') }}</div>
<div class="_content">
- <mk-switch v-model="autoReload">
- {{ $t('autoReloadWhenDisconnected') }}
- </mk-switch>
+ <div>{{ $t('whenServerDisconnected') }}</div>
+ <mk-radio v-model="serverDisconnectedBehavior" value="reload">{{ $t('_serverDisconnectedBehavior.reload') }}</mk-radio>
+ <mk-radio v-model="serverDisconnectedBehavior" value="dialog">{{ $t('_serverDisconnectedBehavior.dialog') }}</mk-radio>
+ <mk-radio v-model="serverDisconnectedBehavior" value="quiet">{{ $t('_serverDisconnectedBehavior.quiet') }}</mk-radio>
</div>
<div class="_content">
<mk-switch v-model="imageNewTab">{{ $t('openImageInNewTab') }}</mk-switch>
@@ -186,9 +187,9 @@ export default Vue.extend({
},
computed: {
- autoReload: {
- get() { return this.$store.state.device.autoReload; },
- set(value) { this.$store.commit('device/set', { key: 'autoReload', value }); }
+ serverDisconnectedBehavior: {
+ get() { return this.$store.state.device.serverDisconnectedBehavior; },
+ set(value) { this.$store.commit('device/set', { key: 'serverDisconnectedBehavior', value }); }
},
reduceAnimation: {
diff --git a/src/client/store.ts b/src/client/store.ts
index 7e747a570d..07566954a2 100644
--- a/src/client/store.ts
+++ b/src/client/store.ts
@@ -60,7 +60,7 @@ export const defaultDeviceSettings = {
loadRawImages: false,
alwaysShowNsfw: false,
useOsNativeEmojis: false,
- autoReload: false,
+ serverDisconnectedBehavior: 'quiet',
accounts: [],
recentEmojis: [],
themes: [],