Add logo support to plugins and UI

This commit is contained in:
grimsi
2025-03-30 12:11:58 +02:00
parent 55818d4f37
commit 17d3211d22
16 changed files with 172 additions and 23 deletions
@@ -2,9 +2,15 @@ package de.grimsi.gameyfin.pluginapi.core
import org.pf4j.Plugin
import org.pf4j.PluginWrapper
import java.io.InputStream
abstract class GameyfinPlugin(wrapper: PluginWrapper) : Plugin(wrapper) {
companion object {
const val LOGO_FILE_NAME: String = "logo"
val SUPPORTED_LOGO_FORMATS: List<String> = listOf("png", "jpg", "jpeg", "gif", "svg", "webp")
}
abstract val configMetadata: List<PluginConfigElement>
protected open var config: Map<String, String?> = emptyMap()
@@ -21,4 +27,28 @@ abstract class GameyfinPlugin(wrapper: PluginWrapper) : Plugin(wrapper) {
}
abstract fun validateConfig(config: Map<String, String?>): Boolean
fun hasLogo(): Boolean {
for (format in SUPPORTED_LOGO_FORMATS) {
val resourcePath = "$LOGO_FILE_NAME.$format"
val inputStream = wrapper.pluginClassLoader.getResourceAsStream(resourcePath)
if (inputStream != null) {
return true
}
}
return false
}
fun getLogo(): InputStream? {
for (format in SUPPORTED_LOGO_FORMATS) {
val resourcePath = "$LOGO_FILE_NAME.$format"
val inputStream = wrapper.pluginClassLoader.getResourceAsStream(resourcePath)
if (inputStream != null) {
return inputStream
}
}
return null
}
}