BlueSky & more on desktop lazurite.stormlightlabs.org/
tauri rust typescript bluesky appview atproto solid
at main 32 lines 1.0 kB view raw
1import { TIMELINE_ROUTE } from "$/lib/feeds"; 2import { buildPostEngagementRoute, type PostEngagementTab } from "$/lib/post-engagement-routes"; 3import { buildPostRoute } from "$/lib/post-routes"; 4import { useNavigate } from "@solidjs/router"; 5import { useThreadOverlayNavigation } from "./useThreadOverlayNavigation"; 6 7export function usePostNavigation() { 8 const navigate = useNavigate(); 9 const threadOverlay = useThreadOverlayNavigation(); 10 11 function openPost(uri: string) { 12 return threadOverlay.openThread(uri); 13 } 14 15 function openPostScreen(uri: string) { 16 return navigate(buildPostRoute(uri)); 17 } 18 19 function openPostEngagement(uri: string, tab: PostEngagementTab) { 20 return navigate(buildPostEngagementRoute(uri, tab)); 21 } 22 23 function backFromPost() { 24 if (globalThis.history.length > 1) { 25 return navigate(-1); 26 } 27 28 return navigate(TIMELINE_ROUTE); 29 } 30 31 return { backFromPost, buildPostHref: threadOverlay.buildThreadHref, openPost, openPostEngagement, openPostScreen }; 32}