Add popup confirm mode, make on-demand mean connect+get_public_key
This commit is contained in:
parent
fa4c5d3532
commit
14940a4345
1
.env
1
.env
@ -4,5 +4,4 @@ REACT_APP_WEB_PUSH_PUBKEY=BNW_39YcKbV4KunFxFhvMW5JUs8AljfFnGUeZpaerO-gwCoWyQat5o
|
||||
#REACT_APP_NOAUTHD_URL=http://localhost:8000
|
||||
REACT_APP_NOAUTHD_URL=https://noauthd.nsec.app
|
||||
REACT_APP_DOMAIN=nsec.app
|
||||
REACT_APP_APP_DOMAIN=use.nsec.app
|
||||
REACT_APP_RELAY=wss://relay.nsec.app
|
@ -27,6 +27,7 @@ export const ModalConfirmConnect = () => {
|
||||
const [searchParams] = useSearchParams()
|
||||
const appNpub = searchParams.get('appNpub') || ''
|
||||
const pendingReqId = searchParams.get('reqId') || ''
|
||||
const isPopup = searchParams.get('popup') === 'true'
|
||||
|
||||
const triggerApp = apps.find((app) => app.appNpub === appNpub)
|
||||
const { name, icon = '' } = triggerApp || {}
|
||||
@ -68,17 +69,36 @@ export const ModalConfirmConnect = () => {
|
||||
console.log('confirmed', id, allow, remember, options)
|
||||
closeModalAfterRequest()
|
||||
})
|
||||
if (isPopup) window.close();
|
||||
}
|
||||
|
||||
const allow = () => {
|
||||
const options: any = {};
|
||||
if (selectedActionType === ACTION_TYPE.BASIC)
|
||||
options.perm = ACTION_TYPE.BASIC;
|
||||
options.perms = [ACTION_TYPE.BASIC];
|
||||
// else
|
||||
// options.perms = ['connect','get_public_key'];
|
||||
confirmPending(pendingReqId, true, true, options)
|
||||
}
|
||||
|
||||
const disallow = () => {
|
||||
confirmPending(pendingReqId, false, true)
|
||||
}
|
||||
|
||||
if (isPopup) {
|
||||
document.addEventListener('visibilitychange', function() {
|
||||
if (document.visibilityState == 'hidden') {
|
||||
disallow();
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
<Modal open={isModalOpened} onClose={handleCloseModal}>
|
||||
<Modal
|
||||
open={isModalOpened}
|
||||
withCloseButton={!isPopup}
|
||||
onClose={!isPopup ? handleCloseModal : undefined}
|
||||
>
|
||||
<Stack gap={'1rem'} paddingTop={'1rem'}>
|
||||
<Stack
|
||||
direction={'row'}
|
||||
@ -128,7 +148,7 @@ export const ModalConfirmConnect = () => {
|
||||
</StyledToggleButtonsGroup>
|
||||
<Stack direction={'row'} gap={'1rem'}>
|
||||
<StyledButton
|
||||
onClick={() => confirmPending(pendingReqId, false, true)}
|
||||
onClick={disallow}
|
||||
varianttype='secondary'
|
||||
>
|
||||
Disallow
|
||||
|
@ -55,6 +55,7 @@ export const ModalConfirmEvent: FC<ModalConfirmEventProps> = ({
|
||||
const [searchParams] = useSearchParams()
|
||||
|
||||
const appNpub = searchParams.get('appNpub') || ''
|
||||
const isPopup = searchParams.get('popup') === 'true'
|
||||
|
||||
const { npub = '' } = useParams<{ npub: string }>()
|
||||
const apps = useAppSelector((state) => selectAppsByNpub(state, npub))
|
||||
@ -118,6 +119,7 @@ export const ModalConfirmEvent: FC<ModalConfirmEventProps> = ({
|
||||
})
|
||||
})
|
||||
closeModalAfterRequest()
|
||||
if (isPopup) window.close();
|
||||
}
|
||||
|
||||
const handleChangeCheckbox = (reqId: string) => () => {
|
||||
@ -137,8 +139,20 @@ export const ModalConfirmEvent: FC<ModalConfirmEventProps> = ({
|
||||
return action
|
||||
}
|
||||
|
||||
if (isPopup) {
|
||||
document.addEventListener('visibilitychange', () => {
|
||||
if (document.visibilityState == 'hidden') {
|
||||
confirmPending(false);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
<Modal open={isModalOpened} onClose={handleCloseModal}>
|
||||
<Modal
|
||||
open={isModalOpened}
|
||||
withCloseButton={!isPopup}
|
||||
onClose={!isPopup ? handleCloseModal : undefined}
|
||||
>
|
||||
<Stack gap={'1rem'} paddingTop={'1rem'}>
|
||||
<Stack
|
||||
direction={'row'}
|
||||
|
@ -8,7 +8,7 @@ import NDK, {
|
||||
NDKPrivateKeySigner,
|
||||
NDKSigner,
|
||||
} from '@nostr-dev-kit/ndk'
|
||||
import { NOAUTHD_URL, WEB_PUSH_PUBKEY, NIP46_RELAYS, MIN_POW, MAX_POW, KIND_RPC, APP_DOMAIN } from '../utils/consts'
|
||||
import { NOAUTHD_URL, WEB_PUSH_PUBKEY, NIP46_RELAYS, MIN_POW, MAX_POW, KIND_RPC } from '../utils/consts'
|
||||
import { Nip04 } from './nip04'
|
||||
import { getReqPerm, getShortenNpub, isPackagePerm } from '@/utils/helpers/helpers'
|
||||
import { NostrPowEvent, minePow } from './pow'
|
||||
@ -647,7 +647,6 @@ export class NoauthBackend {
|
||||
}
|
||||
} else {
|
||||
// just send to db w/o waiting for it
|
||||
// if (!PERF_TEST)
|
||||
dbi.addConfirmed({
|
||||
...req,
|
||||
allowed: allow,
|
||||
@ -664,17 +663,18 @@ export class NoauthBackend {
|
||||
if (index >= 0) self.confirmBuffer.splice(index, 1)
|
||||
|
||||
if (remember) {
|
||||
let perm = getReqPerm(req)
|
||||
if (allow && options && options.perm) perm = options.perm
|
||||
let newPerms = [getReqPerm(req)]
|
||||
if (allow && options && options.perms) newPerms = options.perms
|
||||
|
||||
await dbi.addPerm({
|
||||
id: req.id,
|
||||
npub: req.npub,
|
||||
appNpub: req.appNpub,
|
||||
perm,
|
||||
value: allow ? '1' : '0',
|
||||
timestamp: Date.now(),
|
||||
})
|
||||
for (const p of newPerms)
|
||||
await dbi.addPerm({
|
||||
id: req.id,
|
||||
npub: req.npub,
|
||||
appNpub: req.appNpub,
|
||||
perm: p,
|
||||
value: allow ? '1' : '0',
|
||||
timestamp: Date.now(),
|
||||
})
|
||||
|
||||
this.perms = await dbi.listPerms()
|
||||
|
||||
@ -689,7 +689,6 @@ export class NoauthBackend {
|
||||
)
|
||||
for (const r of otherReqs) {
|
||||
const perm = this.getPerm(r.req)
|
||||
// if (r.req.method === req.method) {
|
||||
if (perm) {
|
||||
r.cb(perm === '1', false)
|
||||
}
|
||||
@ -728,7 +727,7 @@ export class NoauthBackend {
|
||||
|
||||
// OAuth flow
|
||||
const confirmMethod = method === 'connect' ? 'confirm-connect' : 'confirm-event'
|
||||
const authUrl = `https://${APP_DOMAIN}/key/${npub}?${confirmMethod}=true&appNpub=${appNpub}&reqId=${id}`
|
||||
const authUrl = `${self.swg.location.origin}/key/${npub}?${confirmMethod}=true&appNpub=${appNpub}&reqId=${id}&popup=true`
|
||||
backend.rpc.sendResponse(id, remotePubkey, 'auth_url', KIND_RPC, authUrl)
|
||||
|
||||
// show notifs
|
||||
|
@ -1,7 +1,6 @@
|
||||
export const NOAUTHD_URL = process.env.REACT_APP_NOAUTHD_URL
|
||||
export const WEB_PUSH_PUBKEY = process.env.REACT_APP_WEB_PUSH_PUBKEY
|
||||
export const DOMAIN = process.env.REACT_APP_DOMAIN
|
||||
export const APP_DOMAIN = process.env.REACT_APP_APP_DOMAIN
|
||||
export const RELAY = process.env.REACT_APP_RELAY || 'wss://relay.nsec.app'
|
||||
export const NIP46_RELAYS = [RELAY]
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user