page-assist/extension/hooks/useLocal.tsx
2023-04-09 23:28:52 +05:30

41 lines
879 B
TypeScript

import React from "react"
export default function useLocal(key: string) {
const [value, setValue] = React.useState<string | null>(null)
React.useEffect(() => {
chrome.storage.local.get(key, (result) => {
setValue(result[key])
})
}, [key])
const update = (newValue: string) => {
chrome.storage.local.set({ [key]: newValue }, () => {
setValue(newValue)
})
}
const remove = () => {
chrome.storage.local.remove(key)
setValue(null)
}
return { value, update, remove }
}
export function useChatWidget() {
const { value, update } = useLocal("chat-widget")
const [active, setActive] = React.useState<boolean>(value === "show")
const setActiveValue = (newValue: boolean) => {
if (newValue) {
update("show")
} else {
update("hide")
}
setActive(newValue)
}
return { active, setActiveValue }
}