mirror of
https://github.com/appwrite/console.git
synced 2026-06-06 19:27:48 +00:00
feat: after creation logic
This commit is contained in:
@@ -8,8 +8,6 @@
|
||||
import CreateMember from './_createMember.svelte';
|
||||
import Create from './_createOrganization.svelte';
|
||||
|
||||
const created = () => console.log('test');
|
||||
|
||||
onMount(handle);
|
||||
afterNavigate(handle);
|
||||
|
||||
@@ -64,5 +62,5 @@
|
||||
</Shell>
|
||||
{/if}
|
||||
|
||||
<Create bind:show={$newOrgModal} on:created={() => created()} />
|
||||
<CreateMember bind:showCreate={$newMemberModal} on:created={() => created()} />
|
||||
<Create bind:show={$newOrgModal} />
|
||||
<CreateMember bind:showCreate={$newMemberModal} />
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
import { addNotification } from '$lib/stores/notifications';
|
||||
import { sdkForConsole } from '$lib/stores/sdk';
|
||||
import { createEventDispatcher } from 'svelte';
|
||||
import { organization } from './store';
|
||||
import { organization, memberList } from './store';
|
||||
import { pageLimit } from '$lib/stores/layout';
|
||||
|
||||
export let showCreate = false;
|
||||
|
||||
@@ -29,6 +30,7 @@
|
||||
type: 'success',
|
||||
message: `Invite has been sent to ${email}`
|
||||
});
|
||||
memberList.load($organization.$id, '', $pageLimit, 0);
|
||||
dispatch('created', team);
|
||||
} catch ({ message }) {
|
||||
error = message;
|
||||
@@ -54,7 +56,6 @@
|
||||
id="name"
|
||||
label="Name (optional)"
|
||||
placeholder="Enter name"
|
||||
autofocus={true}
|
||||
bind:value={name} />
|
||||
</FormList>
|
||||
<svelte:fragment slot="footer">
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
import { addNotification } from '$lib/stores/notifications';
|
||||
import { sdkForConsole } from '$lib/stores/sdk';
|
||||
import { createEventDispatcher } from 'svelte';
|
||||
import { organization, organizationList } from './store';
|
||||
import { titleDropdown } from '$lib/stores/layout';
|
||||
|
||||
export let show = false;
|
||||
|
||||
@@ -17,13 +19,18 @@
|
||||
|
||||
const create = async () => {
|
||||
try {
|
||||
await sdkForConsole.teams.create(id ?? 'unique()', name);
|
||||
name = null;
|
||||
const team = await sdkForConsole.teams.create(id ?? 'unique()', name);
|
||||
dispatch('created');
|
||||
await organizationList.load();
|
||||
titleDropdown.set($organizationList.teams);
|
||||
organization.set(team);
|
||||
addNotification({
|
||||
type: 'success',
|
||||
message: `${name} has been created`
|
||||
});
|
||||
name = null;
|
||||
id = null;
|
||||
show = false;
|
||||
} catch ({ message }) {
|
||||
error = message;
|
||||
}
|
||||
@@ -34,7 +41,13 @@
|
||||
<Modal {error} size="big" bind:show>
|
||||
<svelte:fragment slot="header">Create New Organization</svelte:fragment>
|
||||
<FormList>
|
||||
<InputText id="name" label="Name" bind:value={name} required />
|
||||
<InputText
|
||||
id="name"
|
||||
label="Name"
|
||||
placeholder="Enter name"
|
||||
bind:value={name}
|
||||
autofocus={true}
|
||||
required />
|
||||
{#if !showDropdown}
|
||||
<div>
|
||||
<Pill button on:click={() => (showDropdown = !showDropdown)}>
|
||||
|
||||
@@ -17,15 +17,26 @@
|
||||
import { sdkForConsole } from '$lib/stores/sdk';
|
||||
import type { Models } from '@aw-labs/appwrite-console';
|
||||
import { pageLimit } from '$lib/stores/layout';
|
||||
import { page } from '$app/stores';
|
||||
|
||||
let search = '';
|
||||
let offset: number = null;
|
||||
|
||||
let selectedMember: Models.Membership;
|
||||
let showDelete = false;
|
||||
const url = `${$page.url.origin}/console/`;
|
||||
|
||||
const getAvatar = (name: string) => sdkForConsole.avatars.getInitials(name, 32, 32).toString();
|
||||
const getAvatar = (name: string) =>
|
||||
sdkForConsole.avatars.getInitials(name, 120, 120).toString();
|
||||
const deleted = () => memberList.load($organization.$id, search, $pageLimit, offset ?? 0);
|
||||
const resend = async (member: Models.Membership) =>
|
||||
await sdkForConsole.teams.createMembership(
|
||||
$organization.$id,
|
||||
member.userEmail,
|
||||
member.roles,
|
||||
url,
|
||||
member.userName
|
||||
);
|
||||
|
||||
$: if (search) offset = 0;
|
||||
$: memberList.load($organization.$id, search, $pageLimit, offset ?? 0);
|
||||
@@ -58,7 +69,7 @@
|
||||
<TableCell title="Name">
|
||||
<div class="u-flex u-gap-12 u-cross-center">
|
||||
<Avatar
|
||||
size={32}
|
||||
size={40}
|
||||
src={getAvatar(member.userName)}
|
||||
name={member.userName} />
|
||||
<span class="text u-trim"
|
||||
@@ -71,7 +82,7 @@
|
||||
<TableCellText title="Email">{member.userEmail}</TableCellText>
|
||||
<TableCell title="Roles">
|
||||
{#if member.invited && !member.joined}
|
||||
<Button secondary>Resend</Button>
|
||||
<Button secondary on:click={() => resend(member)}>Resend</Button>
|
||||
{:else}
|
||||
{member.roles}
|
||||
{/if}
|
||||
@@ -81,7 +92,8 @@
|
||||
<button
|
||||
class="button is-only-icon is-text"
|
||||
aria-label="Delete item"
|
||||
on:click|preventDefault={() => {
|
||||
disabled={$memberList.total === 1}
|
||||
on:click={() => {
|
||||
selectedMember = member;
|
||||
showDelete = true;
|
||||
}}>
|
||||
|
||||
Reference in New Issue
Block a user