Skip to content

Commit dbbc182

Browse files
committed
v0.8.3
Minor changes - Added the ability to set the default view - Added the ability to set the default miniplayer behavior - Minor UI enhancements for the apps list - Minor UI enhancements for the downloads
1 parent cb996b5 commit dbbc182

File tree

13 files changed

+306
-222
lines changed

13 files changed

+306
-222
lines changed

DeskThingServer/package-lock.json

Lines changed: 69 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

DeskThingServer/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "deskthing",
3-
"version": "0.8.2",
3+
"version": "0.8.3",
44
"description": "A DeskThing server UI to interface with the DeskThing car thing app",
55
"main": "./out/main/index.js",
66
"author": "Riprod",
@@ -40,7 +40,6 @@
4040
"@types/react-dom": "^18.2.18",
4141
"@vitejs/plugin-react": "^4.2.1",
4242
"autoprefixer": "^10.4.19",
43-
"electron": "^28.2.0",
4443
"electron-builder": "^24.9.1",
4544
"electron-vite": "^2.0.0",
4645
"eslint": "^8.56.0",

DeskThingServer/src/main/handlers/deviceHandler.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ export interface ServerManifest {
1818
version: string
1919
port: number
2020
ip: string
21+
default_view: string
22+
miniplayer: string
2123
}
2224

2325
export const HandleDeviceData = async (data: any): Promise<void> => {
@@ -245,7 +247,7 @@ export const getClientManifest = async (
245247
})
246248
dataListener.asyncEmit(
247249
MESSAGE_TYPES.ERROR,
248-
'DEVICE HANDLER: Client Manifest file not found! (Is it downloaded?)'
250+
'DEVICE HANDLER: Client Manifest file not found! (Is the client downloaded?)'
249251
)
250252
return null
251253
}

DeskThingServer/src/renderer/src/components/Apps/Apps.tsx

Lines changed: 60 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ export type View = 'apps' | 'local' | 'web'
1010

