Files
buzz/desktop/src/app/useChannelBrowserDialog.ts
Bradley Axen 9b6497402f feat(desktop): create channels in sections (#1996)
Signed-off-by: npub1qvn3cujt28pg06ehlstrxyz6ayzp06t4uc7r566vxwwgrv24hglq9zju0n <03271c724b51c287eb37fc1633105ae90417e975e63c3a6b4c339c81b155ba3e@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1qvn3cujt28pg06ehlstrxyz6ayzp06t4uc7r566vxwwgrv24hglq9zju0n <03271c724b51c287eb37fc1633105ae90417e975e63c3a6b4c339c81b155ba3e@sprout-oss.stage.blox.sqprod.co>
2026-07-16 16:10:26 -07:00

40 lines
990 B
TypeScript

import * as React from "react";
import type { BrowseDialogType } from "@/app/AppShellOverlays";
type CreatedCallback = (channelId: string) => void;
export function useChannelBrowserDialog(onOpen: () => void) {
const [browseDialogType, setBrowseDialogType] =
React.useState<BrowseDialogType>(null);
const createSuccessRef = React.useRef<CreatedCallback | null>(null);
const openBrowseChannels = React.useCallback(
(onCreated?: CreatedCallback) => {
createSuccessRef.current = onCreated ?? null;
setBrowseDialogType("stream");
onOpen();
},
[onOpen],
);
const onBrowseDialogOpenChange = React.useCallback((open: boolean) => {
if (!open) {
createSuccessRef.current = null;
setBrowseDialogType(null);
}
}, []);
const getCreateSuccess = React.useCallback(
() => createSuccessRef.current,
[],
);
return {
browseDialogType,
openBrowseChannels,
onBrowseDialogOpenChange,
getCreateSuccess,
};
}