refactor: rename externalUrls to externalLinks

This commit is contained in:
Massedil
2025-09-03 21:45:41 +02:00
parent 48ae930b64
commit 66f3956d14
11 changed files with 37 additions and 37 deletions

View File

@@ -88,7 +88,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Config do
get_in(Application.get_env(:web_push_encryption, :vapid_details), [:public_key]) get_in(Application.get_env(:web_push_encryption, :vapid_details), [:public_key])
%{ %{
external_urls: Config.external_urls(), external_links: Config.external_links(),
name: Config.instance_name(), name: Config.instance_name(),
registrations_open: Config.instance_registrations_open?(), registrations_open: Config.instance_registrations_open?(),
registrations_moderation: Config.instance_registrations_moderation?(), registrations_moderation: Config.instance_registrations_moderation?(),

View File

@@ -160,19 +160,19 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do
field(:instance_languages, list_of(:string), description: "The instance's languages") field(:instance_languages, list_of(:string), description: "The instance's languages")
field(:external_urls, list_of(:external_url), field(:external_links, list_of(:external_link),
description: "List of URL that will be shown to users" description: "List of URL that will be shown to users"
) )
end end
object :external_url do object :external_link do
meta(:authorize, :all) meta(:authorize, :all)
field(:label, non_null(:string), description: "A human-readable label for the external URL") field(:label, non_null(:string), description: "A human-readable label for the external link")
field(:url, non_null(:string), description: "The actual external URL") field(:url, non_null(:string), description: "The external link URL")
field(:enabled, non_null(:boolean), description: "Whether the external URL is enabled") field(:enabled, non_null(:boolean), description: "Whether the link URL is enabled")
end end
input_object :external_url_input do input_object :external_link_input do
meta(:authorize, :administrator) meta(:authorize, :administrator)
field(:label, non_null(:string)) field(:label, non_null(:string))
field(:url, non_null(:string)) field(:url, non_null(:string))
@@ -494,8 +494,8 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do
arg(:instance_languages, list_of(:string), description: "The instance's languages") arg(:instance_languages, list_of(:string), description: "The instance's languages")
arg(:external_urls, list_of(:external_url_input), arg(:external_links, list_of(:external_link_input),
description: "Array of external URLs with label, status, and id" description: "Array of external links with label, status, and id"
) )
middleware(Rajska.QueryAuthorization, permit: :administrator) middleware(Rajska.QueryAuthorization, permit: :administrator)

View File

@@ -104,7 +104,7 @@ defmodule Mobilizon.GraphQL.Schema.ConfigType do
field(:search, :search_settings, description: "The instance's search settings") field(:search, :search_settings, description: "The instance's search settings")
field(:external_urls, list_of(:external_url), field(:external_links, list_of(:external_link),
description: "List of URL that will be shown to users" description: "List of URL that will be shown to users"
) )
end end

View File

@@ -59,13 +59,13 @@ defmodule Mobilizon.Config do
instance_config()[:name] instance_config()[:name]
) )
@spec external_urls :: String.t() @spec external_links :: String.t()
def external_urls do def external_links do
config_cached_value("instance", "external_urls", []) config_cached_value("instance", "external_links", [])
|> Enum.map(&transform_external_url/1) |> Enum.map(&transform_external_link/1)
end end
def transform_external_url(map) do def transform_external_link(map) do
%{ %{
enabled: Map.fetch!(map, "enabled"), enabled: Map.fetch!(map, "enabled"),
label: Map.fetch!(map, "label"), label: Map.fetch!(map, "label"),
@@ -490,7 +490,7 @@ defmodule Mobilizon.Config do
instance_privacy_policy_url: instance_privacy_url(), instance_privacy_policy_url: instance_privacy_url(),
instance_rules: instance_rules(), instance_rules: instance_rules(),
instance_languages: instance_languages(), instance_languages: instance_languages(),
external_urls: external_urls() external_links: external_links()
} }
end end

