refactor(settings): drop three orphan settings with no UI and strip them via a one-shot migration
This commit is contained in:
parent
8fcb94e956
commit
06afe034c5
4 changed files with 29 additions and 13 deletions
|
|
@ -564,9 +564,12 @@ export function RoomTimeline({
|
||||||
const [hideNickAvatarEvents] = useSetting(settingsAtom, 'hideNickAvatarEvents');
|
const [hideNickAvatarEvents] = useSetting(settingsAtom, 'hideNickAvatarEvents');
|
||||||
const [mediaAutoLoad] = useSetting(settingsAtom, 'mediaAutoLoad');
|
const [mediaAutoLoad] = useSetting(settingsAtom, 'mediaAutoLoad');
|
||||||
const [urlPreview] = useSetting(settingsAtom, 'urlPreview');
|
const [urlPreview] = useSetting(settingsAtom, 'urlPreview');
|
||||||
const [encUrlPreview] = useSetting(settingsAtom, 'encUrlPreview');
|
// Encrypted rooms never auto-preview URLs (privacy-safe default; the
|
||||||
const showUrlPreview = room.hasEncryptionStateEvent() ? encUrlPreview : urlPreview;
|
// `encUrlPreview` opt-in setting was removed). Plaintext rooms honour urlPreview.
|
||||||
const [showHiddenEvents] = useSetting(settingsAtom, 'showHiddenEvents');
|
const showUrlPreview = room.hasEncryptionStateEvent() ? false : urlPreview;
|
||||||
|
// Hidden/redacted "dev view" of events — was an orphan setting with no UI,
|
||||||
|
// permanently off. Pinned false; the hidden-event renderers below stay inert.
|
||||||
|
const showHiddenEvents = false;
|
||||||
const [showDeveloperTools] = useSetting(settingsAtom, 'developerTools');
|
const [showDeveloperTools] = useSetting(settingsAtom, 'developerTools');
|
||||||
|
|
||||||
const ignoredUsersList = useIgnoredUsers();
|
const ignoredUsersList = useIgnoredUsers();
|
||||||
|
|
|
||||||
|
|
@ -306,9 +306,9 @@ export function ThreadDrawer({
|
||||||
const useAuthentication = useMediaAuthentication();
|
const useAuthentication = useMediaAuthentication();
|
||||||
const [mediaAutoLoad] = useSetting(settingsAtom, 'mediaAutoLoad');
|
const [mediaAutoLoad] = useSetting(settingsAtom, 'mediaAutoLoad');
|
||||||
const [urlPreview] = useSetting(settingsAtom, 'urlPreview');
|
const [urlPreview] = useSetting(settingsAtom, 'urlPreview');
|
||||||
const [encUrlPreview] = useSetting(settingsAtom, 'encUrlPreview');
|
|
||||||
const [hideActivity] = useSetting(settingsAtom, 'hideActivity');
|
const [hideActivity] = useSetting(settingsAtom, 'hideActivity');
|
||||||
const showUrlPreview = room.hasEncryptionStateEvent() ? encUrlPreview : urlPreview;
|
// Encrypted rooms never auto-preview URLs (the `encUrlPreview` opt-in was removed).
|
||||||
|
const showUrlPreview = room.hasEncryptionStateEvent() ? false : urlPreview;
|
||||||
|
|
||||||
const unreadThreadingEnabled = useUnreadThreadingEnabled();
|
const unreadThreadingEnabled = useUnreadThreadingEnabled();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -68,9 +68,10 @@ export const MessageEditor = as<'div', MessageEditorProps>(
|
||||||
const mx = useMatrixClient();
|
const mx = useMatrixClient();
|
||||||
const editor = useEditor();
|
const editor = useEditor();
|
||||||
const [enterForNewline] = useSetting(settingsAtom, 'enterForNewline');
|
const [enterForNewline] = useSetting(settingsAtom, 'enterForNewline');
|
||||||
const [globalToolbar] = useSetting(settingsAtom, 'editorToolbar');
|
|
||||||
const [isMarkdown] = useSetting(settingsAtom, 'isMarkdown');
|
const [isMarkdown] = useSetting(settingsAtom, 'isMarkdown');
|
||||||
const [toolbar, setToolbar] = useState(globalToolbar);
|
// The edit toolbar starts collapsed (the `editorToolbar` opt-in setting was
|
||||||
|
// removed — it only ever gated this one initial-open flag).
|
||||||
|
const [toolbar, setToolbar] = useState(false);
|
||||||
const isComposing = useComposingCheck();
|
const isComposing = useComposingCheck();
|
||||||
|
|
||||||
const [autocompleteQuery, setAutocompleteQuery] =
|
const [autocompleteQuery, setAutocompleteQuery] =
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ export interface Settings {
|
||||||
themeId?: ThemeId;
|
themeId?: ThemeId;
|
||||||
useSystemTheme: boolean;
|
useSystemTheme: boolean;
|
||||||
isMarkdown: boolean;
|
isMarkdown: boolean;
|
||||||
editorToolbar: boolean;
|
|
||||||
twitterEmoji: boolean;
|
twitterEmoji: boolean;
|
||||||
pageZoom: number;
|
pageZoom: number;
|
||||||
hideActivity: boolean;
|
hideActivity: boolean;
|
||||||
|
|
@ -20,8 +19,6 @@ export interface Settings {
|
||||||
hideNickAvatarEvents: boolean;
|
hideNickAvatarEvents: boolean;
|
||||||
mediaAutoLoad: boolean;
|
mediaAutoLoad: boolean;
|
||||||
urlPreview: boolean;
|
urlPreview: boolean;
|
||||||
encUrlPreview: boolean;
|
|
||||||
showHiddenEvents: boolean;
|
|
||||||
|
|
||||||
isNotificationSounds: boolean;
|
isNotificationSounds: boolean;
|
||||||
inviteSpamFilter: boolean;
|
inviteSpamFilter: boolean;
|
||||||
|
|
@ -34,12 +31,12 @@ export interface Settings {
|
||||||
const DAWN_MIGRATION_KEY = 'dawn-redesign-v1';
|
const DAWN_MIGRATION_KEY = 'dawn-redesign-v1';
|
||||||
const P3C_CLEANUP_KEY = 'dawn-p3c-cleanup';
|
const P3C_CLEANUP_KEY = 'dawn-p3c-cleanup';
|
||||||
const SYSTEM_TIME_FORMAT_CLEANUP_KEY = 'system-time-format-cleanup';
|
const SYSTEM_TIME_FORMAT_CLEANUP_KEY = 'system-time-format-cleanup';
|
||||||
|
const ORPHAN_SETTINGS_CLEANUP_KEY = 'dawn-orphan-settings-cleanup';
|
||||||
|
|
||||||
const defaultSettings: Settings = {
|
const defaultSettings: Settings = {
|
||||||
themeId: undefined,
|
themeId: undefined,
|
||||||
useSystemTheme: true,
|
useSystemTheme: true,
|
||||||
isMarkdown: true,
|
isMarkdown: true,
|
||||||
editorToolbar: false,
|
|
||||||
twitterEmoji: false,
|
twitterEmoji: false,
|
||||||
pageZoom: 100,
|
pageZoom: 100,
|
||||||
hideActivity: false,
|
hideActivity: false,
|
||||||
|
|
@ -51,8 +48,6 @@ const defaultSettings: Settings = {
|
||||||
hideNickAvatarEvents: true,
|
hideNickAvatarEvents: true,
|
||||||
mediaAutoLoad: true,
|
mediaAutoLoad: true,
|
||||||
urlPreview: true,
|
urlPreview: true,
|
||||||
encUrlPreview: false,
|
|
||||||
showHiddenEvents: false,
|
|
||||||
|
|
||||||
isNotificationSounds: true,
|
isNotificationSounds: true,
|
||||||
inviteSpamFilter: true,
|
inviteSpamFilter: true,
|
||||||
|
|
@ -125,6 +120,23 @@ export const getSettings = (): Settings => {
|
||||||
setSettings(merged);
|
setSettings(merged);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Dawn remnant sweep: strip the three orphan settings that had no UI toggle
|
||||||
|
// and were frozen at their defaults forever — `editorToolbar` (only ever
|
||||||
|
// pre-opened the edit overlay's toolbar), `encUrlPreview` (encrypted rooms now
|
||||||
|
// never auto-preview, privacy-safe) and `showHiddenEvents` (the dev-only hidden
|
||||||
|
// -event view, permanently off). One-shot strip of the stale persisted keys.
|
||||||
|
if (!merged.migrationsApplied?.[ORPHAN_SETTINGS_CLEANUP_KEY]) {
|
||||||
|
const orphan = merged as unknown as Record<string, unknown>;
|
||||||
|
delete orphan.editorToolbar;
|
||||||
|
delete orphan.encUrlPreview;
|
||||||
|
delete orphan.showHiddenEvents;
|
||||||
|
merged.migrationsApplied = {
|
||||||
|
...(merged.migrationsApplied ?? {}),
|
||||||
|
[ORPHAN_SETTINGS_CLEANUP_KEY]: true,
|
||||||
|
};
|
||||||
|
setSettings(merged);
|
||||||
|
}
|
||||||
|
|
||||||
return merged;
|
return merged;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue