Skip to content

Commit 25450e0

Browse files
authored
Merge pull request #2906 from appwrite/fix-SER-1145-tab-selection-not-working-for-integrations
fix: tab selection not working for integrations
2 parents 6138b73 + e1a184a commit 25450e0

3 files changed

Lines changed: 66 additions & 51 deletions

File tree

bun.lock

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
},
9090
"overrides": {
9191
"vite": "npm:rolldown-vite@latest",
92-
"minimatch": "10.2.3"
92+
"minimatch": "10.2.3",
93+
"immutable": "^5.1.5"
9394
}
9495
}

src/routes/(console)/project-[region]-[project]/overview/+layout.svelte

Lines changed: 62 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<script lang="ts" context="module">
1+
<script lang="ts" module>
22
import { total } from '$lib/helpers/array';
33
import { clampMin } from '$lib/helpers/numbers';
44
import type { Metric } from '$lib/sdk/usage';
@@ -16,6 +16,7 @@
1616
import { addSubPanel, registerCommands, updateCommandGroupRanks } from '$lib/commandCenter';
1717
import { PlatformsPanel } from '$lib/commandCenter/panels';
1818
import { Tab, Tabs } from '$lib/components';
19+
import { isTabSelected } from '$lib/helpers/load';
1920
import { humanFileSize } from '$lib/helpers/sizeConvertion';
2021
import { Container, type UsagePeriods } from '$lib/layout';
2122
import { onMount, setContext, type Component } from 'svelte';
@@ -30,8 +31,8 @@
3031
import { IconPlus } from '@appwrite.io/pink-icons-svelte';
3132
import { isSmallViewport } from '$lib/stores/viewport';
3233
33-
let period: UsagePeriods = '30d';
34-
$: path = `${base}/project-${page.params.region}-${page.params.project}/overview`;
34+
let period: UsagePeriods = $state('30d');
35+
const path = $derived(`${base}/project-${page.params.region}-${page.params.project}/overview`);
3536
3637
onMount(handle);
3738
afterNavigate(handle);
@@ -52,45 +53,64 @@
5253
return usage.load(dates.start, dates.end, dates.period);
5354
}
5455
55-
function isTabSelected(key: string) {
56-
return page.url.pathname.endsWith(`/${key}`);
57-
}
58-
59-
$: $registerCommands([
56+
const integrationTabs = $derived([
6057
{
61-
label: 'Add platform',
62-
keys: ['a', 'p'],
63-
callback() {
64-
addSubPanel(PlatformsPanel);
65-
},
66-
icon: IconPlus,
67-
group: 'integrations',
68-
disabled: !$canWriteProjects
58+
href: `${path}/platforms`,
59+
title: 'Platforms',
60+
event: 'platforms',
61+
hasChildren: true
6962
},
7063
{
71-
label: 'Create API Key',
72-
icon: IconPlus,
73-
callback() {
74-
goto(`${path}/api-keys/create`);
75-
},
76-
keys: ['c', 'k'],
77-
group: 'integrations',
78-
disabled: !$canWriteProjects
64+
href: `${path}/api-keys`,
65+
title: 'API keys',
66+
event: 'api-keys',
67+
hasChildren: true
7968
},
8069
{
81-
label: 'Create Dev Key',
82-
icon: IconPlus,
83-
callback() {
84-
goto(`${path}/dev-keys/create`);
85-
},
86-
keys: ['c', 'd', 'k'],
87-
group: 'integrations',
88-
disabled: !$canWriteProjects
70+
href: `${path}/dev-keys`,
71+
title: 'Dev keys',
72+
event: 'dev-keys',
73+
hasChildren: true
8974
}
9075
]);
9176
92-
$: $updateCommandGroupRanks({
93-
integrations: 10
77+
$effect(() => {
78+
const unregister = $registerCommands([
79+
{
80+
label: 'Add platform',
81+
keys: ['a', 'p'],
82+
callback() {
83+
addSubPanel(PlatformsPanel);
84+
},
85+
icon: IconPlus,
86+
group: 'integrations',
87+
disabled: !$canWriteProjects
88+
},
89+
{
90+
label: 'Create API Key',
91+
icon: IconPlus,
92+
callback() {
93+
goto(`${path}/api-keys/create`);
94+
},
95+
keys: ['c', 'k'],
96+
group: 'integrations',
97+
disabled: !$canWriteProjects
98+
},
99+
{
100+
label: 'Create Dev Key',
101+
icon: IconPlus,
102+
callback() {
103+
goto(`${path}/dev-keys/create`);
104+
},
105+
keys: ['c', 'd', 'k'],
106+
group: 'integrations',
107+
disabled: !$canWriteProjects
108+
}
109+
]);
110+
$updateCommandGroupRanks({
111+
integrations: 10
112+
});
113+
return unregister;
94114
});
95115
</script>
96116

@@ -223,21 +243,14 @@
223243
<Typography.Title>Integrations</Typography.Title>
224244
<Layout.Stack gap="xl" direction="row" justifyContent="space-between">
225245
<Tabs>
226-
<Tab
227-
noscroll
228-
event="platforms"
229-
href={`${path}/platforms`}
230-
selected={isTabSelected('platforms')}>Platforms</Tab>
231-
<Tab
232-
noscroll
233-
event="api-keys"
234-
href={`${path}/api-keys`}
235-
selected={isTabSelected('api-keys')}>API keys</Tab>
236-
<Tab
237-
noscroll
238-
event="dev-keys"
239-
href={`${path}/dev-keys`}
240-
selected={isTabSelected('dev-keys')}>Dev keys</Tab>
246+
{#each integrationTabs as tab}
247+
<Tab
248+
noscroll
249+
href={tab.href}
250+
event={tab.event}
251+
selected={isTabSelected(tab, page.url.pathname, path, integrationTabs)}
252+
>{tab.title}</Tab>
253+
{/each}
241254
</Tabs>
242255
{#if $action}
243256
<svelte:component this={$action} />

0 commit comments

Comments
 (0)