session-patch

This commit is contained in:
Untone 2024-06-05 19:11:48 +03:00
parent 409e64ddaf
commit 603ebbb4a5
4 changed files with 6 additions and 59 deletions

View File

@ -57,7 +57,7 @@ export const ProfileSettings = () => {
const [nameError, setNameError] = createSignal<string>() const [nameError, setNameError] = createSignal<string>()
const { form, submit, updateFormField, setForm } = useProfileForm() const { form, submit, updateFormField, setForm } = useProfileForm()
const { showSnackbar } = useSnackbar() const { showSnackbar } = useSnackbar()
const { loadAuthor, session } = useSession() const { loadSession, session } = useSession()
const { showConfirm } = useConfirm() const { showConfirm } = useConfirm()
const [clearAbout, setClearAbout] = createSignal(false) const [clearAbout, setClearAbout] = createSignal(false)
@ -112,7 +112,7 @@ export const ProfileSettings = () => {
setIsSaving(false) setIsSaving(false)
} }
await loadAuthor() // renews author's profile setTimeout(loadSession, 5000) // renews author's profile
} }
const handleCancel = async () => { const handleCancel = async () => {

View File

@ -47,13 +47,11 @@ const defaultConfig: ConfigType = {
export type SessionContextType = { export type SessionContextType = {
config: Accessor<ConfigType> config: Accessor<ConfigType>
session: Resource<AuthToken> session: Resource<AuthToken>
author: Resource<Author | null> author: Accessor<Author>
authError: Accessor<string> authError: Accessor<string>
isSessionLoaded: Accessor<boolean> isSessionLoaded: Accessor<boolean>
loadSession: () => AuthToken | Promise<AuthToken> loadSession: () => AuthToken | Promise<AuthToken>
setSession: (token: AuthToken | null) => void // setSession setSession: (token: AuthToken | null) => void // setSession
loadAuthor: (info?: unknown) => Author | Promise<Author>
setAuthor: (a: Author) => void
requireAuthentication: ( requireAuthentication: (
callback: (() => Promise<void>) | (() => void), callback: (() => Promise<void>) | (() => void),
modalSource: AuthModalSource, modalSource: AuthModalSource,
@ -205,6 +203,7 @@ export const SessionProvider = (props: {
ssrLoadFrom: 'initial', ssrLoadFrom: 'initial',
initialValue: null, initialValue: null,
}) })
const author = createMemo(() => session().user?.app_data?.profile)
const checkSessionIsExpired = () => { const checkSessionIsExpired = () => {
const expires_at_data = localStorage.getItem('expires_at') const expires_at_data = localStorage.getItem('expires_at')
@ -226,15 +225,6 @@ export const SessionProvider = (props: {
onCleanup(() => clearTimeout(minuteLater)) onCleanup(() => clearTimeout(minuteLater))
const authorData = async () => {
const u = session()?.user
return u ? (await apiClient.getAuthorId({ user: u.id.trim() })) || null : null
}
const [author, { refetch: loadAuthor, mutate: setAuthor }] = createResource<Author | null>(authorData, {
ssrLoadFrom: 'initial',
initialValue: null,
})
// when session is loaded // when session is loaded
createEffect( createEffect(
on( on(
@ -249,16 +239,8 @@ export const SessionProvider = (props: {
} }
try { try {
const appdata = session()?.user.app_data const profile = session()?.user?.app_data?.profile
if (appdata) { if (profile?.id) addAuthors([profile])
const { profile } = appdata
if (profile?.id) {
setAuthor(profile)
addAuthors([profile])
} else {
setTimeout(loadAuthor, 15)
}
}
} catch (e) { } catch (e) {
console.error(e) console.error(e)
} }
@ -274,7 +256,6 @@ export const SessionProvider = (props: {
const reset = () => { const reset = () => {
setIsSessionLoaded(true) setIsSessionLoaded(true)
setSession(null) setSession(null)
setAuthor(null)
} }
// initial effect // initial effect
@ -406,9 +387,7 @@ export const SessionProvider = (props: {
updateProfile, updateProfile,
setIsSessionLoaded, setIsSessionLoaded,
setSession, setSession,
setAuthor,
authorizer, authorizer,
loadAuthor,
forgotPassword, forgotPassword,
changePassword, changePassword,
oauth, oauth,

View File

@ -40,7 +40,6 @@ import loadShoutsUnrated from '../query/core/articles-load-unrated'
import authorBy from '../query/core/author-by' import authorBy from '../query/core/author-by'
import authorFollowers from '../query/core/author-followers' import authorFollowers from '../query/core/author-followers'
import authorFollows from '../query/core/author-follows' import authorFollows from '../query/core/author-follows'
import authorId from '../query/core/author-id'
import authorsAll from '../query/core/authors-all' import authorsAll from '../query/core/authors-all'
import authorsLoadBy from '../query/core/authors-load-by' import authorsLoadBy from '../query/core/authors-load-by'
import reactionsLoadBy from '../query/core/reactions-load-by' import reactionsLoadBy from '../query/core/reactions-load-by'
@ -121,11 +120,6 @@ export const apiClient = {
return response.data.get_author return response.data.get_author
}, },
getAuthorId: async (params: { user: string }): Promise<Author> => {
const response = await publicGraphQLClient.query(authorId, params).toPromise()
return response.data.get_author_id
},
getAuthorFollowers: async ({ slug }: { slug: string }): Promise<Author[]> => { getAuthorFollowers: async ({ slug }: { slug: string }): Promise<Author[]> => {
const response = await publicGraphQLClient.query(authorFollowers, { slug }).toPromise() const response = await publicGraphQLClient.query(authorFollowers, { slug }).toPromise()
return response.data.get_author_followers return response.data.get_author_followers

View File

@ -1,26 +0,0 @@
import { gql } from '@urql/core'
export default gql`
query GetAuthorId($user: String!) {
get_author_id(user: $user) {
id
slug
name
bio
about
pic
links
created_at
last_seen
stat {
shouts
authors
followers
rating
comments
rating_shouts
rating_comments
}
}
}
`