mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-22 06:25:41 +00:00
refactor(auth): E.45 — extract seven settings factories (#610)
Seven small domain-eng factories peel ~53 trivial setters out of the authStore body: - `createCacheStorageActions` — disk caches (max cache MB, download folder, offline download dir, hot-cache enable/MB/debounce/dir). - `createDiscordSettingsActions` — rich presence, cover source, Bandsintown toggle, three template strings. - `createUiAppearanceActions` — visual chrome: tray, titlebar, sidebar toggles, fullscreen-lyrics rendering, changelog banner, seekbar style, queue collapse, kinetic scroll, mini-player preload. - `createLyricsSettingsActions` — lyrics fetch pipeline (server-first, netease enablement, source order, mode, static-only). - `createTrackPreviewActions` — preview enable + per-location + start ratio (clamped 0…0.9) + duration (clamped 5…120s). - `createDiscoveryActions` — mix min-rating filters (clamped 0…3), random-mix size (snapped to allowed bucket), lucky-mix visibility, random-nav mode, infinite-queue, preserve-play-next-order. - `createPlumbingSettingsActions` — logging mode, getNowPlaying toggle, preload mode + custom seconds, audiobook exclusion, genre blacklist. Pure code-move. authStore.ts: 428 → 384 LOC (−44).
This commit is contained in:
committed by
GitHub
parent
b8ddb09b78
commit
fe6acdaa4c
@@ -0,0 +1,49 @@
|
||||
import type { AuthState } from './authStoreTypes';
|
||||
|
||||
type SetState = (
|
||||
partial: Partial<AuthState> | ((state: AuthState) => Partial<AuthState>),
|
||||
) => void;
|
||||
|
||||
/**
|
||||
* Visual / chrome settings. Pure pass-through setters: tray, titlebar,
|
||||
* sidebar toggles, fullscreen lyrics rendering options, changelog
|
||||
* banner. No side effects.
|
||||
*/
|
||||
export function createUiAppearanceActions(set: SetState): Pick<
|
||||
AuthState,
|
||||
| 'setShowArtistImages'
|
||||
| 'setShowTrayIcon'
|
||||
| 'setMinimizeToTray'
|
||||
| 'setShowOrbitTrigger'
|
||||
| 'setUseCustomTitlebar'
|
||||
| 'setPreloadMiniPlayer'
|
||||
| 'setLinuxWebkitKineticScroll'
|
||||
| 'setSeekbarStyle'
|
||||
| 'setQueueNowPlayingCollapsed'
|
||||
| 'setShowFullscreenLyrics'
|
||||
| 'setFsLyricsStyle'
|
||||
| 'setSidebarLyricsStyle'
|
||||
| 'setShowFsArtistPortrait'
|
||||
| 'setFsPortraitDim'
|
||||
| 'setShowChangelogOnUpdate'
|
||||
| 'setLastSeenChangelogVersion'
|
||||
> {
|
||||
return {
|
||||
setShowArtistImages: (v) => set({ showArtistImages: v }),
|
||||
setShowTrayIcon: (v) => set({ showTrayIcon: v }),
|
||||
setMinimizeToTray: (v) => set({ minimizeToTray: v }),
|
||||
setShowOrbitTrigger: (v) => set({ showOrbitTrigger: v }),
|
||||
setUseCustomTitlebar: (v) => set({ useCustomTitlebar: v }),
|
||||
setPreloadMiniPlayer: (v) => set({ preloadMiniPlayer: v }),
|
||||
setLinuxWebkitKineticScroll: (v) => set({ linuxWebkitKineticScroll: v }),
|
||||
setSeekbarStyle: (v) => set({ seekbarStyle: v }),
|
||||
setQueueNowPlayingCollapsed: (v) => set({ queueNowPlayingCollapsed: v }),
|
||||
setShowFullscreenLyrics: (v) => set({ showFullscreenLyrics: v }),
|
||||
setFsLyricsStyle: (v) => set({ fsLyricsStyle: v }),
|
||||
setSidebarLyricsStyle: (v) => set({ sidebarLyricsStyle: v }),
|
||||
setShowFsArtistPortrait: (v) => set({ showFsArtistPortrait: v }),
|
||||
setFsPortraitDim: (v) => set({ fsPortraitDim: v }),
|
||||
setShowChangelogOnUpdate: (v) => set({ showChangelogOnUpdate: v }),
|
||||
setLastSeenChangelogVersion: (v) => set({ lastSeenChangelogVersion: v }),
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user