From 6b6cd9b2c0411a42a453f4d2eff2ae06e8678147 Mon Sep 17 00:00:00 2001 From: kj1352 Date: Thu, 28 Oct 2021 20:46:22 +0530 Subject: [PATCH] Add word API integration + pull shared module --- src/components/add-word/AddWord.tsx | 53 ++++++++++++++++++++--------- src/services/shelf.ts | 11 ++---- src/shared | 2 +- 3 files changed, 40 insertions(+), 26 deletions(-) diff --git a/src/components/add-word/AddWord.tsx b/src/components/add-word/AddWord.tsx index 0c45090..0c48eb9 100644 --- a/src/components/add-word/AddWord.tsx +++ b/src/components/add-word/AddWord.tsx @@ -6,20 +6,22 @@ import { ReactComponent as SpeakerIcon } from '../../assets/icons/speaker.svg'; import { ReactComponent as AddIcon } from '../../assets/icons/plus.svg'; import { NavLink, useHistory } from "react-router-dom"; -import { userProfileData } from "../../App"; import { getWordResult } from "../../services/words"; -import { Word } from "../../shared/models/word"; +import { MobileWord } from "../../shared/models/word"; +import { MobileUser } from "../../shared/models/user"; +import { updateShelf } from "../../services/shelf"; export const AddWord: React.FC = () => { - const [searchResult, setSearchResult] = useState>(); - const [selectedWord, setSelectedWord] = useState(); + const [searchResult, setSearchResult] = useState>(); + const [selectedWord, setSelectedWord] = useState(); const [searchWord, setSearchWord] = useState(''); + const userProfile: MobileUser = JSON.parse(localStorage.getItem('userProfile') || ""); const history = useHistory(); const searchWords = () => { if (searchWord.length > 0) { getWordResult(searchWord).then((wordResult: any) => { - let result: Array = wordResult.data; + let result: Array = wordResult.data; setSearchResult(result); }, err => { console.log("Unable to search Words", err) @@ -41,11 +43,6 @@ export const AddWord: React.FC = () => { {!selectedWord &&
Add a Word
} {selectedWord &&
Add to Shelf
} - -
- {/* eslint-disable-next-line */} - profile-image -
{!selectedWord &&
@@ -90,16 +87,38 @@ export const AddWord: React.FC = () => {
All Shelves
- {userProfileData.categories.map((category, categoryIndex) => { - return category.shelves.map((shelf, shelfIndex) => { - return
  • { - let findWord = userProfileData.categories[categoryIndex].shelves[shelfIndex].words.find(word => word.name.toLowerCase().includes(selectedWord.name.toLowerCase())); + {userProfile.categories.map((category) => { + return category?.shelves?.map((shelf, shelfIndex) => { + return
  • { + + let words: any = shelf.words ? shelf.words : []; - if (findWord) { + if (words.findIndex((word: any) => word.word.name === selectedWord.name) >= 0) { alert("Word already Present!"); } else { - // userProfileData.categories[categoryIndex].shelves[shelfIndex].words.push(selectedWord); - history.push('/shelf-details/category_id=' + categoryIndex + '&&shelf_id=' + shelfIndex); + words.push({ + word: selectedWord, + notes: [], + isArchived: false, + spaceBetweenRecall: 1, + nextRevisionDateTime: new Date() + }) + + let updatedWords: any = []; + + updatedWords = words.map((word: any) => { + return { + ...word, + word: word.word._id, + } + }); + + updateShelf(shelf._id, updatedWords).then(() => { + history.push('/shelf-details/category_id=' + category._id + '&&shelf_id=' + shelf._id); + }, (err) => { + window.alert("Failed to update"); + console.log(err); + }); } }}>
    diff --git a/src/services/shelf.ts b/src/services/shelf.ts index 5746c1f..9b32c38 100644 --- a/src/services/shelf.ts +++ b/src/services/shelf.ts @@ -26,16 +26,11 @@ export const addShelf = async (categoryId: string, name: string, isArchived: boo //Need to be discussed -export const updateShelf = async (id: string, word: string, isArchived: boolean, spaceBetweenRecall: number) => { +export const updateShelf = async (id: string, words: Array<{word: string, notes: Array, isArchived: boolean, spaceBetweenRecall: number}>) => { return await axios.put(SERVER_URL + '/shelf/update/', { - id: id, - words: [{ - word: word, - notes: [], - isArchived: isArchived, - spaceBetweenRecall: spaceBetweenRecall - }] + _id: id, + words: words }, { headers: API_TOKEN diff --git a/src/shared b/src/shared index a3da6aa..7627b89 160000 --- a/src/shared +++ b/src/shared @@ -1 +1 @@ -Subproject commit a3da6aa10843c3f2ecdd324879561c6bbdf257d0 +Subproject commit 7627b89214ea79eaa139e1dab7e68a88bc322fe4