add moderator list, create guild link
This commit is contained in:
parent
50c0c7d865
commit
047fc545ae
6 changed files with 57 additions and 7 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@yusurko/vigil",
|
"name": "@yusurko/vigil",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.1.0-dev62",
|
"version": "0.1.0-dev74",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite dev",
|
"dev": "vite dev",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { RiCompassLine, RiHome2Line, RiSettings2Line, RiShieldStarLine, RiUserLine } from 'svelte-remixicon';
|
import { RiCompassLine, RiHome2Line, RiSettings2Line, RiShieldStarLine, RiAddBoxLine, RiUserLine } from 'svelte-remixicon';
|
||||||
import MenuLink from './MenuLink.svelte';
|
import MenuLink from './MenuLink.svelte';
|
||||||
|
|
||||||
let { user = null } = $props();
|
let { user = null } = $props();
|
||||||
|
|
@ -11,6 +11,9 @@
|
||||||
<MenuLink href="/settings" icon={RiSettings2Line} label="Settings" />
|
<MenuLink href="/settings" icon={RiSettings2Line} label="Settings" />
|
||||||
{#if user}
|
{#if user}
|
||||||
<MenuLink href="/@{user.username}" icon={RiUserLine} label="My profile" />
|
<MenuLink href="/@{user.username}" icon={RiUserLine} label="My profile" />
|
||||||
|
{#if true}
|
||||||
|
<MenuLink href="/createguild" icon={RiAddBoxLine} label="Create guild" />
|
||||||
|
{/if}
|
||||||
{#if user.badges && user.badges.indexOf('administrator') >= 0}
|
{#if user.badges && user.badges.indexOf('administrator') >= 0}
|
||||||
<MenuLink href="/admin/" icon={RiShieldStarLine} label="Administration" />
|
<MenuLink href="/admin/" icon={RiShieldStarLine} label="Administration" />
|
||||||
{/if}
|
{/if}
|
||||||
|
|
|
||||||
33
src/lib/ModeratorList.svelte
Normal file
33
src/lib/ModeratorList.svelte
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
<script lang="ts">
|
||||||
|
import { RiShieldStarLine } from "svelte-remixicon";
|
||||||
|
import AsideCard from "./AsideCard.svelte";
|
||||||
|
import Centered from "./Centered.svelte";
|
||||||
|
import { getMe } from "./globals.svelte";
|
||||||
|
import Wip from "./Wip.svelte";
|
||||||
|
|
||||||
|
let { guildName, mods } = $props();
|
||||||
|
let me = getMe();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#if me && mods}
|
||||||
|
|
||||||
|
{#if mods.banned}
|
||||||
|
<Centered>Moderator list is hidden because you are banned.</Centered>
|
||||||
|
{:else if mods.unmoderated}
|
||||||
|
<Centered>+{guildName} is currently unmoderated</Centered>
|
||||||
|
{:else}
|
||||||
|
<AsideCard title={`Moderators of +${guildName}`}>
|
||||||
|
<ul>
|
||||||
|
{#each mods.has as mod}
|
||||||
|
<li>
|
||||||
|
@{mod.username}
|
||||||
|
{#if mod.is_owner}
|
||||||
|
<span><RiShieldStarLine/> <small>Owner</small></span>
|
||||||
|
{/if}
|
||||||
|
</li>
|
||||||
|
{/each}
|
||||||
|
</ul>
|
||||||
|
</AsideCard>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
{/if}
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { GuildEntry, PostEntry } from "$lib/backend";
|
import type { GuildEntry, PostEntry } from "$lib/backend";
|
||||||
import Feed from "$lib/Feed.svelte";
|
import Feed from "$lib/Feed.svelte";
|
||||||
|
import { getMe } from "$lib/globals.svelte";
|
||||||
import GuildAbout from "$lib/GuildAbout.svelte";
|
import GuildAbout from "$lib/GuildAbout.svelte";
|
||||||
import GuildMenu from "$lib/GuildMenu.svelte";
|
import GuildMenu from "$lib/GuildMenu.svelte";
|
||||||
|
import ModeratorList from "$lib/ModeratorList.svelte";
|
||||||
import SLayout from "$lib/SLayout.svelte";
|
import SLayout from "$lib/SLayout.svelte";
|
||||||
|
|
||||||
let { data } : { data: { guild: GuildEntry , feed: PostEntry[] } } = $props();
|
let { data } : { data: { guild: GuildEntry , feed: PostEntry[], mods: any } } = $props();
|
||||||
let { guild, feed = [] } = $derived(data);
|
let { guild, feed = [], mods = null } = $derived(data);
|
||||||
|
let me = getMe();
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
@ -19,5 +22,9 @@
|
||||||
|
|
||||||
{#snippet right()}
|
{#snippet right()}
|
||||||
<GuildAbout {guild} />
|
<GuildAbout {guild} />
|
||||||
|
|
||||||
|
{#if me}
|
||||||
|
<ModeratorList guildName={guild.name} {mods} />
|
||||||
|
{/if}
|
||||||
{/snippet}
|
{/snippet}
|
||||||
</SLayout>
|
</SLayout>
|
||||||
|
|
@ -25,7 +25,14 @@ export async function load(event) {
|
||||||
|
|
||||||
if (!guild) error(404);
|
if (!guild) error(404);
|
||||||
|
|
||||||
return { guild, feed };
|
let mods = null;
|
||||||
|
const respMods = await backend.withEvent(event).fetch('guild/@' + encodeURIComponent(name) + '/mods');
|
||||||
|
|
||||||
|
if (respMods.status === 200) {
|
||||||
|
const respModsJ = await respMods.json();
|
||||||
|
mods = respModsJ;
|
||||||
|
}
|
||||||
|
return { guild, feed, mods };
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue