feat: extension identification improvements (#2332)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
This commit is contained in:
40
packages/hoppscotch-app/newstore/HoppExtension.ts
Normal file
40
packages/hoppscotch-app/newstore/HoppExtension.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { distinctUntilChanged, pluck } from "rxjs"
|
||||
import DispatchingStore, { defineDispatchers } from "./DispatchingStore"
|
||||
|
||||
export type ExtensionStatus = "available" | "unknown-origin" | "waiting"
|
||||
|
||||
type InitialState = {
|
||||
extensionStatus: ExtensionStatus
|
||||
}
|
||||
|
||||
const initialState: InitialState = {
|
||||
extensionStatus: "waiting",
|
||||
}
|
||||
|
||||
const dispatchers = defineDispatchers({
|
||||
changeExtensionStatus(
|
||||
_,
|
||||
{ extensionStatus }: { extensionStatus: ExtensionStatus }
|
||||
) {
|
||||
return {
|
||||
extensionStatus,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
export const hoppExtensionStore = new DispatchingStore(
|
||||
initialState,
|
||||
dispatchers
|
||||
)
|
||||
|
||||
export const extensionStatus$ = hoppExtensionStore.subject$.pipe(
|
||||
pluck("extensionStatus"),
|
||||
distinctUntilChanged()
|
||||
)
|
||||
|
||||
export function changeExtensionStatus(extensionStatus: ExtensionStatus) {
|
||||
hoppExtensionStore.dispatch({
|
||||
dispatcher: "changeExtensionStatus",
|
||||
payload: { extensionStatus },
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user