import React, { useState } from "react"; import styles from './AddWord.module.scss'; import { ReactComponent as ChevronLeft } from '../../assets/icons/chevron-left.svg'; import { ReactComponent as SearchIcon } from '../../assets/icons/bx-search-alt.svg'; 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 { getWordResult } from "../../services/words"; import { MobileWord } from "../../shared/models/word"; import { MobileUser } from "../../shared/models/user"; import { updateShelf } from "../../services/shelf"; import { getAllData } from "../../services/user"; export const AddWord: React.FC = () => { 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; setSearchResult(result); }, err => { console.log("Unable to search Words", err) }); } } return
{!selectedWord &&
Add a Word
} {selectedWord &&
Add to Shelf
}
{!selectedWord &&
setSearchWord(event.currentTarget.value)} />
{ searchResult &&
    {searchResult.map((word) => { return
  • {word.name} {word.pronounciation}

    {word.grammaticalDetails[0]?.type}

    {word.grammaticalDetails[0]?.description}

  • })}
}
} {selectedWord &&
    All Shelves
    {userProfile.categories.map((category, categoryIndex) => { return category?.shelves?.map((shelf, shelfIndex) => { return
  • { let words: any = shelf.words ? shelf.words : []; if (words.findIndex((word: any) => word.word.name === selectedWord.name) >= 0) { alert("Word already Present!"); } else { 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(() => { getAllData().then((response: any) => { localStorage.setItem('userProfile', JSON.stringify(response.data)); history.push('/shelf-details/category_id=' + category._id + '&&shelf_id=' + shelf._id); }, (err) => { window.alert("Failed to fetch deep copy of user profile"); console.log(err); }); }, (err) => { window.alert("Failed to update"); console.log(err); }); } }}>
    {category.icon}
    {category.name}
  • }) })} Create New Shelf
}
}