issue-47 #59
12
src/App.tsx
12
src/App.tsx
@ -33,6 +33,12 @@ const App = () => {
|
||||
}
|
||||
}
|
||||
|
||||
const handleRootRedirect = () => {
|
||||
if (authState.loggedIn) return appPrivateRoutes.homePage
|
||||
const callbackPathEncoded = btoa(window.location.href.split(`${window.location.origin}/#`)[1])
|
||||
return `${appPublicRoutes.login}?callbackPath=${callbackPathEncoded}`
|
||||
}
|
||||
|
||||
return (
|
||||
<Routes>
|
||||
<Route element={<MainLayout />}>
|
||||
@ -70,11 +76,7 @@ const App = () => {
|
||||
path="*"
|
||||
element={
|
||||
<Navigate
|
||||
to={
|
||||
authState.loggedIn
|
||||
? appPrivateRoutes.homePage
|
||||
: appPublicRoutes.login
|
||||
}
|
||||
to={handleRootRedirect()}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
|
@ -2,7 +2,7 @@ import { Box, Button, TextField, Typography } from '@mui/material'
|
||||
import { getPublicKey, nip19 } from 'nostr-tools'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { useDispatch } from 'react-redux'
|
||||
import { useNavigate } from 'react-router-dom'
|
||||
import { useNavigate, useSearchParams } from 'react-router-dom'
|
||||
import { toast } from 'react-toastify'
|
||||
import { LoadingSpinner } from '../../components/LoadingSpinner'
|
||||
import {
|
||||
@ -22,6 +22,8 @@ import { npubToHex, queryNip05 } from '../../utils'
|
||||
import styles from './style.module.scss'
|
||||
|
||||
export const Login = () => {
|
||||
const [searchParams] = useSearchParams()
|
||||
|
||||
const dispatch: Dispatch = useDispatch()
|
||||
const navigate = useNavigate()
|
||||
|
||||
@ -53,6 +55,19 @@ export const Login = () => {
|
||||
}
|
||||
}
|
||||
|
||||
const navigateAfterLogin = (path: string) => {
|
||||
const callbackPath = searchParams.get('callbackPath')
|
||||
|
||||
if (callbackPath) {
|
||||
// base64 decoded path
|
||||
const path = atob(callbackPath)
|
||||
navigate(path)
|
||||
return
|
||||
}
|
||||
|
||||
navigate(path)
|
||||
}
|
||||
|
||||
const loginWithExtension = async () => {
|
||||
setIsLoading(true)
|
||||
setLoadingSpinnerDesc('Capturing pubkey from nostr extension')
|
||||
@ -66,7 +81,7 @@ export const Login = () => {
|
||||
const redirectPath =
|
||||
await authController.authenticateAndFindMetadata(pubkey)
|
||||
|
||||
navigate(redirectPath)
|
||||
navigateAfterLogin(redirectPath)
|
||||
})
|
||||
.catch((err) => {
|
||||
toast.error('Error capturing public key from nostr extension: ' + err)
|
||||
@ -109,7 +124,7 @@ export const Login = () => {
|
||||
return null
|
||||
})
|
||||
|
||||
if (redirectPath) navigate(redirectPath)
|
||||
if (redirectPath) navigateAfterLogin(redirectPath)
|
||||
|
||||
setIsLoading(false)
|
||||
setLoadingSpinnerDesc('')
|
||||
@ -204,7 +219,7 @@ export const Login = () => {
|
||||
return null
|
||||
})
|
||||
|
||||
if (redirectPath) navigate(redirectPath)
|
||||
if (redirectPath) navigateAfterLogin(redirectPath)
|
||||
})
|
||||
.catch((err) => {
|
||||
toast.error(
|
||||
@ -264,7 +279,7 @@ export const Login = () => {
|
||||
return null
|
||||
})
|
||||
|
||||
if (redirectPath) navigate(redirectPath)
|
||||
if (redirectPath) navigateAfterLogin(redirectPath)
|
||||
})
|
||||
.catch((err) => {
|
||||
toast.error(
|
||||
|
Loading…
Reference in New Issue
Block a user