# frozen_string_literal: true class AdminPluginSerializer < ApplicationSerializer attributes :id, :name, :about, :version, :url, :admin_route, :enabled, :enabled_setting, :has_settings, :is_official, :is_discourse_owned, :label, :commit_hash, :commit_url, :meta_url, :authors, :admin_config_nav_routes def admin_config_nav_routes object.admin_config_nav_routes end 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 has_settings SiteSetting.plugins.values.include?(id) 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[:location]}" 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