koel/resources/assets/js/stores/equalizerStore.ts
2024-10-14 00:37:01 +07:00

48 lines
1.2 KiB
TypeScript

import { preferenceStore as preferences } from '@/stores'
import { equalizerPresets as presets } from '@/config'
export const equalizerStore = {
getPresetByName (name: string) {
return presets.find(preset => preset.name === name)
},
/**
* Get the current equalizer config.
*/
getConfig () {
let config: EqualizerPreset | undefined
if (this.isCustom(preferences.equalizer)) {
return preferences.equalizer
}
if (preferences.equalizer.name !== null) {
config = this.getPresetByName(preferences.equalizer.name)
}
return config || presets[0]
},
isCustom (preset: any) {
return typeof preset === 'object'
&& preset !== null
&& preset.name === null
&& typeof preset.preamp === 'number'
&& Array.isArray(preset.gains)
&& preset.gains.length === 10
&& preset.gains.every((gain: any) => typeof gain === 'number')
},
/**
* Save the current equalizer config.
*/
saveConfig (name: EqualizerPreset['name'] | null, preamp: number, gains: number[]) {
const preset = name ? this.getPresetByName(name) : null
preferences.equalizer = preset || {
preamp,
gains,
name: null,
}
},
}