Merge pull request #20 from Klectr/19-refactor-store-methods

19 refactor store methods
This commit is contained in:
Triston Armstrong 2024-04-03 21:47:32 -05:00 committed by GitHub
commit cfc8aabd15
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 31 additions and 20 deletions

View File

@ -11,7 +11,7 @@ edition = "2021"
tauri-build = { version = "1", features = [] }
[dependencies]
tauri = { version = "1", features = [ "fs-write-file", "fs-read-file", "path-all", "fs-exists", "shell-open"] }
tauri = { version = "1", features = [ "fs-read-file", "fs-create-dir", "fs-exists", "fs-write-file", "path-all", "shell-open"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"

View File

@ -21,11 +21,12 @@
"all": false
},
"fs": {
"all": false,
"all": false,
"createDir": true,
"readFile": true,
"writeFile": true,
"exists": true,
"scope": ["$APPDATA/*"]
"scope": ["$APPDATA/*", "$HOME/Library/Application Support/com.KlectrRadio.dev"]
},
"path": {
"all": true

View File

@ -2,27 +2,20 @@ import { createStore } from "kaioken"
export const useStationsStore = createStore(
null as Station[] | null,
(set) => ({
(set, get) => ({
add: (station: Station): Station[] => {
let newState: Station[] | null = null
set((state) => {
newState = [...(state ?? []), station]
return newState
})
//@ts-ignore
let newState: Station[] = [...(get() ?? []), station]
set(newState)
return newState
},
rmStation: (stationId): Station[] => {
let newState: Station[] | null = null
set((state) => {
newState = state?.filter((station) => station.id !== stationId) ?? []
return newState
})
//@ts-ignore
let newState: Station[] | null =
get()?.filter((station) => station.id !== stationId) ?? []
set(newState)
return newState
},
override: (stationsList: Station[]) => {
set((_state) => stationsList)
set(stationsList)
},
})
)

View File

@ -1,4 +1,9 @@
import { exists, readTextFile, writeTextFile } from "@tauri-apps/api/fs"
import {
createDir,
exists,
readTextFile,
writeTextFile,
} from "@tauri-apps/api/fs"
import { appDataDir } from "@tauri-apps/api/path"
import { createStore } from "kaioken"
import { Station } from "../hooks/stationStores"
@ -10,7 +15,11 @@ export const useStorageStore = createStore(
export function useStorage() {
async function _createStationsFile(path: string): Promise<Station[]> {
await writeTextFile(path, "[]", { append: false })
try {
await writeTextFile(path, "[]", { append: false })
} catch (err) {
console.error("CUSTOM ERROR: ", err)
}
return []
}
@ -22,9 +31,17 @@ export function useStorage() {
console.error("getStationsFile: ", err)
return undefined
}
if (!dir) return undefined
const dirExists = await exists(dir)
if (!dirExists) {
await createDir(dir)
}
const path = `${dir}stations.json`
if (!(await exists(path))) return await _createStationsFile(path)
const pathExists = await exists(path)
if (!pathExists) return await _createStationsFile(path)
const jsonString = await readTextFile(path)
const json = JSON.parse(jsonString) as Station[]
useStorageStore.setState(() => path)