Catalogger.NET/Catalogger.Frontend/src/routes/dash/[guildId]/+layout.svelte

91 lines
2.4 KiB
Svelte
Raw Normal View History

<script lang="ts">
import { Button, Nav, NavItem, NavLink } from "@sveltestrap/sveltestrap";
import type { LayoutData } from "./$types";
import { page } from "$app/stores";
import apiFetch, { type ApiError, type GuildConfig } from "$lib/api";
import { addToast } from "$lib/toast";
export let data: LayoutData;
// This only saves log channels. All other pages are lists and are saved immediately upon adding/removing an entry.
const save = async () => {
try {
const resp = await apiFetch<GuildConfig>(
"PATCH",
`/api/guilds/${data.guild.id}`,
data.guild.config,
);
data.guild.config = resp;
2024-10-19 23:27:57 +02:00
addToast({
header: "Saved log channels.",
body: "Successfully edited log channels and ignored channels.",
});
} catch (e) {
addToast({
header: "Error saving changes to log channels",
body:
(e as ApiError).message || "Unknown error. Please try again later.",
});
}
};
</script>
<svelte:head>
<title>Catalogger - Managing {data.guild.name}</title>
</svelte:head>
<div class="d-flex flex-column flex-lg-row justify-content-lg-between">
2024-10-19 23:27:57 +02:00
<Nav pills={true} class="flex-column flex-lg-row mb-2">
<NavLink href="#" disabled>Managing {data.guild.name}</NavLink>
<NavLink
href="/dash/{data.guild.id}"
active={$page.url.pathname === `/dash/${data.guild.id}`}
>
2024-10-19 23:27:57 +02:00
Log channels
</NavLink>
<NavLink
href="/dash/{data.guild.id}/redirects"
active={$page.url.pathname === `/dash/${data.guild.id}/redirects`}
>
2024-10-19 23:27:57 +02:00
Redirects
</NavLink>
<NavLink
href="/dash/{data.guild.id}/ignored-channels"
active={$page.url.pathname === `/dash/${data.guild.id}/ignored-channels`}
>
2024-10-19 23:27:57 +02:00
Ignored channels
</NavLink>
2024-10-31 01:17:44 +01:00
<NavLink
href="/dash/{data.guild.id}/ignored-users"
active={$page.url.pathname === `/dash/${data.guild.id}/ignored-users`}
>
Ignored users
</NavLink>
2024-10-19 23:27:57 +02:00
<NavLink
href="/dash/{data.guild.id}/key-roles"
active={$page.url.pathname === `/dash/${data.guild.id}/key-roles`}
>
2024-10-19 23:27:57 +02:00
Key roles
</NavLink>
<NavLink
href="/dash/{data.guild.id}/import"
active={$page.url.pathname === `/dash/${data.guild.id}/import`}
>
Import/export settings
</NavLink>
<NavLink
href="/dash/{data.guild.id}/delete"
active={$page.url.pathname === `/dash/${data.guild.id}/delete`}
>
Delete all data
</NavLink>
</Nav>
2024-10-31 01:17:44 +01:00
{#if $page.url.pathname === `/dash/${data.guild.id}`}
2024-10-19 23:27:57 +02:00
<Button on:click={save} class="mb-2">Save changes</Button>
{/if}
</div>
<slot />