From c3f696ea90548a3d3945c3dbbd55cd63e7cbf94e Mon Sep 17 00:00:00 2001 From: grimsi <9295182+grimsi@users.noreply.github.com> Date: Sun, 30 Mar 2025 22:44:31 +0200 Subject: [PATCH] Automatically assign priority at first plugin load --- .../plugins/management/DatabasePluginStatusProvider.kt | 10 ++++++++-- .../plugins/management/PluginManagementRepository.kt | 6 +++++- .../core/plugins/management/PluginManagementService.kt | 5 ----- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/gameyfin/src/main/kotlin/de/grimsi/gameyfin/core/plugins/management/DatabasePluginStatusProvider.kt b/gameyfin/src/main/kotlin/de/grimsi/gameyfin/core/plugins/management/DatabasePluginStatusProvider.kt index f597ef4..29cc161 100644 --- a/gameyfin/src/main/kotlin/de/grimsi/gameyfin/core/plugins/management/DatabasePluginStatusProvider.kt +++ b/gameyfin/src/main/kotlin/de/grimsi/gameyfin/core/plugins/management/DatabasePluginStatusProvider.kt @@ -13,8 +13,14 @@ class DatabasePluginStatusProvider( var pluginManagement = pluginManagementRepository.findByIdOrNull(pluginId) // If the plugin is unknown, persist it as enabled - if(pluginManagement == null) { - pluginManagement = pluginManagementRepository.save(PluginManagementEntry(pluginId = pluginId, enabled = true)) + if (pluginManagement == null) { + + // Set priority to the max value of the current plugins + 1 (which is the lowest priority) or 1 if there are no entries + val currentMaxPriority = pluginManagementRepository.findMaxPriority() ?: 0 + + pluginManagement = pluginManagementRepository.save( + PluginManagementEntry(pluginId = pluginId, enabled = true, priority = currentMaxPriority + 1) + ) } return pluginManagement.enabled != true diff --git a/gameyfin/src/main/kotlin/de/grimsi/gameyfin/core/plugins/management/PluginManagementRepository.kt b/gameyfin/src/main/kotlin/de/grimsi/gameyfin/core/plugins/management/PluginManagementRepository.kt index 12ab46c..cfc9ab1 100644 --- a/gameyfin/src/main/kotlin/de/grimsi/gameyfin/core/plugins/management/PluginManagementRepository.kt +++ b/gameyfin/src/main/kotlin/de/grimsi/gameyfin/core/plugins/management/PluginManagementRepository.kt @@ -1,5 +1,9 @@ package de.grimsi.gameyfin.core.plugins.management import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.data.jpa.repository.Query -interface PluginManagementRepository : JpaRepository \ No newline at end of file +interface PluginManagementRepository : JpaRepository { + @Query("SELECT MAX(p.priority) FROM PluginManagementEntry p") + fun findMaxPriority(): Int? +} \ No newline at end of file diff --git a/gameyfin/src/main/kotlin/de/grimsi/gameyfin/core/plugins/management/PluginManagementService.kt b/gameyfin/src/main/kotlin/de/grimsi/gameyfin/core/plugins/management/PluginManagementService.kt index 26598be..2878109 100644 --- a/gameyfin/src/main/kotlin/de/grimsi/gameyfin/core/plugins/management/PluginManagementService.kt +++ b/gameyfin/src/main/kotlin/de/grimsi/gameyfin/core/plugins/management/PluginManagementService.kt @@ -87,11 +87,6 @@ class PluginManagementService( } } - fun hasLogo(pluginId: String): Boolean { - val plugin = pluginManager.getPlugin(pluginId).plugin as GameyfinPlugin - return plugin.hasLogo() - } - fun getLogo(pluginId: String): InputStream? { val plugin = pluginManager.getPlugin(pluginId).plugin as GameyfinPlugin return plugin.getLogo()