From b0496d373fce190de151dd81e15ddbf6af285110 Mon Sep 17 00:00:00 2001 From: Maxim Chistyakov Date: Wed, 28 Apr 2021 12:00:22 +0300 Subject: [PATCH] Update DataService.js --- client/src/App.js | 22 +++++++++++++++------- client/src/Services/DataService.js | 14 ++++++++++---- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/client/src/App.js b/client/src/App.js index 4c7692d..18da5ab 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -29,7 +29,7 @@ function useCardsArr(defaultValue) { const [value, setValue] = React.useState(defaultValue) function trySetValue(cardsArr) { - if (checkCardsArr(cardsArr)) setValue(cardsArr) + if (checkCardsArr(cardsArr)||cardsArr===null) setValue(cardsArr) else console.error('Массив cardsArr не прошел проверку \n', cardsArr) } @@ -48,7 +48,7 @@ function useUpdater() { } function App() { - const [cardsArr, setCards] = useCardsArr([]) + const [cardsArr, setCards] = useCardsArr(null) const [editCardId, setEditCardId] = React.useState(null) const [loading, setLoading] = React.useState({ state: false, res: false }) @@ -59,8 +59,9 @@ function App() { const [updaterVal] = useUpdater() React.useEffect(loadDataFromServer, [logged, userName, updaterVal]) // eslint-disable-line react-hooks/exhaustive-deps - useDebouncedEffect(loadDataToServer, [cardsArr], 1000) // eslint-disable-line react-hooks/exhaustive-deps - React.useEffect(clearOldData, [logged]) // eslint-disable-line react-hooks/exhaustive-deps + useDebouncedEffect(loadDataToServer, [cardsArr], 300) // eslint-disable-line react-hooks/exhaustive-deps + //React.useEffect(loadDataToServer, [cardsArr]) // eslint-disable-line react-hooks/exhaustive-deps + React.useEffect(clearOldData, [logged, userName]) // eslint-disable-line react-hooks/exhaustive-deps /////////// function onLogin(login) { @@ -106,17 +107,22 @@ function App() { function clearOldData() { //console.log("clearOldData, logged:", logged) - if (!logged && !!cardsArr) deleteAll() + if (!logged) setCards(null) } /////////// /////////// function loadDataToServer() { try { + let startUsername = userName if (logged && userName) postData(cardsArr) .then(res => { if (!cardsArr) console.log("empty post!") console.log('[onPostData]', res) + if (startUsername !== userName) { + console.log("упс, несостыковочка с userName"); + loadDataToServer() + } }) .catch(e => console.log(`Data post request error. Response: ${e}`)) } @@ -127,12 +133,14 @@ function App() { function loadDataFromServer() { try { + let startUsername = userName if (logged && userName) { setLoading({ state: true, res: loading.res }) loadData() .then(data => { console.log('[onLoadData]', 'Данные с сервера загружены') - setLoadedCards(data) + if (startUsername === userName) setLoadedCards(data) + else console.log("упс, несостыковочка с userName"); setLoading({ state: false, res: true }) }) .catch(e => { @@ -225,7 +233,7 @@ function App() { - {cardsArr.length ? ( + {cardsArr && cardsArr.length ? ( ) : (loading.state || !loading.res) ? null : logged ? (
diff --git a/client/src/Services/DataService.js b/client/src/Services/DataService.js index 07450bb..d202228 100644 --- a/client/src/Services/DataService.js +++ b/client/src/Services/DataService.js @@ -42,8 +42,8 @@ export default function DataService() { data: data, }, }) - .done(data => res(data)) - .fail(data => rej(data)) + .done(resdata => res(resdata)) + .fail(rejdata => rej(rejdata)) /*.always(() => console.log( `requested - newUser:"${user}" resolveData:"${data}" \n request ${rc} - "${target}" ended \n ` @@ -74,6 +74,7 @@ export default function DataService() { function checkData(data) { //console.log('start check data') try { + if( data === null) console.log("null data"); return data === null || data === [] || checkCardsArr(data) } catch { return false @@ -92,13 +93,15 @@ export default function DataService() { .then((d) => { let data = tryParce(d)//here we parce json //console.log("[DATA] from loadData(): ", data) + if(!data)console.log("empty data from server"); if (!checkData(data)) { console.error("[loadData] Bad data format") console.log(data) - if (user !== null) { + let checkDel = user !== null + if (checkDel && window.confirm("Bad data: " + data + ". Delete data on server?")) { console.log('clear data') requestPostData([new Card({ id: 0, color: "orange", name: "Error", text: "Данные были очищены из за ошибки" })]).then(() => loadData().then(res, rej), rej)//очистка данных - } else rej("Not format data & unlogged") + } else rej("Not format data" + !user ? " & unlogged" : "") } else { res(data || []) } @@ -118,7 +121,10 @@ export default function DataService() { ? Promise.reject(rej()) : loadData()) .then((d) => { + if(!data)console.log("empty data to post"); + if(!d)console.log("empty loaded to check"); let pDat = data === null ? (d || []) : data + if(!pDat)console.log("empty will be posted"); requestPostData(pDat).then(res, rej) }) .catch(rej)