mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-09-03 12:43:48 +00:00
Handle empty url and oauth_host on login page (#5434)
This commit is contained in:
parent
af5ae4fef0
commit
dfeb277753
1 changed files with 24 additions and 18 deletions
|
@ -23,7 +23,7 @@
|
||||||
<h1 class="text-wp-text-100 text-xl">{{ $t('login_to_woodpecker_with') }}</h1>
|
<h1 class="text-wp-text-100 text-xl">{{ $t('login_to_woodpecker_with') }}</h1>
|
||||||
<div class="flex flex-col gap-2">
|
<div class="flex flex-col gap-2">
|
||||||
<Button
|
<Button
|
||||||
v-for="forge in forges"
|
v-for="forge in forgesWithNameAndFavicon"
|
||||||
:key="forge.id"
|
:key="forge.id"
|
||||||
:start-icon="forge.type === 'addon' ? 'repo' : forge.type"
|
:start-icon="forge.type === 'addon' ? 'repo' : forge.type"
|
||||||
class="whitespace-normal!"
|
class="whitespace-normal!"
|
||||||
|
@ -31,15 +31,15 @@
|
||||||
>
|
>
|
||||||
<div class="mr-2 w-4">
|
<div class="mr-2 w-4">
|
||||||
<img
|
<img
|
||||||
v-if="!failedForgeFavicons.has(forge.id)"
|
v-if="forge.favicon && !failedForgeFavicons.has(forge.id)"
|
||||||
:src="getFaviconUrl(forge)"
|
:src="forge.favicon"
|
||||||
:alt="$t('login_to_woodpecker_with', { forge: getHostFromUrl(forge) })"
|
:alt="$t('login_to_woodpecker_with', { forge: forge.name })"
|
||||||
@error="() => failedForgeFavicons.add(forge.id)"
|
@error="() => failedForgeFavicons.add(forge.id)"
|
||||||
/>
|
/>
|
||||||
<Icon v-else :name="forge.type === 'addon' ? 'repo' : forge.type" />
|
<Icon v-else :name="forge.type === 'addon' ? 'repo' : forge.type" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{ getHostFromUrl(forge) }}
|
{{ forge.name }}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -103,18 +103,24 @@ onMounted(async () => {
|
||||||
|
|
||||||
useWPTitle(computed(() => [i18n.t('login')]));
|
useWPTitle(computed(() => [i18n.t('login')]));
|
||||||
|
|
||||||
function getHostFromUrl(forge: Forge) {
|
const failedForgeFavicons = ref(new Set<number>()); // Track which favicons failed to load
|
||||||
if (!forge.url && !forge.oauth_host) {
|
|
||||||
return forge.type.charAt(0).toUpperCase() + forge.type.slice(1);
|
const forgesWithNameAndFavicon = computed(() =>
|
||||||
|
forges.value.map((forge) => {
|
||||||
|
let name = forge.type.charAt(0).toUpperCase() + forge.type.slice(1);
|
||||||
|
let favicon: null | string = null;
|
||||||
|
|
||||||
|
if (forge.url || forge.oauth_host) {
|
||||||
|
const url = new URL(forge.oauth_host || forge.url);
|
||||||
|
name = url.hostname;
|
||||||
|
favicon = `${url.origin}/favicon.ico`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const url = new URL(forge.oauth_host ?? forge.url);
|
return {
|
||||||
return url.hostname;
|
...forge,
|
||||||
}
|
name,
|
||||||
|
favicon,
|
||||||
const failedForgeFavicons = ref(new Set<number>()); // Track which favicons failed to load
|
};
|
||||||
function getFaviconUrl(forge: Forge) {
|
}),
|
||||||
const url = new URL(forge.oauth_host ?? forge.url);
|
);
|
||||||
return `${url.origin}/favicon.ico`;
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Reference in a new issue