From 6ce2f1f1c475a1bec0f18f17f4c3354ee9088bf3 Mon Sep 17 00:00:00 2001 From: ari melody Date: Sun, 7 Jul 2024 15:13:26 +0100 Subject: [PATCH] fixed thread view not updating when opening other posts --- .../[server]/[account]/[post]/+page.svelte | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/routes/[server]/[account]/[post]/+page.svelte b/src/routes/[server]/[account]/[post]/+page.svelte index 2c1a8b6..75daa65 100644 --- a/src/routes/[server]/[account]/[post]/+page.svelte +++ b/src/routes/[server]/[account]/[post]/+page.svelte @@ -11,29 +11,31 @@ export let data; - let post; + let post = fetchPost(data.post_id); let error = false; let previous_page = base; - if (($server && $server.host === data.server_host) && $app) { - post = fetchPost(data.post_id, $app.token); - } else { - post = createServer(data.server_host).then(new_server => { - server.set(new_server); + afterNavigate(({from}) => { + previous_page = from?.url.pathname || previous_page; + post = fetchPost(data.post_id); + }) + + async function fetchPost(post_id) { + let token = $app ? $app.token : null; + + if (!$server || $server.host !== data.server_host) { + // this will probably break in the odd case the user is logged in + // while accessing a URI paired to another instance, as it + // overrides the current server state to match the new target. + // TODO: make `server` a key/value pair to support multiple servers + server.set(await createServer(data.server_host)); if (!$server) { error = `Failed to connect to ${data.server_host}.`; console.error(`Failed to connect to ${data.server_host}.`); return; } - return post = fetchPost(data.post_id, null); - }); - } + } - afterNavigate(({from}) => { - previous_page = from?.url.pathname || previous_page - }) - - async function fetchPost(post_id, token) { const post_data = await api.getPost($server.host, token, post_id); if (!post_data || post_data.error) { error = `Failed to retrieve post ${post_id}.`;