Skip to content

Skeudenn / lib/data-store / DataStore

Class: DataStore ​

Defined in: src/lib/data-store.ts:84

Holds the data and notifies subscribers per slice. null library or reading lists mean "not loaded yet"; the settings are DEFAULT_SETTINGS until loaded (see DataStore.ready).

Constructors ​

Constructor ​

new DataStore(source): DataStore

Defined in: src/lib/data-store.ts:114

Parameters ​

source ​

DataSource

Returns ​

DataStore

Properties ​

ready ​

ready: Promise<void>

Defined in: src/lib/data-store.ts:117

Resolves once the settings are loaded, so the first render can already use the language.

Methods ​

apply() ​

apply(change): void

Defined in: src/lib/data-store.ts:218

Applies a data:changed event from the main process.

Parameters ​

change ​

DataChange

Returns ​

void


getAchievements() ​

getAchievements(): UnlockedAchievement[] | null

Defined in: src/lib/data-store.ts:136

The achievements earned, the earliest first; null until loaded.

Returns ​

UnlockedAchievement[] | null


getLibrary() ​

getLibrary(): LibraryEntry[] | null

Defined in: src/lib/data-store.ts:132

The library, most recently opened first; null until loaded. The array is replaced, never mutated.

Returns ​

LibraryEntry[] | null


getReadingLists() ​

getReadingLists(): ReadingList[] | null

Defined in: src/lib/data-store.ts:134

The reading lists in the user's order; null until loaded.

Returns ​

ReadingList[] | null


getSettings() ​

getSettings(): PublicSettings

Defined in: src/lib/data-store.ts:138

The settings.

Returns ​

PublicSettings


getUsers() ​

getUsers(): UsersState | null

Defined in: src/lib/data-store.ts:140

The users and the active one; null until loaded.

Returns ​

UsersState | null


patchEntry() ​

patchEntry(id, patch, persist): Promise<void>

Defined in: src/lib/data-store.ts:279

Shows patch on an entry at once, then runs persist; the main process's echo confirms it. If persist rejects, the library is reloaded (the optimistic value is dropped) and the error rethrown.

Parameters ​

id ​

string

patch ​

Partial<LibraryEntry>

persist ​

() => Promise<unknown>

Returns ​

Promise<void>


reloadAchievements() ​

reloadAchievements(): Promise<void>

Defined in: src/lib/data-store.ts:175

Fetches the earned achievements again.

Returns ​

Promise<void>


reloadLibrary() ​

reloadLibrary(): Promise<void>

Defined in: src/lib/data-store.ts:153

Fetches the whole library again.

Returns ​

Promise<void>


reloadReadingLists() ​

reloadReadingLists(): Promise<void>

Defined in: src/lib/data-store.ts:166

Fetches the reading lists again.

Returns ​

Promise<void>


reloadSettings() ​

reloadSettings(): Promise<void>

Defined in: src/lib/data-store.ts:209

Fetches the settings again.

Returns ​

Promise<void>


reloadUsers() ​

reloadUsers(): Promise<void>

Defined in: src/lib/data-store.ts:188

Fetches the users again. When the active user is not the one the store holds the data of, that data (library progress, lists, achievements, settings) is dropped at once, so no view shows or counts another user's, and loaded again.

Returns ​

Promise<void>


start() ​

start(): void

Defined in: src/lib/data-store.ts:120

Loads everything and starts listening to data:changed. Calling it again does nothing.

Returns ​

void


subscribe() ​

subscribe(slice, listener): () => void

Defined in: src/lib/data-store.ts:143

Calls listener after each change of slice; returns the unsubscribe function.

Parameters ​

slice ​

DataSlice

listener ​

() => void

Returns ​

() => void


updateSetting() ​

updateSetting<K>(key, value, persist): Promise<void>

Defined in: src/lib/data-store.ts:299

Shows a setting's new value at once, then runs persist; if it rejects, the settings are reloaded and the error rethrown.

Type Parameters ​

K ​

K extends "language" | "pageSpacing" | "theme" | "readerBackground" | "homeEnabled" | "statsEnabled" | "achievementsEnabled" | "askUserOnStartup" | "resyncOnStartup" | "trashAutoEmpty" | "trashRetentionDays" | "backupKeep" | "readingDirection" | "addOpenedBooksToLibrary" | "libraryView" | "readingListView" | "libraryGroupBySeries" | "librarySort" | "homeSections" | "sidebarCollapsed" | "scrollDirection" | "readingMode" | "comicVineEnabled" | "googleBooksEnabled" | "bedethequeSearchByDefault" | "checkUpdatesOnStartup" | "backupIntervalDays" | "lastBackupAt" | "lastResyncAt" | "libraryOrganization" | "libraryOrganizationFolder" | "libraryStructure" | "libraryFileName" | "libraryVolumePrefix" | "libraryVolumePrefixNumericOnly" | "libraryIgnoreArticles" | "libraryArticles" | "librarySidecarCovers" | "libraryWriteNfo" | "fileNameRules" | "lookupRuleCollapsed" | "ignoredDuplicates" | "lastScanFolder"

Parameters ​

key ​

K

value ​

PublicSettings[K]

persist ​

() => Promise<unknown>

Returns ​

Promise<void>


upsertEntry() ​

upsertEntry(entry): void

Defined in: src/lib/data-store.ts:294

Replaces an entry with a newer state of itself, e.g. what a metadata dialog just saved.

Parameters ​

entry ​

LibraryEntry

Returns ​

void