diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 5ab57da71e..bae7a1173d 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -884,6 +884,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
+ keep-cw: "CW保持"
+ keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "デザインと表示"
@@ -1664,6 +1666,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "上"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
+ keep-cw: "CW保持"
note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する"
diff --git a/src/client/app/desktop/views/components/post-form.vue b/src/client/app/desktop/views/components/post-form.vue
index 9c2807663b..5b2a305404 100644
--- a/src/client/app/desktop/views/components/post-form.vue
+++ b/src/client/app/desktop/views/components/post-form.vue
@@ -222,6 +222,12 @@ export default Vue.extend({
});
}
+ // keep cw when reply
+ if (this.$store.state.settings.keepCw && this.reply && this.reply.cw) {
+ this.useCw = true;
+ this.cw = this.reply.cw;
+ }
+
this.$nextTick(() => {
// 書きかけの投稿を復元
if (!this.instant && !this.mention) {
diff --git a/src/client/app/desktop/views/components/settings.vue b/src/client/app/desktop/views/components/settings.vue
index bd17018a6f..95c107a0d5 100644
--- a/src/client/app/desktop/views/components/settings.vue
+++ b/src/client/app/desktop/views/components/settings.vue
@@ -31,7 +31,12 @@
{{ $t('auto-popout') }}
{{ $t('auto-popout-desc') }}
- {{ $t('deck-nav') }}{{ $t('deck-nav-desc') }}
+ {{ $t('deck-nav') }}
+ {{ $t('deck-nav-desc') }}
+
+ {{ $t('keep-cw') }}
+ {{ $t('keep-cw-desc') }}
+
@@ -336,6 +341,11 @@ export default Vue.extend({
set(value) { this.$store.commit('settings/set', { key: 'deckNav', value }); }
},
+ keepCw: {
+ get() { return this.$store.state.settings.keepCw; },
+ set(value) { this.$store.commit('settings/set', { key: 'keepCw', value }); }
+ },
+
darkmode: {
get() { return this.$store.state.device.darkmode; },
set(value) { this.$store.commit('device/set', { key: 'darkmode', value }); }
diff --git a/src/client/app/mobile/views/components/post-form.vue b/src/client/app/mobile/views/components/post-form.vue
index 24263d18fe..b6e70a5b11 100644
--- a/src/client/app/mobile/views/components/post-form.vue
+++ b/src/client/app/mobile/views/components/post-form.vue
@@ -210,6 +210,12 @@ export default Vue.extend({
});
}
+ // keep cw when reply
+ if (this.$store.state.settings.keepCw && this.reply && this.reply.cw) {
+ this.useCw = true;
+ this.cw = this.reply.cw;
+ }
+
this.focus();
this.$nextTick(() => {
diff --git a/src/client/app/mobile/views/pages/settings.vue b/src/client/app/mobile/views/pages/settings.vue
index 80b15acdea..cc7eb1e300 100644
--- a/src/client/app/mobile/views/pages/settings.vue
+++ b/src/client/app/mobile/views/pages/settings.vue
@@ -66,6 +66,7 @@
{{ $t('fetch-on-scroll') }}
+ {{ $t('keep-cw') }}
{{ $t('disable-via-mobile') }}
{{ $t('load-raw-images') }}
{{ $t('load-remote-media') }}
@@ -247,6 +248,11 @@ export default Vue.extend({
set(value) { this.$store.dispatch('settings/set', { key: 'fetchOnScroll', value }); }
},
+ keepCw: {
+ get() { return this.$store.state.settings.keepCw; },
+ set(value) { this.$store.dispatch('settings/set', { key: 'keepCw', value }); }
+ },
+
rememberNoteVisibility: {
get() { return this.$store.state.settings.rememberNoteVisibility; },
set(value) { this.$store.dispatch('settings/set', { key: 'rememberNoteVisibility', value }); }
diff --git a/src/client/app/store.ts b/src/client/app/store.ts
index 350826e5ef..46655b7bd5 100644
--- a/src/client/app/store.ts
+++ b/src/client/app/store.ts
@@ -12,6 +12,7 @@ const defaultSettings = {
mobileHome: [],
deck: null,
deckNav: true,
+ keepCw: false,
tagTimelines: [],
fetchOnScroll: true,
showMaps: true,