feat(server): added types for saveSettings

This commit is contained in:
Roberto Tonino 2021-05-13 20:59:58 +02:00
parent 669854f799
commit 335819b2bb
3 changed files with 99 additions and 3 deletions

View File

@ -10,3 +10,89 @@ export interface ApiHandler {
path: string
handler: RequestHandler<any, any, any, any>
}
export interface Tags {
title: boolean
artist: boolean
album: boolean
cover: boolean
trackNumber: boolean
trackTotal: boolean
discNumber: boolean
discTotal: boolean
albumArtist: boolean
genre: boolean
year: boolean
date: boolean
explicit: boolean
isrc: boolean
length: boolean
barcode: boolean
bpm: boolean
replayGain: boolean
label: boolean
lyrics: boolean
syncedLyrics: boolean
copyright: boolean
composer: boolean
involvedPeople: boolean
source: boolean
savePlaylistAsCompilation: boolean
useNullSeparator: boolean
saveID3v1: boolean
multiArtistSeparator: string
singleAlbumArtist: boolean
coverDescriptionUTF8: boolean
}
export interface Settings {
downloadLocation: string
tracknameTemplate: string
albumTracknameTemplate: string
playlistTracknameTemplate: string
createPlaylistFolder: boolean
playlistNameTemplate: string
createArtistFolder: boolean
artistNameTemplate: string
createAlbumFolder: boolean
albumNameTemplate: string
createCDFolder: boolean
createStructurePlaylist: boolean
createSingleFolder: boolean
padTracks: boolean
paddingSize: string
illegalCharacterReplacer: string
queueConcurrency: number
maxBitrate: string
fallbackBitrate: boolean
fallbackSearch: boolean
logErrors: boolean
logSearched: boolean
saveDownloadQueue: boolean
overwriteFile: string
createM3U8File: boolean
playlistFilenameTemplate: string
syncedLyrics: boolean
embeddedArtworkSize: number
embeddedArtworkPNG: boolean
localArtworkSize: number
localArtworkFormat: string
saveArtwork: boolean
coverImageTemplate: string
saveArtworkArtist: boolean
artistImageTemplate: string
jpegImageQuality: number
dateFormat: string
albumVariousArtists: boolean
removeAlbumVersion: boolean
removeDuplicateArtists: boolean
tagsLanguage: string
featuredToTitle: string
titleCasing: string
artistCasing: string
executeCommand: string
tags: Tags
}
// TODO
export interface SpotifySettings {}

View File

@ -9,10 +9,14 @@ import wsModules from './modules'
export const registerWebsocket = (wss: WsServer) => {
wss.on('connection', ws => {
ws.on('message', message => {
consoleInfo(`received: ${message}`)
consoleInfo(`Received: ${message}`)
const data = JSON.parse(message.toString())
wsModules.forEach(module => {
if (data.key === module.eventName) module.cb(data.data, ws, wss)
if (data.key === module.eventName) {
module.cb(data.data, ws, wss)
}
})
})
})

View File

@ -1,10 +1,16 @@
import { Server as WsServer } from 'ws'
import { consoleInfo } from '../../helpers/errors'
import { saveSettings, listener } from '../../main'
import { Settings, SpotifySettings } from '../../types'
const eventName = 'saveSettings'
const cb = (data: any, _: any, __: WsServer) => {
export interface SaveSettingsData {
settings: Settings
spotifySettings: SpotifySettings
}
const cb = (data: SaveSettingsData, _: any, __: WsServer) => {
const { settings, spotifySettings } = data
saveSettings(settings)
consoleInfo('Settings saved')