diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 82281df36..1f4ef8396 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,7 +15,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Use Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: 18 # - name: Audit dependencies diff --git a/package-lock.json b/package-lock.json index 7f06084ba..7a64d5bd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "@sentry/tracing": "^7.36.0", "analytics": "^0.8.1", "echarts": "^5.4.1", + "logrocket": "^3.0.1", "pretty-bytes": "^6.1.0", "prismjs": "^1.29.0", "tippy.js": "^6.3.7", @@ -6261,6 +6262,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/logrocket": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/logrocket/-/logrocket-3.0.1.tgz", + "integrity": "sha512-jOWG+jEzobKVxGytzZ+4KGm2kiMQMRTHab2uDWQyVZcHfEF38BlCH1yjQVY4LCmuQUwZitP9biMzJZnyUQ0dtQ==" + }, "node_modules/loupe": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", diff --git a/package.json b/package.json index 374ad0c21..cbd028a28 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "@sentry/tracing": "^7.36.0", "analytics": "^0.8.1", "echarts": "^5.4.1", + "logrocket": "^3.0.1", "pretty-bytes": "^6.1.0", "prismjs": "^1.29.0", "tippy.js": "^6.3.7", diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index 0d00ef17c..c4324b970 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -10,7 +10,7 @@ const analytics = Analytics({ app: 'appwrite', plugins: [ googleAnalytics({ - measurementIds: [VARS.GOOGLE_ANALYTICS ?? 'G-R4YJ9JN8L4'] + measurementIds: [VARS.GOOGLE_ANALYTICS || 'G-R4YJ9JN8L4'] }) ] }); @@ -88,7 +88,7 @@ function sendEventToGrowth(event: string, path: string, data: object = null): vo }); } -function isTrackingAllowed() { +export function isTrackingAllowed() { if (ENV.TEST) { return; } diff --git a/src/lib/components/alert.svelte b/src/lib/components/alert.svelte index 6d67c8378..599d6b9e9 100644 --- a/src/lib/components/alert.svelte +++ b/src/lib/components/alert.svelte @@ -32,7 +32,7 @@ class:icon-exclamation={type === 'warning'} class:icon-exclamation-circle={type === 'error'} aria-hidden="true" /> -
+
{#if $$slots.title}
diff --git a/src/lib/components/avatarInitials.svelte b/src/lib/components/avatarInitials.svelte index 1ce7ecfc6..025dd998c 100644 --- a/src/lib/components/avatarInitials.svelte +++ b/src/lib/components/avatarInitials.svelte @@ -1,11 +1,11 @@ diff --git a/src/lib/components/cardContainer.svelte b/src/lib/components/cardContainer.svelte index ca00145ba..106479447 100644 --- a/src/lib/components/cardContainer.svelte +++ b/src/lib/components/cardContainer.svelte @@ -10,7 +10,8 @@
    3 ? '22rem' : '25rem'};`}> + style={`--grid-gap:1.5rem; --grid-item-size:${total > 3 ? '22rem' : '25rem'};`} + data-private> {#if total > 3 ? total < limit + offset : total % 2 !== 0} diff --git a/src/lib/components/eventModal.svelte b/src/lib/components/eventModal.svelte index 7d728dcdb..b7a00370a 100644 --- a/src/lib/components/eventModal.svelte +++ b/src/lib/components/eventModal.svelte @@ -245,7 +245,7 @@ } - + Create Event
    diff --git a/src/lib/components/feedbackGeneral.svelte b/src/lib/components/feedbackGeneral.svelte index fc380d0b1..aa9bdc42f 100644 --- a/src/lib/components/feedbackGeneral.svelte +++ b/src/lib/components/feedbackGeneral.svelte @@ -51,7 +51,7 @@ Your feedback is important to us. Please be honest and tell us what you think.
    -
    + - + How likely are you to recommend Appwrite to a friend or colleague? diff --git a/src/lib/components/modal.svelte b/src/lib/components/modal.svelte index 8e38955ab..7f70c5842 100644 --- a/src/lib/components/modal.svelte +++ b/src/lib/components/modal.svelte @@ -2,12 +2,16 @@ import { createEventDispatcher, onDestroy, onMount } from 'svelte'; import { Alert } from '$lib/components'; import { trackEvent } from '$lib/actions/analytics'; + import { Form } from '$lib/elements/forms'; export let show = false; export let size: 'small' | 'big' = null; export let warning = false; export let error: string = null; export let closable = true; + export let onSubmit: () => Promise | void = function () { + return; + }; let dialog: HTMLDialogElement; let alert: HTMLElement; @@ -77,8 +81,7 @@ class:is-big={size === 'big'} bind:this={dialog}> {#if show} - - +
{/if} - + {/if} diff --git a/src/lib/components/permissions/custom.svelte b/src/lib/components/permissions/custom.svelte index aecd66068..080d9aa93 100644 --- a/src/lib/components/permissions/custom.svelte +++ b/src/lib/components/permissions/custom.svelte @@ -25,7 +25,7 @@ $: disabled = !value || $groups.has(value); - + Custom permission

Custom permissions allow you to grant access to specific users or teams using their ID and @@ -44,6 +44,6 @@ - + diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index e4d369af2..778cc4ae5 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -1,6 +1,6 @@ - + Select teams

Grant access to any member of a specific team. To grant access to team members with specific @@ -144,6 +144,6 @@ {/if} - + diff --git a/src/lib/components/permissions/user.svelte b/src/lib/components/permissions/user.svelte index d5468b47d..c074af4fd 100644 --- a/src/lib/components/permissions/user.svelte +++ b/src/lib/components/permissions/user.svelte @@ -2,7 +2,7 @@ import { Button, InputSearch } from '$lib/elements/forms'; import { createEventDispatcher } from 'svelte'; import { AvatarInitials, EmptySearch, Modal, PaginationInline } from '..'; - import { sdkForProject } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { Query, type Models } from '@aw-labs/appwrite-console'; import type { Writable } from 'svelte/store'; import type { Permission } from './permissions.svelte'; @@ -31,7 +31,7 @@ async function request() { if (!show) return; - results = await sdkForProject.users.list([Query.limit(5), Query.offset(offset)], search); + results = await sdk.forProject.users.list([Query.limit(5), Query.offset(offset)], search); } function onSelection(event: Event, role: string) { @@ -58,7 +58,7 @@ } - + Select users

Grant access to any authenticated or anonymous user.

- +
diff --git a/src/lib/components/secret.svelte b/src/lib/components/secret.svelte index 0e1fbd308..1fed84fb1 100644 --- a/src/lib/components/secret.svelte +++ b/src/lib/components/secret.svelte @@ -8,7 +8,7 @@ export let copyEvent: string = null; -
+
{#if show} {value} {:else} diff --git a/src/lib/components/tiles.svelte b/src/lib/components/tiles.svelte index d02407e98..975f22adc 100644 --- a/src/lib/components/tiles.svelte +++ b/src/lib/components/tiles.svelte @@ -1,3 +1,3 @@ -
    +
    diff --git a/src/lib/components/uploadBox.svelte b/src/lib/components/uploadBox.svelte index d074bf2e0..988567eba 100644 --- a/src/lib/components/uploadBox.svelte +++ b/src/lib/components/uploadBox.svelte @@ -1,7 +1,7 @@ {#if $uploader?.isOpen} diff --git a/src/lib/elements/forms/button.svelte b/src/lib/elements/forms/button.svelte index 27764b2a3..1dc57636d 100644 --- a/src/lib/elements/forms/button.svelte +++ b/src/lib/elements/forms/button.svelte @@ -1,5 +1,8 @@ - -
    + + + diff --git a/src/lib/elements/table/cellLink.svelte b/src/lib/elements/table/cellLink.svelte index 17892db57..839949f73 100644 --- a/src/lib/elements/table/cellLink.svelte +++ b/src/lib/elements/table/cellLink.svelte @@ -3,6 +3,6 @@ export let title: string; -
    +
    diff --git a/src/lib/elements/table/cellText.svelte b/src/lib/elements/table/cellText.svelte index 59dcba6e4..e2fb71b6d 100644 --- a/src/lib/elements/table/cellText.svelte +++ b/src/lib/elements/table/cellText.svelte @@ -10,6 +10,7 @@ class:is-only-desktop={onlyDesktop} class:u-overflow-visible={showOverflow} data-title={title} - role="cell"> + role="cell" + data-private>
    diff --git a/src/lib/elements/table/table.svelte b/src/lib/elements/table/table.svelte index 42e67b2cd..481477bb3 100644 --- a/src/lib/elements/table/table.svelte +++ b/src/lib/elements/table/table.svelte @@ -7,6 +7,7 @@ class="table is-selected-columns-mobile" class:u-margin-block-start-32={!noMargin} class:is-remove-outer-styles={noStyles} - role="table"> + role="table" + data-private>
diff --git a/src/lib/elements/table/tableList.svelte b/src/lib/elements/table/tableList.svelte index 4abe219de..da09c06a4 100644 --- a/src/lib/elements/table/tableList.svelte +++ b/src/lib/elements/table/tableList.svelte @@ -1,5 +1,5 @@ -
+
    diff --git a/src/lib/elements/table/tableScroll.svelte b/src/lib/elements/table/tableScroll.svelte index 52b84a940..814fe00e5 100644 --- a/src/lib/elements/table/tableScroll.svelte +++ b/src/lib/elements/table/tableScroll.svelte @@ -1,10 +1,30 @@ -
    -
    - +
    +
    (isOverflowing = v)}> +
    diff --git a/src/lib/helpers/project.ts b/src/lib/helpers/project.ts new file mode 100644 index 000000000..ff8f887b0 --- /dev/null +++ b/src/lib/helpers/project.ts @@ -0,0 +1,5 @@ +export function getProjectId() { + const pathname = window.location.pathname; + const projectMatch = pathname.match(/\/project-(.*?)\//); + return projectMatch?.[1] || null; +} diff --git a/src/lib/helpers/promises.ts b/src/lib/helpers/promises.ts new file mode 100644 index 000000000..9f8459dcd --- /dev/null +++ b/src/lib/helpers/promises.ts @@ -0,0 +1,3 @@ +export async function sleep(ms: number): Promise { + return new Promise((r) => setTimeout(r, ms)); +} diff --git a/src/lib/layout/breadcrumbs.svelte b/src/lib/layout/breadcrumbs.svelte index 50286fae1..d700654e2 100644 --- a/src/lib/layout/breadcrumbs.svelte +++ b/src/lib/layout/breadcrumbs.svelte @@ -18,7 +18,7 @@
    diff --git a/src/lib/layout/header.svelte b/src/lib/layout/header.svelte index 88a9a0b4b..0cc8abfdd 100644 --- a/src/lib/layout/header.svelte +++ b/src/lib/layout/header.svelte @@ -20,7 +20,7 @@ import { slide } from 'svelte/transition'; import { page } from '$app/stores'; import { Submit, trackEvent } from '$lib/actions/analytics'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { goto } from '$app/navigation'; let showDropdown = false; @@ -35,7 +35,7 @@ } async function logout() { - await sdkForConsole.account.deleteSession('current'); + await sdk.forConsole.account.deleteSession('current'); trackEvent(Submit.AccountLogout); await goto(`${base}/login`); } diff --git a/src/lib/layout/logs.svelte b/src/lib/layout/logs.svelte index 314ec302e..7d92332af 100644 --- a/src/lib/layout/logs.svelte +++ b/src/lib/layout/logs.svelte @@ -6,7 +6,7 @@ import { Button } from '$lib/elements/forms'; import { base } from '$app/paths'; import { app } from '$lib/stores/app'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { page } from '$app/stores'; import { calculateTime } from '$lib/helpers/timeConversion'; import type { Models } from '@aw-labs/appwrite-console'; @@ -17,7 +17,7 @@ function isDeployment(data: Models.Deployment | Models.Execution): data is Models.Deployment { if ('buildId' in data) { selectedTab = 'logs'; - rawData = `${sdkForConsole.client.config.endpoint}/functions/${$log.func.$id}/deployment/${$log.data.$id}?mode=admin&project=${$page.params.project}`; + rawData = `${sdk.forConsole.client.config.endpoint}/functions/${$log.func.$id}/deployment/${$log.data.$id}?mode=admin&project=${$page.params.project}`; return true; } } @@ -25,7 +25,7 @@ function isExecution(data: Models.Deployment | Models.Execution): data is Models.Execution { if ('trigger' in data) { selectedTab = 'response'; - rawData = `${sdkForConsole.client.config.endpoint}/functions/${$log.func.$id}/execution/${$log.data.$id}?mode=admin&project=${$page.params.project}`; + rawData = `${sdk.forConsole.client.config.endpoint}/functions/${$log.func.$id}/execution/${$log.data.$id}?mode=admin&project=${$page.params.project}`; return true; } } @@ -47,7 +47,7 @@ {#if $log.data} -
    +

    Function ID: {$log.func.$id}

-
+ {#each sortedSteps as [step, { component }]} {#if currentStep === step} diff --git a/src/lib/layout/wizardExitModal.svelte b/src/lib/layout/wizardExitModal.svelte index 8f29e59d9..6019a5898 100644 --- a/src/lib/layout/wizardExitModal.svelte +++ b/src/lib/layout/wizardExitModal.svelte @@ -11,7 +11,7 @@ } - + Exit Process

Are you sure you want to exit from ? All data will be deleted. This action is diff --git a/src/lib/mock/form.test.svelte b/src/lib/mock/form.test.svelte new file mode 100644 index 000000000..c900d26e1 --- /dev/null +++ b/src/lib/mock/form.test.svelte @@ -0,0 +1,11 @@ + + + + + + diff --git a/src/lib/stores/sdk.ts b/src/lib/stores/sdk.ts index d3fb4455c..d0939adf7 100644 --- a/src/lib/stores/sdk.ts +++ b/src/lib/stores/sdk.ts @@ -1,3 +1,4 @@ +import { getProjectId } from '$lib/helpers/project'; import { Project } from '$lib/sdk/project'; import { VARS } from '$lib/system'; import { @@ -21,21 +22,6 @@ clientConsole.setEndpoint(endpoint).setProject('console'); const clientProject = new Client(); clientProject.setEndpoint(endpoint).setMode('admin'); - -const setProject = (projectId: string): Client => clientProject.setProject(projectId); - -const sdkForConsole = { - client: clientConsole, - account: new Account(clientConsole), - avatars: new Avatars(clientConsole), - functions: new Functions(clientConsole), - health: new Health(clientConsole), - locale: new Locale(clientConsole), - projects: new Projects(clientConsole), - teams: new Teams(clientConsole), - users: new Users(clientConsole) -}; - const sdkForProject = { client: clientProject, account: new Account(clientProject), @@ -50,4 +36,24 @@ const sdkForProject = { users: new Users(clientProject) }; -export { sdkForConsole, sdkForProject, setProject }; +export const sdk = { + forConsole: { + client: clientConsole, + account: new Account(clientConsole), + avatars: new Avatars(clientConsole), + functions: new Functions(clientConsole), + health: new Health(clientConsole), + locale: new Locale(clientConsole), + projects: new Projects(clientConsole), + teams: new Teams(clientConsole), + users: new Users(clientConsole) + }, + get forProject() { + const projectId = getProjectId(); + if (projectId && projectId !== clientProject.config.project) { + clientProject.setProject(projectId); + } + + return sdkForProject; + } +}; diff --git a/src/lib/stores/uploader.ts b/src/lib/stores/uploader.ts index 9538d0b79..ece61c0b7 100644 --- a/src/lib/stores/uploader.ts +++ b/src/lib/stores/uploader.ts @@ -1,6 +1,6 @@ import type { Models } from '@aw-labs/appwrite-console'; import { writable } from 'svelte/store'; -import { sdkForProject } from './sdk'; +import { sdk } from './sdk'; type UploaderFile = { $id: string; @@ -71,7 +71,7 @@ const createUploader = () => { n.files.unshift(newFile); return n; }); - const uploadedFile = await sdkForProject.storage.createFile( + const uploadedFile = await sdk.forProject.storage.createFile( bucketId, id ?? 'unique()', file, diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 65fc7b03d..fcc41255e 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,14 +1,16 @@ -

+ - Update Name + Name
    @@ -94,9 +94,9 @@ -
    + - Update Email + Email @@ -122,9 +122,9 @@
    -
    + - Update Password + Password

    Forgot your password? Recover your password diff --git a/src/routes/console/account/activity/[[page]]/+page.ts b/src/routes/console/account/activity/[[page]]/+page.ts index 6ac71de8d..d3fc1b4d0 100644 --- a/src/routes/console/account/activity/[[page]]/+page.ts +++ b/src/routes/console/account/activity/[[page]]/+page.ts @@ -1,5 +1,5 @@ import { Query } from '@aw-labs/appwrite-console'; -import { sdkForConsole } from '$lib/stores/sdk'; +import { sdk } from '$lib/stores/sdk'; import { pageToOffset } from '$lib/helpers/load'; import { PAGE_LIMIT } from '$lib/constants'; import type { PageLoad } from './$types'; @@ -10,6 +10,6 @@ export const load: PageLoad = async ({ params }) => { return { offset, - logs: await sdkForConsole.account.listLogs([Query.offset(offset), Query.limit(PAGE_LIMIT)]) + logs: await sdk.forConsole.account.listLogs([Query.offset(offset), Query.limit(PAGE_LIMIT)]) }; }; diff --git a/src/routes/console/account/delete.svelte b/src/routes/console/account/delete.svelte index cf981d4e9..139098292 100644 --- a/src/routes/console/account/delete.svelte +++ b/src/routes/console/account/delete.svelte @@ -5,13 +5,13 @@ import { Dependencies } from '$lib/constants'; import { Button } from '$lib/elements/forms'; import { addNotification } from '$lib/stores/notifications'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; export let showDelete = false; const deleteAccount = async () => { try { - await sdkForConsole.account.updateStatus(); + await sdk.forConsole.account.updateStatus(); showDelete = false; invalidate(Dependencies.ACCOUNT); addNotification({ @@ -29,7 +29,7 @@ }; - + Delete Account

    Are you sure you want to delete your account?

    diff --git a/src/routes/console/account/header.svelte b/src/routes/console/account/header.svelte index d298924d8..71d54f3d3 100644 --- a/src/routes/console/account/header.svelte +++ b/src/routes/console/account/header.svelte @@ -7,7 +7,7 @@ import { Button } from '$lib/elements/forms'; import { isTabSelected } from '$lib/helpers/load'; import { Cover, CoverTitle } from '$lib/layout'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { user } from '$lib/stores/user'; const path = `/console/account`; @@ -38,7 +38,7 @@ ]; async function logout() { - await sdkForConsole.account.deleteSession('current'); + await sdk.forConsole.account.deleteSession('current'); trackEvent(Submit.AccountLogout); await goto(`${base}/login`); } diff --git a/src/routes/console/account/organizations/[[page]]/+page.svelte b/src/routes/console/account/organizations/[[page]]/+page.svelte index 60d477e6e..69ba0d589 100644 --- a/src/routes/console/account/organizations/[[page]]/+page.svelte +++ b/src/routes/console/account/organizations/[[page]]/+page.svelte @@ -11,14 +11,14 @@ import { Button } from '$lib/elements/forms'; import { Container } from '$lib/layout'; import CreateOrganization from '../../../createOrganization.svelte'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { CARD_LIMIT } from '$lib/constants'; import type { PageData } from './$types'; export let data: PageData; const getMemberships = async (teamId: string) => { - const memberships = await sdkForConsole.teams.listMemberships(teamId); + const memberships = await sdk.forConsole.teams.listMemberships(teamId); return memberships.memberships.map((team) => team.userName); }; diff --git a/src/routes/console/account/organizations/[[page]]/+page.ts b/src/routes/console/account/organizations/[[page]]/+page.ts index e51c4b146..9b602d7b5 100644 --- a/src/routes/console/account/organizations/[[page]]/+page.ts +++ b/src/routes/console/account/organizations/[[page]]/+page.ts @@ -1,5 +1,5 @@ import { Query } from '@aw-labs/appwrite-console'; -import { sdkForConsole } from '$lib/stores/sdk'; +import { sdk } from '$lib/stores/sdk'; import { pageToOffset } from '$lib/helpers/load'; import { CARD_LIMIT } from '$lib/constants'; import type { PageLoad } from './$types'; @@ -10,7 +10,7 @@ export const load: PageLoad = async ({ params }) => { return { offset, - organizations: await sdkForConsole.teams.list([ + organizations: await sdk.forConsole.teams.list([ Query.offset(offset), Query.limit(CARD_LIMIT), Query.orderDesc('$createdAt') diff --git a/src/routes/console/account/sessions/[[page]]/+page.svelte b/src/routes/console/account/sessions/[[page]]/+page.svelte index 5e6fd5787..808bdb9a1 100644 --- a/src/routes/console/account/sessions/[[page]]/+page.svelte +++ b/src/routes/console/account/sessions/[[page]]/+page.svelte @@ -12,7 +12,7 @@ TableScroll } from '$lib/elements/table'; import { Container } from '$lib/layout'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { goto, invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; import type { Models } from '@aw-labs/appwrite-console'; @@ -23,11 +23,11 @@ export let data: PageData; const getBrowser = (clientCode: string) => { - return sdkForConsole.avatars.getBrowser(clientCode, 40, 40); + return sdk.forConsole.avatars.getBrowser(clientCode, 40, 40); }; const logout = async (session: Models.Session) => { - await sdkForConsole.account.deleteSession(session.$id); + await sdk.forConsole.account.deleteSession(session.$id); trackEvent(Submit.AccountDeleteSession); if (session.current) { await goto(`${base}/login`); @@ -35,7 +35,7 @@ invalidate(Dependencies.ACCOUNT_SESSIONS); }; const logoutAll = async () => { - await sdkForConsole.account.deleteSessions(); + await sdk.forConsole.account.deleteSessions(); trackEvent(Submit.AccountDeleteAllSessions); await goto(`${base}/login`); invalidate(Dependencies.ACCOUNT_SESSIONS); @@ -115,7 +115,7 @@
diff --git a/src/routes/console/account/sessions/[[page]]/+page.ts b/src/routes/console/account/sessions/[[page]]/+page.ts index ed1eaba0f..6165d5472 100644 --- a/src/routes/console/account/sessions/[[page]]/+page.ts +++ b/src/routes/console/account/sessions/[[page]]/+page.ts @@ -1,11 +1,11 @@ import { Dependencies } from '$lib/constants'; -import { sdkForConsole } from '$lib/stores/sdk'; +import { sdk } from '$lib/stores/sdk'; import type { PageLoad } from './$types'; export const load: PageLoad = async ({ depends }) => { depends(Dependencies.ACCOUNT_SESSIONS); return { - sessions: await sdkForConsole.account.listSessions() + sessions: await sdk.forConsole.account.listSessions() }; }; diff --git a/src/routes/console/createOrganization.svelte b/src/routes/console/createOrganization.svelte index 6fc75f52b..ab3c4ee22 100644 --- a/src/routes/console/createOrganization.svelte +++ b/src/routes/console/createOrganization.svelte @@ -3,7 +3,7 @@ import { Pill } from '$lib/elements'; import { InputText, Button, FormList } from '$lib/elements/forms'; import { addNotification } from '$lib/stores/notifications'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { createEventDispatcher } from 'svelte'; import { goto, invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; @@ -21,7 +21,7 @@ const create = async () => { try { - const org = await sdkForConsole.teams.create(id ?? ID.unique(), name); + const org = await sdk.forConsole.teams.create(id ?? ID.unique(), name); await invalidate(Dependencies.ACCOUNT); dispatch('created'); await goto(`/console/organization-${org.$id}`); @@ -42,7 +42,7 @@ }; - + Create New Organization - + {#if !showCustomId}
@@ -70,7 +66,7 @@ {:else} {/if} - diff --git a/src/routes/console/organization-[organization]/+layout.ts b/src/routes/console/organization-[organization]/+layout.ts index 97de8b900..96da66f11 100644 --- a/src/routes/console/organization-[organization]/+layout.ts +++ b/src/routes/console/organization-[organization]/+layout.ts @@ -1,20 +1,19 @@ import Header from './header.svelte'; import Breadcrumbs from './breadcrumbs.svelte'; -import { sdkForConsole } from '$lib/stores/sdk'; +import { sdk } from '$lib/stores/sdk'; import type { LayoutLoad } from './$types'; import { error } from '@sveltejs/kit'; import { Dependencies } from '$lib/constants'; -export const load: LayoutLoad = async ({ params, parent, depends }) => { - await parent(); +export const load: LayoutLoad = async ({ params, depends }) => { depends(Dependencies.ORGANIZATION); try { return { header: Header, breadcrumbs: Breadcrumbs, - organization: await sdkForConsole.teams.get(params.organization), - members: await sdkForConsole.teams.listMemberships(params.organization) + organization: await sdk.forConsole.teams.get(params.organization), + members: await sdk.forConsole.teams.listMemberships(params.organization) }; } catch (e) { localStorage.removeItem('organization'); diff --git a/src/routes/console/organization-[organization]/[[page]]/+page.ts b/src/routes/console/organization-[organization]/[[page]]/+page.ts index e6f6520c3..d7cbd284d 100644 --- a/src/routes/console/organization-[organization]/[[page]]/+page.ts +++ b/src/routes/console/organization-[organization]/[[page]]/+page.ts @@ -1,5 +1,5 @@ import { Query } from '@aw-labs/appwrite-console'; -import { sdkForConsole } from '$lib/stores/sdk'; +import { sdk } from '$lib/stores/sdk'; import { pageToOffset } from '$lib/helpers/load'; import { CARD_LIMIT } from '$lib/constants'; import type { PageLoad } from './$types'; @@ -10,7 +10,7 @@ export const load: PageLoad = async ({ params }) => { return { offset, - projects: await sdkForConsole.projects.list([ + projects: await sdk.forConsole.projects.list([ Query.offset(offset), Query.limit(CARD_LIMIT), Query.equal('teamId', params.organization), diff --git a/src/routes/console/organization-[organization]/createMember.svelte b/src/routes/console/organization-[organization]/createMember.svelte index 1fec569ce..679f82d7d 100644 --- a/src/routes/console/organization-[organization]/createMember.svelte +++ b/src/routes/console/organization-[organization]/createMember.svelte @@ -3,7 +3,7 @@ import { Modal } from '$lib/components'; import { InputText, InputEmail, Button, FormList } from '$lib/elements/forms'; import { addNotification } from '$lib/stores/notifications'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { createEventDispatcher } from 'svelte'; import { organization } from '$lib/stores/organization'; import { invalidate } from '$app/navigation'; @@ -19,7 +19,7 @@ const create = async () => { try { - const team = await sdkForConsole.teams.createMembership( + const team = await sdk.forConsole.teams.createMembership( $organization.$id, email, ['owner'], @@ -47,7 +47,7 @@ } - + Invite Member - + Create Project - + {#if !showCustomId}
(showCustomId = !showCustomId)}> @@ -71,6 +62,6 @@ - + diff --git a/src/routes/console/organization-[organization]/deleteMember.svelte b/src/routes/console/organization-[organization]/deleteMember.svelte index ac8613166..3e5eeb081 100644 --- a/src/routes/console/organization-[organization]/deleteMember.svelte +++ b/src/routes/console/organization-[organization]/deleteMember.svelte @@ -4,7 +4,7 @@ import { Modal } from '$lib/components'; import { Button } from '$lib/elements/forms'; import { addNotification } from '$lib/stores/notifications'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import type { Models } from '@aw-labs/appwrite-console'; import { createEventDispatcher } from 'svelte'; import { user } from '$lib/stores/user'; @@ -17,10 +17,10 @@ const deleteMembership = async () => { try { - await sdkForConsole.teams.deleteMembership(selectedMember.teamId, selectedMember.$id); + await sdk.forConsole.teams.deleteMembership(selectedMember.teamId, selectedMember.$id); if (isUser) { - await sdkForConsole.account.deleteSession('current'); + await sdk.forConsole.account.deleteSession('current'); await goto(`${base}/login`); } else { dispatch('deleted'); @@ -43,11 +43,11 @@ $: isUser = selectedMember?.userId === $user?.$id; - + {isUser ? 'Leave Organization' : 'Delete Member'} -

+

{isUser ? `Are you sure you want to leave '${selectedMember?.teamName}'?` : `Are you sure you want to delete ${selectedMember?.userName} from '${selectedMember?.teamName}'?`} diff --git a/src/routes/console/organization-[organization]/deleteOrganization.svelte b/src/routes/console/organization-[organization]/deleteOrganization.svelte index a6dc3f020..49b3ebc5f 100644 --- a/src/routes/console/organization-[organization]/deleteOrganization.svelte +++ b/src/routes/console/organization-[organization]/deleteOrganization.svelte @@ -2,7 +2,7 @@ import { Modal } from '$lib/components'; import { Button } from '$lib/elements/forms'; import { addNotification } from '$lib/stores/notifications'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { organization, organizationList } from '$lib/stores/organization'; import { goto, invalidate } from '$app/navigation'; import { base } from '$app/paths'; @@ -13,7 +13,7 @@ const deleteOrg = async () => { try { - await sdkForConsole.teams.delete($organization.$id); + await sdk.forConsole.teams.delete($organization.$id); addNotification({ type: 'success', message: `${$organization.name} has been deleted` @@ -37,7 +37,7 @@ }; - + Delete Organization

Are you sure you want to delete {$organization.name}? All projects ({$organization.total}) diff --git a/src/routes/console/organization-[organization]/header.svelte b/src/routes/console/organization-[organization]/header.svelte index d7b7137ed..8f115ad1b 100644 --- a/src/routes/console/organization-[organization]/header.svelte +++ b/src/routes/console/organization-[organization]/header.svelte @@ -72,7 +72,9 @@

- + + +
diff --git a/src/routes/console/project-[project]/auth/auth0OAuth.svelte b/src/routes/console/project-[project]/auth/auth0OAuth.svelte index a8a190cda..ff9bc2c32 100644 --- a/src/routes/console/project-[project]/auth/auth0OAuth.svelte +++ b/src/routes/console/project-[project]/auth/auth0OAuth.svelte @@ -2,7 +2,7 @@ import { page } from '$app/stores'; import { Modal, CopyInput, Alert } from '$lib/components'; import { Button, InputPassword, InputText, InputSwitch, FormList } from '$lib/elements/forms'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import type { Provider } from '$lib/stores/oauth-providers'; import { addNotification } from '$lib/stores/notifications'; import { onMount } from 'svelte'; @@ -27,7 +27,7 @@ const projectId = $page.params.project; const update = async () => { try { - await sdkForConsole.projects.updateOAuth2( + await sdk.forConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), appId, @@ -58,7 +58,7 @@ : provider.secret; - + {provider.name} OAuth2 Settings

@@ -93,7 +93,7 @@

URI

diff --git a/src/routes/console/project-[project]/auth/authentikOAuth.svelte b/src/routes/console/project-[project]/auth/authentikOAuth.svelte index fa6929b10..d798177a5 100644 --- a/src/routes/console/project-[project]/auth/authentikOAuth.svelte +++ b/src/routes/console/project-[project]/auth/authentikOAuth.svelte @@ -2,7 +2,7 @@ import { page } from '$app/stores'; import { Modal, CopyInput, Alert } from '$lib/components'; import { Button, InputPassword, InputText, InputSwitch, FormList } from '$lib/elements/forms'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import type { Provider } from '$lib/stores/oauth-providers'; import { addNotification } from '$lib/stores/notifications'; import { onMount } from 'svelte'; @@ -27,7 +27,7 @@ const projectId = $page.params.project; const update = async () => { try { - await sdkForConsole.projects.updateOAuth2( + await sdk.forConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), appId, @@ -58,7 +58,7 @@ : provider.secret; - + {provider.name} OAuth2 Settings

@@ -93,7 +93,7 @@

URI

diff --git a/src/routes/console/project-[project]/auth/createTeam.svelte b/src/routes/console/project-[project]/auth/createTeam.svelte index 73a109d13..0875e522c 100644 --- a/src/routes/console/project-[project]/auth/createTeam.svelte +++ b/src/routes/console/project-[project]/auth/createTeam.svelte @@ -4,7 +4,7 @@ import { Pill } from '$lib/elements'; import { InputText, Button, FormList } from '$lib/elements/forms'; import { addNotification } from '$lib/stores/notifications'; - import { sdkForProject } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { ID } from '@aw-labs/appwrite-console'; import { createEventDispatcher } from 'svelte'; @@ -17,7 +17,7 @@ const create = async () => { try { - const team = await sdkForProject.teams.create(id ?? ID.unique(), name); + const team = await sdk.forProject.teams.create(id ?? ID.unique(), name); name = ''; showCreate = false; showCustomId = false; @@ -41,7 +41,7 @@ } - + Create Team { try { - const user = await sdkForProject.users.create( + const user = await sdk.forProject.users.create( id ?? ID.unique(), mail, phone, @@ -58,7 +58,7 @@ } - + Create User { try { - await sdkForConsole.projects.updateOAuth2( + await sdk.forConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), appId, @@ -56,7 +56,7 @@ clientSecret && endpoint ? JSON.stringify({ clientSecret, endpoint }) : provider.secret; - + {provider.name} OAuth2 Settings

@@ -91,7 +91,7 @@

URI

diff --git a/src/routes/console/project-[project]/auth/mainOAuth.svelte b/src/routes/console/project-[project]/auth/mainOAuth.svelte index 12b84ca97..c7a327a84 100644 --- a/src/routes/console/project-[project]/auth/mainOAuth.svelte +++ b/src/routes/console/project-[project]/auth/mainOAuth.svelte @@ -2,7 +2,7 @@ import { page } from '$app/stores'; import { Modal, CopyInput, Alert } from '$lib/components'; import { Button, InputPassword, InputText, InputSwitch, FormList } from '$lib/elements/forms'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import type { Provider } from '$lib/stores/oauth-providers'; import { addNotification } from '$lib/stores/notifications'; import { onMount } from 'svelte'; @@ -28,7 +28,7 @@ const update = async () => { try { - await sdkForConsole.projects.updateOAuth2( + await sdk.forConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), appId, @@ -54,7 +54,7 @@ }; - + {provider.name} OAuth2 Settings

@@ -84,7 +84,7 @@

URI

diff --git a/src/routes/console/project-[project]/auth/microsoftOAuth.svelte b/src/routes/console/project-[project]/auth/microsoftOAuth.svelte index 41dc6f1b2..d715c16b8 100644 --- a/src/routes/console/project-[project]/auth/microsoftOAuth.svelte +++ b/src/routes/console/project-[project]/auth/microsoftOAuth.svelte @@ -2,7 +2,7 @@ import { page } from '$app/stores'; import { Modal, CopyInput, Alert } from '$lib/components'; import { Button, InputPassword, InputText, InputSwitch, FormList } from '$lib/elements/forms'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import type { Provider } from '$lib/stores/oauth-providers'; import { addNotification } from '$lib/stores/notifications'; import { onMount } from 'svelte'; @@ -28,7 +28,7 @@ const update = async () => { try { - await sdkForConsole.projects.updateOAuth2( + await sdk.forConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), appId, @@ -57,7 +57,7 @@ clientSecret && tenantID ? JSON.stringify({ clientSecret, tenantID }) : provider.secret; - + {provider.name} OAuth2 Settings

@@ -93,7 +93,7 @@

URI

diff --git a/src/routes/console/project-[project]/auth/oktaOAuth.svelte b/src/routes/console/project-[project]/auth/oktaOAuth.svelte index 39e3a3c04..4ebeb51ab 100644 --- a/src/routes/console/project-[project]/auth/oktaOAuth.svelte +++ b/src/routes/console/project-[project]/auth/oktaOAuth.svelte @@ -2,7 +2,7 @@ import { page } from '$app/stores'; import { Modal, CopyInput, Alert } from '$lib/components'; import { Button, InputPassword, InputText, InputSwitch, FormList } from '$lib/elements/forms'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import type { Provider } from '$lib/stores/oauth-providers'; import { addNotification } from '$lib/stores/notifications'; import { onMount } from 'svelte'; @@ -31,7 +31,7 @@ const update = async () => { try { - await sdkForConsole.projects.updateOAuth2( + await sdk.forConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), appId, @@ -62,7 +62,7 @@ : provider.secret; - + {provider.name} OAuth2 Settings

@@ -103,7 +103,7 @@

URI

diff --git a/src/routes/console/project-[project]/auth/security/updateSessionLength.svelte b/src/routes/console/project-[project]/auth/security/updateSessionLength.svelte index 778ed6e0e..053fc4fea 100644 --- a/src/routes/console/project-[project]/auth/security/updateSessionLength.svelte +++ b/src/routes/console/project-[project]/auth/security/updateSessionLength.svelte @@ -6,7 +6,7 @@ import { Button, InputNumber, InputSelect } from '$lib/elements/forms'; import { createTimeUnitPair } from '$lib/helpers/unit'; import { addNotification } from '$lib/stores/notifications'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { project } from '../../store'; const projectId = $project.$id; @@ -15,7 +15,7 @@ async function updateSessionLength() { try { - await sdkForConsole.projects.updateAuthDuration(projectId, $baseValue); + await sdk.forConsole.projects.updateAuthDuration(projectId, $baseValue); invalidate(Dependencies.PROJECT); addNotification({ diff --git a/src/routes/console/project-[project]/auth/security/updateSessionsLimit.svelte b/src/routes/console/project-[project]/auth/security/updateSessionsLimit.svelte index 46e8e3f3d..f85374284 100644 --- a/src/routes/console/project-[project]/auth/security/updateSessionsLimit.svelte +++ b/src/routes/console/project-[project]/auth/security/updateSessionsLimit.svelte @@ -3,7 +3,7 @@ import { CardGrid, Heading } from '$lib/components'; import { Button, Form, InputNumber } from '$lib/elements/forms'; import { addNotification } from '$lib/stores/notifications'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { project } from '../../store'; const projectId = $project.$id; @@ -12,7 +12,7 @@ async function updateSessionsLimit() { try { - await sdkForConsole.projects.updateAuthSessionsLimit(projectId, maxSessions); + await sdk.forConsole.projects.updateAuthSessionsLimit(projectId, maxSessions); addNotification({ type: 'success', @@ -29,7 +29,7 @@ } - + Sessions Limit

Maximum number of active sessions allowed per user.

diff --git a/src/routes/console/project-[project]/auth/security/updateUsersLimit.svelte b/src/routes/console/project-[project]/auth/security/updateUsersLimit.svelte index 807630fdb..3e0dade55 100644 --- a/src/routes/console/project-[project]/auth/security/updateUsersLimit.svelte +++ b/src/routes/console/project-[project]/auth/security/updateUsersLimit.svelte @@ -7,7 +7,7 @@ import { Button } from '$lib/elements/forms'; import { clickOnEnter } from '$lib/helpers/a11y'; import { addNotification } from '$lib/stores/notifications'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { project } from '../../store'; const projectId = $project.$id; @@ -31,7 +31,7 @@ async function updateLimit() { submitting = true; try { - await sdkForConsole.projects.updateAuthLimit(projectId, isLimited ? newLimit : 0); + await sdk.forConsole.projects.updateAuthLimit(projectId, isLimited ? newLimit : 0); invalidate(Dependencies.PROJECT).then(() => (submitting = false)); addNotification({ type: 'success', diff --git a/src/routes/console/project-[project]/auth/settings/+page.svelte b/src/routes/console/project-[project]/auth/settings/+page.svelte index 78786f524..c40d7934e 100644 --- a/src/routes/console/project-[project]/auth/settings/+page.svelte +++ b/src/routes/console/project-[project]/auth/settings/+page.svelte @@ -4,7 +4,7 @@ import { InputSwitch } from '$lib/elements/forms'; import { Container } from '$lib/layout'; import { addNotification } from '$lib/stores/notifications'; - import { sdkForConsole } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { project } from '../../store'; import { authMethods, type AuthMethod } from '$lib/stores/auth-methods'; import { OAuthProviders } from '$lib/stores/oauth-providers'; @@ -22,7 +22,7 @@ async function authUpdate(box: AuthMethod) { try { - await sdkForConsole.projects.updateAuthStatus(projectId, box.method, box.value); + await sdk.forConsole.projects.updateAuthStatus(projectId, box.method, box.value); addNotification({ type: 'success', message: `${box.label} authentication has been ${ diff --git a/src/routes/console/project-[project]/auth/teams/[[page]]/+page.ts b/src/routes/console/project-[project]/auth/teams/[[page]]/+page.ts index dfd5d40df..ede361c0b 100644 --- a/src/routes/console/project-[project]/auth/teams/[[page]]/+page.ts +++ b/src/routes/console/project-[project]/auth/teams/[[page]]/+page.ts @@ -1,11 +1,10 @@ import { Query } from '@aw-labs/appwrite-console'; -import { sdkForProject } from '$lib/stores/sdk'; +import { sdk } from '$lib/stores/sdk'; import { pageToOffset } from '$lib/helpers/load'; import { PAGE_LIMIT } from '$lib/constants'; import type { PageLoad } from './$types'; -export const load: PageLoad = async ({ params, parent, url }) => { - await parent(); +export const load: PageLoad = async ({ params, url }) => { const page = Number(params.page); const offset = pageToOffset(page, PAGE_LIMIT); const search = url.search.slice(1) ?? undefined; @@ -14,7 +13,7 @@ export const load: PageLoad = async ({ params, parent, url }) => { offset, search, page, - teams: await sdkForProject.teams.list( + teams: await sdk.forProject.teams.list( [Query.limit(PAGE_LIMIT), Query.offset(offset), Query.orderDesc('$createdAt')], search ) diff --git a/src/routes/console/project-[project]/auth/teams/team-[team]/+layout.ts b/src/routes/console/project-[project]/auth/teams/team-[team]/+layout.ts index f7b8997b6..9859dfe08 100644 --- a/src/routes/console/project-[project]/auth/teams/team-[team]/+layout.ts +++ b/src/routes/console/project-[project]/auth/teams/team-[team]/+layout.ts @@ -1,18 +1,17 @@ import Breadcrumbs from './breadcrumbs.svelte'; import Header from './header.svelte'; -import { sdkForProject } from '$lib/stores/sdk'; +import { sdk } from '$lib/stores/sdk'; import type { LayoutLoad } from './$types'; import { Dependencies } from '$lib/constants'; import { error } from '@sveltejs/kit'; -export const load: LayoutLoad = async ({ params, parent, depends }) => { - await parent(); +export const load: LayoutLoad = async ({ params, depends }) => { depends(Dependencies.TEAM); try { return { header: Header, breadcrumbs: Breadcrumbs, - team: await sdkForProject.teams.get(params.team) + team: await sdk.forProject.teams.get(params.team) }; } catch (e) { throw error(e.code, e.message); diff --git a/src/routes/console/project-[project]/auth/teams/team-[team]/+page.svelte b/src/routes/console/project-[project]/auth/teams/team-[team]/+page.svelte index 10dd00347..b7e60e08d 100644 --- a/src/routes/console/project-[project]/auth/teams/team-[team]/+page.svelte +++ b/src/routes/console/project-[project]/auth/teams/team-[team]/+page.svelte @@ -4,7 +4,7 @@ import { CardGrid, Box, Heading, AvatarInitials } from '$lib/components'; import { Container } from '$lib/layout'; import { Button, InputText, Form } from '$lib/elements/forms'; - import { sdkForProject } from '$lib/stores/sdk'; + import { sdk } from '$lib/stores/sdk'; import { toLocaleDateTime } from '$lib/helpers/date'; import { addNotification } from '$lib/stores/notifications'; import { team } from './store'; @@ -22,7 +22,7 @@ async function updateName() { try { - await sdkForProject.teams.update($page.params.team, teamName); + await sdk.forProject.teams.update($page.params.team, teamName); invalidate(Dependencies.TEAM); addNotification({ message: 'Name has been updated', @@ -55,9 +55,9 @@
- + - Update Name + Name