()
| 220 | } |
| 221 | |
| 222 | function ResolvedTargetSessionRoute() { |
| 223 | const params = useParams<{ serverKey: string; id: string }>() |
| 224 | const settings = useSettings() |
| 225 | const tabs = useTabs() |
| 226 | const sync = useServerSync() |
| 227 | const serverKey = createMemo(() => requireServerKey(params.serverKey)) |
| 228 | const cached = createMemo(() => sync().session.lineage.peek(params.id)) |
| 229 | const [resolved] = createResource( |
| 230 | () => { |
| 231 | if (cached()) return |
| 232 | return { id: params.id, sync: sync() } |
| 233 | }, |
| 234 | ({ id, sync }) => sync.session.lineage.resolve(id), |
| 235 | ) |
| 236 | const current = createMemo(() => selectSessionLineage(params.id, cached(), resolved())) |
| 237 | const directory = createMemo(() => current()?.session.directory) |
| 238 | const targetDirectory = () => directory()! |
| 239 | |
| 240 | createEffect(() => { |
| 241 | const session = current() |
| 242 | if (!session) return |
| 243 | tabs.addSessionTab({ |
| 244 | server: serverKey(), |
| 245 | sessionId: session.root.id, |
| 246 | }) |
| 247 | }) |
| 248 | |
| 249 | return ( |
| 250 | <TargetServerScopedProviders directory={directory} sessionID={() => params.id}> |
| 251 | <Show when={directory()}> |
| 252 | <Show |
| 253 | when={settings.general.newLayoutDesigns()} |
| 254 | fallback={<Navigate href={legacySessionHref(directory()!, params.id)} />} |
| 255 | > |
| 256 | <SDKProvider directory={targetDirectory}> |
| 257 | <DirectoryDataProvider directory={targetDirectory} server={serverKey}> |
| 258 | <TargetSessionPage /> |
| 259 | </DirectoryDataProvider> |
| 260 | </SDKProvider> |
| 261 | </Show> |
| 262 | </Show> |
| 263 | </TargetServerScopedProviders> |
| 264 | ) |
| 265 | } |
| 266 | |
| 267 | function TargetSessionPage() { |
| 268 | const sdk = useSDK() |
nothing calls this directly
no test coverage detected