19 refactor store methods #20
@ -11,7 +11,7 @@ edition = "2021"
|
|||||||
tauri-build = { version = "1", features = [] }
|
tauri-build = { version = "1", features = [] }
|
||||||
|
|
||||||
[dependencies]
|
[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 = { version = "1", features = ["derive"] }
|
||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
|
|
||||||
|
@ -22,10 +22,11 @@
|
|||||||
},
|
},
|
||||||
"fs": {
|
"fs": {
|
||||||
"all": false,
|
"all": false,
|
||||||
|
"createDir": true,
|
||||||
"readFile": true,
|
"readFile": true,
|
||||||
"writeFile": true,
|
"writeFile": true,
|
||||||
"exists": true,
|
"exists": true,
|
||||||
"scope": ["$APPDATA/*"]
|
"scope": ["$APPDATA/*", "$HOME/Library/Application Support/com.KlectrRadio.dev"]
|
||||||
},
|
},
|
||||||
"path": {
|
"path": {
|
||||||
"all": true
|
"all": true
|
||||||
|
@ -2,27 +2,20 @@ import { createStore } from "kaioken"
|
|||||||
|
|
||||||
export const useStationsStore = createStore(
|
export const useStationsStore = createStore(
|
||||||
null as Station[] | null,
|
null as Station[] | null,
|
||||||
(set) => ({
|
(set, get) => ({
|
||||||
add: (station: Station): Station[] => {
|
add: (station: Station): Station[] => {
|
||||||
let newState: Station[] | null = null
|
let newState: Station[] = [...(get() ?? []), station]
|
||||||
set((state) => {
|
set(newState)
|
||||||
newState = [...(state ?? []), station]
|
|
||||||
return newState
|
|
||||||
})
|
|
||||||
//@ts-ignore
|
|
||||||
return newState
|
return newState
|
||||||
},
|
},
|
||||||
rmStation: (stationId): Station[] => {
|
rmStation: (stationId): Station[] => {
|
||||||
let newState: Station[] | null = null
|
let newState: Station[] | null =
|
||||||
set((state) => {
|
get()?.filter((station) => station.id !== stationId) ?? []
|
||||||
newState = state?.filter((station) => station.id !== stationId) ?? []
|
set(newState)
|
||||||
return newState
|
|
||||||
})
|
|
||||||
//@ts-ignore
|
|
||||||
return newState
|
return newState
|
||||||
},
|
},
|
||||||
override: (stationsList: Station[]) => {
|
override: (stationsList: Station[]) => {
|
||||||
set((_state) => stationsList)
|
set(stationsList)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
@ -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 { appDataDir } from "@tauri-apps/api/path"
|
||||||
import { createStore } from "kaioken"
|
import { createStore } from "kaioken"
|
||||||
import { Station } from "../hooks/stationStores"
|
import { Station } from "../hooks/stationStores"
|
||||||
@ -10,7 +15,11 @@ export const useStorageStore = createStore(
|
|||||||
|
|
||||||
export function useStorage() {
|
export function useStorage() {
|
||||||
async function _createStationsFile(path: string): Promise<Station[]> {
|
async function _createStationsFile(path: string): Promise<Station[]> {
|
||||||
|
try {
|
||||||
await writeTextFile(path, "[]", { append: false })
|
await writeTextFile(path, "[]", { append: false })
|
||||||
|
} catch (err) {
|
||||||
|
console.error("CUSTOM ERROR: ", err)
|
||||||
|
}
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -22,9 +31,17 @@ export function useStorage() {
|
|||||||
console.error("getStationsFile: ", err)
|
console.error("getStationsFile: ", err)
|
||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!dir) return undefined
|
if (!dir) return undefined
|
||||||
|
|
||||||
|
const dirExists = await exists(dir)
|
||||||
|
if (!dirExists) {
|
||||||
|
await createDir(dir)
|
||||||
|
}
|
||||||
|
|
||||||
const path = `${dir}stations.json`
|
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 jsonString = await readTextFile(path)
|
||||||
const json = JSON.parse(jsonString) as Station[]
|
const json = JSON.parse(jsonString) as Station[]
|
||||||
useStorageStore.setState(() => path)
|
useStorageStore.setState(() => path)
|
||||||
|
Loading…
Reference in New Issue
Block a user