From b72b5075848e65cb7eebb5e64ece59ed0e77be57 Mon Sep 17 00:00:00 2001 From: diondiondion Date: Fri, 12 Dec 2025 12:03:00 +0100 Subject: [PATCH] Remember revealed archetype on future Wrapstodon visits (#37219) --- .../mastodon/features/annual_report/archetype.tsx | 11 ++++++++++- app/javascript/mastodon/features/video/index.tsx | 4 ++-- app/javascript/mastodon/settings.ts | 3 +++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/features/annual_report/archetype.tsx b/app/javascript/mastodon/features/annual_report/archetype.tsx index 660a1cf29d..56eef212bb 100644 --- a/app/javascript/mastodon/features/annual_report/archetype.tsx +++ b/app/javascript/mastodon/features/annual_report/archetype.tsx @@ -12,11 +12,13 @@ import replier from '@/images/archetypes/replier.png'; import space_elements from '@/images/archetypes/space_elements.png'; import { Avatar } from '@/mastodon/components/avatar'; import { Button } from '@/mastodon/components/button'; +import { me } from '@/mastodon/initial_state'; import type { Account } from '@/mastodon/models/account'; import type { AnnualReport, Archetype as ArchetypeData, } from '@/mastodon/models/annual_report'; +import { wrapstodonSettings } from '@/mastodon/settings'; import styles from './index.module.scss'; import { ShareButton } from './share_button'; @@ -117,9 +119,16 @@ export const Archetype: React.FC<{ const wrapperRef = useRef(null); const isSelfView = context === 'modal'; - const [isRevealed, setIsRevealed] = useState(!isSelfView); + const [isRevealed, setIsRevealed] = useState( + () => + !isSelfView || + (me ? (wrapstodonSettings.get(me)?.archetypeRevealed ?? false) : true), + ); const reveal = useCallback(() => { setIsRevealed(true); + if (me) { + wrapstodonSettings.set(me, { archetypeRevealed: true }); + } wrapperRef.current?.focus(); }, []); diff --git a/app/javascript/mastodon/features/video/index.tsx b/app/javascript/mastodon/features/video/index.tsx index aa03e3d2e9..6721b5c96a 100644 --- a/app/javascript/mastodon/features/video/index.tsx +++ b/app/javascript/mastodon/features/video/index.tsx @@ -139,8 +139,8 @@ const persistVolume = (volume: number, muted: boolean) => { }; const restoreVolume = (video: HTMLVideoElement) => { - const volume = (playerSettings.get('volume') as number | undefined) ?? 0.5; - const muted = (playerSettings.get('muted') as boolean | undefined) ?? false; + const volume = playerSettings.get('volume') ?? 0.5; + const muted = playerSettings.get('muted') ?? false; video.volume = volume; video.muted = muted; diff --git a/app/javascript/mastodon/settings.ts b/app/javascript/mastodon/settings.ts index 24bf1a2573..87c67a6e04 100644 --- a/app/javascript/mastodon/settings.ts +++ b/app/javascript/mastodon/settings.ts @@ -63,3 +63,6 @@ export const searchHistory = new Settings>( export const playerSettings = new Settings<{ volume: number; muted: boolean }>( 'mastodon_player', ); +export const wrapstodonSettings = new Settings< + Record +>('wrapstodon');