feat: check whether the app runs within bee-desktop is now an environment variable (#490)
* feat: check whether the app runs within bee-desktop is now an environment variable * chore: remove console.log
This commit is contained in:
@@ -10,7 +10,7 @@ interface AddressInfo {
|
||||
port: number
|
||||
}
|
||||
|
||||
export function mockServer(data: Record<string | number | symbol, string>): Promise<Server> {
|
||||
export function mockServer(data: Record<string | number | symbol, string | boolean>): Promise<Server> {
|
||||
const app = express()
|
||||
app.use(cors())
|
||||
|
||||
@@ -26,48 +26,30 @@ export function mockServer(data: Record<string | number | symbol, string>): Prom
|
||||
}
|
||||
|
||||
let serverCorrect: Server
|
||||
let serverWrong: Server
|
||||
|
||||
let serverCorrectURL: string
|
||||
let serverWrongURL: string
|
||||
|
||||
beforeAll(async () => {
|
||||
serverCorrect = await mockServer({ name: 'bee-desktop' })
|
||||
serverCorrect = await mockServer({ autoUpdateEnabled: true, version: '0.1.0' })
|
||||
const portServerCorrect = (serverCorrect.address() as AddressInfo).port
|
||||
serverCorrectURL = `http://localhost:${portServerCorrect}`
|
||||
|
||||
serverWrong = await mockServer({ foo: 'bar' })
|
||||
const portServerWrong = (serverWrong.address() as AddressInfo).port
|
||||
serverWrongURL = `http://localhost:${portServerWrong}`
|
||||
})
|
||||
|
||||
afterAll(async () => {
|
||||
await new Promise(resolve => serverCorrect.close(resolve))
|
||||
await new Promise(resolve => serverWrong.close(resolve))
|
||||
})
|
||||
|
||||
describe('useIsBeeDesktop', () => {
|
||||
it('should fail when connected to wrong server', async () => {
|
||||
const { result, waitFor } = renderHook(() => useIsBeeDesktop({ BEE_DESKTOP_URL: serverWrongURL }))
|
||||
|
||||
expect(result.current.isLoading).toBe(true)
|
||||
expect(result.current.isBeeDesktop).toBe(false)
|
||||
it('should not have error when connected to bee-desktop', async () => {
|
||||
const { result, waitFor } = renderHook(() =>
|
||||
useIsBeeDesktop({ BEE_DESKTOP_URL: serverCorrectURL, BEE_DESKTOP_ENABLED: true }),
|
||||
)
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result.current.isLoading).toBe(false)
|
||||
})
|
||||
expect(result.current.isBeeDesktop).toBe(false)
|
||||
})
|
||||
|
||||
it('should return isBeeDesktop true when connected to bee-desktop', async () => {
|
||||
const { result, waitFor } = renderHook(() => useIsBeeDesktop({ BEE_DESKTOP_URL: serverCorrectURL }))
|
||||
|
||||
expect(result.current.isLoading).toBe(true)
|
||||
expect(result.current.isBeeDesktop).toBe(false)
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result.current.isLoading).toBe(false)
|
||||
})
|
||||
expect(result.current.isBeeDesktop).toBe(true)
|
||||
expect(result.current.desktopAutoUpdateEnabled).toBe(true)
|
||||
expect(result.current.beeDesktopVersion).toBe('0.1.0')
|
||||
expect(result.current.error).toBe(null)
|
||||
})
|
||||
})
|
||||
|
||||
+22
-17
@@ -11,7 +11,7 @@ export interface LatestBeeReleaseHook {
|
||||
}
|
||||
|
||||
export interface IsBeeDesktopHook {
|
||||
isBeeDesktop: boolean
|
||||
error: Error | null
|
||||
isLoading: boolean
|
||||
beeDesktopVersion: string
|
||||
desktopAutoUpdateEnabled: boolean
|
||||
@@ -23,6 +23,7 @@ export interface NewDesktopVersionHook {
|
||||
|
||||
interface Config {
|
||||
BEE_DESKTOP_URL: string
|
||||
BEE_DESKTOP_ENABLED: boolean
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -31,30 +32,34 @@ interface Config {
|
||||
* @returns isBeeDesktop true if this is run within bee-desktop
|
||||
*/
|
||||
export const useIsBeeDesktop = (conf: Config = config): IsBeeDesktopHook => {
|
||||
const [isBeeDesktop, setIsBeeDesktop] = useState<boolean>(false)
|
||||
const [desktopAutoUpdateEnabled, setDesktopAutoUpdateEnabled] = useState<boolean>(true)
|
||||
const [beeDesktopVersion, setBeeDesktopVersion] = useState<string>('')
|
||||
const [isLoading, setLoading] = useState<boolean>(true)
|
||||
const [error, setError] = useState<Error | null>(null)
|
||||
const isBeeDesktop = conf.BEE_DESKTOP_ENABLED
|
||||
|
||||
useEffect(() => {
|
||||
axios
|
||||
.get(`${conf.BEE_DESKTOP_URL}/info`)
|
||||
.then(res => {
|
||||
if (res.data?.name === 'bee-desktop') {
|
||||
setIsBeeDesktop(true)
|
||||
if (!isBeeDesktop) {
|
||||
setLoading(false)
|
||||
setError(null)
|
||||
} else {
|
||||
axios
|
||||
.get(`${conf.BEE_DESKTOP_URL}/info`)
|
||||
.then(res => {
|
||||
setBeeDesktopVersion(res.data?.version)
|
||||
setDesktopAutoUpdateEnabled(res.data?.autoUpdateEnabled)
|
||||
} else setIsBeeDesktop(false)
|
||||
})
|
||||
.catch(() => {
|
||||
setIsBeeDesktop(false)
|
||||
})
|
||||
.finally(() => {
|
||||
setLoading(false)
|
||||
})
|
||||
}, [conf])
|
||||
setError(null)
|
||||
})
|
||||
.catch(e => {
|
||||
setError(e)
|
||||
})
|
||||
.finally(() => {
|
||||
setLoading(false)
|
||||
})
|
||||
}
|
||||
}, [conf, isBeeDesktop])
|
||||
|
||||
return { isBeeDesktop, isLoading, beeDesktopVersion, desktopAutoUpdateEnabled }
|
||||
return { error, isLoading, beeDesktopVersion, desktopAutoUpdateEnabled }
|
||||
}
|
||||
|
||||
async function checkNewVersion(conf: Config): Promise<string> {
|
||||
|
||||
Reference in New Issue
Block a user