Extend plugin config validation

Cache validation results
Show field-level errors in UI
Enable manual revalidation
Move PluginConfigService and PluginManagementService into PluginService
This commit is contained in:
grimsi
2025-05-19 12:21:42 +02:00
parent 08c41265c8
commit d9fef0f30c
23 changed files with 240 additions and 130 deletions
@@ -4,6 +4,6 @@ interface Configurable {
val configMetadata: List<PluginConfigElement>
var config: Map<String, String?>
fun validateConfig(): Boolean = validateConfig(config)
fun validateConfig(config: Map<String, String?>): Boolean
fun validateConfig(): PluginConfigValidationResult = validateConfig(config)
fun validateConfig(config: Map<String, String?>): PluginConfigValidationResult
}
@@ -0,0 +1,20 @@
package de.grimsi.gameyfin.pluginapi.core
data class PluginConfigValidationResult(
val result: PluginConfigValidationResultType,
val errors: Map<String, String>? = null
) {
companion object {
val VALID = PluginConfigValidationResult(PluginConfigValidationResultType.VALID)
val UNKNOWN = PluginConfigValidationResult(PluginConfigValidationResultType.UNKNWOWN)
fun INVALID(errors: Map<String, String>): PluginConfigValidationResult {
return PluginConfigValidationResult(PluginConfigValidationResultType.INVALID, errors)
}
}
}
enum class PluginConfigValidationResultType {
VALID,
INVALID,
UNKNWOWN,
}