(scope: Scope)
| 327 | const scope = () => |
| 328 | search.draftId ? { draftID: search.draftId } : { dir: base64Encode(sdk().directory), id: params.id } |
| 329 | const load = (scope: Scope) => { |
| 330 | const current = settings.general.newLayoutDesigns() ? selectPromptTab(tabs.store, scope, serverKey()) : undefined |
| 331 | if (current) { |
| 332 | return createTabPromptState(tabs, current, serverSDK().scope, scope) |
| 333 | } |
| 334 | |
| 335 | const key = scopeKey(scope) |
| 336 | const existing = cache.get(key) |
| 337 | if (existing) { |
| 338 | cache.delete(key) |
| 339 | cache.set(key, existing) |
| 340 | return existing.value |
| 341 | } |
| 342 | |
| 343 | const entry = createRoot( |
| 344 | (dispose) => ({ |
| 345 | value: createPromptSession(serverSDK().scope, scope), |
| 346 | dispose, |
| 347 | }), |
| 348 | owner, |
| 349 | ) |
| 350 | |
| 351 | cache.set(key, entry) |
| 352 | prune() |
| 353 | return entry.value |
| 354 | } |
| 355 | |
| 356 | const session = createMemo(() => load(scope())) |
| 357 | const pick = (scope?: Scope) => (scope ? load(scope) : session()) |
no test coverage detected