Skip to content

Commit 69d2f01

Browse files
authored
Merge pull request #195 from AgainIoT/feature/192
Fix : owner and framework data remains after leaving the page
2 parents c9509bf + 34a50eb commit 69d2f01

File tree

3 files changed

+62
-33
lines changed

3 files changed

+62
-33
lines changed

src/components/common/Autocomplete.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ export const AutocompleteInput = (props) => {
6060
<AutocompleteTextField
6161
{...params}
6262
variant="standard"
63-
helperText={props.disableValue ? "First select Language" : " "}
63+
helperText={props.disableValue ? "Select Language First" : " "}
6464
/>
6565
</InputFieldContainer>
6666
)}

src/components/step1/RequiredFieldContainer.js

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import styled from "styled-components";
22
import { useState, useEffect } from "react";
33
import { useRecoilState } from "recoil";
4+
import { repoDataAtomFamily } from "../../recoil/repoData";
5+
import { eachStepState } from "../../recoil/commonState";
46
import { Box, Grid } from "@mui/material";
57
import axios from "axios";
68
import { TextInputContainer } from "../common/InputComponent";
79
import { SelectAuto } from "../common/SelectAuto";
8-
import { repoDataAtomFamily } from "../../recoil/repoData";
910
import gifRepoName from "../../assets/images/repoName.gif";
1011
import gifDescription from "../../assets/images/description.gif";
1112
import { useNavigate } from "react-router-dom";
@@ -17,6 +18,7 @@ export const RequiredFieldContainer = () => {
1718
const [repoName, setRepoName] = useRecoilState(
1819
repoDataAtomFamily("repoName"),
1920
);
21+
const [stepComplete, setStepComplted] = useRecoilState(eachStepState("1"));
2022

2123
const navigate = useNavigate();
2224

@@ -35,26 +37,41 @@ export const RequiredFieldContainer = () => {
3537
withCredentials: true,
3638
},
3739
);
38-
39-
const initUserData = [
40-
{
41-
id: response.data.id,
42-
avatar: response.data.avatar,
43-
},
44-
];
45-
response.data.org.forEach((it) => {
46-
initUserData.push({ id: it.id, avatar: it.avatar });
47-
});
48-
49-
setOwner(response.data.id);
50-
setUserRepoData(initUserData);
40+
return response.data;
5141
} catch (e) {
5242
console.error(e);
5343
}
5444
}
5545

46+
function refineData(rawData) {
47+
const data = [
48+
{
49+
id: rawData.id,
50+
avatar: rawData.avatar,
51+
},
52+
];
53+
rawData.org.forEach((it) => {
54+
data.push({ id: it.id, avatar: it.avatar });
55+
});
56+
return data;
57+
}
58+
59+
async function initUserData() {
60+
const refinedData = refineData(await getUserRepoData());
61+
setUserRepoData(refinedData);
62+
return refinedData;
63+
}
64+
65+
async function initOwner() {
66+
const refinedData = await initUserData();
67+
setOwner(refinedData[0].id);
68+
}
69+
5670
useEffect(() => {
57-
getUserRepoData();
71+
initUserData();
72+
if (!stepComplete) {
73+
initOwner();
74+
}
5875
}, []);
5976

6077
async function checkRepoName() {
@@ -125,7 +142,7 @@ export const RequiredFieldContainer = () => {
125142
}
126143
}, 300);
127144
return () => clearTimeout(debounce);
128-
}, [owner,repoName]);
145+
}, [owner, repoName]);
129146

130147
const [helperText, setHelperText] = useState(" ");
131148

src/components/step1/SelectContainer.js

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export const SelectContainer = () => {
1717
);
1818
const [frameworkOpions, setFrameworkOptions] = useState([]);
1919
const [isSelectLang, setIsSelectLang] = useState(false);
20-
const [disableValue, setDisableValue] = useState(true);
20+
const [disableValue, setDisableValue] = useState(false);
2121

2222
// GET - Lang/Framework
2323
const [baseOption, setBaseOption] = useState([
@@ -31,36 +31,48 @@ export const SelectContainer = () => {
3131
);
3232

3333
setBaseOption(response.data);
34+
return response.data;
3435
} catch (e) {
3536
console.error(e);
3637
}
3738
}
3839

40+
async function getFrameworkOptionData() {
41+
const data = await getBaseOptionData();
42+
const selectedLanguageOption = data.find(
43+
(it) => it.language === selectLang,
44+
);
45+
const selectedFrameworks = selectedLanguageOption.frameworks || [];
46+
const selectedFrameworkNames = selectedFrameworks.map(
47+
(frameworkItem) => frameworkItem.framework,
48+
);
49+
setFrameworkOptions(selectedFrameworkNames);
50+
}
51+
3952
useEffect(() => {
40-
getBaseOptionData();
53+
// isSelectLang = 0, disableValue = 0
54+
if (selectLang) {
55+
getFrameworkOptionData();
56+
} else {
57+
getBaseOptionData();
58+
}
4159
}, []);
42-
const langs = baseOption.map((it) => it.language);
4360

4461
//Apply options based on the language of choice
4562
useEffect(() => {
63+
// isSelectLang = 1, disableValue = 0
4664
if (isSelectLang) {
47-
const selectedLanguageOption = baseOption.find(
48-
(it) => it.language === selectLang,
49-
);
50-
const selectedFrameworks = selectedLanguageOption.frameworks || [];
51-
const selectedFrameworkNames = selectedFrameworks.map(
52-
(frameworkItem) => frameworkItem.framework,
53-
);
54-
55-
setFrameworkOptions(selectedFrameworkNames);
56-
} else {
65+
getFrameworkOptionData();
5766
setSelectFramework("");
5867
}
5968
}, [selectLang]);
6069

6170
useEffect(() => {
62-
setSelectFramework("");
63-
}, [selectLang]);
71+
// isSelectLang = 0, disableValue = 1
72+
if (disableValue) {
73+
setSelectFramework("");
74+
}
75+
}, [disableValue]);
6476

6577
return (
6678
<StSelectContainer container>
@@ -70,7 +82,7 @@ export const SelectContainer = () => {
7082
<Grid item xs={12} sm={5}>
7183
<AutocompleteInput
7284
type={"lang"}
73-
options={langs}
85+
options={baseOption.map((it) => it.language)}
7486
setIsSelectLang={setIsSelectLang}
7587
setDisableValue={setDisableValue}
7688
disableValue={false}

0 commit comments

Comments
 (0)