Skip to content

Commit f581e7a

Browse files
committed
Merge branch 'main' into feat-documentsdb
2 parents f008cc5 + bd33c04 commit f581e7a

10 files changed

Lines changed: 107 additions & 65 deletions

File tree

src/lib/components/git/repositories.svelte

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,12 @@
4949
let isLoadingRepositories = $state(null);
5050
let installationsMap = $state(null);
5151
let offset = $state(0);
52+
let connectingRepositoryId = $state<string | null>(null);
53+
let loadRepositoriesRequestId = 0;
5254
const limit = 5;
5355
5456
onMount(() => {
57+
isLoadingRepositories = true;
5558
loadInstallations();
5659
});
5760
@@ -115,6 +118,8 @@
115118
}
116119
117120
async function loadRepositories(installationId: string, search: string) {
121+
const requestId = ++loadRepositoriesRequestId;
122+
118123
const result = await sdk
119124
.forProject(page.params.region, page.params.project)
120125
.vcs.listRepositories({
@@ -125,6 +130,11 @@
125130
queries: [Query.limit(limit), Query.offset(offset)]
126131
});
127132
133+
// Stale request
134+
if (requestId !== loadRepositoriesRequestId) {
135+
return;
136+
}
137+
128138
$repositories.repositories =
129139
product === 'functions'
130140
? (result as unknown as Models.ProviderRepositoryRuntimeList)
@@ -186,10 +196,7 @@
186196
debouncedLoadRepositories.cancel();
187197
}}
188198
bind:value={selectedInstallation} />
189-
<InputSearch
190-
placeholder="Search repositories"
191-
bind:value={search}
192-
disabled={!search && !$repositories?.repositories?.length} />
199+
<InputSearch placeholder="Search repositories" bind:value={search} />
193200
</Layout.Stack>
194201
{/if}
195202
</Layout.Stack>
@@ -266,7 +273,11 @@
266273
size="xs"
267274
variant="secondary"
268275
style="flex-shrink: 0;"
269-
on:click={() => connect(repo)}>
276+
disabled={!!connectingRepositoryId}
277+
on:click={() => {
278+
connectingRepositoryId = repo.id;
279+
connect(repo);
280+
}}>
270281
Connect
271282
</PinkButton.Button>
272283
{/if}
@@ -305,7 +316,7 @@
305316
<PaginationInline
306317
{limit}
307318
bind:offset
308-
total={$repositories.total}
319+
total={isLoadingRepositories ? 0 : $repositories.total}
309320
hidePages={true}
310321
on:change={loadRepositoryPage} />
311322
</Layout.Stack>

src/lib/components/promos/imagine.svelte

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script lang="ts">
22
import { NoToneMapping } from 'three';
33
import { Canvas } from '@threlte/core';
4-
import ProductHuntSvg from './product-hunt.svg';
4+
import ImagineSvg from './imagine.svg';
55
import ImaginationShader from './shader.svelte';
66
</script>
77

@@ -12,11 +12,7 @@
1212
</Canvas>
1313
</div>
1414

15-
<!--- Hidden logo
1615
<img src={ImagineSvg} alt="Imagine" class="imagine-logo" />
17-
-->
18-
19-
<img src={ProductHuntSvg} alt="Product Hunt" class="imagine-logo" />
2016
</div>
2117

2218
<style>
@@ -38,7 +34,7 @@
3834
top: 50%;
3935
left: 50%;
4036
width: auto;
41-
height: 40px;
37+
height: 24px;
4238
position: absolute;
4339
transform: translate(-50%, -50%);
4440
}

src/lib/components/promos/product-hunt.svg

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/routes/(console)/bottomAlerts.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@ const listOfPromotions: BottomModalAlertItem[] = [];
1313

