Add configurable vibe presets
This commit is contained in:
parent
e54bddc7db
commit
f8294934fd
34 changed files with 1698 additions and 338 deletions
26
src/vibes.ts
Normal file
26
src/vibes.ts
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import { appConfig } from './config';
|
||||
import { VibeId, type VibePreset } from './config/types';
|
||||
import { readBrowserStorage } from './utils/browser-storage';
|
||||
import { getVibeById, VIBE_PRESETS } from './vibe-registry';
|
||||
import { getCurrentUriVibeId, getVibeIdFromUri } from './vibe-uri';
|
||||
|
||||
export { VibeId };
|
||||
export { getVibeById, VIBE_PRESETS };
|
||||
export type { VibePreset };
|
||||
|
||||
const VIBE_IDS = new Set<VibeId>(VIBE_PRESETS.map((vibe) => vibe.id));
|
||||
|
||||
const isVibeId = (value: unknown): value is VibeId =>
|
||||
typeof value === 'string' && VIBE_IDS.has(value as VibeId);
|
||||
|
||||
export const getInitialVibe = (): VibePreset => {
|
||||
const uriVibeId = getCurrentUriVibeId();
|
||||
const storedVibeId = readBrowserStorage(appConfig.storage.vibeKey);
|
||||
const storedOrLegacyVibeId = isVibeId(storedVibeId)
|
||||
? storedVibeId
|
||||
: getVibeIdFromUri(`?vibe=${encodeURIComponent(storedVibeId ?? '')}`);
|
||||
const initialVibeId =
|
||||
uriVibeId ?? storedOrLegacyVibeId ?? appConfig.vibes.defaultVibeId;
|
||||
|
||||
return getVibeById(initialVibeId) ?? VIBE_PRESETS[0];
|
||||
};
|
||||
Loading…
Reference in a new issue