From efaaa76185ec7ee39e855d90bdcdb8a4d13f0207 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Sep 2018 21:13:15 +0900 Subject: Improve note visibility settings Closes #2312 Closes #2313 --- .../common/views/components/visibility-chooser.vue | 6 +++-- .../app/desktop/views/components/post-form.vue | 2 +- .../app/desktop/views/components/settings.vue | 27 ++++++++++++++++++++++ .../app/mobile/views/components/post-form.vue | 2 +- src/client/app/mobile/views/pages/settings.vue | 27 ++++++++++++++++++++++ src/client/app/store.ts | 2 ++ 6 files changed, 62 insertions(+), 4 deletions(-) (limited to 'src/client/app') diff --git a/src/client/app/common/views/components/visibility-chooser.vue b/src/client/app/common/views/components/visibility-chooser.vue index 4691604e57..7d90b3520c 100644 --- a/src/client/app/common/views/components/visibility-chooser.vue +++ b/src/client/app/common/views/components/visibility-chooser.vue @@ -47,7 +47,7 @@ export default Vue.extend({ props: ['source', 'compact'], data() { return { - v: this.$store.state.device.visibility || 'public' + v: this.$store.state.settings.rememberNoteVisibility ? (this.$store.state.device.visibility || this.$store.state.settings.defaultNoteVisibility) : this.$store.state.settings.defaultNoteVisibility } }, mounted() { @@ -97,7 +97,9 @@ export default Vue.extend({ }, methods: { choose(visibility) { - this.$store.commit('device/setVisibility', visibility); + if (this.$store.state.settings.rememberNoteVisibility) { + this.$store.commit('device/setVisibility', visibility); + } this.$emit('chosen', visibility); this.$destroy(); }, diff --git a/src/client/app/desktop/views/components/post-form.vue b/src/client/app/desktop/views/components/post-form.vue index 65dc9eb9c2..b2f0954d97 100644 --- a/src/client/app/desktop/views/components/post-form.vue +++ b/src/client/app/desktop/views/components/post-form.vue @@ -100,7 +100,7 @@ export default Vue.extend({ useCw: false, cw: null, geo: null, - visibility: this.$store.state.device.visibility || 'public', + visibility: this.$store.state.settings.rememberNoteVisibility ? (this.$store.state.device.visibility || this.$store.state.settings.defaultNoteVisibility) : this.$store.state.settings.defaultNoteVisibility, visibleUsers: [], autocomplete: null, draghover: false, diff --git a/src/client/app/desktop/views/components/settings.vue b/src/client/app/desktop/views/components/settings.vue index d800ccfe11..3998adf601 100644 --- a/src/client/app/desktop/views/components/settings.vue +++ b/src/client/app/desktop/views/components/settings.vue @@ -26,6 +26,22 @@ %i18n:@auto-popout-desc% + +
+
%i18n:@note-visibility%
+ +
+
%i18n:@default-note-visibility%
+ + + + + + + +
+
+
%i18n:@advanced% @@ -239,6 +255,11 @@ export default Vue.extend({ set(value) { this.$store.commit('device/set', { key: 'apiViaStream', value }); } }, + defaultNoteVisibility: { + get() { return this.$store.state.settings.defaultNoteVisibility; }, + set(value) { this.$store.commit('settings/set', { key: 'defaultNoteVisibility', value }); } + }, + autoPopout: { get() { return this.$store.state.device.autoPopout; }, set(value) { this.$store.commit('device/set', { key: 'autoPopout', value }); } @@ -312,6 +333,12 @@ export default Vue.extend({ value: v }); }, + onChangeRememberNoteVisibility(v) { + this.$store.dispatch('settings/set', { + key: 'rememberNoteVisibility', + value: v + }); + }, onChangeAutoWatch(v) { (this as any).api('i/update', { autoWatch: v diff --git a/src/client/app/mobile/views/components/post-form.vue b/src/client/app/mobile/views/components/post-form.vue index 8107c1f3a7..dcb2f16fa4 100644 --- a/src/client/app/mobile/views/components/post-form.vue +++ b/src/client/app/mobile/views/components/post-form.vue @@ -95,7 +95,7 @@ export default Vue.extend({ files: [], poll: false, geo: null, - visibility: this.$store.state.device.visibility || 'public', + visibility: this.$store.state.settings.rememberNoteVisibility ? (this.$store.state.device.visibility || this.$store.state.settings.defaultNoteVisibility) : this.$store.state.settings.defaultNoteVisibility, visibleUsers: [], useCw: false, cw: null, diff --git a/src/client/app/mobile/views/pages/settings.vue b/src/client/app/mobile/views/pages/settings.vue index 29fe067a08..a078929016 100644 --- a/src/client/app/mobile/views/pages/settings.vue +++ b/src/client/app/mobile/views/pages/settings.vue @@ -53,6 +53,21 @@ %i18n:@load-remote-media% %i18n:@i-am-under-limited-internet% + +
+
%i18n:@note-visibility%
+ %i18n:@remember-note-visibility% +
+
%i18n:@default-note-visibility%
+ + + + + + + +
+
@@ -161,6 +176,11 @@ export default Vue.extend({ set(value) { this.$store.commit('device/set', { key: 'mobileNotificationPosition', value }); } }, + defaultNoteVisibility: { + get() { return this.$store.state.settings.defaultNoteVisibility; }, + set(value) { this.$store.commit('settings/set', { key: 'defaultNoteVisibility', value }); } + }, + lightmode: { get() { return this.$store.state.device.lightmode; }, set(value) { this.$store.commit('device/set', { key: 'lightmode', value }); } @@ -198,6 +218,13 @@ export default Vue.extend({ }); }, + onChangeRememberNoteVisibility(v) { + this.$store.dispatch('settings/set', { + key: 'rememberNoteVisibility', + value: v + }); + }, + onChangeDisableViaMobile(v) { this.$store.dispatch('settings/set', { key: 'disableViaMobile', diff --git a/src/client/app/store.ts b/src/client/app/store.ts index 16ce78ea9f..22de9b5587 100644 --- a/src/client/app/store.ts +++ b/src/client/app/store.ts @@ -26,6 +26,8 @@ const defaultSettings = { disableViaMobile: false, memo: null, iLikeSushi: false, + rememberNoteVisibility: false, + defaultNoteVisibility: 'public', games: { reversi: { showBoardLabels: false, -- cgit v1.2.3-freya