View File

@@ -68,7 +68,7 @@
>{{ t("Register") }}</router-link >{{ t("Register") }}</router-link
> >
</li> </li>
<li v-for="(link, index) in externalURLSConfig" :key="index"> <li v-for="(link, index) in externalLinksConfig" :key="index">
<a <a
:href="link.url" :href="link.url"
v-if="link.enabled" v-if="link.enabled"
@@ -279,7 +279,7 @@ import { useLazyQuery, useMutation } from "@vue/apollo-composable";
import { UPDATE_DEFAULT_ACTOR } from "@/graphql/actor"; import { UPDATE_DEFAULT_ACTOR } from "@/graphql/actor";
import { changeIdentity } from "@/utils/identity"; import { changeIdentity } from "@/utils/identity";
import { import {
useExternalURLSConfig, useExternalLinksConfig,
useRegistrationConfig, useRegistrationConfig,
} from "@/composition/apollo/config"; } from "@/composition/apollo/config";
import { useOruga } from "@oruga-ui/oruga-next"; import { useOruga } from "@oruga-ui/oruga-next";
@@ -296,7 +296,7 @@ const { identities } = useCurrentUserIdentities();
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const { externalURLSConfig } = useExternalURLSConfig(); const { externalLinksConfig } = useExternalLinksConfig();
const { registrationsOpen, registrationsAllowlist, databaseLogin } = const { registrationsOpen, registrationsAllowlist, databaseLogin } =
useRegistrationConfig(); useRegistrationConfig();

View File

