Skip to content

Commit 76ba923

Browse files
committed
Added Purge + Final Touches for prerelease
1 parent 92016e4 commit 76ba923

File tree

12 files changed

+98
-17
lines changed

12 files changed

+98
-17
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,5 @@ yarn-error.log*
2828
tsconfig.tsbuildinfo
2929
DeskThing/server/auth_data.json
3030
AppExamples/spotify/node_modules/
31-
releases/Linux/deskthing-1.0.0.AppImage
31+
releases/Linux/deskthing-0.3.0.AppImage
3232
/AppExamples/utility/node_modules

AppExamples/utility/builds/index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ var require_utility = __commonJS({
5151
case "previous_track":
5252
this.sendDataToMainFn("toApp", this.settings.playback_location.value, type, "previous_track", payload);
5353
break;
54+
case "device_info":
55+
this.sendDataToMainFn("toApp", this.settings.playback_location.value, type, "device_info", payload);
56+
break;
57+
case "song_info":
58+
this.sendDataToMainFn("toApp", this.settings.playback_location.value, type, "song_info", payload);
59+
break;
5460
default:
5561
console.warn("Unsupported command:", command);
5662
break;

AppExamples/utility/utility.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ class UtilityHandler {
4747
case 'previous_track':
4848
this.sendDataToMainFn('toApp', this.settings.playback_location.value, type, 'previous_track', payload);
4949
break;
50+
case 'device_info':
51+
this.sendDataToMainFn('toApp', this.settings.playback_location.value, type, 'device_info', payload);
52+
break;
53+
case 'song_info':
54+
this.sendDataToMainFn('toApp', this.settings.playback_location.value, type, 'song_info', payload);
55+
break;
5056
default:
5157
console.warn('Unsupported command:', command);
5258
break;

DeskThingServer/src/main/index.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ import {
99
handleZip,
1010
loadAndRunEnabledApps,
1111
disableApp,
12-
stopApp
12+
stopApp,
13+
purgeAppData
1314
} from './utility/appHandler'
1415
import './utility/authHandler'
1516
import './utility/websocketServer'
@@ -82,6 +83,10 @@ app.whenReady().then(async () => {
8283
ipcMain.on('disable-app', async (_event, appName: string) => {
8384
disableApp(appName)
8485
})
86+
ipcMain.on('purge-app', async (_event, appName: string) => {
87+
console.log(`====== PURGING APP ${appName} ========`)
88+
purgeAppData(_event, appName)
89+
})
8590

8691
ipcMain.on('handle-zip', async (event, zipFilePath: string) => {
8792
console.log('SERVER: handling zip file event', event)

DeskThingServer/src/main/utility/appHandler.ts

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,15 @@ import { app, ipcMain } from 'electron'
33
import { join } from 'path'
44
import * as fs from 'fs'
55
import * as unzipper from 'unzipper'
6-
import { getAppData, setAppData, getAppByName, addAppManifest, getConfig } from './configHandler'
7-
import { getData, setData, addData } from './dataHandler'
6+
import {
7+
getAppData,
8+
setAppData,
9+
getAppByName,
10+
addAppManifest,
11+
getConfig,
12+
purgeAppConfig
13+
} from './configHandler'
14+
import { getData, setData, addData, purgeData } from './dataHandler'
815
import { sendIpcMessage, openAuthWindow } from '../index'
916
import { sendMessageToClients } from './websocketServer'
1017
interface AppInstance {
@@ -82,7 +89,6 @@ function handleDataFromApp(app: string, type: string, ...args: any[]): void {
8289
}
8390
}
8491
async function requestAuthData(appName: string, scope: Array<string>): Promise<void> {
85-
8692
// Send IPC message to renderer to display the form
8793
sendIpcMessage('request-user-data', appName, scope)
8894

@@ -339,6 +345,21 @@ async function addApp(_event, appName: string): Promise<void> {
339345
console.error('Error adding app:', error)
340346
}
341347
}
348+
async function purgeAppData(_event, appName: string): Promise<void> {
349+
console.log('SERVER: Purging Data...')
350+
purgeData(appName)
351+
console.log('SERVER: Purging Config...')
352+
purgeAppConfig(appName)
353+
354+
console.log('SERVER: Purging File...')
355+
const appDirectory = join(app.getPath('userData'), 'apps', appName)
356+
if (fs.existsSync(appDirectory)) {
357+
fs.rmSync(appDirectory, { recursive: true })
358+
console.log(`Deleted app directory: ${appDirectory}`)
359+
} else {
360+
console.log(`App directory not found: ${appDirectory}`)
361+
}
362+
}
342363

343364
export {
344365
runApp,
@@ -348,5 +369,6 @@ export {
348369
handleZip,
349370
loadAndRunEnabledApps,
350371
addApp,
351-
disableApp
372+
disableApp,
373+
purgeAppData
352374
}

DeskThingServer/src/main/utility/configHandler.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,29 @@ const getAppByIndex = (index: number): App | undefined => {
168168
return foundApp
169169
}
170170

171-
export { setAppData, getAppData, getAppByName, getAppByIndex, addAppManifest, addConfig, getConfig }
171+
const purgeAppConfig = (appName: string): void => {
172+
console.log('SERVER: Deleting App From Config...', appName)
173+
const data = readData()
174+
175+
// Filter out the app to be purged
176+
const filteredApps = data.apps.filter((app: App) => app.name !== appName)
177+
data.apps = filteredApps
178+
179+
if (Array.isArray(data.config.audiosources)) {
180+
const updatedAudiosources = data.config.audiosources.filter((source) => source !== appName)
181+
data.config.audiosources = updatedAudiosources
182+
}
183+
184+
writeData(data)
185+
}
186+
187+
export {
188+
setAppData,
189+
getAppData,
190+
getAppByName,
191+
getAppByIndex,
192+
addAppManifest,
193+
addConfig,
194+
getConfig,
195+
purgeAppConfig
196+
}

DeskThingServer/src/main/utility/dataHandler.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ const readData = (): Data => {
2020
fs.writeFileSync(dataFilePath, JSON.stringify(defaultData, null, 2))
2121
return defaultData
2222
}
23-
2423
const rawData = fs.readFileSync(dataFilePath)
2524
return JSON.parse(rawData.toString())
2625
} catch (err) {
@@ -62,4 +61,11 @@ const getData = (key): { [key: string]: string } => {
6261
return data[key]
6362
}
6463

65-
export { setData, getData, addData, readData }
64+
const purgeData = (appName: string): void => {
65+
console.log('SERVER: Deleting app data...')
66+
const data = readData()
67+
delete data[appName]
68+
writeData(data)
69+
}
70+
71+
export { setData, getData, addData, readData, purgeData }

DeskThingServer/src/renderer/src/components/Overlays/DisplayAppData.tsx

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ const DisplayAppData = ({ appIndex, setEnabled, data }: DisplayAppDataProps): JS
1616
const handleExit = (): void => {
1717
setEnabled(false)
1818
}
19+
const handlePurge = (appName: string): void => {
20+
window.electron.ipcRenderer.send('purge-app', appName)
21+
window.electron.ipcRenderer.send('get-apps')
22+
setEnabled(false)
23+
}
1924
return (
2025
<>
2126
{appData != null ? (
@@ -61,14 +66,20 @@ const DisplayAppData = ({ appIndex, setEnabled, data }: DisplayAppDataProps): JS
6166
</div>
6267
</div>
6368
)}
64-
<div className="bg-slate-700 p-5 m-1 rounded-lg drop-shadow-lg"></div>
65-
66-
<button
67-
className="bg-slate-700 hover:bg-red-500 transition-colors p-5 self-end rounded-lg drop-shadow-lg"
68-
onClick={handleExit}
69-
>
70-
Exit
71-
</button>
69+
<div className="bg-slate-700 p-5 m-1 flex justify-between rounded-lg drop-shadow-lg">
70+
<button
71+
className="bg-red-700 hover:bg-red-500 transition-colors p-5 self-end rounded-lg drop-shadow-lg"
72+
onClick={() => handlePurge(appData.name)}
73+
>
74+
Purge App (Cannot be undone)
75+
</button>
76+
<button
77+
className="bg-slate-700 hover:bg-red-500 transition-colors p-5 self-end rounded-lg drop-shadow-lg"
78+
onClick={handleExit}
79+
>
80+
Exit
81+
</button>
82+
</div>
7283
</div>
7384
</div>
7485
) : (

releases/Apps/utility-v0.5.0.zip

26 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)