improving communication between extension and website

This commit is contained in:
Myzel394 2022-11-26 22:32:13 +01:00
parent da58320e5c
commit 01918c97c7
2 changed files with 19 additions and 5 deletions

View File

@ -4,7 +4,6 @@ import {AxiosError} from "axios"
import {decrypt, readMessage, readPrivateKey} from "openpgp" import {decrypt, readMessage, readPrivateKey} from "openpgp"
import {useMutation} from "@tanstack/react-query" import {useMutation} from "@tanstack/react-query"
import AuthContext, {AuthContextType, EncryptionStatus} from "./AuthContext"
import {ServerUser, User} from "~/server-types" import {ServerUser, User} from "~/server-types"
import {REFRESH_TOKEN_URL, RefreshTokenResult, logout as logoutUser, refreshToken} from "~/apis" import {REFRESH_TOKEN_URL, RefreshTokenResult, logout as logoutUser, refreshToken} from "~/apis"
@ -13,6 +12,8 @@ import {decryptString, encryptString} from "~/utils"
import {ExtensionKleckEvent} from "~/extension-types" import {ExtensionKleckEvent} from "~/extension-types"
import PasswordShareConfirmationDialog from "~/AuthContext/PasswordShareConfirmationDialog" import PasswordShareConfirmationDialog from "~/AuthContext/PasswordShareConfirmationDialog"
import AuthContext, {AuthContextType, EncryptionStatus} from "./AuthContext"
export interface AuthContextProviderProps { export interface AuthContextProviderProps {
children: ReactNode children: ReactNode
} }
@ -225,7 +226,18 @@ export default function AuthContextProvider({children}: AuthContextProviderProps
break break
case "ask-for-password": case "ask-for-password":
setAskForPassword(true) setAskForPassword(true)
break
case "get-user":
window.dispatchEvent(
new CustomEvent("kleckrelay-blob", {
detail: {
type: "get-user",
data: {
user: user,
},
},
}),
)
break break
} }
}, },

View File

@ -1,17 +1,19 @@
interface ExtensionKleckMessagePasswordAvailable { interface ExtensionKleckMessagePasswordAvailable {
type: "password-available" type: "password-available"
data: {
isAvailable: boolean
}
} }
interface ExtensionKleckMessageAskForPassword { interface ExtensionKleckMessageAskForPassword {
type: "ask-for-password" type: "ask-for-password"
} }
interface ExtensionKleckMessageUser {
type: "get-user"
}
export type ExtensionKleckMessage = export type ExtensionKleckMessage =
| ExtensionKleckMessagePasswordAvailable | ExtensionKleckMessagePasswordAvailable
| ExtensionKleckMessageAskForPassword | ExtensionKleckMessageAskForPassword
| ExtensionKleckMessageUser
export type ExtensionKleckEvent = MessageEvent & { export type ExtensionKleckEvent = MessageEvent & {
detail: ExtensionKleckMessage detail: ExtensionKleckMessage