add alternate gravestone that keeps post content on deletes when using websockets

This commit is contained in:
notfire 2025-03-16 11:54:33 -04:00
parent 88c56b553d
commit d34d28bde4
Signed by: notfire
GPG key ID: 3AFDACAAB4E56B16
7 changed files with 39 additions and 5 deletions

View file

@ -17,7 +17,8 @@
- rename "repeats" to "boosts"
- raise limits:
- polls can now have up to 20 options instead of 4
- polls can now last anywhere from 1 second to 1000 yearss
- polls can now last anywhere from 1 second to 1000 years
- optional alternate gravestone when using websockets that still shows post content but removes buttons
---

View file

@ -199,7 +199,22 @@
>
{{ $t('settings.useStreamingApi') }}
</BooleanSetting>
<ul
class="setting-list suboptions"
:class="[{disabled: !useStreamingApi}]"
>
<li>
<BooleanSetting
path="deletePostsStreaming"
:disabled="!useStreamingApi"
expert="1"
>
{{ $t('settings.deletePostsStreaming') }}
</BooleanSetting>
</li>
</ul>
</li>
<li>
<BooleanSetting
path="virtualScrolling"

View file

@ -189,6 +189,9 @@ const Status = {
deleted () {
return this.statusoid.deleted
},
getDeletedWSSOption () {
return this.mergedConfig.deletePostsStreaming
},
repeaterStyle () {
const user = this.statusoid.user
const highlight = this.mergedConfig.highlight

View file

@ -117,7 +117,7 @@
</div>
<div
v-if="!deleted"
v-if="!deleted || (deleted && !getDeletedWSSOption)"
:class="[userClass, { highlighted: userStyle, '-repeat': retweet && !inConversation }]"
:style="[ userStyle ]"
class="status-container"
@ -194,10 +194,16 @@
:to="{ name: 'conversation', params: { id: status.id } }"
>
<Timeago
v-if="!deleted"
:time="status.created_at"
:with-direction="!compact"
:auto-update="60"
/>
<span
v-else
>
DELETED
</span>
</router-link>
<span
v-if="status.visibility"
@ -205,13 +211,14 @@
:title="visibilityLocalized"
>
<FAIcon
v-if="!deleted"
fixed-width
class="fa-scale-110"
:icon="visibilityIcon(status.visibility)"
/>
</span>
<button
v-if="expandable && !isPreview"
v-if="expandable && !isPreview && !deleted"
class="button-unstyled"
:title="$t('status.expand')"
@click.prevent="toggleExpanded"
@ -456,30 +463,35 @@
class="status-actions"
>
<reply-button
v-if="!deleted"
:replying="replying"
:status="status"
@toggle="toggleReplying"
/>
<quote-button
v-if="!deleted"
:visibility="status.visibility"
:quoting="quoting"
:status="status"
@toggle="toggleQuoting"
/>
<retweet-button
v-if="!deleted"
:visibility="status.visibility"
:logged-in="loggedIn"
:status="status"
/>
<favorite-button
v-if="!deleted"
:logged-in="loggedIn"
:status="status"
/>
<ReactButton
v-if="loggedIn"
v-if="!deleted && loggedIn"
:status="status"
/>
<extra-buttons
v-if="!deleted"
:status="status"
@on-error="showError"
@on-success="clearError"
@ -488,7 +500,7 @@
</div>
</div>
<div
v-else
v-else-if="deleted"
class="gravestone"
>
<div class="left-side">

View file

@ -544,6 +544,7 @@
"delete_account_description": "Permanently delete your data and deactivate your account.",
"delete_account_error": "There was an issue deleting your account. If this persists please contact your instance administrator.",
"delete_account_instructions": "Type your password in the input below to confirm account deletion.",
"deletePostsStreaming": "Remove posts from timeline if a delete request is received",
"disable_sticky_headers": "Don't stick column headers to top of the screen",
"discoverable": "Allow discovery of this account in search results and other services",
"domain_mutes": "Domains",

View file

@ -78,6 +78,7 @@ export const defaultState = {
interfaceLanguage: browserLocale,
hideScopeNotice: false,
useStreamingApi: false,
deletePostsStreaming: true,
sidebarRight: undefined, // instance default
widenTimeline: undefined, // instance default
subjectLineBehavior: undefined, // instance default

View file

@ -77,6 +77,7 @@ const defaultState = {
soundOnNotifVolume: 0.2,
soundOnNotifCustom: '',
boostsFollowDefVis: false,
deletePostsStreaming: true,
renderMisskeyMarkdown: true,
renderMfmOnHover: false,
conversationDisplay: 'linear',