Skip to content

Commit 980309c

Browse files
Refactor references page component
- Add type imports and improve type safety - Remove unused selectedMenuItem variable and bindSelectedRef function - Add early return guards for platform/version selection - Remove replaceState parameter from goto navigation - Clean up method grouping with proper return type
1 parent 2deddf4 commit 980309c

File tree

1 file changed

+10
-25
lines changed
  • src/routes/docs/references/[version]/[platform]/[service]

1 file changed

+10
-25
lines changed

src/routes/docs/references/[version]/[platform]/[service]/+page.svelte

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import Request from './(components)/Request.svelte';
2727
import Response from './(components)/Response.svelte';
2828
import RateLimits from './(components)/RateLimits.svelte';
29+
import type { SDKMethod } from '$lib/utils/specs';
2930
3031
let { data } = $props();
3132
@@ -34,7 +35,6 @@
3435
const headings = getContext<LayoutContext>('headings');
3536
3637
let selected: string | undefined = $state(undefined);
37-
let selectedMenuItem: HTMLElement;
3838
3939
headings.subscribe((n) => {
4040
const noVisible = Object.values(n).every((n) => !n.visible);
@@ -61,7 +61,9 @@
6161
correctPlatform = platform.replaceAll(`server-`, ``) as Platform;
6262
}
6363
64-
preferredPlatform.set(correctPlatform as Platform);
64+
if ($preferredPlatform === correctPlatform) return;
65+
66+
preferredPlatform.set(correctPlatform);
6567
6668
goto(`/docs/references/${version}/${platform}/${service}`, {
6769
noScroll: true
@@ -71,6 +73,8 @@
7173
function selectVersion(event: CustomEvent<unknown>) {
7274
const { platform, service } = page.params;
7375
const version = event.detail as Version;
76+
if ($preferredVersion === version) return;
77+
7478
preferredVersion.set(version);
7579
goto(`/docs/references/${version}/${platform}/${service}`, {
7680
noScroll: true
@@ -110,8 +114,7 @@
110114
: `server-${$preferredPlatform}`;
111115
112116
goto(`/docs/references/${$preferredVersion}/${platformMode}/${page.params.service}`, {
113-
noScroll: true,
114-
replaceState: false
117+
noScroll: true
115118
});
116119
}
117120
@@ -145,7 +148,7 @@
145148
/**
146149
* Sorts methods by their operation order and title
147150
*/
148-
function sortMethods(methods: any[]) {
151+
function sortMethods(methods: SDKMethod[]) {
149152
return methods.sort((a, b) => {
150153
const orderA = getOperationOrder(a.title);
151154
const orderB = getOperationOrder(b.title);
@@ -156,11 +159,8 @@
156159
});
157160
}
158161
159-
/**
160-
* Groups methods by their group attribute, null group goes to '' for ordering
161-
*/
162-
function groupMethodsByGroup(methods: any[]) {
163-
return methods.reduce((acc, method) => {
162+
function groupMethodsByGroup(methods: SDKMethod[]) {
163+
return methods.reduce<Record<string, SDKMethod[]>>((acc, method) => {
164164
const groupKey = method.group || '';
165165
if (!acc[groupKey]) {
166166
acc[groupKey] = [];
@@ -170,20 +170,6 @@
170170
}, {});
171171
}
172172
173-
function bindSelectedRef(node: HTMLElement, isSelected: boolean) {
174-
if (isSelected) {
175-
selectedMenuItem = node;
176-
}
177-
178-
return {
179-
update(newIsSelected: boolean) {
180-
if (newIsSelected) {
181-
selectedMenuItem = node;
182-
}
183-
}
184-
};
185-
}
186-
187173
let platformBindingForSelect = $derived(page.params.platform as Platform);
188174
let platform = $derived(/**$preferredPlatform ?? */ page.params.platform as Platform);
189175
let platformType = $derived(platform.startsWith('client-') ? 'CLIENT' : 'SERVER');
@@ -400,7 +386,6 @@
400386
href={`#${method.id}`}
401387
class="web-references-menu-link text-caption"
402388
class:is-selected={method.id === selected}
403-
use:bindSelectedRef={method.id === selected}
404389
>
405390
{method.title}
406391
</a>

0 commit comments

Comments
 (0)