diff --git a/src/components/Nav/AuthModal/EmailConfirm.tsx b/src/components/Nav/AuthModal/EmailConfirm.tsx index a3d6c196..94505c5b 100644 --- a/src/components/Nav/AuthModal/EmailConfirm.tsx +++ b/src/components/Nav/AuthModal/EmailConfirm.tsx @@ -12,6 +12,7 @@ import styles from './AuthModal.module.scss' export const EmailConfirm = () => { const { t } = useLocalize() + const { changeSearchParams } = useRouter() const { session, authError } = useSession() const [email, setEmail] = createSignal('') const [emailConfirmed, setEmailConfirmed] = createSignal(false) @@ -20,6 +21,12 @@ export const EmailConfirm = () => { setEmailConfirmed(session()?.user?.email_verified) }) + createEffect(() => { + if (emailConfirmed() || authError()) { + changeSearchParams({}, true) + } + }) + return (
diff --git a/src/components/Nav/AuthModal/RegisterForm.tsx b/src/components/Nav/AuthModal/RegisterForm.tsx index 8ef615e8..af6cf834 100644 --- a/src/components/Nav/AuthModal/RegisterForm.tsx +++ b/src/components/Nav/AuthModal/RegisterForm.tsx @@ -118,6 +118,8 @@ export const RegisterForm = () => { setIsSuccess(true) } catch (error) { console.error(error) + + // TODO: move to context/session if (error?.code === 'user_already_exists') { return } diff --git a/src/components/Nav/SearchModal/SearchModal.tsx b/src/components/Nav/SearchModal/SearchModal.tsx index 2ca0fe7e..1aa33db3 100644 --- a/src/components/Nav/SearchModal/SearchModal.tsx +++ b/src/components/Nav/SearchModal/SearchModal.tsx @@ -1,8 +1,10 @@ import { clsx } from 'clsx' import { useLocalize } from '../../../context/localize' import { Icon } from '../../_shared/Icon' +import { openPage } from '@nanostores/router' import styles from './SearchModal.module.scss' +import { router, useRouter } from '../../../stores/router' export const SearchModal = () => { const { t } = useLocalize() @@ -10,7 +12,7 @@ export const SearchModal = () => { const submitQuery = async (ev) => { ev.preventDefault() - window.history.pushState({}, '', '/search/' + qElement.value) + openPage(router, 'search', { q: qElement.value }) } return (
diff --git a/src/context/session.tsx b/src/context/session.tsx index f49d4652..387b9a52 100644 --- a/src/context/session.tsx +++ b/src/context/session.tsx @@ -25,11 +25,12 @@ import { import { inboxClient } from '../graphql/client/chat' import { apiClient } from '../graphql/client/core' import { notifierClient } from '../graphql/client/notifier' -import { useRouter } from '../stores/router' +import { router, useRouter } from '../stores/router' import { showModal } from '../stores/ui' import { useLocalize } from './localize' import { useSnackbar } from './snackbar' +import { openPage } from '@nanostores/router' const defaultConfig: ConfigType = { authorizerURL: 'https://auth.discours.io', @@ -92,17 +93,8 @@ export const SessionProvider = (props: { // TODO: handle oauth here too const token = searchParams()?.token const access_token = searchParams()?.access_token - if (token) { - changeSearchParams({ - mode: 'change-password', - modal: 'auth', - }) - } else if (access_token) { - changeSearchParams({ - mode: 'confirm-email', - modal: 'auth', - }) - } + if (access_token) changeSearchParams({ mode: 'confirm-email', modal: 'auth', access_token }) + else if (token) changeSearchParams({ mode: 'change-password', modal: 'auth', token }) }) // load