feat: add bee-desktop settings capabilities (#323)

* refactor: make the config readonly and extract endpoint calls to hook (+2 squashed commits)
Squashed commits:
[91ffe45] feat: add swap-endpoint
[e1d0c3a] feat: add bee-desktop settings capabilities

* feat: use the request mechanism that uses the bee-desktop API key

* fix: properly reset the error or on error set the config to null
This commit is contained in:
Vojtech Simetka
2022-04-29 12:30:46 +05:00
committed by GitHub
parent 8114fa7d73
commit 87b0b71cc6
5 changed files with 96 additions and 8 deletions
+49
View File
@@ -1,6 +1,7 @@
import axios from 'axios'
import { useEffect, useState } from 'react'
import { config } from '../config'
import { getJson } from '../utils/net'
export interface LatestBeeReleaseHook {
latestBeeRelease: LatestBeeRelease | null
@@ -44,6 +45,54 @@ export const useIsBeeDesktop = (conf: Config = config): IsBeeDesktopHook => {
return { isBeeDesktop, isLoading }
}
export interface BeeConfig {
'api-addr': string
'debug-api-addr': string
'debug-api-enable': boolean
password: string
'swap-enable': boolean
'swap-initial-deposit': bigint
mainnet: boolean
'full-node': boolean
'chain-enable': boolean
'cors-allowed-origins': string
'resolver-options': string
'use-postage-snapshot': boolean
'data-dir': string
transaction: string
'block-hash': string
'swap-endpoint'?: string
}
export interface GetBeeConfig {
config: BeeConfig | null
isLoading: boolean
error: Error | null
}
export const useGetBeeConfig = (conf: Config = config): GetBeeConfig => {
const [beeConfig, setBeeConfig] = useState<BeeConfig | null>(null)
const [isLoading, setLoading] = useState<boolean>(true)
const [error, setError] = useState<Error | null>(null)
useEffect(() => {
getJson<BeeConfig>(`${conf.BEE_DESKTOP_URL}/config`)
.then(beeConf => {
setBeeConfig(beeConf)
setError(null)
})
.catch((err: Error) => {
setError(err)
setBeeConfig(null)
})
.finally(() => {
setLoading(false)
})
}, [conf])
return { config: beeConfig, isLoading, error }
}
export const useLatestBeeRelease = (): LatestBeeReleaseHook => {
const [latestBeeRelease, setLatestBeeRelease] = useState<LatestBeeRelease | null>(null)
const [isLoadingLatestBeeRelease, setLoading] = useState<boolean>(false)