fix: plugins: api.setConfig not working correctly https://github.com/rejetto/hfs/issues/60

Massimo Melina committed Jun 21, 2022 at 18:13 UTC 6d4ed23ec6d905f3bd702cdf3e547b5df4f179e2
1 file changed +9 -5
server/src/plugins.ts
+9 -5
@@ -34,11 +34,15 @@ export function enablePlugin(id: string, state=true) {
34 )
35 }
36
37 -export function setPluginConfig(id: string, config: Dict) {
38 - const fields = getPluginConfigFields(id)
39 - config = _.pickBy(config, (v, k) =>
40 - v !== null && !same(v, fields?.[k]?.defaultValue))
41 - pluginsConfig.set(v => ({ ...v, [id]: _.isEmpty(config) ? undefined : config }))
37 +// nullish values are equivalent to defaultValues
38 +export function setPluginConfig(id: string, changes: Dict) {
39 + pluginsConfig.set(allConfigs => {
40 + const fields = getPluginConfigFields(id)
41 + const oldConfig = allConfigs[id]
42 + const newConfig = _.pickBy({ ...oldConfig, ...changes },
43 + (v, k) => v != null && !same(v, fields?.[k]?.defaultValue))
44 + return { ...allConfigs, [id]: _.isEmpty(newConfig) ? undefined : newConfig }
45 + })
46 }
47
48 export function getPluginInfo(id: string) {