|
1 | 1 | import { useRouter } from 'next/router'; |
2 | | -import { useEffect, useState } from 'react'; |
| 2 | +import { useEffect, useMemo, useState } from 'react'; |
3 | 3 | import Select, { SingleValue } from 'react-select'; |
4 | 4 | import classes from './SetupWizard.module.css'; |
5 | 5 | import { Optional, SelectedRepoWizard, Repository, WizardEnvType } from '~/types'; |
@@ -36,8 +36,21 @@ function SetupWizard(props: SetupWizardProps) { |
36 | 36 | 'Content-type': 'application/json', |
37 | 37 | }, |
38 | 38 | }); |
39 | | - setRepoList((await response.json()).repoList); |
| 39 | + const data = await response.json(); |
| 40 | + const repos = data.repoList; |
| 41 | + setRepoList(repos); |
40 | 42 | setRepoListIsLoading(false); |
| 43 | + |
| 44 | + // Auto-select first repository if available |
| 45 | + if (repos && repos.length > 0) { |
| 46 | + setSelectedItem({ |
| 47 | + label: `${repos[0].alias} - ${repos[0].repositoryName}`, |
| 48 | + value: `${repos[0].alias} - ${repos[0].repositoryName}`, |
| 49 | + id: repos[0].id.toString(), |
| 50 | + repositoryName: repos[0].repositoryName, |
| 51 | + lanCommand: repos[0].lanCommand ? repos[0].lanCommand : false, |
| 52 | + }); |
| 53 | + } |
41 | 54 | } catch (error) { |
42 | 55 | console.log('Fetching datas error'); |
43 | 56 | } |
@@ -70,13 +83,17 @@ function SetupWizard(props: SetupWizardProps) { |
70 | 83 | }, [props.step]); |
71 | 84 |
|
72 | 85 | //Options for react-select |
73 | | - const options: Optional<Array<SelectedRepoWizard>> = repoList?.map((repo) => ({ |
74 | | - label: `${repo.alias} - ${repo.repositoryName}`, |
75 | | - value: `${repo.alias} - ${repo.repositoryName}`, |
76 | | - id: repo.id.toString(), |
77 | | - repositoryName: repo.repositoryName, |
78 | | - lanCommand: repo.lanCommand ? repo.lanCommand : false, |
79 | | - })); |
| 86 | + const options: Optional<Array<SelectedRepoWizard>> = useMemo( |
| 87 | + () => |
| 88 | + repoList?.map((repo) => ({ |
| 89 | + label: `${repo.alias} - ${repo.repositoryName}`, |
| 90 | + value: `${repo.alias} - ${repo.repositoryName}`, |
| 91 | + id: repo.id.toString(), |
| 92 | + repositoryName: repo.repositoryName, |
| 93 | + lanCommand: repo.lanCommand ? repo.lanCommand : false, |
| 94 | + })), |
| 95 | + [repoList] |
| 96 | + ); |
80 | 97 |
|
81 | 98 | //Step button (free selection of user) |
82 | 99 | const changeStepHandler = (x: number) => router.push('/setup-wizard/' + x.toString()); |
@@ -131,6 +148,7 @@ function SetupWizard(props: SetupWizardProps) { |
131 | 148 | isDisabled={repoListIsLoading} |
132 | 149 | options={options} |
133 | 150 | isSearchable |
| 151 | + value={selectedItem} |
134 | 152 | placeholder='Select your repository...' |
135 | 153 | theme={(theme) => ({ |
136 | 154 | ...theme, |
|
0 commit comments