diff --git a/src/components/add-word/AddWord.module.scss b/src/components/add-word/AddWord.module.scss index b35a8a6..397237e 100644 --- a/src/components/add-word/AddWord.module.scss +++ b/src/components/add-word/AddWord.module.scss @@ -24,18 +24,8 @@ h5 { font-size: 1.5rem; - } - - figure { - display: block; - - img { - display: block; - width: 4rem; - height: 4rem; - border-radius: 50%; - border: 1px solid var(--creamy-white); - } + width: calc(100% - 8rem); + margin-right: auto; } } diff --git a/src/components/categories/Categories.tsx b/src/components/categories/Categories.tsx index c47126c..e028c83 100644 --- a/src/components/categories/Categories.tsx +++ b/src/components/categories/Categories.tsx @@ -5,12 +5,12 @@ import { ReactComponent as SearchIcon } from '../../assets/icons/bx-search-alt.s import { ReactComponent as PlusCircledIcon } from '../../assets/icons/plus-circle.svg'; import { NavLink } from "react-router-dom"; import { AddCategory } from "../add-category/AddCategory"; -import { Category } from "../../shared/models/category"; -import { MobileUser, User } from "../../shared/models/user"; +import { MobileCategory } from "../../shared/models/category"; +import { MobileUser } from "../../shared/models/user"; export const Categories: React.FC = () => { const [isAddCategoryPopupOpen, setAddCategoryPopupState] = useState(false); - const [categoryResult, setCategories] = useState>([]); + const [categoryResult, setCategories] = useState>([]); const [renderKey, setRenderKey] = useState(0); useEffect(() => { @@ -18,7 +18,7 @@ export const Categories: React.FC = () => { initUserProfile(); }, 100); console.log("rendering categories"); - }, [renderKey]) + }, [renderKey]); const initUserProfile = () => { const userProfile: MobileUser = JSON.parse(localStorage.getItem('userProfile') || ""); @@ -71,7 +71,7 @@ export const Categories: React.FC = () => {
{category.icon}
- + {category.shelves?.length} Shelves diff --git a/src/components/category-details/CategoryDetails.tsx b/src/components/category-details/CategoryDetails.tsx index ad13488..7dd7f59 100644 --- a/src/components/category-details/CategoryDetails.tsx +++ b/src/components/category-details/CategoryDetails.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import styles from './CategoryDetails.module.scss'; import { useLocation } from 'react-router'; import queryString from 'query-string'; @@ -12,27 +12,39 @@ import { ReactComponent as DeleteIcon } from '../../assets/icons/delete.svg'; import { CircularProgressbar } from "react-circular-progressbar"; import { NavLink } from "react-router-dom"; -import { IShelf } from "../../structure/shelf"; import { useHistory } from "react-router-dom"; import { userProfileData } from "../../App"; import { PopoverOptions } from "../popover-options/PopoverOptions"; +import { MobileUser } from "../../shared/models/user"; +import { MobileShelf } from "../../shared/models/shelf"; export const CategoryDetails: React.FC = () => { const location = useLocation(); - const category_id: any = queryString.parse(location.pathname)['/category-details/category_id']; - const shelfCount: number = userProfileData.categories[category_id].shelves.length; - const [shelfResult, setShelfResult] = useState>(userProfileData.categories[category_id].shelves); - const history = useHistory(); + const category_id = queryString.parse(location.pathname)['/category-details/category_id'] as string; + + const userProfile: MobileUser = JSON.parse(localStorage.getItem('userProfile') || ""); + const currentCategory = userProfile.categories.find(category => category._id === category_id); + + const [shelfResult, setShelfResult] = useState>(currentCategory ? currentCategory.shelves ? currentCategory.shelves : [] : []); + const history = useHistory(); + + + useEffect(() => { + if (currentCategory && currentCategory.shelves) { + setShelfResult(currentCategory.shelves); + } + console.log("Rendering Category details"); + }, [category_id]); const searchShelf = (text: string) => { if (text.length > 0) { - let result = userProfileData.categories[category_id].shelves.filter(shelf => { + let result = currentCategory?.shelves?.filter(shelf => { return shelf.name.toLowerCase().includes(text.toLowerCase()); }); - setShelfResult(result); + setShelfResult(result ? result : []); } else { - setShelfResult(userProfileData.categories[category_id].shelves); + setShelfResult(currentCategory ? currentCategory.shelves ? currentCategory.shelves : [] : []); } } @@ -52,11 +64,11 @@ export const CategoryDetails: React.FC = () => {
- { userProfileData.categories[category_id].icon } + { currentCategory?.icon }
-

{ userProfileData.categories[category_id].name }

-

{ shelfCount } { shelfCount > 1 ? 'Shelves' : 'Shelf' }

+

{ currentCategory?.name }

+

{ currentCategory?.shelves ? currentCategory?.shelves.length : 0 } Shelves

{ history.push('/shelf-details/category_id=' + category_id + '&&shelf_id=' + index); }}>
- 0 ? (shelf.revisedWords.length * 100/ shelf.words.length) : 0} strokeWidth={7} + { }} } /> - { shelf.words.length > 0 ? (shelf.revisedWords.length * 100/ shelf.words.length) : 0 }% + 50%
{ shelf.name }
-

{ shelf.words.length } words

+

{ shelf.words && shelf.words.length ? shelf.words.length : 0 } words

}) }