183 lines
4.9 KiB
TypeScript
183 lines
4.9 KiB
TypeScript
import { Storage } from "@plasmohq/storage"
|
|
|
|
const storage = new Storage()
|
|
const storage2 = new Storage({
|
|
area: "local"
|
|
})
|
|
|
|
const TOTAL_SEARCH_RESULTS = 2
|
|
const DEFAULT_PROVIDER = "duckduckgo"
|
|
|
|
const AVAILABLE_PROVIDERS = ["google", "duckduckgo"] as const
|
|
|
|
export const getIsSimpleInternetSearch = async () => {
|
|
const isSimpleInternetSearch = await storage.get("isSimpleInternetSearch")
|
|
if (!isSimpleInternetSearch || isSimpleInternetSearch.length === 0) {
|
|
return true
|
|
}
|
|
return isSimpleInternetSearch === "true"
|
|
}
|
|
|
|
export const getIsVisitSpecificWebsite = async () => {
|
|
const isVisitSpecificWebsite = await storage.get("isVisitSpecificWebsite")
|
|
if (!isVisitSpecificWebsite || isVisitSpecificWebsite.length === 0) {
|
|
return true
|
|
}
|
|
return isVisitSpecificWebsite === "true"
|
|
}
|
|
|
|
export const setIsVisitSpecificWebsite = async (
|
|
isVisitSpecificWebsite: boolean
|
|
) => {
|
|
await storage.set("isVisitSpecificWebsite", isVisitSpecificWebsite.toString())
|
|
}
|
|
|
|
export const setIsSimpleInternetSearch = async (
|
|
isSimpleInternetSearch: boolean
|
|
) => {
|
|
await storage.set("isSimpleInternetSearch", isSimpleInternetSearch.toString())
|
|
}
|
|
|
|
export const getSearchProvider = async (): Promise<
|
|
(typeof AVAILABLE_PROVIDERS)[number]
|
|
> => {
|
|
const searchProvider = await storage.get("searchProvider")
|
|
if (!searchProvider || searchProvider.length === 0) {
|
|
return DEFAULT_PROVIDER
|
|
}
|
|
return searchProvider as (typeof AVAILABLE_PROVIDERS)[number]
|
|
}
|
|
|
|
export const setSearchProvider = async (searchProvider: string) => {
|
|
await storage.set("searchProvider", searchProvider)
|
|
}
|
|
|
|
export const totalSearchResults = async () => {
|
|
const totalSearchResults = await storage.get("totalSearchResults")
|
|
if (!totalSearchResults || totalSearchResults.length === 0) {
|
|
return TOTAL_SEARCH_RESULTS
|
|
}
|
|
return parseInt(totalSearchResults)
|
|
}
|
|
|
|
export const setTotalSearchResults = async (totalSearchResults: number) => {
|
|
await storage.set("totalSearchResults", totalSearchResults.toString())
|
|
}
|
|
|
|
export const getSearxngURL = async () => {
|
|
const searxngURL = await storage.get("searxngURL")
|
|
return searxngURL || ""
|
|
}
|
|
|
|
export const isSearxngJSONMode = async () => {
|
|
const searxngJSONMode = await storage.get<boolean>("searxngJSONMode")
|
|
return searxngJSONMode ?? false
|
|
}
|
|
|
|
export const setSearxngJSONMode = async (searxngJSONMode: boolean) => {
|
|
await storage.set("searxngJSONMode", searxngJSONMode)
|
|
}
|
|
|
|
export const setSearxngURL = async (searxngURL: string) => {
|
|
await storage.set("searxngURL", searxngURL)
|
|
}
|
|
|
|
export const getBraveApiKey = async () => {
|
|
const braveApiKey = await storage2.get("braveApiKey")
|
|
return braveApiKey || ""
|
|
}
|
|
|
|
export const setBraveApiKey = async (braveApiKey: string) => {
|
|
await storage2.set("braveApiKey", braveApiKey)
|
|
}
|
|
|
|
export const getGoogleDomain = async () => {
|
|
const domain = await storage2.get("searchGoogleDomain")
|
|
return domain || "google.com"
|
|
}
|
|
|
|
export const setGoogleDomain = async (domain: string) => {
|
|
await storage2.set("searchGoogleDomain", domain)
|
|
}
|
|
|
|
export const getInternetSearchOn = async () => {
|
|
const defaultInternetSearchOn = await storage.get<boolean | undefined>(
|
|
"defaultInternetSearchOn"
|
|
)
|
|
return defaultInternetSearchOn ?? false
|
|
}
|
|
|
|
export const setInternetSearchOn = async (defaultInternetSearchOn: boolean) => {
|
|
await storage.set("defaultInternetSearchOn", defaultInternetSearchOn)
|
|
}
|
|
|
|
export const getSearchSettings = async () => {
|
|
const [
|
|
isSimpleInternetSearch,
|
|
searchProvider,
|
|
totalSearchResult,
|
|
visitSpecificWebsite,
|
|
searxngURL,
|
|
searxngJSONMode,
|
|
braveApiKey,
|
|
googleDomain,
|
|
defaultInternetSearchOn
|
|
] = await Promise.all([
|
|
getIsSimpleInternetSearch(),
|
|
getSearchProvider(),
|
|
totalSearchResults(),
|
|
getIsVisitSpecificWebsite(),
|
|
getSearxngURL(),
|
|
isSearxngJSONMode(),
|
|
getBraveApiKey(),
|
|
getGoogleDomain(),
|
|
getInternetSearchOn()
|
|
])
|
|
|
|
return {
|
|
isSimpleInternetSearch,
|
|
searchProvider,
|
|
totalSearchResults: totalSearchResult,
|
|
visitSpecificWebsite,
|
|
searxngURL,
|
|
searxngJSONMode,
|
|
braveApiKey,
|
|
googleDomain,
|
|
defaultInternetSearchOn
|
|
}
|
|
}
|
|
|
|
export const setSearchSettings = async ({
|
|
isSimpleInternetSearch,
|
|
searchProvider,
|
|
totalSearchResults,
|
|
visitSpecificWebsite,
|
|
searxngJSONMode,
|
|
searxngURL,
|
|
braveApiKey,
|
|
googleDomain,
|
|
defaultInternetSearchOn
|
|
}: {
|
|
isSimpleInternetSearch: boolean
|
|
searchProvider: string
|
|
totalSearchResults: number
|
|
visitSpecificWebsite: boolean
|
|
searxngURL: string
|
|
searxngJSONMode: boolean
|
|
braveApiKey: string
|
|
googleDomain: string,
|
|
defaultInternetSearchOn: boolean
|
|
}) => {
|
|
await Promise.all([
|
|
setIsSimpleInternetSearch(isSimpleInternetSearch),
|
|
setSearchProvider(searchProvider),
|
|
setTotalSearchResults(totalSearchResults),
|
|
setIsVisitSpecificWebsite(visitSpecificWebsite),
|
|
setSearxngJSONMode(searxngJSONMode),
|
|
setSearxngURL(searxngURL),
|
|
setBraveApiKey(braveApiKey),
|
|
setGoogleDomain(googleDomain),
|
|
setInternetSearchOn(defaultInternetSearchOn)
|
|
])
|
|
}
|