# frozen_string_literal: true class AdminPluginSerializer < ApplicationSerializer attributes :id, :name, :about, :version, :url, :admin_route, :enabled, :enabled_setting, :has_settings, :has_only_enabled_setting, :is_official, :is_discourse_owned, :label, :commit_hash, :commit_url, :meta_url, :authors def id object.directory_name end def name object.metadata.name end def about object.metadata.about end def version object.metadata.version end def url object.metadata.url end def authors object.metadata.authors end def enabled object.enabled? end def include_enabled_setting? enabled_setting.present? end def enabled_setting object.enabled_site_setting end def plugin_settings @plugin_settings ||= SiteSetting.plugins.select { |_, v| v == id } end def has_settings plugin_settings.values.any? end def has_only_enabled_setting plugin_settings.keys.length == 1 && plugin_settings.keys.first == enabled_setting end def include_url? url.present? end def admin_route route = object.admin_route return unless route ret = route.slice(:location, :label) if route[:use_new_show_route] ret[:full_location] = "adminPlugins.show" ret[:use_new_show_route] = true else ret[:full_location] = "adminPlugins.#{ret[:location]}" end ret end def include_admin_route? admin_route.present? end def is_official Plugin::Metadata::OFFICIAL_PLUGINS.include?(object.name) end def include_label? is_discourse_owned end def label return if !is_discourse_owned object.metadata.label end def is_discourse_owned object.discourse_owned? end def commit_hash object.commit_hash end def commit_url object.commit_url end def meta_url return if object.metadata.meta_topic_id.blank? "https://meta.discourse.org/t/#{object.metadata.meta_topic_id}" end end