personal web client for Bluesky
typescript solidjs bluesky atcute

feat: router title

mary.my.id f7bd4fef 276e232b

verified
Changed files
+19
src
lib
navigation
+19
src/lib/navigation/router.tsx
··· 5 5 type JSX, 6 6 type Owner, 7 7 createContext, 8 + createEffect, 8 9 createMemo, 9 10 createRoot, 10 11 createSignal, ··· 273 274 274 275 cb(); 275 276 onCleanup(routerEvents.on(route.id, (e) => e.enter && cb())); 277 + }; 278 + 279 + export const createFocusEffect = (cb: () => void) => { 280 + const { route } = useViewContext(); 281 + const [active, setActive] = createSignal(true); 282 + 283 + onCleanup(routerEvents.on(route.id, (e) => setActive(e.focus))); 284 + createEffect(() => { 285 + if (active()) { 286 + cb(); 287 + } 288 + }); 289 + }; 290 + 291 + export const useTitle = (cb: () => string) => { 292 + createFocusEffect(() => { 293 + document.title = cb(); 294 + }); 276 295 }; 277 296 278 297 export interface RouterViewProps {