Skip to content

Commit 7099850

Browse files
committed
feat: begin cleaning up hooks
1 parent 62021d4 commit 7099850

File tree

4 files changed

+56
-27
lines changed

4 files changed

+56
-27
lines changed

GUI/ETVR/ETVR.code-workspace

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"rust-analyzer.checkOnSave.extraArgs": ["--all-targets"],
1414
"rust-analyzer.checkOnSave.command": "clippy",
1515
"rust-analyzer.checkOnSave.allTargets": true,
16+
"rust-analyzer.files.watcher": "client",
1617
"rust-analyzer.files.excludeDirs": [
1718
"**/target",
1819
"**/node_modules",
@@ -29,7 +30,6 @@
2930
"**/src/styles",
3031
"**/src/utils"
3132
],
32-
"rust-analyzer.files.watcher": "client",
3333
"editor.defaultFormatter": "esbenp.prettier-vscode",
3434
"[toml]": {
3535
"editor.defaultFormatter": "tamasfe.even-better-toml"

GUI/ETVR/src/components/Loader/index.tsx

+14
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,18 @@ const Loader = (props: LoaderProps) => {
3535
)
3636
}
3737

38+
export const OrangeLoader = () => {
39+
return (
40+
<div class="flex justify-center items-center">
41+
<Loader
42+
gradient="orange"
43+
gradientMid="rgba(255, 153, 0, 0.594)"
44+
gradientBot="rgba(255, 153, 0, 0.144)"
45+
width="100px"
46+
height="100px"
47+
/>
48+
</div>
49+
)
50+
}
51+
3852
export default Loader
+39-24
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,44 @@
11
import { invoke } from '@tauri-apps/api/tauri'
2-
import { createSignal } from 'solid-js'
2+
import { createEffect, createResource, createSignal } from 'solid-js'
3+
4+
interface IProps {
5+
serviceType: string
6+
scanTime: number
7+
}
8+
9+
const scan = async (source, { value, refetching }) => {
10+
const { serviceType, scanTime } = source
11+
12+
const res = await invoke('run_mdns_query', {
13+
serviceType,
14+
scanTime,
15+
})
16+
17+
if (typeof res === 'string') {
18+
const parsedResponse = JSON.parse(res)
19+
return parsedResponse
20+
}
21+
return []
22+
}
323

424
export const useMDNSScanner = (serviceType: string, scanTime: number) => {
5-
const [res, setRes] = createSignal(null)
6-
const [loading, setLoading] = createSignal(false)
7-
const [error, setError] = createSignal(null)
8-
9-
const scan = () => {
10-
setLoading(true)
11-
invoke('run_mdns_query', {
12-
serviceType,
13-
scanTime,
14-
})
15-
.then((response) => {
16-
if (typeof response === 'string') {
17-
const parsedResponse = JSON.parse(response)
18-
setRes(parsedResponse)
19-
}
20-
})
21-
.catch((err) => {
22-
setError(err)
23-
})
24-
.finally(() => {
25-
setLoading(false)
25+
// create an object with the serviceType and scanTime as the key
26+
// this will allow us to create a new resource if the serviceType or scanTime changes
27+
28+
const [resData, setResData] = createSignal<IProps>({
29+
serviceType: serviceType,
30+
scanTime: scanTime,
31+
})
32+
33+
createEffect(() => {
34+
if (serviceType !== resData().serviceType || scanTime !== resData().scanTime) {
35+
setResData({
36+
serviceType: serviceType,
37+
scanTime: scanTime,
2638
})
27-
}
28-
return { res, loading, error, scan }
39+
}
40+
})
41+
42+
const [data, { mutate, refetch }] = createResource(resData, scan)
43+
return { data, mutate, refetch, resData, setResData }
2944
}

GUI/ETVR/src/utils/hooks/api/useRequest.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { invoke } from '@tauri-apps/api/tauri'
2-
import { createSignal, createEffect } from 'solid-js'
2+
import { createSignal, createEffect, createResource } from 'solid-js'
33
import { setRestStatus, RESTStatus } from '@src/store/api/restAPI'
44
import { endpoints } from '@src/store/api/selectors'
55
import { cameras } from '@src/store/camera/selectors'
@@ -10,7 +10,7 @@ interface IProps {
1010
args?: string
1111
}
1212

13-
export const useRequestHook = () => {
13+
export const useRequestHook = async () => {
1414
const [data, setData] = createSignal({})
1515
const _endpoints = endpoints()
1616
const doRequest = (props: IProps) => {

0 commit comments

Comments
 (0)