|
1 | 1 | <script lang="ts">
|
2 |
| - import { Principal } from '@dfinity/principal'; |
3 |
| - import { nonNullish } from '@dfinity/utils'; |
4 |
| - import { onMount } from 'svelte'; |
| 2 | + import type { Principal } from '@dfinity/principal'; |
| 3 | + import SatellitesPicker, { |
| 4 | + type SatellitePickerProps |
| 5 | + } from '$lib/components/satellites/SatellitesPicker.svelte'; |
5 | 6 | import { orbiterSatellitesConfig } from '$lib/derived/orbiter-satellites.derived';
|
6 |
| - import { pageSatelliteId } from '$lib/derived/page.derived.svelte'; |
7 |
| - import { i18n } from '$lib/stores/i18n.store'; |
8 |
| - import type { SatelliteIdText } from '$lib/types/satellite'; |
9 | 7 | import { navigateToAnalytics } from '$lib/utils/nav.utils';
|
10 | 8 |
|
11 | 9 | interface Props {
|
|
14 | 12 |
|
15 | 13 | let { disabled = false }: Props = $props();
|
16 | 14 |
|
17 |
| - const navigate = async () => |
18 |
| - await navigateToAnalytics( |
19 |
| - nonNullish(satelliteIdText) ? Principal.fromText(satelliteIdText) : undefined |
20 |
| - ); |
| 15 | + const navigate = async (satelliteId: Principal | undefined) => |
| 16 | + await navigateToAnalytics(satelliteId); |
21 | 17 |
|
22 |
| - let satelliteIdText: SatelliteIdText | undefined = $state(); |
23 |
| -
|
24 |
| - let satellites: { satelliteId: string; satName: string }[] = $derived( |
| 18 | + let satellites = $derived<SatellitePickerProps['satellites']>( |
25 | 19 | Object.entries($orbiterSatellitesConfig).reduce(
|
26 | 20 | (acc, [satelliteId, { name: satName, enabled }]) => [
|
27 | 21 | ...acc,
|
|
38 | 32 | [] as { satelliteId: string; satName: string }[]
|
39 | 33 | )
|
40 | 34 | );
|
41 |
| -
|
42 |
| - onMount(() => { |
43 |
| - satelliteIdText = |
44 |
| - nonNullish($pageSatelliteId) && |
45 |
| - satellites.find(({ satelliteId }) => satelliteId === $pageSatelliteId) |
46 |
| - ? $pageSatelliteId |
47 |
| - : undefined; |
48 |
| - }); |
49 | 35 | </script>
|
50 | 36 |
|
51 |
| -<select |
52 |
| - id="satellite" |
53 |
| - name="satellite" |
54 |
| - class="big" |
55 |
| - bind:value={satelliteIdText} |
56 |
| - onchange={navigate} |
57 |
| - {disabled} |
58 |
| -> |
59 |
| - <option value={undefined}>{$i18n.analytics.all_satellites}</option> |
60 |
| - |
61 |
| - {#each satellites as { satelliteId, satName } (satName)} |
62 |
| - <option value={satelliteId}>{satName}</option> |
63 |
| - {/each} |
64 |
| -</select> |
| 37 | +<SatellitesPicker {disabled} {satellites} {navigate} /> |
0 commit comments