1111
const Apps = (): JSX.Element => {
1212
const { appsList } = useAppStore()
13-
const [tooltips, setTooltips] = useState<string[]>([])
1413
const [enabled, setEnabled] = useState(false)
1514
const [sEnabled, setSEnabled] = useState(false)
1615
const [appIndex, setAppIndex] = useState(-1)
@@ -72,7 +71,7 @@ const Apps = (): JSX.Element => {
7271
}
7372

7473
return (
75-
<div className="h-svh w-[100%] flex flex-col justify-between items-center">
74+
<div className="h-vh w-[100%] flex flex-col justify-between items-center">
7675
<div className="pt-5 w-full flex justify-center">
7776
{displayRequest && currentRequest[1] && currentRequest[0] && (
7877
<AppRequestOverlay
@@ -86,11 +85,11 @@ const Apps = (): JSX.Element => {
8685
<AppSettingsOverlay appIndex={appIndex} setEnabled={setSEnabled} data={appsList} />
8786
)}
8887
{appsList?.apps?.length > 0 && Object.keys(appsList.apps).length > 0 ? (
89-
<div className="pt-5 w-full flex xl:flex-row xl:flex-wrap flex-col items-center gap-2">
88+
<div className="pt-5 w-full flex xl:flex-row xl:flex-wrap xl:gap-5 xl:px-5 flex-col items-center gap-2">
9089
{(appsList.apps as App[]).map((app, appIndex) => (
9190
<div
9291
key={appIndex}
93-
className="border-2 border-zinc-400 p-5 w-11/12 md:w-11/12 xl:w-fit h-fit flex justify-between rounded-3xl shadow-lg px-5 items-center"
92+
className="border-2 border-zinc-400 p-5 w-11/12 md:w-11/12 xl:w-fit xl:gap-5 h-fit flex justify-between rounded-3xl shadow-lg px-5 items-center"
9493
>
9594
<div className="flex flex-wrap sm:flex-nowrap gap-2 xl:mr-2">
9695
<button
@@ -112,175 +111,86 @@ const Apps = (): JSX.Element => {
112111
<p className="text-zinc-400 text-xs font-geistMono">{app.manifest?.version}</p>
113112
</div>
114113
</div>
115-
{appsWithActiveRequests.includes(app.name) ? (
116-
<div className="flex items-center md:flex-row flex-col">
117-
{tooltips[appIndex] ? (
118-
<p>{tooltips[appIndex]}</p>
114+
<div className="flex md:items-center items-end justify-end md:flex-row flex-col xl:w-96">
115+
<div className="flex-col flex font-geistMono items-end pr-2">
116+
{app.running ? (
117+
<p className="text-green-500">Running</p>
118+
) : app.enabled ? (
119+
<p className="text-red-600">Stopped</p>
119120
) : (
120-
<p className="text-blue-300">Data Request</p>
121+
<p className="text-zinc-600 pr-2">Disabled</p>
121122
)}
122-
<button
123-
className="border-2 border-blue-600 hover:bg-blue-500 m-1 p-2 rounded-lg"
124-
onClick={() => handleRequestTrigger(app.name)}
125-
onMouseEnter={() =>
126-
setTooltips((prevTooltips) => ({
127-
...prevTooltips,
128-
[appIndex]: 'Handle Request'
129-
}))
130-
}
131-
onMouseLeave={() =>
132-
setTooltips((prevTooltips) => ({
133-
...prevTooltips,
134-
[appIndex]: ''
135-
}))
136-
}
137-
>
138-
<IconPulsing />
139-
</button>
140-
<button
141-
className="border-2 border-red-600 hover:bg-red-500 p-2 rounded-lg"
142-
onClick={() => handleDisableApp(app.name)}
143-
onMouseEnter={() =>
144-
setTooltips((prevTooltips) => ({
145-
...prevTooltips,
146-
[appIndex]: 'Disable App'
147-
}))
148-
}
149-
onMouseLeave={() =>
150-
setTooltips((prevTooltips) => ({
151-
...prevTooltips,
152-
[appIndex]: ''
153-
}))
154-
}
155-
>
156-
<IconX />
157-
</button>
158123
</div>
159-
) : app.enabled ? (
160-
<div className="flex items-center md:flex-row flex-col">
161-
<div className="flex-col flex font-geistMono items-end pr-2">
162-
{tooltips[appIndex] ? (
163-
<p className="text-white">{tooltips[appIndex]}</p>
164-
) : app.running ? (
165-
<p className="text-green-500">Running</p>
166-
) : (
167-
<p className="text-red-600">Stopped</p>
168-
)}
169-
</div>
170-
{app.running ? (
124+
{appsWithActiveRequests.includes(app.name) && (
125+
<div className="flex items-center md:flex-row flex-col">
171126
<button
172-
className="border-2 border-amber-600 hover:bg-amber-500 m-1 p-2 rounded-lg"
173-
onClick={() => handleStopApp(app.name)}
174-
onMouseEnter={() =>
175-
setTooltips((prevTooltips) => ({
176-
...prevTooltips,
177-
[appIndex]: 'Pause App'
178-
}))
179-
}
180-
onMouseLeave={() =>
181-
setTooltips((prevTooltips) => ({
182-
...prevTooltips,
183-
[appIndex]: ''
184-
}))
185-
}
127+
className="group flex border-2 gap-3 border-blue-600 hover:bg-blue-500 m-1 p-2 rounded-lg"
128+
onClick={() => handleRequestTrigger(app.name)}
186129
>
187-
<IconPause />
130+
<p className="group-hover:block hidden text-white">
131+
Handle<p className="hidden lg:inline"> Request</p>
132+
</p>
133+
<IconPulsing />
188134
</button>
189-
) : (
135+
</div>
136+
)}
137+
{app.enabled ? (
138+
<>
139+
{app.running ? (
140+
<button
141+
className="group flex gap-3 border-2 border-amber-600 hover:bg-amber-500 mx-1 p-2 rounded-lg"
142+
onClick={() => handleStopApp(app.name)}
143+
>
144+
<p className="group-hover:block hidden text-white">
145+
Pause<p className="hidden lg:inline"> App</p>
146+
</p>
147+
<IconPause />
148+
</button>
149+
) : (
150+
<button
151+
className="gap-3 flex group border-2 border-cyan-600 hover:bg-cyan-500 mx-1 p-2 rounded-lg"
152+
onClick={() => handleAddAndRunApp(app.name)}
153+
>
154+
<p className="group-hover:block hidden text-white">
155+
Run<p className="hidden lg:inline"> App</p>
156+
</p>
157+
<IconPlay />
158+
</button>
159+
)}
190160
<button
191-
className="border-2 border-cyan-600 hover:bg-cyan-500 m-1 p-2 rounded-lg"
192-
onClick={() => handleAddAndRunApp(app.name)}
193-
onMouseEnter={() =>
194-
setTooltips((prevTooltips) => ({
195-
...prevTooltips,
196-
[appIndex]: 'Run App'
197-
}))
198-
}
199-
onMouseLeave={() =>
200-
setTooltips((prevTooltips) => ({
201-
...prevTooltips,
202-
[appIndex]: ''
203-
}))
204-
}
161+
className="flex gap-3 group border-2 border-red-600 hover:bg-red-500 mx-1 p-2 rounded-lg"
162+
onClick={() => handleDisableApp(app.name)}
205163
>
206-
<IconPlay />
164+
<p className="group-hover:block hidden text-white">
165+
Disable<p className="hidden lg:inline"> App</p>
166+
</p>
167+
<IconX />
207168
</button>
208-
)}
169+
</>
170+
) : (
209171
<button
210-
className="border-2 border-red-600 hover:bg-red-500 p-2 rounded-lg"
211-
onClick={() => handleDisableApp(app.name)}
212-
onMouseEnter={() =>
213-
setTooltips((prevTooltips) => ({
214-
...prevTooltips,
215-
[appIndex]: 'Disable App'
216-
}))
217-
}
218-
onMouseLeave={() =>
219-
setTooltips((prevTooltips) => ({
220-
...prevTooltips,
221-
[appIndex]: ''
222-
}))
223-
}
224-
>
225-
<IconX />
226-
</button>
227-
</div>
228-
) : (
229-
<div className="flex items-center md:flex-row flex-col">
230-
{tooltips[appIndex] ? (
231-
<p>{tooltips[appIndex]}</p>
232-
) : (
233-
<p className="text-zinc-600">Disabled</p>
234-
)}
235-
<button
236-
className="border-2 border-cyan-600 hover:bg-cyan-500 m-1 p-2 rounded-lg"
172+
className="group gap-3 flex border-2 border-cyan-600 hover:bg-cyan-500 mx-1 p-2 rounded-lg"
237173
onClick={() => handleAddAndRunApp(app.name)}
238-
onMouseEnter={() =>
239-
setTooltips((prevTooltips) => ({
240-
...prevTooltips,
241-
[appIndex]: 'Enable App'
242-
}))
243-
}
244-
onMouseLeave={() =>
245-
setTooltips((prevTooltips) => ({
246-
...prevTooltips,
247-
[appIndex]: ''
248-
}))
249-
}
250174
>
175+
<p className="group-hover:block hidden text-white">
176+
Enable<p className="hidden lg:inline"> App</p>
177+
</p>
251178
<IconPlay />
252179
</button>
253-
<button
254-
onClick={() => handleDetails(appIndex)}
255-
className="border-2 top-10 border-green-600 hover:bg-green-500 p-2 rounded-lg"
256-
onMouseEnter={() =>
257-
setTooltips((prevTooltips) => ({
258-
...prevTooltips,
259-
[appIndex]: 'App Details'
260-
}))
261-
}
262-
onMouseLeave={() =>
263-
setTooltips((prevTooltips) => ({
264-
...prevTooltips,
265-
[appIndex]: ''
266-
}))
267-
}
268-
>
269-
<IconDetails iconSize={24} />
270-
</button>
271-
</div>
272-
)}
180+
)}
181+
</div>
273182
</div>
274183
))}
275184
</div>
276185
) : (
277-
<div className="border-2 border-zinc-200 p-5 w-[90%] h-fit flex justify-center rounded-3xl shadow-lg px-5 align-baseline">
186+
<div className="border-2 border-zinc-200 p-5 w-[90%] h-fit flex flex-col items-center gap-5 justify-center rounded-3xl shadow-lg px-5 align-baseline">
278187
<button
279188
className="border-2 border-cyan-600 hover:bg-cyan-500 bg-cyan-600 p-2 rounded-lg"
280189
onClick={() => requestAppsList()}
281190
>
282-
Request Apps
191+
Refresh Apps List
283192
</button>
193+
<p className="italic text-gray-500">Are any downloaded?</p>
284194
</div>
285195
)}
286196
</div>

DeskThingServer/src/renderer/src/components/Apps/Web.tsx

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -180,26 +180,38 @@ const Web = (): JSX.Element => {
180180
</div>
181181
</div>
182182
) : repoReleases.length > 0 ? (
183-
repoReleases.map((repo) => (
184-
<div key={repo.repoUrl} className="border-l rounded-xl">
185-
<button
186-
className="w-full flex justify-between px-4 py-2 text-left border-t mb-2 rounded-xl hover:font-bold focus:outline-none"
187-
onClick={() => toggleRepoDropdown(repo.repoUrl)}
188-
>
189-
{repo.repoUrl}
190-
{openRepoUrl === repo.repoUrl ? <IconArrowDown /> : <IconArrowRight />}
191-
</button>
192-
{openRepoUrl === repo.repoUrl && (
193-
<ReleaseList
194-
releases={repo.releases}
195-
openReleaseId={openReleaseId}
196-
toggleDropdown={toggleReleaseDropdown}
197-
filterAssets={filterAssets}
198-
handleAssetClick={handleAssetClick}
199-
/>
200-
)}
201-
</div>
202-
))
183+
repoReleases.map((repo) => {
184+
const repoName = new URL(repo.repoUrl).pathname.split('/').slice(-1)[0]
185+
return (
186+
<div key={repo.repoUrl} className="border-l rounded-xl hover:bg-gray-950">
187+
<button
188+
className="w-full flex p-5 text-left border-t mb-2 rounded-xl hover:font-bold focus:outline-none"
189+
onClick={() => toggleRepoDropdown(repo.repoUrl)}
190+
>
191+
<div className="h-full">
192+
{openRepoUrl === repo.repoUrl ? (
193+
<IconArrowDown iconSize={48} />
194+
) : (
195+
<IconArrowRight iconSize={48} />
196+
)}
197+
</div>
198+
<div>
199+
<h1 className="text-xl">{repoName}</h1>
200+
<p className="italic text-gray-500">{repo.repoUrl}</p>
201+
</div>
202+
</button>
203+
{openRepoUrl === repo.repoUrl && (
204+
<ReleaseList
205+
releases={repo.releases}
206+
openReleaseId={openReleaseId}
207+
toggleDropdown={toggleReleaseDropdown}
208+
filterAssets={filterAssets}
209+
handleAssetClick={handleAssetClick}
210+
/>
211+
)}
212+
</div>
213+
)
214+
})
203215
) : (
204216
<Loading message={'Fetching Releases'} />
205217
)}

0 commit comments

Comments
 (0)