diff --git a/e2e/journeys/upgrade-free-tier.spec.ts b/e2e/journeys/upgrade-free-tier.spec.ts index 76d5fafcd..80802f499 100644 --- a/e2e/journeys/upgrade-free-tier.spec.ts +++ b/e2e/journeys/upgrade-free-tier.spec.ts @@ -11,7 +11,12 @@ test('upgrade - free tier', async ({ page }) => { await page.waitForURL(/\/organization-[^/]+\/change-plan/); await page.locator('input[value="tier-1"]').click(); await page.getByRole('button', { name: 'add' }).first().click(); + await enterCreditCard(page); + + // wait for a second after adding a card to update the UI. + await page.waitForSelector('button#method[role="combobox"]'); + // skip members await page.getByRole('button', { name: 'change plan' }).click(); await page.waitForURL(/\/console\/project-(?:[a-z0-9]+-)?([^/]+)\/get-started/); diff --git a/src/lib/components/billing/paymentModal.svelte b/src/lib/components/billing/paymentModal.svelte index 9ef191311..c79602517 100644 --- a/src/lib/components/billing/paymentModal.svelte +++ b/src/lib/components/billing/paymentModal.svelte @@ -21,7 +21,7 @@ try { const card = await submitStripeCard(name, page?.params?.organization ?? null); modal.closeModal(); - invalidate(Dependencies.PAYMENT_METHODS); + await invalidate(Dependencies.PAYMENT_METHODS); dispatch('submit', card); addNotification({ type: 'success', diff --git a/src/lib/components/billing/selectPaymentMethod.svelte b/src/lib/components/billing/selectPaymentMethod.svelte index 9a7265c8b..30e5ea254 100644 --- a/src/lib/components/billing/selectPaymentMethod.svelte +++ b/src/lib/components/billing/selectPaymentMethod.svelte @@ -20,8 +20,19 @@ async function cardSaved(event: CustomEvent) { value = event.detail.$id; - invalidate(Dependencies.UPGRADE_PLAN); - invalidate(Dependencies.CREATE_ORGANIZATION); + + if (value) { + methods = { + ...methods, + total: methods.total + 1, + paymentMethods: [...methods.paymentMethods, event.detail] + }; + } + + await Promise.all([ + invalidate(Dependencies.UPGRADE_PLAN), + invalidate(Dependencies.ORGANIZATION) + ]); } onMount(() => { diff --git a/src/lib/components/billing/validateCreditModal.svelte b/src/lib/components/billing/validateCreditModal.svelte index e73ea2949..9b2f02691 100644 --- a/src/lib/components/billing/validateCreditModal.svelte +++ b/src/lib/components/billing/validateCreditModal.svelte @@ -58,6 +58,7 @@ placeholder="Promo code" id="code" label="Add promo code" + autofocus bind:value={coupon} /> diff --git a/src/lib/components/breadcrumbs.svelte b/src/lib/components/breadcrumbs.svelte index cbe0799c3..e29c4c8d0 100644 --- a/src/lib/components/breadcrumbs.svelte +++ b/src/lib/components/breadcrumbs.svelte @@ -101,7 +101,8 @@ async function createProjectsBottomSheet(organization: Organization): Promise { isLoadingProjects = true; - loadedProjects = await projects; + // null on non-org/project path like `onboarding`. + loadedProjects = (await projects) ?? loadedProjects; isLoadingProjects = false; const createProjectItem = { diff --git a/src/lib/components/columnSelector.svelte b/src/lib/components/columnSelector.svelte index dfcc7e2d4..42db1b9b5 100644 --- a/src/lib/components/columnSelector.svelte +++ b/src/lib/components/columnSelector.svelte @@ -31,49 +31,62 @@ } }; - onMount(async () => { + const saveColumnPreferences = () => { + const shownColumns = $columns.filter((n) => n.hide !== true).map((n) => n.id); + if (isCustomCollection) { - const prefs = preferences.getCustomTableColumns(page.params.table); - columns.set( - $columns.map((column) => { - column.hide = prefs?.includes(column.id) ?? false; + preferences.setCustomCollectionColumns(page.params.collection, shownColumns); + } else { + preferences.setColumns(shownColumns); + } + }; + + onMount(() => { + if (isCustomCollection) { + const shownColumns = preferences.getCustomCollectionColumns(page.params.collection); + + columns.update((columns) => { + return columns.map((column) => { + column.hide = !shownColumns.includes(column.id); return column; - }) - ); + }); + }); } else { const prefs = preferences.get(page.route); - // Override the shown columns only if a preference was set - if (prefs?.columns) { - columns.set( - $columns.map((column) => { - column.hide = prefs.columns?.includes(column.id) ?? false; + if (prefs?.columns && prefs.columns.length > 0) { + columns.update((cols) => { + return cols.map((column) => { + column.hide = !prefs.columns.includes(column.id); return column; - }) - ); + }); + }); } } - columns.subscribe((ctx) => { - const columns = ctx.filter((n) => n.hide === true).map((n) => n.id); - - if (isCustomCollection) { - preferences.setCustomCollectionColumns(columns); - } else { - preferences.setColumns(columns); - } - }); - calcMaxHeight(); }); let selectedColumnsNumber = $derived( $columns.reduce((acc, column) => { - if (column.hide === true) return acc; + if (column.hide) return acc; return ++acc; }, 0) ); + + function toggleColumn(column: Column) { + columns.update((cols) => + cols.map((col) => { + if (col.id === column.id) { + col.hide = !column.hide; + } + return col; + }) + ); + + saveColumnPreferences(); + } @@ -86,7 +99,7 @@ {#each $columns as column} {#if !column?.exclude} (column.hide = !column.hide)} + on:click={() => toggleColumn(column)} disabled={allowNoColumns ? false : selectedColumnsNumber <= 1 && column.hide !== true}> @@ -94,7 +107,7 @@ (column.hide = !column.hide)} /> + on:click={() => toggleColumn(column)} /> {column.title} diff --git a/src/lib/components/feedback/evaluation.svelte b/src/lib/components/feedback/evaluation.svelte index deaad320f..1b04a3f81 100644 --- a/src/lib/components/feedback/evaluation.svelte +++ b/src/lib/components/feedback/evaluation.svelte @@ -10,7 +10,12 @@ style="padding-block: 0.13rem"> {#each Array(11) as _, i}
  • - (value = i)}> + (value = i)}> {i}
  • diff --git a/src/lib/components/feedback/feedbackGeneral.svelte b/src/lib/components/feedback/feedbackGeneral.svelte index a60f65f01..021fa4661 100644 --- a/src/lib/components/feedback/feedbackGeneral.svelte +++ b/src/lib/components/feedback/feedbackGeneral.svelte @@ -6,6 +6,7 @@ diff --git a/src/lib/components/navbar.svelte b/src/lib/components/navbar.svelte index b1932715e..c87845b4e 100644 --- a/src/lib/components/navbar.svelte +++ b/src/lib/components/navbar.svelte @@ -51,7 +51,7 @@ import { base } from '$app/paths'; import { logout } from '$lib/helpers/logout'; import { app } from '$lib/stores/app'; - import { isTabletViewport } from '$lib/stores/viewport'; + import { isTabletViewport, isSmallViewport } from '$lib/stores/viewport'; import { isCloud } from '$lib/system.js'; import { user } from '$lib/stores/user'; import { Click, trackEvent } from '$lib/actions/analytics'; @@ -166,20 +166,22 @@ >Upgrade {/if} - - { - toggleFeedback(); - trackEvent(Click.FeedbackSubmitClick, { source: 'top_nav' }); - }} - >Feedback - - - - - + {#if !$isSmallViewport} + + { + toggleFeedback(); + trackEvent(Click.FeedbackSubmitClick, { source: 'top_nav' }); + }} + >Feedback + + + + + + {/if} - {:else} + {:else if $isSmallViewport}
    @@ -282,7 +282,6 @@ trackEvent(Click.SupportOpenClick, { source: 'side_nav' }); }}> Support - @@ -314,43 +313,33 @@
    {/if} - {#if project} -
    -
    - - - { - toggleFeedback(); - trackEvent('click_menu_feedback', { source: 'side_nav' }); - }} - >Feedback - - - - - + {#if project && $isSmallViewport} +
    + + + { + toggleFeedback(); + trackEvent('click_menu_feedback', { source: 'side_nav' }); + }} + >Feedback + + - - { - $showSupportModal = true; - trackEvent(Click.SupportOpenClick, { source: 'side_nav' }); - }}> - Support - - - - - - - -
    + + { + $showSupportModal = true; + trackEvent(Click.SupportOpenClick, { source: 'side_nav' }); + }}> + Support + + +
    {/if}
    diff --git a/src/lib/layout/createProject.svelte b/src/lib/layout/createProject.svelte index 1f75e59b1..856eea30f 100644 --- a/src/lib/layout/createProject.svelte +++ b/src/lib/layout/createProject.svelte @@ -34,6 +34,7 @@ label="Name" placeholder="Project name" required + autofocus bind:value={projectName} /> {#if !showCustomId}
    diff --git a/src/lib/layout/wizard.svelte b/src/lib/layout/wizard.svelte index 3cf61a924..8a0d696b0 100644 --- a/src/lib/layout/wizard.svelte +++ b/src/lib/layout/wizard.svelte @@ -50,7 +50,7 @@ if (confirmExit) { showExitModal = true; } else { - goto(href); + goBack(); trackEvent('wizard_exit', { from: 'escape' }); @@ -58,6 +58,8 @@ } } + const goBack = () => goto(href); + onMount(() => ($isNewWizardStatusOpen = true)); onDestroy(() => ($isNewWizardStatusOpen = false)); @@ -77,7 +79,7 @@ if (confirmExit) { showExitModal = true; } else { - goto(href); + goBack(); trackEvent('wizard_exit', { from: 'button' }); diff --git a/src/lib/stores/preferences.ts b/src/lib/stores/preferences.ts index 4742ba327..c6a630f3a 100644 --- a/src/lib/stores/preferences.ts +++ b/src/lib/stores/preferences.ts @@ -29,7 +29,7 @@ type PreferencesStore = { } & { hideAiDisclaimer?: boolean }; async function updateConsolePreferences(store: PreferencesStore): Promise { - const currentPreferences = get(user).prefs ?? (await sdk.forConsole.account.getPrefs()); + const currentPreferences = get(user)?.prefs ?? (await sdk.forConsole.account.getPrefs()); if (!currentPreferences?.console || Array.isArray(currentPreferences.console)) { currentPreferences.console = {}; } @@ -78,9 +78,9 @@ function createPreferences() { let newPrefsSnapshot: PreferencesStore; update((currentPrefs) => { - oldPrefsSnapshot = currentPrefs; + oldPrefsSnapshot = structuredClone(currentPrefs); callback(currentPrefs); - newPrefsSnapshot = currentPrefs; + newPrefsSnapshot = structuredClone(currentPrefs); return currentPrefs; }); @@ -148,16 +148,14 @@ function createPreferences() { return n; }), - setCustomCollectionColumns: (columns: Preferences['columns']) => + setCustomCollectionColumns: (tableId: string, columns: Preferences['columns']) => updateAndSync((n) => { - const table = page.params.table; - if (!n?.tables?.[table]) { + if (!n?.tables?.[tableId]) { n ??= {}; n.tables ??= {}; } - n.tables[table] = columns; - + n.tables[tableId] = Array.from(new Set(columns)); return n; }), loadTeamPrefs: async (id: string) => { @@ -189,6 +187,7 @@ function createPreferences() { return n; }); + await sdk.forConsole.teams.updatePrefs(orgId, teamPrefs); } }; diff --git a/src/routes/(console)/+layout.svelte b/src/routes/(console)/+layout.svelte index 4a6d3ac3b..452847d49 100644 --- a/src/routes/(console)/+layout.svelte +++ b/src/routes/(console)/+layout.svelte @@ -316,15 +316,19 @@ $: checkForUsageLimits($organization); - $: projects = sdk.forConsole.projects.list([ - Query.equal( - 'teamId', - // id from page params ?? id from store ?? id from preferences - page.params.organization ?? currentOrganizationId ?? data.currentOrgId - ), - Query.limit(5), - Query.orderDesc('$updatedAt') - ]); + $: isOnOnboarding = page.route?.id?.includes('/(console)/onboarding'); + + $: projects = isOnOnboarding + ? null + : sdk.forConsole.projects.list([ + Query.equal( + 'teamId', + // id from page params ?? id from store ?? id from preferences + page.params.organization ?? currentOrganizationId ?? data.currentOrgId + ), + Query.limit(5), + Query.orderDesc('$updatedAt') + ]); $: if ($requestedMigration) { openMigrationWizard(); diff --git a/src/routes/(console)/create-organization/+page.svelte b/src/routes/(console)/create-organization/+page.svelte index a45c2cdc3..7cb126160 100644 --- a/src/routes/(console)/create-organization/+page.svelte +++ b/src/routes/(console)/create-organization/+page.svelte @@ -186,6 +186,7 @@ bind:value={name} label="Organization name" placeholder="Enter organization name" + autofocus id="name" required /> diff --git a/src/routes/(console)/create-organization/+page.ts b/src/routes/(console)/create-organization/+page.ts index f6f9eeb7f..9aba3aefd 100644 --- a/src/routes/(console)/create-organization/+page.ts +++ b/src/routes/(console)/create-organization/+page.ts @@ -5,8 +5,9 @@ import type { Coupon } from '$lib/sdk/billing'; import type { Organization } from '$lib/stores/organization'; export const load: PageLoad = async ({ url, parent, depends }) => { - depends(Dependencies.CREATE_ORGANIZATION); const { organizations } = await parent(); + depends(Dependencies.CREATE_ORGANIZATION); + const [coupon, paymentMethods] = await Promise.all([ getCoupon(url), sdk.forConsole.billing.listPaymentMethods() diff --git a/src/routes/(console)/onboarding/create-organization/+page.svelte b/src/routes/(console)/onboarding/create-organization/+page.svelte index 0118c0e3c..b765cbd6a 100644 --- a/src/routes/(console)/onboarding/create-organization/+page.svelte +++ b/src/routes/(console)/onboarding/create-organization/+page.svelte @@ -2,14 +2,14 @@ import { isCloud } from '$lib/system'; import { sdk } from '$lib/stores/sdk'; import { ID } from '@appwrite.io/console'; - import { BillingPlan } from '$lib/constants'; + import { BillingPlan, Dependencies } from '$lib/constants'; import { tierToPlan } from '$lib/stores/billing'; import { addNotification } from '$lib/stores/notifications'; import { loadAvailableRegions } from '$routes/(console)/regions'; import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { Button, Card, Layout, Input, Typography, Spinner } from '@appwrite.io/pink-svelte'; import { Form } from '$lib/elements/forms/index.js'; - import { goto } from '$app/navigation'; + import { goto, invalidate } from '$app/navigation'; import { base } from '$app/paths'; let isLoading = false; @@ -47,6 +47,10 @@ if (organization) { loadAvailableRegions(organization?.$id).then(); await goto(`${base}/organization-${organization.$id}`); + + // fixes an edge case where + // the org is not available for some reason! + await invalidate(Dependencies.CREATE_ORGANIZATION); } isLoading = false; } @@ -66,6 +70,7 @@ - + Create diff --git a/src/routes/(console)/organization-[organization]/change-plan/+page.svelte b/src/routes/(console)/organization-[organization]/change-plan/+page.svelte index f31095d81..e0bc8eb0c 100644 --- a/src/routes/(console)/organization-[organization]/change-plan/+page.svelte +++ b/src/routes/(console)/organization-[organization]/change-plan/+page.svelte @@ -271,11 +271,7 @@ Change plan - Appwrite - +
    @@ -338,12 +334,12 @@
    - {:then paymentMethods} + {:then}
    + bind:methods={paymentMethods}> {#if !selectedCoupon?.code} {#if paymentMethodId} diff --git a/src/routes/(console)/organization-[organization]/createMember.svelte b/src/routes/(console)/organization-[organization]/createMember.svelte index 9ab8334de..5269183e7 100644 --- a/src/routes/(console)/organization-[organization]/createMember.svelte +++ b/src/routes/(console)/organization-[organization]/createMember.svelte @@ -70,7 +70,7 @@ id="email" label="Email" placeholder="Enter email" - autofocus={true} + autofocus bind:value={email} /> {#if isCloud} diff --git a/src/routes/(console)/organization-[organization]/domains/add-domain/+page.svelte b/src/routes/(console)/organization-[organization]/domains/add-domain/+page.svelte index 9e0903a61..1b43c1492 100644 --- a/src/routes/(console)/organization-[organization]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/organization-[organization]/domains/add-domain/+page.svelte @@ -50,6 +50,7 @@ name="domain" bind:value={domainName} required + autofocus placeholder="example.com" /> diff --git a/src/routes/(console)/organization-[organization]/domains/domain-[domain]/createRecordModal.svelte b/src/routes/(console)/organization-[organization]/domains/domain-[domain]/createRecordModal.svelte index 1ddcdb4e6..307d6c1e7 100644 --- a/src/routes/(console)/organization-[organization]/domains/domain-[domain]/createRecordModal.svelte +++ b/src/routes/(console)/organization-[organization]/domains/domain-[domain]/createRecordModal.svelte @@ -84,7 +84,13 @@ DNS records map domain names to IP addresses or other resources. - + diff --git a/src/routes/(console)/organization-[organization]/members/+page.svelte b/src/routes/(console)/organization-[organization]/members/+page.svelte index ce1d59ec8..c906ece51 100644 --- a/src/routes/(console)/organization-[organization]/members/+page.svelte +++ b/src/routes/(console)/organization-[organization]/members/+page.svelte @@ -73,7 +73,7 @@ newMemberModal.set(true)} + on:click={() => newMemberModal.set(true)} disabled={isCloud ? !$currentPlan?.addons?.seats?.supported : false}> Invite diff --git a/src/routes/(console)/organization-[organization]/usage/[[invoice]]/ProjectBreakdown.svelte b/src/routes/(console)/organization-[organization]/usage/[[invoice]]/ProjectBreakdown.svelte index f1141f2c8..98a028282 100644 --- a/src/routes/(console)/organization-[organization]/usage/[[invoice]]/ProjectBreakdown.svelte +++ b/src/routes/(console)/organization-[organization]/usage/[[invoice]]/ProjectBreakdown.svelte @@ -115,7 +115,7 @@ { id: 'reads', hide: !databaseOperationMetric }, { id: 'writes', hide: !databaseOperationMetric }, { id: 'metric', hide: !!databaseOperationMetric }, - { id: 'costs' } + { id: 'costs', hide: true } ]} let:root> diff --git a/src/routes/(console)/organization-[organization]/usage/[[invoice]]/totalMembers.svelte b/src/routes/(console)/organization-[organization]/usage/[[invoice]]/totalMembers.svelte index 1609ddbf6..15176735f 100644 --- a/src/routes/(console)/organization-[organization]/usage/[[invoice]]/totalMembers.svelte +++ b/src/routes/(console)/organization-[organization]/usage/[[invoice]]/totalMembers.svelte @@ -52,7 +52,7 @@
    - + {#snippet children(paginatedItems: typeof members.memberships)} diff --git a/src/routes/(console)/project-[region]-[project]/+layout.ts b/src/routes/(console)/project-[region]-[project]/+layout.ts index a0cd52c69..c1fb52045 100644 --- a/src/routes/(console)/project-[region]-[project]/+layout.ts +++ b/src/routes/(console)/project-[region]-[project]/+layout.ts @@ -34,7 +34,9 @@ export const load: LayoutLoad = async ({ params, depends, parent }) => { // fetch if not available in `plansInfo` includedInBasePlans ? plansInfo.get(organization.billingPlan) - : sdk.forConsole.billing.getOrganizationPlan(organization.$id), + : isCloud + ? sdk.forConsole.billing.getOrganizationPlan(organization.$id) + : null, loadAvailableRegions(project.teamId) ]); diff --git a/src/routes/(console)/project-[region]-[project]/auth/+page.svelte b/src/routes/(console)/project-[region]-[project]/auth/+page.svelte index aa4f5702c..1f2dc4423 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/+page.svelte @@ -60,7 +60,7 @@ - @@ -173,7 +173,7 @@ href="https://appwrite.io/docs/references/cloud/server-nodejs/users" target="user" allowCreate={$canWriteUsers} - on:mousedown={() => showCreateUser.set(true)} /> + on:click={() => showCreateUser.set(true)} /> {/if} diff --git a/src/routes/(console)/project-[region]-[project]/auth/createUser.svelte b/src/routes/(console)/project-[region]-[project]/auth/createUser.svelte index ac687b508..201e85353 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/createUser.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/createUser.svelte @@ -56,7 +56,7 @@ - + diff --git a/src/routes/(console)/project-[region]-[project]/auth/security/updateSessionLength.svelte b/src/routes/(console)/project-[region]-[project]/auth/security/updateSessionLength.svelte index 14edb541c..295ce51c6 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/security/updateSessionLength.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/security/updateSessionLength.svelte @@ -7,11 +7,13 @@ import { createTimeUnitPair } from '$lib/helpers/unit'; import { addNotification } from '$lib/stores/notifications'; import { sdk } from '$lib/stores/sdk'; - import { project } from '../../store'; + import { project as projectStore } from '../../store'; import { Layout } from '@appwrite.io/pink-svelte'; + import { page } from '$app/state'; - const { value, unit, baseValue, units } = createTimeUnitPair($project?.authDuration); - const options = units.map((v) => ({ label: v.name, value: v.name })); + const project = $derived($projectStore ?? page.data?.project); + const { value, unit, baseValue, units } = $derived(createTimeUnitPair(project?.authDuration)); + const options = $derived(units.map((v) => ({ label: v.name, value: v.name }))); async function updateSessionLength() { try { @@ -43,7 +45,7 @@ - diff --git a/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/createMembership.svelte b/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/createMembership.svelte index ab227bb65..35fb78e81 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/createMembership.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/createMembership.svelte @@ -52,7 +52,7 @@ label="Email" placeholder="Enter email" required={true} - autofocus={true} + autofocus bind:value={email} /> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte index 26d2762d2..5f6276565 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte @@ -40,7 +40,7 @@ id: column.key, title: column.key, type: column.type as ColumnType, - show: selected?.includes(column.key) ?? true, + hide: !selected?.includes(column.key), array: column?.array, format: 'format' in column && column?.format === 'enum' ? column.format : null, elements: 'elements' in column ? column.elements : null @@ -51,7 +51,7 @@ ...['$id', '$createdAt', '$updatedAt'].map((id) => ({ id, title: id, - show: true, + hide: false, type: (id === '$id' ? 'string' : 'datetime') as ColumnType })) ]); @@ -95,11 +95,11 @@ - + {#if flags.showCsvImport(data)} + +
    + diff --git a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte index ad574bf26..6f657be43 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte @@ -77,6 +77,7 @@ id="domain" bind:value={domainName} required + autofocus placeholder="appwrite.example.com" /> diff --git a/src/routes/(console)/project-[region]-[project]/sites/(components)/logsTimer.svelte b/src/routes/(console)/project-[region]-[project]/sites/(components)/logsTimer.svelte index 9a79c5e58..204ce91ec 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/(components)/logsTimer.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/(components)/logsTimer.svelte @@ -10,14 +10,7 @@ - {#if ['processing'].includes(status)} - - - 0s - - - - {:else if ['building'].includes(status)} + {#if ['processing', 'building'].includes(status)}

    diff --git a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte index 228e42db9..e8eb7e015 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte @@ -3,6 +3,7 @@ import { humanFileSize } from '$lib/helpers/sizeConvertion'; import { formatTimeDetailed } from '$lib/helpers/timeConversion'; import type { Models } from '@appwrite.io/console'; + import { page } from '$app/state'; import { Badge, Divider, @@ -45,7 +46,7 @@ } function getFilePreview(fileId: string) { - return sdk.forConsole.storage.getFileView('screenshots', fileId); + return sdk.forConsoleIn(page.params.region).storage.getFileView('screenshots', fileId); } diff --git a/src/routes/(console)/project-[region]-[project]/sites/grid.svelte b/src/routes/(console)/project-[region]-[project]/sites/grid.svelte index 3e740b359..36b12b562 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/grid.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/grid.svelte @@ -33,7 +33,7 @@ } function getFilePreview(fileId: string) { - return sdk.forConsole.storage.getFileView('screenshots', fileId); + return sdk.forConsoleIn(page.params.region).storage.getFileView('screenshots', fileId); } diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/createPreviewDomainModal.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/createPreviewDomainModal.svelte index fa23726b0..ebc3009c4 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/createPreviewDomainModal.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/createPreviewDomainModal.svelte @@ -88,7 +88,7 @@ - + .{$regionalConsoleVariables._APP_DOMAIN_SITES} diff --git a/src/routes/(console)/project-[region]-[project]/storage/+page.svelte b/src/routes/(console)/project-[region]-[project]/storage/+page.svelte index 9d780c407..7bbac81ce 100644 --- a/src/routes/(console)/project-[region]-[project]/storage/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/storage/+page.svelte @@ -44,10 +44,7 @@ hideColumns={!data.buckets.total} hideView={!data.buckets.total} /> {#if $canWriteBuckets} - diff --git a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/+page.svelte b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/+page.svelte index 859cf529c..1e081fb8e 100644 --- a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/+page.svelte @@ -169,7 +169,15 @@ - @@ -178,7 +186,9 @@ { + on:click={(e) => { + e.stopPropagation(); + e.preventDefault(); selectedFile = file; showDelete = true; }}> diff --git a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/deleteFile.svelte b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/deleteFile.svelte index 944a12b11..2008ccdc4 100644 --- a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/deleteFile.svelte +++ b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/deleteFile.svelte @@ -32,5 +32,5 @@ - Are you sure you want to delete {file.name}? +

    Are you sure you want to delete {file.name}?

    diff --git a/src/routes/(public)/(guest)/login/+page.svelte b/src/routes/(public)/(guest)/login/+page.svelte index 799af47a1..5baf2d4ec 100644 --- a/src/routes/(public)/(guest)/login/+page.svelte +++ b/src/routes/(public)/(guest)/login/+page.svelte @@ -32,7 +32,11 @@ } if (data?.couponData?.code) { - trackEvent(Submit.AccountCreate, { campaign_name: data?.couponData?.code }); + trackEvent(Submit.AccountCreate, { + campaign_name: data?.couponData?.code, + email: mail, + name: $user?.name + }); await goto(`${base}/apply-credit?code=${data?.couponData?.code}`); return; } diff --git a/src/routes/(public)/(guest)/register/+page.svelte b/src/routes/(public)/(guest)/register/+page.svelte index e166d5ffd..37faff2df 100644 --- a/src/routes/(public)/(guest)/register/+page.svelte +++ b/src/routes/(public)/(guest)/register/+page.svelte @@ -32,7 +32,11 @@ await sdk.forConsole.account.create(ID.unique(), mail, pass, name ?? ''); await sdk.forConsole.account.createEmailPasswordSession(mail, pass); - trackEvent(Submit.AccountCreate, { campaign_name: data?.couponData?.code }); + trackEvent(Submit.AccountCreate, { + campaign_name: data?.couponData?.code, + email: mail, + name: name + }); if (data?.couponData?.code) { await goto(`${base}/apply-credit?code=${data?.couponData?.code}`); diff --git a/src/routes/(public)/(guest)/register/invite/[slug]/+page.svelte b/src/routes/(public)/(guest)/register/invite/[slug]/+page.svelte index 29ede2c9d..54a49e6c1 100644 --- a/src/routes/(public)/(guest)/register/invite/[slug]/+page.svelte +++ b/src/routes/(public)/(guest)/register/invite/[slug]/+page.svelte @@ -13,7 +13,7 @@ import { sdk } from '$lib/stores/sdk'; import { Unauthenticated } from '$lib/layout'; import { Dependencies } from '$lib/constants'; - import { trackEvent } from '$lib/actions/analytics'; + import { Submit, trackEvent } from '$lib/actions/analytics'; import { onMount } from 'svelte'; import { page } from '$app/state'; import LoginLight from '$lib/images/login/login-light-mode.svg'; @@ -74,10 +74,16 @@ await sdk.forConsole.account.createEmailPasswordSession(mail, pass); const prefs = await sdk.forConsole.account.getPrefs(); const newPrefs = { ...prefs, code }; - await sdk.forConsole.account.updatePrefs(newPrefs); - await invalidate(Dependencies.ACCOUNT); + await Promise.all([ + sdk.forConsole.account.updatePrefs(newPrefs), + invalidate(Dependencies.ACCOUNT) + ]); await goto(base); - trackEvent('submit_account_create', { code: code }); + trackEvent(Submit.AccountCreate, { + email: mail, + name: name, + code: code + }); } } catch (error) { addNotification({ diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts index 78d86d2e4..21fe42dde 100644 --- a/src/routes/+layout.ts +++ b/src/routes/+layout.ts @@ -16,6 +16,7 @@ export const ssr = false; export const load: LayoutLoad = async ({ depends, url, route }) => { depends(Dependencies.ACCOUNT); + depends(Dependencies.CREATE_ORGANIZATION); const [account, error] = (await sdk.forConsole.account .get()