Adds useToggle hook (#39729)

This commit is contained in:
Echo
2026-07-06 14:31:45 +02:00
committed by GitHub
parent 45ff739af2
commit dff66fe890
2 changed files with 19 additions and 5 deletions

View File

@@ -1,4 +1,4 @@
import { lazy, Suspense, useCallback, useState } from 'react';
import { lazy, Suspense, useCallback } from 'react';
import { openModal } from '@/mastodon/actions/modal';
import type { DeployPictureInPictureCallback } from '@/mastodon/actions/picture_in_picture';
@@ -6,6 +6,7 @@ import { deployPictureInPicture } from '@/mastodon/actions/picture_in_picture';
import { CollectionPreviewCard } from '@/mastodon/features/collections/components/collection_preview_card';
import Card from '@/mastodon/features/status/components/card';
import { useExpandedStatus } from '@/mastodon/hooks/useStatus';
import { useToggle } from '@/mastodon/hooks/useToggle';
import { displayMedia } from '@/mastodon/initial_state';
import type {
MediaAttachment,
@@ -130,7 +131,7 @@ const MediaAttachments: React.FC<{
selectPictureInPicture(state, statusId),
);
const [showMedia, setShowMedia] = useState(
const [showMedia, { onToggle: handleToggleMediaVisibility }] = useToggle(
() =>
mediaFilters.length === 0 &&
((displayMedia !== 'hide_all' && !sensitive) ||
@@ -138,9 +139,6 @@ const MediaAttachments: React.FC<{
);
const dispatch = useAppDispatch();
const handleToggleMediaVisibility = useCallback(() => {
setShowMedia((prev) => !prev);
}, []);
const handleOpenMedia = useCallback(
(index: number) => {
dispatch(

View File

@@ -0,0 +1,16 @@
import { useCallback, useState } from 'react';
export function useToggle(initialValue: boolean | (() => boolean) = false) {
const [value, setValue] = useState(initialValue);
const onTrue = useCallback(() => {
setValue(true);
}, []);
const onFalse = useCallback(() => {
setValue(false);
}, []);
const onToggle = useCallback(() => {
setValue((prevValue) => !prevValue);
}, []);
return [value, { setValue, onTrue, onFalse, onToggle }] as const;
}