2024-10-19 16:52:27 +02:00
|
|
|
<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.",
|
|
|
|
|
});
|
2024-10-19 16:52:27 +02:00
|
|
|
} 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 16:52:27 +02:00
|
|
|
>
|
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 16:52:27 +02:00
|
|
|
>
|
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 16:52:27 +02:00
|
|
|
>
|
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 16:52:27 +02:00
|
|
|
>
|
2024-10-19 23:27:57 +02:00
|
|
|
Key roles
|
|
|
|
|
</NavLink>
|
2024-11-08 17:12:00 +01:00
|
|
|
<NavLink
|
|
|
|
|
href="/dash/{data.guild.id}/import"
|
|
|
|
|
active={$page.url.pathname === `/dash/${data.guild.id}/import`}
|
|
|
|
|
>
|
|
|
|
|
Import/export settings
|
|
|
|
|
</NavLink>
|
2024-10-24 15:53:27 +02:00
|
|
|
<NavLink
|
|
|
|
|
href="/dash/{data.guild.id}/delete"
|
|
|
|
|
active={$page.url.pathname === `/dash/${data.guild.id}/delete`}
|
|
|
|
|
>
|
|
|
|
|
Delete all data
|
|
|
|
|
</NavLink>
|
2024-10-19 16:52:27 +02:00
|
|
|
</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>
|
2024-10-19 16:52:27 +02:00
|
|
|
{/if}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<slot />
|