1414
if (isCloud && SHOW_IMAGINE_PROMO) {
1515
const imaginePromo: BottomModalAlertItem = {
16-
id: 'modal:imagine-ph-launch-console',
16+
id: 'modal:imagine.dev',
1717
backgroundComponent: Imagine,
18-
title: 'Imagine is live on Product Hunt',
19-
message: 'Ask questions, share feedback, and support the launch',
18+
title: 'Introducing Imagine',
19+
message: 'The most complete AI builder to date',
2020
importance: 8,
2121
scope: 'everywhere',
2222
plan: 'free',
2323
cta: {
24-
text: 'Head to Product Hunt',
24+
text: 'Try it now',
2525
color: {
2626
light: '#FFFFFF',
2727
dark: '#000000'
@@ -34,7 +34,7 @@ if (isCloud && SHOW_IMAGINE_PROMO) {
3434
light: '#333333',
3535
dark: '#CCCCCC'
3636
},
37-
link: () => 'https://apwr.dev/imagine-ph-appwrite-console',
37+
link: () => 'https://imagine.dev',
3838
external: true,
3939
hideOnClick: true
4040
},

src/routes/(console)/organization-[organization]/change-plan/+page.svelte

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { PlanComparisonBox, PlanSelection, SelectPaymentMethod } from '$lib/components/billing';
77
import ValidateCreditModal from '$lib/components/billing/validateCreditModal.svelte';
88
import { Dependencies, feedbackDowngradeOptions } from '$lib/constants';
9-
import { Button, Form, InputSelect, InputTags, InputTextarea } from '$lib/elements/forms';
9+
import { Button, Form, InputTags, InputTextarea } from '$lib/elements/forms';
1010
import { formatCurrency } from '$lib/helpers/numbers.js';
1111
import { Wizard } from '$lib/layout';
1212
import {
@@ -449,20 +449,19 @@
449449
</Fieldset>
450450
{/if}
451451
{#if isDowngrade && selectedPlan.group === BillingPlanGroup.Starter && !data.hasFreeOrgs}
452-
<Fieldset legend="Feedback">
452+
<Fieldset legend="Reason for plan change">
453453
<Layout.Stack gap="xl">
454-
<InputSelect
454+
<!--<InputSelect
455455
id="reason"
456456
label="Reason for plan change"
457457
placeholder="Select one"
458458
required
459459
options={feedbackDowngradeOptions}
460-
bind:value={feedbackDowngradeReason} />
460+
bind:value={feedbackDowngradeReason} />-->
461461
<InputTextarea
462462
id="comment"
463463
required
464-
label="If you need to elaborate, please do so here"
465-
placeholder="Enter feedback"
464+
placeholder="Please enter your feedback"
466465
bind:value={feedbackMessage} />
467466
</Layout.Stack>
468467
</Fieldset>

src/routes/(console)/project-[region]-[project]/functions/create-function/+page.svelte

Lines changed: 42 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<script lang="ts">
2-
import { base } from '$app/paths';
32
import { SvgIcon } from '$lib/components';
43
import { page } from '$app/state';
54
import { Click, trackEvent } from '$lib/actions/analytics';
65
import type { Models } from '@appwrite.io/console';
76
import { isSelfHosted } from '$lib/system';
8-
import { afterNavigate, goto } from '$app/navigation';
7+
import { goto } from '$app/navigation';
8+
import { resolveRoute } from '$lib/stores/navigation';
99
import { installation, repository } from '$lib/stores/vcs';
1010
import { Repositories } from '$lib/components/git';
1111
import {
@@ -26,11 +26,7 @@
2626
export let data;
2727
2828
const isVcsEnabled = $regionalConsoleVariables?._APP_VCS_ENABLED === true;
29-
const wizardBase = `${base}/project-${page.params.region}-${page.params.project}/functions`;
30-
let previousPage: string = wizardBase;
31-
afterNavigate(({ from }) => {
32-
previousPage = from?.url?.pathname || previousPage;
33-
});
29+
const wizardBase = resolveRoute('/(console)/project-[region]-[project]/functions', page.params);
3430
3531
let selectedRepository: string;
3632
@@ -56,11 +52,19 @@
5652
function connect(e: Models.ProviderRepository) {
5753
trackEvent(Click.ConnectRepositoryClick, { from: 'cover' });
5854
repository.set(e);
59-
goto(`${wizardBase}/create-function/repository-${e.id}?installation=${$installation.$id}`);
55+
goto(
56+
resolveRoute(
57+
'/(console)/project-[region]-[project]/functions/create-function/repository-[repository]',
58+
{
59+
...page.params,
60+
repository: e.id
61+
}
62+
) + `?installation=${$installation.$id}`
63+
);
6064
}
6165
</script>
6266

63-
<Wizard title="Create function" href={previousPage} column columnSize="l" hideFooter>
67+
<Wizard title="Create function" href={wizardBase} column columnSize="l" hideFooter>
6468
<Layout.Stack gap="l">
6569
<Layout.GridFraction start={4} end={6} gap="l" rowSize="auto">
6670
<Card.Base>
@@ -105,10 +109,13 @@
105109
}}
106110
{connect} />
107111
</Layout.Stack>
108-
{#if data.installations.total}
112+
{#if $installation}
109113
<Layout.Stack gap="l">
110114
<Divider />
111-
<Link variant="quiet" href="#/">
115+
<Link
116+
variant="quiet"
117+
external
118+
href={`https://github.com/settings/installations/${$installation.providerInstallationId}`}>
112119
<Layout.Stack direction="row" gap="xs">
113120
Missing a repository? check your permissions <Icon
114121
icon={IconArrowSmRight} />
@@ -140,7 +147,13 @@
140147
runtime: template.name
141148
});
142149
}}
143-
href={`${wizardBase}/create-function/template-${starterTemplate.id}?runtime=${runtimeDetail.$id}`}>
150+
href={resolveRoute(
151+
'/(console)/project-[region]-[project]/functions/create-function/template-[template]',
152+
{
153+
...page.params,
154+
template: starterTemplate.id
155+
}
156+
) + `?runtime=${runtimeDetail.$id}`}>
144157
<Layout.Stack direction="row" gap="s" alignItems="center">
145158
<Avatar size="xs" alt={template.name} empty={!template.name}>
146159
<SvgIcon name={iconName} iconSize="small" />
@@ -168,7 +181,13 @@
168181
<Card.Link
169182
radius="s"
170183
padding="xs"
171-
href={`${wizardBase}/create-function/template-${template.id}`}
184+
href={resolveRoute(
185+
'/(console)/project-[region]-[project]/functions/create-function/template-[template]',
186+
{
187+
...page.params,
188+
template: template.id
189+
}
190+
)}
172191
on:click={() => {
173192
trackEvent('click_connect_template', {
174193
from: 'cover',
@@ -198,7 +217,12 @@
198217
{/each}
199218
</Layout.Grid>
200219

201-
<Link variant="quiet" href={`${wizardBase}/templates`}>
220+
<Link
221+
variant="quiet"
222+
href={resolveRoute(
223+
'/(console)/project-[region]-[project]/functions/templates',
224+
page.params
225+
)}>
202226
<Layout.Stack direction="row" gap="xs">
203227
Browse all templates <Icon icon={IconArrowSmRight} />
204228
</Layout.Stack>
@@ -212,7 +236,10 @@
212236
on:click={() => {
213237
trackEvent('click_create_function_manual', { from: 'cover' });
214238
}}
215-
href={`${wizardBase}/create-function/manual`}>manually</Link>
239+
href={resolveRoute(
240+
'/(console)/project-[region]-[project]/functions/create-function/manual',
241+
page.params
242+
)}>manually</Link>
216243
or using the CLI.
217244
<Link href="https://appwrite.io/docs/products/functions/deployment" external
218245
>Learn more</Link

src/routes/(console)/project-[region]-[project]/functions/function-[function]/(components)/deploymentCard.svelte

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import { func } from '../store';
1717
import { capitalize } from '$lib/helpers/string';
1818
import { getEffectiveBuildStatus } from '$lib/helpers/buildTimeout';
19+
import { deploymentStatusConverter } from '$lib/stores/git';
1920
import { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store';
2021
import { isCloud } from '$lib/system';
2122
import { IconInfo } from '@appwrite.io/pink-icons-svelte';
@@ -38,8 +39,11 @@
3839
footer?: Snippet;
3940
} = $props();
4041
41-
let effectiveStatus = $derived(getEffectiveBuildStatus(deployment, $regionalConsoleVariables));
42-
let totalSize = $derived(humanFileSize(deployment?.totalSize ?? 0));
42+
const effectiveStatus = $derived(
43+
getEffectiveBuildStatus(deployment, $regionalConsoleVariables)
44+
);
45+
const displayStatus = $derived(effectiveStatus === 'finalizing' ? 'ready' : effectiveStatus);
46+
const totalSize = $derived(humanFileSize(deployment?.totalSize ?? 0));
4347
</script>
4448

4549
{#snippet titleSnippet(title: string)}
@@ -129,7 +133,9 @@
129133
<Layout.Stack gap="xxs" inline>
130134
{@render titleSnippet('Status')}
131135
<Typography.Text variant="m-400" color="--fgcolor-neutral-primary">
132-
<Status status={effectiveStatus} label={effectiveStatus} />
136+
<Status
137+
status={deploymentStatusConverter(displayStatus)}
138+
label={displayStatus} />
133139
</Typography.Text>
134140
</Layout.Stack>
135141
{:else}

src/routes/(console)/project-[region]-[project]/functions/function-[function]/deployment-[deployment]/+page.svelte

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,10 @@
4040
4141
let { data } = $props();
4242
43-
let effectiveStatus = $derived(
43+
const effectiveStatus = $derived(
4444
getEffectiveBuildStatus(data.deployment, $regionalConsoleVariables)
4545
);
46+
const displayStatus = $derived(effectiveStatus === 'finalizing' ? 'ready' : effectiveStatus);
4647
let showDelete = $state(false);
4748
let showCancel = $state(false);
4849
let showActivate = $state(false);
@@ -157,9 +158,9 @@
157158
<Card.Base padding="s">
158159
<Accordion
159160
title="Deployment logs"
160-
badge={capitalize(effectiveStatus)}
161+
badge={capitalize(displayStatus)}
161162
open
162-
badgeType={badgeTypeDeployment(effectiveStatus)}
163+
badgeType={badgeTypeDeployment(displayStatus)}
163164
hideDivider>
164165
<Layout.Stack gap="xl">
165166
{#key data.deployment.buildLogs}

0 commit comments

Comments
 (0)