diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2025-06-04 19:48:00 +0000 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2025-06-04 19:48:00 +0000 |
| commit | dc357315897ffc6d9fad58f6c366e8bae5176e9f (patch) | |
| tree | 7cc2d17fde2f6f36edcf024fb3ad41b88dbda1bb /packages | |
| parent | merge: Fix performance regression in notes/mentions endpoint (!1092) (diff) | |
| parent | clarify option wording (diff) | |
| download | sharkey-dc357315897ffc6d9fad58f6c366e8bae5176e9f.tar.gz sharkey-dc357315897ffc6d9fad58f6c366e8bae5176e9f.tar.bz2 sharkey-dc357315897ffc6d9fad58f6c366e8bae5176e9f.zip | |
merge: Add option to keep CWs with "RE:" prefix (!1093)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/1093
Approved-by: dakkar <dakkar@thenautilus.net>
Approved-by: Marie <github@yuugi.dev>
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/frontend/src/components/MkPostForm.vue | 4 | ||||
| -rw-r--r-- | packages/frontend/src/components/MkSelect.vue | 32 | ||||
| -rw-r--r-- | packages/frontend/src/pages/settings/preferences.vue | 8 | ||||
| -rw-r--r-- | packages/frontend/src/preferences/def.ts | 2 |
4 files changed, 27 insertions, 19 deletions
diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue index c1d78301de..bbacdfda4d 100644 --- a/packages/frontend/src/components/MkPostForm.vue +++ b/packages/frontend/src/components/MkPostForm.vue @@ -373,7 +373,9 @@ if (props.specified) { // keep cw when reply if (prefer.s.keepCw && props.reply && props.reply.cw) { useCw.value = true; - cw.value = props.reply.cw; + cw.value = prefer.s.keepCw === 'prepend-re' + ? `RE: ${props.reply.cw}` + : props.reply.cw; } // apply default CW diff --git a/packages/frontend/src/components/MkSelect.vue b/packages/frontend/src/components/MkSelect.vue index cf4e4eda74..511a45c165 100644 --- a/packages/frontend/src/components/MkSelect.vue +++ b/packages/frontend/src/components/MkSelect.vue @@ -39,32 +39,34 @@ SPDX-License-Identifier: AGPL-3.0-only </div> </template> -<script lang="ts" setup> -import { onMounted, nextTick, ref, watch, computed, toRefs, useSlots } from 'vue'; -import { useInterval } from '@@/js/use-interval.js'; -import type { VNode, VNodeChild } from 'vue'; -import type { MenuItem } from '@/types/menu.js'; -import * as os from '@/os.js'; - -type ItemOption = { +<script lang="ts"> +type ItemOption<T extends string | number | null | boolean = string | number | null> = { type?: 'option'; - value: string | number | null; + value: T; label: string; }; -type ItemGroup = { +type ItemGroup<T extends string | number | null | boolean = string | number | null> = { type: 'group'; label: string; - items: ItemOption[]; + items: ItemOption<T>[]; }; -export type MkSelectItem = ItemOption | ItemGroup; +export type MkSelectItem<T extends string | number | null | boolean = string | number | null> = ItemOption<T> | ItemGroup<T>; +</script> + +<script lang="ts" setup generic="T extends string | number | null | boolean = string | number | null"> +import { onMounted, nextTick, ref, watch, computed, toRefs, useSlots } from 'vue'; +import { useInterval } from '@@/js/use-interval.js'; +import type { VNode, VNodeChild } from 'vue'; +import type { MenuItem } from '@/types/menu.js'; +import * as os from '@/os.js'; // TODO: itemsをslot内のoptionで指定する用法は廃止する(props.itemsを必須化する) // see: https://github.com/misskey-dev/misskey/issues/15558 const props = defineProps<{ - modelValue: string | number | null; + modelValue: T; required?: boolean; readonly?: boolean; disabled?: boolean; @@ -73,11 +75,11 @@ const props = defineProps<{ inline?: boolean; small?: boolean; large?: boolean; - items?: MkSelectItem[]; + items?: MkSelectItem<T>[]; }>(); const emit = defineEmits<{ - (ev: 'update:modelValue', value: string | number | null): void; + (ev: 'update:modelValue', value: T): void; }>(); const slots = useSlots(); diff --git a/packages/frontend/src/pages/settings/preferences.vue b/packages/frontend/src/pages/settings/preferences.vue index 4e7568561b..ed0e3689a5 100644 --- a/packages/frontend/src/pages/settings/preferences.vue +++ b/packages/frontend/src/pages/settings/preferences.vue @@ -403,9 +403,13 @@ SPDX-License-Identifier: AGPL-3.0-only <div class="_gaps_s"> <SearchMarker :keywords="['remember', 'keep', 'note', 'cw']"> <MkPreferenceContainer k="keepCw"> - <MkSwitch v-model="keepCw"> + <MkSelect v-model="keepCw"> <template #label><SearchLabel>{{ i18n.ts.keepCw }}</SearchLabel></template> - </MkSwitch> + <template #caption><SearchKeyword>{{ i18n.ts.keepCwDescription }}</SearchKeyword></template> + <option :value="false">{{ i18n.ts.keepCwDisabled }}</option>> + <option :value="true">{{ i18n.ts.keepCwEnabled }}</option>> + <option value="prepend-re">{{ i18n.ts.keepCwPrependRe }}</option> + </MkSelect> </MkPreferenceContainer> </SearchMarker> diff --git a/packages/frontend/src/preferences/def.ts b/packages/frontend/src/preferences/def.ts index 22059041d1..fb795b1b7a 100644 --- a/packages/frontend/src/preferences/def.ts +++ b/packages/frontend/src/preferences/def.ts @@ -120,7 +120,7 @@ export const PREF_DEF = { default: false, }, keepCw: { - default: true, + default: true as boolean | 'prepend-re', }, rememberNoteVisibility: { default: false, |