From 6b87cc9a34aad80b5ef90baaf13a8a4e067a44ae Mon Sep 17 00:00:00 2001 From: Untone Date: Mon, 25 Dec 2023 00:29:25 +0300 Subject: [PATCH] auth-refresh-fix --- src/context/notifications.tsx | 2 +- src/context/session.tsx | 15 ++++++++++++--- src/graphql/query/core/query.json | 9 --------- src/stores/zine/topics.ts | 6 ++++-- 4 files changed, 17 insertions(+), 15 deletions(-) delete mode 100644 src/graphql/query/core/query.json diff --git a/src/context/notifications.tsx b/src/context/notifications.tsx index 48a3a71c..cffeff74 100644 --- a/src/context/notifications.tsx +++ b/src/context/notifications.tsx @@ -56,7 +56,7 @@ export const NotificationsProvider = (props: { children: JSX.Element }) => { setTotalNotificationsCount(total) setUnreadNotificationsCount(unread) setNotificationEntities(newGroupsEntries) - console.debug(`[context.notifications] groups updated`) + console.debug(`[context.notifications] groups updated`, groups) return groups } else { return [] diff --git a/src/context/session.tsx b/src/context/session.tsx index 0a1c6ea0..b12d228b 100644 --- a/src/context/session.tsx +++ b/src/context/session.tsx @@ -17,6 +17,7 @@ import { createResource, createSignal, on, + onCleanup, onMount, useContext, } from 'solid-js' @@ -105,6 +106,7 @@ export const SessionProvider = (props: { }) // load + let ta const [configuration, setConfig] = createSignal(defaultConfig) const authorizer = createMemo(() => new Authorizer(defaultConfig)) const [isSessionLoaded, setIsSessionLoaded] = createSignal(false) @@ -112,8 +114,11 @@ export const SessionProvider = (props: { const [session, { refetch: loadSession, mutate: setSession }] = createResource( async () => { try { - console.info('[context.session] loading session') - return await authorizer().getSession() + const s = await authorizer().getSession() + console.info('[context.session] loading session', s) + ta = setTimeout(loadSession, s.expires_in * 1000) + console.info(`[context.session] will refresh in ${s.expires_in / 60} mins`) + return s } catch (e) { console.info('[context.session] cannot refresh session', e) setAuthError(e) @@ -126,6 +131,10 @@ export const SessionProvider = (props: { }, ) + onCleanup(() => { + clearTimeout(ta) + }) + const [author, { refetch: loadAuthor, mutate: setAuthor }] = createResource( async () => { const u = session()?.user @@ -148,7 +157,7 @@ export const SessionProvider = (props: { if (session()) { const token = session()?.access_token if (token) { - console.log('[context.session] token observer got token', token) + // console.log('[context.session] token observer got token', token) if (!inboxClient.private) { apiClient.connect(token) notifierClient.connect(token) diff --git a/src/graphql/query/core/query.json b/src/graphql/query/core/query.json deleted file mode 100644 index b8f1878c..00000000 --- a/src/graphql/query/core/query.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "query": "query ValidateToken($params: ValidateJWTTokenInput!) { validate_jwt_token(params: $params) { is_valid claims } }", - "variables": { - "params": { - "token_type": "access_token", - "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhbGxvd2VkX3JvbGVzIjpbInJlYWRlciJdLCJhdWQiOiI5YzExMzM3Ny01ZWVhLTRjODktOThlMS02OTMwMjQ2MmZjMDgiLCJleHAiOjE3MDI1MDM3NDksImlhdCI6MTcwMjUwMTk0OSwiaXNzIjoiaHR0cHM6Ly9hdXRoLmRpc2NvdXJzLmlvIiwibG9naW5fbWV0aG9kIjoiYmFzaWNfYXV0aCIsIm5vbmNlIjoiNTNhZmE1NzMtMWZhMC00NDNhLTk4NzktNWE0ZDk3YTQ1OWEzIiwicm9sZXMiOlsicmVhZGVyIl0sInNjb3BlIjpbIm9wZW5pZCIsImVtYWlsIiwicHJvZmlsZSJdLCJzdWIiOiIyNDU3NTc5Yi0yNTk3LTQzNjMtOGU1MC00YWM5ZjY5YzgyMWQiLCJ0b2tlbl90eXBlIjoiYWNjZXNzX3Rva2VuIn0.ImAmAFXkwReYhLvLR1GG3g0mDllQaj7NVWw5q9D7EFUHtpjuNOanlVfzoaqqB6CXkc_uSRlrfiaLkbfCzhbXAWpi49vOI9P2fvLv-41Y0p8FJZnruZDi1c8psyPU5gpCLp3nqtBTTIR2IP-Uu_1oYo2Hl02xdOFjVHw19f-WEf73L6APBPppNeE21IJJy8aU5uXBHv12Y--kH5tEzn83BNBKPm5yWay-k4DVuBnAJt_ODENqm5NAaiG-q2eG3GnXWpjgpDXf0cxVXdtJbvFcPIv-pH7Dm6ae8m4xM7MmVmpzCE5f-Qc1lwcfX51Cr6IMXUjHx0N3n54sKk91CPa_ug" - } - } -} diff --git a/src/stores/zine/topics.ts b/src/stores/zine/topics.ts index 12aa2cf9..6de17d64 100644 --- a/src/stores/zine/topics.ts +++ b/src/stores/zine/topics.ts @@ -5,6 +5,7 @@ import { createMemo, createSignal } from 'solid-js' import { apiClient } from '../../graphql/client/core' import { byTopicStatDesc } from '../../utils/sortby' +import { useRouter } from '../router' export type TopicsSortBy = 'followers' | 'title' | 'authors' | 'shouts' @@ -17,7 +18,7 @@ const [randomTopics, setRandomTopics] = createSignal([]) const sortedTopics = createLazyMemo(() => { const topics = Object.values(topicEntities()) - + const { changeSearchParams } = useRouter() switch (sortAllBy()) { case 'followers': { // console.debug('[store.topics] sorted by followers') @@ -40,7 +41,8 @@ const sortedTopics = createLazyMemo(() => { break } default: { - console.error(`Unknown sort: ${sortAllBy()}`) + topics.sort(byTopicStatDesc('shouts')) + changeSearchParams({ by: 'shouts' }) } }