feat: support direct links to guild views

This commit is contained in:
mmacierzanka committed 2026-08-21 16:27:45 +02:00
1 parent 8b340c61f0
commit 36621ce261
2 files changed
+35 -3

No files matched your search

+28 -3
View File
@@ -17,13 +17,37 @@ const { refresh } = useUploads()
const libraryOpen = ref(false)
const selectedGuildId = ref<string | null>(null)
const routeToken = decodeURIComponent(window.location.pathname.split('/')[1] ?? '')
function guildSlug(name: string) {
return name
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.toLowerCase()
.replace(/[^a-z0-9]+/g, '-')
.replace(/^-|-$/g, '')
}
function updateGuildUrl(guildId: string) {
window.history.replaceState(null, '', `/${encodeURIComponent(guildId)}`)
}
watch(
() => status.value?.guilds,
(guilds) => {
if (guilds?.length && !selectedGuildId.value) {
selectedGuildId.value = guilds[0].guild_id
selectGuild(guilds[0].guild_id)
if (!guilds?.length || selectedGuildId.value) return
const routeGuild = guilds.find(
(guild) =>
guild.guild_id === routeToken ||
guild.guild_name.toLowerCase() === routeToken.toLowerCase() ||
guildSlug(guild.guild_name) === routeToken.toLowerCase(),
)
const guildId = routeGuild?.guild_id ?? guilds[0].guild_id
if (guildId) {
selectedGuildId.value = guildId
updateGuildUrl(guildId)
selectGuild(guildId)
void refresh()
}
},
@@ -31,6 +55,7 @@ watch(
async function changeGuild(guildId: string) {
selectedGuildId.value = guildId
updateGuildUrl(guildId)
selectGuild(guildId)
await refresh()
}