BlueSky & more on desktop
lazurite.stormlightlabs.org/
tauri
rust
typescript
bluesky
appview
atproto
solid
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}