131 lines
3.6 KiB
TypeScript

import { Storage } from "@plasmohq/storage"
const storage = new Storage()
const TOTAL_SEARCH_RESULTS = 2
const DEFAULT_PROVIDER = "google"
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 getSearchSettings = async () => {
const [isSimpleInternetSearch, searchProvider, totalSearchResult, visitSpecificWebsite,
searxngURL,
searxngJSONMode
] =
await Promise.all([
getIsSimpleInternetSearch(),
getSearchProvider(),
totalSearchResults(),
getIsVisitSpecificWebsite(),
getSearxngURL(),
isSearxngJSONMode()
])
return {
isSimpleInternetSearch,
searchProvider,
totalSearchResults: totalSearchResult,
visitSpecificWebsite,
searxngURL,
searxngJSONMode
}
}
export const setSearchSettings = async ({
isSimpleInternetSearch,
searchProvider,
totalSearchResults,
visitSpecificWebsite,
searxngJSONMode,
searxngURL
}: {
isSimpleInternetSearch: boolean
searchProvider: string
totalSearchResults: number
visitSpecificWebsite: boolean
searxngURL: string
searxngJSONMode: boolean
}) => {
await Promise.all([
setIsSimpleInternetSearch(isSimpleInternetSearch),
setSearchProvider(searchProvider),
setTotalSearchResults(totalSearchResults),
setIsVisitSpecificWebsite(visitSpecificWebsite),
setSearxngJSONMode(searxngJSONMode),
setSearxngURL(searxngURL)
])
}