-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathActionsButtonModal.svelte
More file actions
82 lines (68 loc) · 2.41 KB
/
ActionsButtonModal.svelte
File metadata and controls
82 lines (68 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<script lang="ts">
import { zergo0Api } from '@/lib/api/zergo0';
import { sharedState } from '@/lib/state/state.svelte';
import { ActionType } from '@/lib/types';
import { Button } from '../button';
import Modal from '../modal/Modal.svelte';
import UpdateDot from '../updatedot/UpdateDot.svelte';
import ChangelogModal from './actions/ChangelogModal.svelte';
import ChatPollModal from './actions/ChatPollModal.svelte';
import GiveawayModal from './actions/GiveawayModal.svelte';
import UsernamePaintModal from './actions/UsernamePaintModal.svelte';
interface Props {
showModal: boolean;
}
let { showModal = $bindable() }: Props = $props();
let actionModal: any;
let action: ActionType = $state(ActionType.None);
let hasUsernamePaintPermission: boolean = $state(false);
// Check for username paint permissions when modal opens
$effect(() => {
if (showModal && sharedState.chatroomId) {
zergo0Api.getUsernamePaintSettings(sharedState.chatroomId).then((hasPermission) => {
hasUsernamePaintPermission = hasPermission;
});
}
});
function handleChangelog() {
action = ActionType.Changelog;
}
function handleStartPoll() {
action = ActionType.ChatPoll;
}
function handleStartGiveaway() {
action = ActionType.Giveaway;
}
function handleSetUsernamePaint() {
action = ActionType.UsernamePaint;
}
</script>
<Modal bind:showModal bind:this={actionModal}>
{#snippet header()}
<h2>Actions</h2>
{/snippet}
{#snippet body()}
<div class="flex flex-col space-y-2">
<Button variant="secondary" onclick={handleChangelog} class="relative">
<UpdateDot class="-right-1 -top-1" />
Changelog
</Button>
{#if hasUsernamePaintPermission}
<Button variant="secondary" onclick={handleSetUsernamePaint}>Set Username Paint</Button>
{/if}
{#if sharedState.isOwner || sharedState.isModerator}
<Button variant="secondary" onclick={handleStartPoll}>Start Poll</Button>
<Button variant="secondary" onclick={handleStartGiveaway}>Start Giveaway</Button>
{/if}
</div>
{/snippet}
</Modal>
{#if action === ActionType.Changelog}
<ChangelogModal bind:action />
{:else if action === ActionType.ChatPoll}
<ChatPollModal bind:action />
{:else if action === ActionType.Giveaway}
<GiveawayModal bind:action />
{:else if action === ActionType.UsernamePaint}
<UsernamePaintModal bind:action />
{/if}