diff --git a/app/javascript/flavours/glitch/features/annual_report/archetype.tsx b/app/javascript/flavours/glitch/features/annual_report/archetype.tsx index eb2119009e..297e12cda8 100644 --- a/app/javascript/flavours/glitch/features/annual_report/archetype.tsx +++ b/app/javascript/flavours/glitch/features/annual_report/archetype.tsx @@ -6,11 +6,13 @@ import classNames from 'classnames'; import { Avatar } from '@/flavours/glitch/components/avatar'; import { Button } from '@/flavours/glitch/components/button'; +import { me } from '@/flavours/glitch/initial_state'; import type { Account } from '@/flavours/glitch/models/account'; import type { AnnualReport, Archetype as ArchetypeData, } from '@/flavours/glitch/models/annual_report'; +import { wrapstodonSettings } from '@/flavours/glitch/settings'; import booster from '@/images/archetypes/booster.png'; import lurker from '@/images/archetypes/lurker.png'; import oracle from '@/images/archetypes/oracle.png'; @@ -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/flavours/glitch/features/video/index.tsx b/app/javascript/flavours/glitch/features/video/index.tsx index 5229958818..b43bfae703 100644 --- a/app/javascript/flavours/glitch/features/video/index.tsx +++ b/app/javascript/flavours/glitch/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/flavours/glitch/settings.ts b/app/javascript/flavours/glitch/settings.ts index 24bf1a2573..87c67a6e04 100644 --- a/app/javascript/flavours/glitch/settings.ts +++ b/app/javascript/flavours/glitch/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');