Skip to content

Commit 75d7523

Browse files
authored
Merge pull request #2657 from appwrite/fix-pagination
2 parents 4ec08c1 + 90fb24e commit 75d7523

1 file changed

Lines changed: 52 additions & 38 deletions

File tree

  • src/routes/(console)/organization-[organization]

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

Lines changed: 52 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,47 @@
3535
IconReact,
3636
IconUnity
3737
} from '@appwrite.io/pink-icons-svelte';
38+
import type { PageProps } from './$types';
3839
import { getPlatformInfo } from '$lib/helpers/platform';
3940
import CreateProjectCloud from './createProjectCloud.svelte';
4041
import { currentPlan, regions as regionsStore } from '$lib/stores/organization';
4142
import SelectProjectCloud from '$lib/components/billing/alerts/selectProjectCloud.svelte';
4243
import ArchiveProject from '$lib/components/archiveProject.svelte';
4344
44-
export let data;
45+
let { data }: PageProps = $props();
4546
46-
let showCreate = false;
47-
let addOrganization = false;
48-
let showSelectProject = false;
49-
let showCreateProjectCloud = false;
50-
let freePlanAlertDismissed = false;
47+
let showCreate = $state(false);
48+
let addOrganization = $state(false);
49+
let showSelectProject = $state(false);
50+
let showCreateProjectCloud = $state(false);
51+
let freePlanAlertDismissed = $state(false);
5152
52-
let searchQuery: SearchQuery;
53+
let searchQuery: SearchQuery | null = $state(null);
54+
55+
const projectCreationDisabled = $derived.by(() => {
56+
return (
57+
(isCloud &&
58+
getServiceLimit('projects', null, data.currentPlan) <= data.projects.total) ||
59+
(isCloud && $readOnly && !GRACE_PERIOD_OVERRIDE) ||
60+
!$canWriteProjects
61+
);
62+
});
63+
64+
const reachedProjectLimit = $derived.by(() => {
65+
return (
66+
isCloud && getServiceLimit('projects', null, data.currentPlan) <= data.projects.total
67+
);
68+
});
69+
70+
const projectsLimit = $derived.by(() => {
71+
return getServiceLimit('projects', null, data.currentPlan);
72+
});
73+
74+
const projectsToArchive = $derived.by(() => {
75+
return isCloud
76+
? data.projects.projects.filter((project) => project.status === 'archived')
77+
: [];
78+
});
5379
5480
function filterPlatforms(platforms: { name: string; icon: string }[]) {
5581
return platforms.filter(
@@ -82,28 +108,6 @@
82108
}
83109
}
84110
85-
$: projectCreationDisabled =
86-
(isCloud && getServiceLimit('projects', null, data.currentPlan) <= data.projects.total) ||
87-
(isCloud && $readOnly && !GRACE_PERIOD_OVERRIDE) ||
88-
!$canWriteProjects;
89-
90-
$: reachedProjectLimit =
91-
isCloud && getServiceLimit('projects', null, data.currentPlan) <= data.projects.total;
92-
$: projectsLimit = getServiceLimit('projects', null, data.currentPlan);
93-
94-
$: $registerCommands([
95-
{
96-
label: 'Create project',
97-
callback: () => {
98-
showCreate = true;
99-
},
100-
keys: ['c'],
101-
disabled: projectCreationDisabled,
102-
group: 'projects',
103-
icon: IconPlus
104-
}
105-
]);
106-
107111
function dismissFreePlanAlert() {
108112
freePlanAlertDismissed = true;
109113
const notificationId = `freePlanAlert_${data.organization.$id}`;
@@ -132,14 +136,24 @@
132136
return project.status === 'archived';
133137
}
134138
135-
$: projectsToArchive = isCloud
136-
? data.projects.projects.filter((project) => project.status === 'archived')
137-
: [];
138-
139-
$: activeProjects = data.projects.projects.filter((project) => project.status !== 'archived');
140139
function clearSearch() {
141140
searchQuery?.clearInput();
142141
}
142+
143+
$effect(() => {
144+
$registerCommands([
145+
{
146+
label: 'Create project',
147+
callback: () => {
148+
showCreate = true;
149+
},
150+
keys: ['c'],
151+
disabled: projectCreationDisabled,
152+
group: 'projects',
153+
icon: IconPlus
154+
}
155+
]);
156+
});
143157
</script>
144158

145159
<SelectProjectCloud
@@ -221,13 +235,13 @@
221235
</Alert.Inline>
222236
{/if}
223237

224-
{#if activeProjects.length > 0}
238+
{#if data.projects.total > 0}
225239
<CardContainer
226240
disableEmpty={!$canWriteProjects}
227-
total={activeProjects.length}
241+
total={data.projects.total}
228242
offset={data.offset}
229243
on:click={handleCreateProject}>
230-
{#each activeProjects as project}
244+
{#each data.projects.projects as project}
231245
{@const platforms = filterPlatforms(
232246
project.platforms.map((platform) => getPlatformInfo(platform.type))
233247
)}
@@ -309,7 +323,7 @@
309323
name="Projects"
310324
limit={data.limit}
311325
offset={data.offset}
312-
total={activeProjects.length} />
326+
total={data.projects.total} />
313327

314328
<!-- Archived Projects Section -->
315329
<ArchiveProject

0 commit comments

Comments
 (0)