feat: added nsecbunker setting page
All checks were successful
Release / build_and_release (push) Successful in 51s
All checks were successful
Release / build_and_release (push) Successful in 51s
This commit is contained in:
parent
4973721608
commit
b2a8cff907
@ -17,7 +17,11 @@ import Username from '../username'
|
||||
import { Link, useNavigate } from 'react-router-dom'
|
||||
import nostrichAvatar from '../../assets/images/avatar.png'
|
||||
import nostrichLogo from '../../assets/images/nostr-logo.jpg'
|
||||
import { appPublicRoutes, getProfileRoute } from '../../routes'
|
||||
import {
|
||||
appPrivateRoutes,
|
||||
appPublicRoutes,
|
||||
getProfileRoute
|
||||
} from '../../routes'
|
||||
import {
|
||||
clearAuthToken,
|
||||
saveNsecBunkerDelegatedKey,
|
||||
@ -25,6 +29,7 @@ import {
|
||||
} from '../../utils'
|
||||
import styles from './style.module.scss'
|
||||
import { NostrController } from '../../controllers'
|
||||
import { LoginMethods } from '../../store/auth/types'
|
||||
|
||||
export const AppBar = () => {
|
||||
const navigate = useNavigate()
|
||||
@ -142,6 +147,16 @@ export const AppBar = () => {
|
||||
>
|
||||
Profile
|
||||
</MenuItem>
|
||||
{authState.loginMethod === LoginMethods.nsecBunker && (
|
||||
<MenuItem
|
||||
onClick={() => navigate(appPrivateRoutes.nsecbunker)}
|
||||
sx={{
|
||||
justifyContent: 'center'
|
||||
}}
|
||||
>
|
||||
Nsecbunker
|
||||
</MenuItem>
|
||||
)}
|
||||
<Link
|
||||
to={appPublicRoutes.help}
|
||||
target='_blank'
|
||||
|
@ -184,6 +184,7 @@ export const Login = () => {
|
||||
|
||||
dispatch(updateLoginMethod(LoginMethods.nsecBunker))
|
||||
dispatch(updateNsecbunkerPubkey(pubkey))
|
||||
dispatch(updateNsecbunkerRelay(relays![0]))
|
||||
|
||||
setLoadingSpinnerDesc('Authenticating and finding metadata')
|
||||
|
||||
|
69
src/pages/nsecbunker/index.tsx
Normal file
69
src/pages/nsecbunker/index.tsx
Normal file
@ -0,0 +1,69 @@
|
||||
import {
|
||||
IconButton,
|
||||
InputAdornment,
|
||||
List,
|
||||
ListItem,
|
||||
ListSubheader,
|
||||
TextField
|
||||
} from '@mui/material'
|
||||
import { ContentCopy } from '@mui/icons-material'
|
||||
import { useSelector } from 'react-redux'
|
||||
import { State } from '../../store/rootReducer'
|
||||
import styles from './style.module.scss'
|
||||
import { toast } from 'react-toastify'
|
||||
|
||||
export const Nsecbunker = () => {
|
||||
const authState = useSelector((state: State) => state.auth)
|
||||
|
||||
const nsecbunkerConnectionString = `bunker://${authState?.nsecBunkerPubkey}?relay=${authState?.nsecbunkerRelay}`
|
||||
|
||||
return (
|
||||
<List
|
||||
sx={{
|
||||
bgcolor: 'background.paper',
|
||||
marginTop: 2
|
||||
}}
|
||||
subheader={
|
||||
<ListSubheader
|
||||
sx={{
|
||||
paddingBottom: 1,
|
||||
paddingTop: 1,
|
||||
fontSize: '1.5rem'
|
||||
}}
|
||||
className={styles.subHeader}
|
||||
>
|
||||
Nsecbunker Setting
|
||||
</ListSubheader>
|
||||
}
|
||||
>
|
||||
<ListItem sx={{ marginTop: 1 }}>
|
||||
<TextField
|
||||
label='Nsecbunker connection string'
|
||||
variant='outlined'
|
||||
size='small'
|
||||
className={styles.textField}
|
||||
value={nsecbunkerConnectionString}
|
||||
disabled
|
||||
InputProps={{
|
||||
endAdornment: (
|
||||
<InputAdornment position='end'>
|
||||
<IconButton
|
||||
aria-label='copy value icon button'
|
||||
onClick={() => {
|
||||
navigator.clipboard.writeText(nsecbunkerConnectionString)
|
||||
toast.success('Copied to clipboard', {
|
||||
autoClose: 1000,
|
||||
hideProgressBar: true
|
||||
})
|
||||
}}
|
||||
>
|
||||
<ContentCopy />
|
||||
</IconButton>
|
||||
</InputAdornment>
|
||||
)
|
||||
}}
|
||||
/>
|
||||
</ListItem>
|
||||
</List>
|
||||
)
|
||||
}
|
7
src/pages/nsecbunker/style.module.scss
Normal file
7
src/pages/nsecbunker/style.module.scss
Normal file
@ -0,0 +1,7 @@
|
||||
.textField {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.subHeader {
|
||||
border-bottom: 0.5px solid;
|
||||
}
|
@ -1,8 +1,14 @@
|
||||
import { LandingPage } from '../pages/landing/LandingPage'
|
||||
import { Login } from '../pages/login'
|
||||
import { Nsecbunker } from '../pages/nsecbunker'
|
||||
import { ProfilePage } from '../pages/profile'
|
||||
import { hexToNpub } from '../utils'
|
||||
|
||||
export const appPrivateRoutes = {
|
||||
homePage: '/',
|
||||
nsecbunker: '/nsecbunker'
|
||||
}
|
||||
|
||||
export const appPublicRoutes = {
|
||||
profile: '/profile/:npub',
|
||||
login: '/login',
|
||||
@ -12,10 +18,6 @@ export const appPublicRoutes = {
|
||||
export const getProfileRoute = (hexKey: string) =>
|
||||
appPublicRoutes.profile.replace(':npub', hexToNpub(hexKey))
|
||||
|
||||
export const appPrivateRoutes = {
|
||||
homePage: '/'
|
||||
}
|
||||
|
||||
export const publicRoutes = [
|
||||
{
|
||||
path: appPublicRoutes.login,
|
||||
@ -32,5 +34,9 @@ export const privateRoutes = [
|
||||
{
|
||||
path: appPrivateRoutes.homePage,
|
||||
element: <LandingPage />
|
||||
},
|
||||
{
|
||||
path: appPrivateRoutes.nsecbunker,
|
||||
element: <Nsecbunker />
|
||||
}
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user