summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2024-09-21 18:21:20 +0100
committerdakkar <dakkar@thenautilus.net>2024-09-21 18:24:57 +0100
commitd3710f0872b8a0571bf0321aa98935acdc1c9408 (patch)
tree37f50d35dfb7eac8f991da49af2be961267a0456 /packages
parentmerge: fix: use i18n in settings/general.vue (!626) (diff)
downloadsharkey-d3710f0872b8a0571bf0321aa98935acdc1c9408.tar.gz
sharkey-d3710f0872b8a0571bf0321aa98935acdc1c9408.tar.bz2
sharkey-d3710f0872b8a0571bf0321aa98935acdc1c9408.zip
maybe fix #510 - try to not edit visibility
the frontend part is pretty straightforward, the backend part is ugly but it shouldn't make things worse than they already are
Diffstat (limited to 'packages')
-rw-r--r--packages/backend/src/core/NoteEditService.ts8
-rw-r--r--packages/frontend/src/components/MkPostForm.vue4
2 files changed, 7 insertions, 5 deletions
diff --git a/packages/backend/src/core/NoteEditService.ts b/packages/backend/src/core/NoteEditService.ts
index 5ff0f26e2b..f42d14b466 100644
--- a/packages/backend/src/core/NoteEditService.ts
+++ b/packages/backend/src/core/NoteEditService.ts
@@ -247,6 +247,11 @@ export class NoteEditService implements OnApplicationShutdown {
data.reply = undefined;
}
+ // changing visibility on an edit is ill-defined, let's try to
+ // keep the same visibility as the original note
+ data.visibility = oldnote.visibility;
+ data.localOnly = oldnote.localOnly;
+
// チャンネル外にリプライしたら対象のスコープに合わせる
// (クライアントサイドでやっても良い処理だと思うけどとりあえずサーバーサイドで)
if (data.reply && data.channel && data.reply.channelId !== data.channel.id) {
@@ -429,9 +434,6 @@ export class NoteEditService implements OnApplicationShutdown {
if (data.cw !== oldnote.cw) {
update.cw = data.cw;
}
- if (data.localOnly !== oldnote.localOnly) {
- update.localOnly = data.localOnly;
- }
if (oldnote.hasPoll !== !!data.poll) {
update.hasPoll = !!data.poll;
}
diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue
index 2bc607fbb6..0afe184b90 100644
--- a/packages/frontend/src/components/MkPostForm.vue
+++ b/packages/frontend/src/components/MkPostForm.vue
@@ -20,7 +20,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<div :class="$style.headerRight">
<template v-if="!(channel != null && fixed)">
- <button v-if="channel == null" ref="visibilityButton" v-click-anime v-tooltip="i18n.ts.visibility" :class="['_button', $style.headerRightItem, $style.visibility]" @click="setVisibility">
+ <button v-if="channel == null" ref="visibilityButton" v-click-anime v-tooltip="i18n.ts.visibility" :class="['_button', $style.headerRightItem, $style.visibility]" @click="setVisibility" :disabled="editId != null">
<span v-if="visibility === 'public'"><i class="ti ti-world"></i></span>
<span v-if="visibility === 'home'"><i class="ti ti-home"></i></span>
<span v-if="visibility === 'followers'"><i class="ti ti-lock"></i></span>
@@ -32,7 +32,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<span :class="$style.headerRightButtonText">{{ channel.name }}</span>
</button>
</template>
- <button v-click-anime v-tooltip="i18n.ts._visibility.disableFederation" class="_button" :class="[$style.headerRightItem, { [$style.danger]: localOnly }]" :disabled="channel != null || visibility === 'specified'" @click="toggleLocalOnly">
+ <button v-click-anime v-tooltip="i18n.ts._visibility.disableFederation" class="_button" :class="[$style.headerRightItem, { [$style.danger]: localOnly }]" :disabled="channel != null || visibility === 'specified' || editId != null" @click="toggleLocalOnly">
<span v-if="!localOnly"><i class="ti ti-rocket"></i></span>
<span v-else><i class="ti ti-rocket-off"></i></span>
</button>