feat: add hook that detects if the bee-dashboard is run within bee-desktop (#334)

* feat: add hook that detects if the bee-dashboard is run withing bee-desktop

* chore: make the URL configurable

* feat: remove error and instead return false

* test: add testing with mockserver
This commit is contained in:
Vojtech Simetka
2022-04-13 19:00:37 +05:00
committed by GitHub
parent 5d0fbf705d
commit eb9e309c8b
5 changed files with 552 additions and 176 deletions
+36
View File
@@ -8,6 +8,42 @@ export interface LatestBeeReleaseHook {
error: Error | null
}
export interface IsBeeDesktopHook {
isBeeDesktop: boolean
isLoading: boolean
}
interface Config {
BEE_DESKTOP_URL: string
}
/**
* Detect if the dashboard is run within bee-desktop
*
* @returns isBeeDesktop true if this is run within bee-desktop
*/
export const useIsBeeDesktop = (conf: Config = config): IsBeeDesktopHook => {
const [isBeeDesktop, setIsBeeDesktop] = useState<boolean>(false)
const [isLoading, setLoading] = useState<boolean>(true)
useEffect(() => {
axios
.get(`${conf.BEE_DESKTOP_URL}/info`)
.then(res => {
if (res.data?.name === 'bee-desktop') setIsBeeDesktop(true)
else setIsBeeDesktop(false)
})
.catch(() => {
setIsBeeDesktop(false)
})
.finally(() => {
setLoading(false)
})
}, [conf])
return { isBeeDesktop, isLoading }
}
export const useLatestBeeRelease = (): LatestBeeReleaseHook => {
const [latestBeeRelease, setLatestBeeRelease] = useState<LatestBeeRelease | null>(null)
const [isLoadingLatestBeeRelease, setLoading] = useState<boolean>(false)