Skip to content

Commit acb87cd

Browse files
authored
cleanup(RouteUploadButtons): simplify store and types (commaai#562)
1 parent 47548e4 commit acb87cd

File tree

1 file changed

+15
-17
lines changed

1 file changed

+15
-17
lines changed

src/components/RouteUploadButtons.tsx

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ import Button from './material/Button'
77
import { uploadAllSegments, type FileType } from '~/api/file'
88
import type { Route } from '~/api/types'
99

10-
const BUTTON_TYPES = ['road', 'driver', 'logs', 'route']
10+
const BUTTON_TYPES = ['road', 'driver', 'logs', 'route'] as const
1111
type ButtonType = (typeof BUTTON_TYPES)[number]
1212
type ButtonState = 'idle' | 'loading' | 'success' | 'error'
1313

14-
const BUTTON_TO_FILE_TYPES: Record<Exclude<ButtonType, 'route'>, FileType[]> = {
14+
const BUTTON_TO_FILE_TYPES = {
1515
road: ['cameras', 'ecameras'],
1616
driver: ['dcameras'],
1717
logs: ['logs'],
18-
}
18+
} as const
1919

2020
interface UploadButtonProps {
2121
state: ButtonState
@@ -59,13 +59,11 @@ interface RouteUploadButtonsProps {
5959
}
6060

6161
const RouteUploadButtons: VoidComponent<RouteUploadButtonsProps> = (props) => {
62-
const [uploadStore, setUploadStore] = createStore({
63-
states: {
64-
road: 'idle',
65-
driver: 'idle',
66-
logs: 'idle',
67-
route: 'idle',
68-
} as Record<ButtonType, ButtonState>,
62+
const [uploadStore, setUploadStore] = createStore<Record<ButtonType, ButtonState>>({
63+
road: 'idle',
64+
driver: 'idle',
65+
logs: 'idle',
66+
route: 'idle',
6967
})
7068
const [abortController, setAbortController] = createSignal(new AbortController())
7169

@@ -75,7 +73,7 @@ const RouteUploadButtons: VoidComponent<RouteUploadButtonsProps> = (props) => {
7573
() => {
7674
abortController().abort()
7775
setAbortController(new AbortController())
78-
setUploadStore('states', BUTTON_TYPES, 'idle')
76+
setUploadStore(BUTTON_TYPES, 'idle')
7977
},
8078
),
8179
)
@@ -87,13 +85,13 @@ const RouteUploadButtons: VoidComponent<RouteUploadButtonsProps> = (props) => {
8785

8886
const updateButtonStates = (types: readonly ButtonType[], state: ButtonState) => {
8987
if (signal.aborted) return
90-
setUploadStore('states', types, state)
88+
setUploadStore(types, state)
9189
}
9290

9391
const uploadButtonTypes: ButtonType[] = [type]
9492
let uploadFileTypes: FileType[] = []
9593
for (const check of type === 'route' ? (['road', 'driver', 'logs'] as const) : [type]) {
96-
const state = uploadStore.states[check]
94+
const state = uploadStore[check]
9795
if (state === 'loading' || state === 'success') continue
9896
uploadButtonTypes.push(check)
9997
uploadFileTypes = uploadFileTypes.concat(BUTTON_TO_FILE_TYPES[check])
@@ -112,10 +110,10 @@ const RouteUploadButtons: VoidComponent<RouteUploadButtonsProps> = (props) => {
112110
return (
113111
<div class="flex flex-col rounded-b-md m-5">
114112
<div class="grid grid-cols-2 gap-3 w-full lg:grid-cols-4">
115-
<UploadButton text="Road" icon="videocam" state={uploadStore.states.road} onClick={() => handleUpload('road')} />
116-
<UploadButton text="Driver" icon="person" state={uploadStore.states.driver} onClick={() => handleUpload('driver')} />
117-
<UploadButton text="Logs" icon="description" state={uploadStore.states.logs} onClick={() => handleUpload('logs')} />
118-
<UploadButton text="All" icon="upload" state={uploadStore.states.route} onClick={() => handleUpload('route')} />
113+
<UploadButton text="Road" icon="videocam" state={uploadStore.road} onClick={() => handleUpload('road')} />
114+
<UploadButton text="Driver" icon="person" state={uploadStore.driver} onClick={() => handleUpload('driver')} />
115+
<UploadButton text="Logs" icon="description" state={uploadStore.logs} onClick={() => handleUpload('logs')} />
116+
<UploadButton text="All" icon="upload" state={uploadStore.route} onClick={() => handleUpload('route')} />
119117
</div>
120118
</div>
121119
)

0 commit comments

Comments
 (0)