Skip to content

Tankōbon / lib/data-store / DataStore

Class: DataStore ​

Defined in: 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: lib/data-store.ts:108

Parameters ​

source ​

DataSource

Returns ​

DataStore

Properties ​

ready ​

ready: Promise<void>

Defined in: lib/data-store.ts:111

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

Methods ​

apply() ​

apply(change): void

Defined in: lib/data-store.ts:208

Applies a data:changed event from the main process.

Parameters ​

change ​

DataChange

Returns ​

void


getAchievements() ​

getAchievements(): UnlockedAchievement[] | null

Defined in: lib/data-store.ts:130

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

Returns ​

UnlockedAchievement[] | null


getLibrary() ​

getLibrary(): LibraryEntry[] | null

Defined in: lib/data-store.ts:126

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

Returns ​

LibraryEntry[] | null


getReadingLists() ​

getReadingLists(): ReadingList[] | null

Defined in: lib/data-store.ts:128

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

Returns ​

ReadingList[] | null


getSettings() ​

getSettings(): PublicSettings

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

The settings.

Returns ​

PublicSettings


getUsers() ​

getUsers(): UsersState | null

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

The users and the active one; null until loaded.

Returns ​

UsersState | null


patchEntry() ​

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

Defined in: lib/data-store.ts:268

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: lib/data-store.ts:165

Fetches the earned achievements again.

Returns ​

Promise<void>


reloadLibrary() ​

reloadLibrary(): Promise<void>

Defined in: lib/data-store.ts:147

Fetches the whole library again.

Returns ​

Promise<void>


reloadReadingLists() ​

reloadReadingLists(): Promise<void>

Defined in: lib/data-store.ts:156

Fetches the reading lists again.

Returns ​

Promise<void>


reloadSettings() ​

reloadSettings(): Promise<void>

Defined in: lib/data-store.ts:199

Fetches the settings again.

Returns ​

Promise<void>


reloadUsers() ​

reloadUsers(): Promise<void>

Defined in: lib/data-store.ts:178

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: lib/data-store.ts:114

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

Returns ​

void


subscribe() ​

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

Defined in: lib/data-store.ts:137

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: lib/data-store.ts:288

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" | "resyncOnStartup" | "askUserOnStartup" | "readingDirection" | "addOpenedBooksToLibrary" | "libraryView" | "readingListView" | "libraryGroupBySeries" | "librarySort" | "homeEnabled" | "homeSections" | "sidebarCollapsed" | "scrollDirection" | "readingMode" | "comicVineEnabled" | "googleBooksEnabled" | "checkUpdatesOnStartup" | "lastResyncAt" | "libraryOrganization" | "libraryOrganizationFolder" | "libraryStructure" | "libraryFileName" | "lastScanFolder"

Parameters ​

key ​

K

value ​

PublicSettings[K]

persist ​

() => Promise<unknown>

Returns ​

Promise<void>


upsertEntry() ​

upsertEntry(entry): void

Defined in: lib/data-store.ts:283

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

Parameters ​

entry ​

LibraryEntry

Returns ​

void