fix(messaging): only allow editing for draft messages

This commit is contained in:
Steven Nguyen
2024-02-26 11:42:48 -08:00
parent 88f661149b
commit aade0a8a23
5 changed files with 73 additions and 44 deletions
@@ -6,7 +6,7 @@
import { Button, Form, FormList, InputText, InputTextarea } from '$lib/elements/forms';
import { addNotification } from '$lib/stores/notifications';
import { sdk } from '$lib/stores/sdk';
import type { Models } from '@appwrite.io/console';
import { MessageStatus, type Models } from '@appwrite.io/console';
import { onMount } from 'svelte';
export let message: Models.Message & { data: Record<string, string> };
@@ -49,14 +49,22 @@
</script>
<Form onSubmit={update}>
<CardGrid>
<CardGrid hideFooter={message.status != MessageStatus.Draft}>
<div class="grid-1-2-col-1 u-flex u-cross-center u-gap-16">
<Heading tag="h6" size="7">Message</Heading>
</div>
<svelte:fragment slot="aside">
<FormList>
<InputText id="subject" label="Subject" bind:value={subject}></InputText>
<InputTextarea id="message" label="Message" bind:value={content}></InputTextarea>
<InputText
id="subject"
label="Subject"
disabled={message.status != MessageStatus.Draft}
bind:value={subject}></InputText>
<InputTextarea
id="message"
label="Message"
disabled={message.status != MessageStatus.Draft}
bind:value={content}></InputTextarea>
</FormList>
</svelte:fragment>
<svelte:fragment slot="actions">
@@ -1,7 +1,7 @@
<script lang="ts">
import { CardGrid, Heading } from '$lib/components';
import { Button, Form, FormList, InputText, InputTextarea } from '$lib/elements/forms';
import type { Models } from '@appwrite.io/console';
import { MessageStatus, type Models } from '@appwrite.io/console';
import PushPhone from '../pushPhone.svelte';
import { onMount } from 'svelte';
import { sdk } from '$lib/stores/sdk';
@@ -50,7 +50,7 @@
</script>
<Form onSubmit={update}>
<CardGrid>
<CardGrid hideFooter={message.status != MessageStatus.Draft}>
<div class="grid-1-2-col-1 u-flex-vertical u-cross-start u-gap-16">
<Heading tag="h6" size="7">Message</Heading>
<div class="u-flex u-margin-block-start-24 u-width-full-line">
@@ -59,8 +59,16 @@
</div>
<svelte:fragment slot="aside">
<FormList>
<InputText id="title" label="Title" bind:value={title}></InputText>
<InputTextarea id="message" label="Message" bind:value={body}></InputTextarea>
<InputText
id="title"
label="Title"
disabled={message.status != MessageStatus.Draft}
bind:value={title}></InputText>
<InputTextarea
id="message"
label="Message"
disabled={message.status != MessageStatus.Draft}
bind:value={body}></InputTextarea>
<div class="u-flex u-main-end"></div>
</FormList>
</svelte:fragment>
@@ -1,7 +1,7 @@
<script lang="ts">
import { CardGrid, Heading } from '$lib/components';
import { Button, Form, FormList, InputTextarea } from '$lib/elements/forms';
import type { Models } from '@appwrite.io/console';
import { MessageStatus, type Models } from '@appwrite.io/console';
import SMSPhone from '../smsPhone.svelte';
import { onMount } from 'svelte';
import { sdk } from '$lib/stores/sdk';
@@ -47,14 +47,18 @@
</script>
<Form onSubmit={update}>
<CardGrid>
<CardGrid hideFooter={message.status != MessageStatus.Draft}>
<div class="grid-1-2-col-1 u-flex-vertical u-cross-start u-gap-16">
<Heading tag="h6" size="7">Message</Heading>
<SMSPhone {content} />
</div>
<svelte:fragment slot="aside">
<FormList>
<InputTextarea id="message" label="Message" bind:value={content}></InputTextarea>
<InputTextarea
id="message"
label="Message"
disabled={message.status != MessageStatus.Draft}
bind:value={content}></InputTextarea>
</FormList>
</svelte:fragment>
<svelte:fragment slot="actions">
@@ -97,7 +97,7 @@
</script>
<Form onSubmit={update}>
<CardGrid>
<CardGrid hideFooter={message.status != MessageStatus.Draft}>
<Heading tag="h6" size="7" id="variables">Targets</Heading>
<svelte:fragment slot="aside">
{@const sum = targetIds.length}
@@ -106,15 +106,17 @@
<div>
<span class="eyebrow-heading-3">Target</span>
</div>
<Button
text
noMargin
on:click={() => {
showTargets = true;
}}>
<span class="icon-plus" aria-hidden="true" />
<span class="text">Add</span>
</Button>
{#if message.status == MessageStatus.Draft}
<Button
text
noMargin
on:click={() => {
showTargets = true;
}}>
<span class="icon-plus" aria-hidden="true" />
<span class="text">Add</span>
</Button>
{/if}
</div>
<div class="u-flex u-flex-vertical u-gap-24">
<Table noMargin noStyles>
@@ -141,17 +143,19 @@
</div>
</TableCell>
<TableCell title="Remove">
<div class="u-flex u-main-end">
<button
class="button is-text is-only-icon"
style="--p-button-size: 1.25rem"
type="button"
aria-label="delete"
<div
class="u-flex u-main-end"
style="--p-button-size: 1.25rem">
<Button
text
class="is-only-icon"
ariaLabel="delete"
disabled={message.status != MessageStatus.Draft}
on:click={() => removeTarget(target.$id)}>
<span
class="icon-x u-font-size-20"
aria-hidden="true" />
</button>
</Button>
</div>
</TableCell>
</TableRow>
@@ -83,7 +83,7 @@
</script>
<Form onSubmit={update}>
<CardGrid>
<CardGrid hideFooter={message.status != MessageStatus.Draft}>
<Heading tag="h6" size="7" id="variables">Topics</Heading>
<svelte:fragment slot="aside">
{@const sum = topicIds.length}
@@ -92,15 +92,17 @@
<div>
<span class="eyebrow-heading-3">Topic</span>
</div>
<Button
text
noMargin
on:click={() => {
showTopics = true;
}}>
<span class="icon-plus" aria-hidden="true" />
<span class="text">Add</span>
</Button>
{#if message.status == MessageStatus.Draft}
<Button
text
noMargin
on:click={() => {
showTopics = true;
}}>
<span class="icon-plus" aria-hidden="true" />
<span class="text">Add</span>
</Button>
{/if}
</div>
<div class="u-flex u-flex-vertical u-gap-24">
<Table noMargin noStyles>
@@ -125,16 +127,19 @@
</div>
</TableCell>
<TableCell title="Remove" width={40}>
<div class="u-flex u-main-end">
<button
class="button is-text is-only-icon"
type="button"
aria-label="delete"
<div
class="u-flex u-main-end"
style="--p-button-size: 1.25rem">
<Button
text
class="is-only-icon"
ariaLabel="delete"
disabled={message.status != MessageStatus.Draft}
on:click={() => removeTopic(topic.$id)}>
<span
class="icon-x u-font-size-20"
aria-hidden="true" />
</button>
</Button>
</div>
</TableCell>
</TableRow>