@@ -32,20 +32,20 @@ export function useAnonymousParticipationConfig() {
return { anonymousParticipationConfig, error, loading }; return { anonymousParticipationConfig, error, loading };
} }
export function useExternalURLSConfig() { export function useExternalLinksConfig() {
const { const {
result: configResult, result: configResult,
error, error,
loading, loading,
} = useQuery<{ } = useQuery<{
config: Pick<IConfig, "externalUrls">; config: Pick<IConfig, "externalLinks">;
}>(CONFIG); }>(CONFIG);
const externalURLSConfig = computed( const externalLinksConfig = computed(
() => configResult.value?.config?.externalUrls () => configResult.value?.config?.externalLinks
); );
return { externalURLSConfig, error, loading }; return { externalLinksConfig, error, loading };
} }
export function useAnonymousReportsConfig() { export function useAnonymousReportsConfig() {

View File

@@ -200,7 +200,7 @@ export const ADMIN_SETTINGS_FRAGMENT = gql`
instanceLongDescription instanceLongDescription
instanceSlogan instanceSlogan
contact contact
externalUrls { externalLinks {
label label
url url
enabled enabled
@@ -251,7 +251,7 @@ export const SAVE_ADMIN_SETTINGS = gql`
$instanceLongDescription: String $instanceLongDescription: String
$instanceSlogan: String $instanceSlogan: String
$contact: String $contact: String
$externalUrls: [ExternalUrlInput] $externalLinks: [ExternalLinkInput]
$instanceLogo: MediaInput $instanceLogo: MediaInput
$instanceFavicon: MediaInput $instanceFavicon: MediaInput
$defaultPicture: MediaInput $defaultPicture: MediaInput
@@ -274,7 +274,7 @@ export const SAVE_ADMIN_SETTINGS = gql`
instanceLongDescription: $instanceLongDescription instanceLongDescription: $instanceLongDescription
instanceSlogan: $instanceSlogan instanceSlogan: $instanceSlogan
contact: $contact contact: $contact
externalUrls: $externalUrls externalLinks: $externalLinks
instanceLogo: $instanceLogo instanceLogo: $instanceLogo
instanceFavicon: $instanceFavicon instanceFavicon: $instanceFavicon
defaultPicture: $defaultPicture defaultPicture: $defaultPicture

View File

@@ -20,7 +20,7 @@ export const CONFIG = gql`
languages languages
primaryColor primaryColor
secondaryColor secondaryColor
externalUrls { externalLinks {
label label
url url
enabled enabled

View File

@@ -28,7 +28,7 @@ export interface IAdminSettings {
contact: string; contact: string;
instanceLogo: IMedia | null; instanceLogo: IMedia | null;
instanceFavicon: IMedia | null; instanceFavicon: IMedia | null;
externalUrls: { url: string; label: string; enabled: boolean }[]; externalLinks: { url: string; label: string; enabled: boolean }[];
defaultPicture: IMedia | null; defaultPicture: IMedia | null;
primaryColor: string; primaryColor: string;
secondaryColor: string; secondaryColor: string;

View File

@@ -37,7 +37,7 @@ export interface IConfig {
longDescription: string; longDescription: string;
contact: string; contact: string;
slogan: string; slogan: string;
externalUrls: { url: string; label: string; enabled: boolean }[]; externalLinks: { url: string; label: string; enabled: boolean }[];
instanceLogo: { url: string }; instanceLogo: { url: string };
defaultPicture: { url: string }; defaultPicture: { url: string };
primaryColor: string; primaryColor: string;

View File

@@ -472,11 +472,11 @@
</o-field> </o-field>
<div <div
class="mt-5 grid lg:grid-cols-[repeat(auto-fit,minmax(250px,0.5fr))] grid-cols-[repeat(auto-fit,minmax(250px,1fr))] gap-2" class="mt-5 grid lg:grid-cols-[repeat(auto-fit,minmax(250px,0.5fr))] grid-cols-[repeat(auto-fit,minmax(250px,1fr))] gap-2"
v-if="settingsToWrite.externalUrls.length > 0" v-if="settingsToWrite.externalLinks.length > 0"
> >
<div <div
class="bg-mbz-yellow-alt-100 p-5" class="bg-mbz-yellow-alt-100 p-5"
v-for="(link, index) in settingsToWrite.externalUrls" v-for="(link, index) in settingsToWrite.externalLinks"
:key="index" :key="index"
> >
<o-field :label="t('URL')" class="!mt-0" <o-field :label="t('URL')" class="!mt-0"
@@ -556,7 +556,7 @@ const defaultAdminSettings: IAdminSettings = {
registrationsOpen: false, registrationsOpen: false,
registrationsModeration: false, registrationsModeration: false,
instanceLanguages: [], instanceLanguages: [],
externalUrls: [], externalLinks: [],
}; };
const { onResult: onAdminSettingsResult } = useQuery<{ const { onResult: onAdminSettingsResult } = useQuery<{
@@ -598,15 +598,15 @@ useHead({
const settingsToWrite = ref<IAdminSettings>(defaultAdminSettings); const settingsToWrite = ref<IAdminSettings>(defaultAdminSettings);
watch(adminSettings, () => { watch(adminSettings, () => {
// We need to use structuredClone to clone deep properties of adminSettings (like externalUrls) // We need to use structuredClone to clone deep properties of adminSettings (like externalLinks)
// {... } only shadow clone, so externalUrls is not reactive doing this // {... } only shadow clone, so externalLinks is not reactive doing this
if (adminSettings.value) { if (adminSettings.value) {
settingsToWrite.value = structuredClone(toRaw(adminSettings.value)); settingsToWrite.value = structuredClone(toRaw(adminSettings.value));
} }
}); });
const addLink = () => { const addLink = () => {
settingsToWrite.value.externalUrls.push({ settingsToWrite.value.externalLinks.push({
url: "", url: "",
label: "", label: "",
enabled: false, enabled: false,
@@ -614,7 +614,7 @@ const addLink = () => {
}; };
const deleteLink = (index: number) => { const deleteLink = (index: number) => {
settingsToWrite.value.externalUrls.splice(index, 1); settingsToWrite.value.externalLinks.splice(index, 1);
}; };
const filteredLanguages = ref<string[]>([]); const filteredLanguages = ref<string[]>([]);