diff --git a/.changeset/add_tombstone_settings_toggle_for_redacted_msgs.md b/.changeset/add_tombstone_settings_toggle_for_redacted_msgs.md
new file mode 100644
index 000000000..06b497a1e
--- /dev/null
+++ b/.changeset/add_tombstone_settings_toggle_for_redacted_msgs.md
@@ -0,0 +1,5 @@
+---
+sable: patch
+---
+
+added settings toggle in (General>Messages) to enable showing a tombstone for deleted messages without having to set all hidden events to visible
diff --git a/src/app/features/room/RoomTimeline.tsx b/src/app/features/room/RoomTimeline.tsx
index 84c9e0108..9e14a6826 100644
--- a/src/app/features/room/RoomTimeline.tsx
+++ b/src/app/features/room/RoomTimeline.tsx
@@ -573,6 +573,7 @@ export function RoomTimeline({
const [encUrlPreview] = useSetting(settingsAtom, 'encUrlPreview');
const showUrlPreview = room.hasEncryptionStateEvent() ? encUrlPreview : urlPreview;
const [showHiddenEvents] = useSetting(settingsAtom, 'showHiddenEvents');
+ const [showTombstoneEvents] = useSetting(settingsAtom, 'showTombstoneEvents');
const [showDeveloperTools] = useSetting(settingsAtom, 'developerTools');
const [reducedMotion] = useSetting(settingsAtom, 'reducedMotion');
@@ -2063,7 +2064,7 @@ export function RoomTimeline({
if (eventSender && ignoredUsersSet.has(eventSender)) {
return null;
}
- if (mEvent.isRedacted() && !showHiddenEvents) {
+ if (mEvent.isRedacted() && !(showHiddenEvents || showTombstoneEvents)) {
return null;
}
diff --git a/src/app/features/settings/general/General.tsx b/src/app/features/settings/general/General.tsx
index a329ec8ef..fd0d9d705 100644
--- a/src/app/features/settings/general/General.tsx
+++ b/src/app/features/settings/general/General.tsx
@@ -385,6 +385,16 @@ function SelectDateFormat() {
);
}
+function getTombstoneSettingToggleTitle(showHidden: boolean, showTombstone: boolean): string {
+ if (showHidden) {
+ return 'Tombstone events are always shown when "Show Hidden Events" is enabled.';
+ }
+ if (showTombstone) {
+ return 'Disable to hide redacted messages entirely instead of showing a tombstone.';
+ }
+ return 'Enable to show tombstone events for redacted messages instead of hiding them entirely.';
+}
+
function DateAndTime() {
const [hour24Clock, setHour24Clock] = useSetting(settingsAtom, 'hour24Clock');
@@ -826,6 +836,10 @@ function Messages() {
const [urlPreview, setUrlPreview] = useSetting(settingsAtom, 'urlPreview');
const [encUrlPreview, setEncUrlPreview] = useSetting(settingsAtom, 'encUrlPreview');
const [showHiddenEvents, setShowHiddenEvents] = useSetting(settingsAtom, 'showHiddenEvents');
+ const [showTombstoneEvents, setShowTombstoneEvents] = useSetting(
+ settingsAtom,
+ 'showTombstoneEvents'
+ );
const [hideMembershipInReadOnly, setHideMembershipInReadOnly] = useSetting(
settingsAtom,
'hideMembershipInReadOnly'
@@ -924,7 +938,30 @@ function Messages() {
+
+ }
+ />
+
+
+
}
/>
diff --git a/src/app/state/settings.ts b/src/app/state/settings.ts
index ab4d6ef18..96cae3872 100644
--- a/src/app/state/settings.ts
+++ b/src/app/state/settings.ts
@@ -48,6 +48,7 @@ export interface Settings {
urlPreview: boolean;
encUrlPreview: boolean;
showHiddenEvents: boolean;
+ showTombstoneEvents: boolean;
legacyUsernameColor: boolean;
allowPipVideos: boolean;
@@ -123,6 +124,7 @@ const defaultSettings: Settings = {
urlPreview: true,
encUrlPreview: false,
showHiddenEvents: false,
+ showTombstoneEvents: false,
legacyUsernameColor: false,
allowPipVideos: false,