update props
This commit is contained in:
parent
853af548d3
commit
11cfc3c8f0
@ -1,3 +1,4 @@
|
|||||||
|
import React from "react";
|
||||||
import { Link } from "react-router";
|
import { Link } from "react-router";
|
||||||
import { nameShorten } from "../utils/string-helper";
|
import { nameShorten } from "../utils/string-helper";
|
||||||
import { ICoinMarketData } from "../utils/interfaces";
|
import { ICoinMarketData } from "../utils/interfaces";
|
||||||
@ -6,7 +7,7 @@ interface ICoin {
|
|||||||
coin: ICoinMarketData;
|
coin: ICoinMarketData;
|
||||||
}
|
}
|
||||||
|
|
||||||
const CoinCard = ({ coin }: ICoin) => {
|
const CoinCard: React.FC<ICoin> = ({ coin }) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Link to={`/coin/${coin.id}`} >
|
<Link to={`/coin/${coin.id}`} >
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import { Line } from "react-chartjs-2";
|
import { Line } from "react-chartjs-2";
|
||||||
import {
|
import {
|
||||||
Chart as ChartJS,
|
Chart as ChartJS,
|
||||||
@ -24,7 +24,7 @@ ChartJS.register(
|
|||||||
TimeScale
|
TimeScale
|
||||||
);
|
);
|
||||||
|
|
||||||
interface IProp {
|
interface ICoinChartProps {
|
||||||
coinId: string;
|
coinId: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ interface IChartData {
|
|||||||
datasets: IDataSet[],
|
datasets: IDataSet[],
|
||||||
}
|
}
|
||||||
|
|
||||||
const CoinChart = ({ coinId }: IProp) => {
|
const CoinChart: React.FC<ICoinChartProps> = ({ coinId }) => {
|
||||||
|
|
||||||
const [chartData, setChartData] = useState<IChartData | null>(null);
|
const [chartData, setChartData] = useState<IChartData | null>(null);
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
|
import React from "react";
|
||||||
import { ICoinInfo } from "../utils/interfaces";
|
import { ICoinInfo } from "../utils/interfaces";
|
||||||
|
|
||||||
interface ICoinInfoProps {
|
interface ICoinInfoProps {
|
||||||
coin: ICoinInfo;
|
coin: ICoinInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
const CoinInfo = ({ coin }: ICoinInfoProps) => {
|
const CoinInfo: React.FC<ICoinInfoProps> = ({ coin }) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@ -1,12 +1,13 @@
|
|||||||
|
import React from "react";
|
||||||
import { messages } from "../utils/constants";
|
import { messages } from "../utils/constants";
|
||||||
import RefreshButton from "./refresh-button";
|
import RefreshButton from "./refresh-button";
|
||||||
|
|
||||||
|
|
||||||
export interface IErrorCardProp {
|
export interface IErrorCardProps {
|
||||||
message: string;
|
message: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ErrorCard = ({ message }: IErrorCardProp) => {
|
const ErrorCard: React.FC<IErrorCardProps> = ({ message }) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
|
import React from "react";
|
||||||
import { useFilterStore } from "../store/controls";
|
import { useFilterStore } from "../store/controls";
|
||||||
import { messages } from "../utils/constants";
|
import { messages } from "../utils/constants";
|
||||||
|
|
||||||
const FilterInput = () => {
|
const FilterInput: React.FC = () => {
|
||||||
const toggleFilter = useFilterStore(state => state.toggleFilter);
|
const toggleFilter = useFilterStore(state => state.toggleFilter);
|
||||||
|
|
||||||
const onFilterChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
const onFilterChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
|
import React from "react";
|
||||||
import { footerLinkUrl, footerLinkText } from "../utils/conf";
|
import { footerLinkUrl, footerLinkText } from "../utils/conf";
|
||||||
|
|
||||||
const Footer = () => {
|
const Footer: React.FC = () => {
|
||||||
return (
|
return (
|
||||||
<footer>
|
<footer>
|
||||||
<p>© {new Date().getFullYear()}</p>
|
<p>© {new Date().getFullYear()}</p>
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
|
import React from "react";
|
||||||
import { Link } from "react-router";
|
import { Link } from "react-router";
|
||||||
|
|
||||||
const Header = () => {
|
const Header: React.FC = () => {
|
||||||
return (
|
return (
|
||||||
<div className="nav-box">
|
<div className="nav-box">
|
||||||
<Link to="/">Home</Link>
|
<Link to="/">Home</Link>
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
|
import React from "react";
|
||||||
import { useLimitStore } from "../store/controls";
|
import { useLimitStore } from "../store/controls";
|
||||||
import { fetchCoins, getCoinsLength } from "../store/coins-market";
|
import { fetchCoins, getCoinsLength } from "../store/coins-market";
|
||||||
|
|
||||||
const LimitSelector = () => {
|
const LimitSelector: React.FC = () => {
|
||||||
|
|
||||||
const limit = useLimitStore(state => state.limit);
|
const limit = useLimitStore(state => state.limit);
|
||||||
const toggleLimit = useLimitStore(state => state.toggleLimit);
|
const toggleLimit = useLimitStore(state => state.toggleLimit);
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import React from "react";
|
||||||
import { fetchCoins, getCoinsLength } from "../store/coins-market";
|
import { fetchCoins, getCoinsLength } from "../store/coins-market";
|
||||||
import { getTimestampOfLastPersist } from "../store/coins-market";
|
import { getTimestampOfLastPersist } from "../store/coins-market";
|
||||||
import toast, { Toaster } from "react-hot-toast";
|
import toast, { Toaster } from "react-hot-toast";
|
||||||
@ -6,7 +7,7 @@ import { MdRefresh } from "react-icons/md";
|
|||||||
|
|
||||||
const notify = (text: string) => toast.error(text, { duration: 3000, id: "reloadRapidDisallowed", style: { textAlign: 'center' } });
|
const notify = (text: string) => toast.error(text, { duration: 3000, id: "reloadRapidDisallowed", style: { textAlign: 'center' } });
|
||||||
|
|
||||||
const RefreshButton = () => {
|
const RefreshButton: React.FC = () => {
|
||||||
|
|
||||||
const onButonClick = () => {
|
const onButonClick = () => {
|
||||||
if (Date.now() > getTimestampOfLastPersist() + 3000) fetchCoins(getCoinsLength() || 10);
|
if (Date.now() > getTimestampOfLastPersist() + 3000) fetchCoins(getCoinsLength() || 10);
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
|
import React from "react";
|
||||||
import { SortBy } from "../utils/enum";
|
import { SortBy } from "../utils/enum";
|
||||||
import { useSortByStore } from "../store/controls";
|
import { useSortByStore } from "../store/controls";
|
||||||
|
|
||||||
const SortSelector = () => {
|
const SortSelector: React.FC = () => {
|
||||||
const sortBy = useSortByStore(state => state.sortBy);
|
const sortBy = useSortByStore(state => state.sortBy);
|
||||||
const toggleSortBy = useSortByStore(state => state.toggleSortBy);
|
const toggleSortBy = useSortByStore(state => state.toggleSortBy);
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import React from "react";
|
||||||
import { BarLoader } from "react-spinners";
|
import { BarLoader } from "react-spinners";
|
||||||
|
|
||||||
const override = {
|
const override = {
|
||||||
@ -5,7 +6,12 @@ const override = {
|
|||||||
margin: "0 auto 50px auto",
|
margin: "0 auto 50px auto",
|
||||||
};
|
};
|
||||||
|
|
||||||
const Spinner = ({ color = "blue", width = 200 }) => {
|
interface ISpinnerProps {
|
||||||
|
color?: string;
|
||||||
|
width?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Spinner: React.FC<ISpinnerProps> = ({ color = "blue", width = 200 }) => {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<BarLoader color={color} width={width} cssOverride={override} aria-label="Loading..." />
|
<BarLoader color={color} width={width} cssOverride={override} aria-label="Loading..." />
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
|
import React from "react";
|
||||||
import { messages } from "../utils/constants";
|
import { messages } from "../utils/constants";
|
||||||
|
|
||||||
const About = () => {
|
const About: React.FC = () => {
|
||||||
return (
|
return (
|
||||||
<div className="about">
|
<div className="about">
|
||||||
<h1>📈 Crypto Viewer</h1>
|
<h1>📈 Crypto Viewer</h1>
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import React from "react";
|
||||||
import { Link, useParams } from "react-router";
|
import { Link, useParams } from "react-router";
|
||||||
import CoinInfo from "../components/coin-info";
|
import CoinInfo from "../components/coin-info";
|
||||||
import { useCoinInfoStore, reset, fetchCoinInfos } from "../store/coin-info";
|
import { useCoinInfoStore, reset, fetchCoinInfos } from "../store/coin-info";
|
||||||
@ -5,7 +6,7 @@ import { useEffect } from "react";
|
|||||||
import CoinChart from "../components/coin-chart";
|
import CoinChart from "../components/coin-chart";
|
||||||
import Spinner from "../components/spinner";
|
import Spinner from "../components/spinner";
|
||||||
|
|
||||||
const CoinDetail = () => {
|
const CoinDetail: React.FC = () => {
|
||||||
|
|
||||||
const { id } = useParams<string>();
|
const { id } = useParams<string>();
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import React from "react";
|
||||||
import { useEffect, useRef } from "react";
|
import { useEffect, useRef } from "react";
|
||||||
import FilterInput from "../components/filter-input";
|
import FilterInput from "../components/filter-input";
|
||||||
import LimitSelector from "../components/limit-selector";
|
import LimitSelector from "../components/limit-selector";
|
||||||
@ -12,7 +13,7 @@ import ErrorCard from "../components/error-card";
|
|||||||
import { initialCoinsCoint } from "../utils/conf";
|
import { initialCoinsCoint } from "../utils/conf";
|
||||||
import { ICoinMarketData } from "../utils/interfaces";
|
import { ICoinMarketData } from "../utils/interfaces";
|
||||||
|
|
||||||
const Home = () => {
|
const Home: React.FC = () => {
|
||||||
|
|
||||||
const coins = useCoinsMarketStore(state => state.coins);
|
const coins = useCoinsMarketStore(state => state.coins);
|
||||||
const loading = useCoinsMarketStore(state => state.loading);
|
const loading = useCoinsMarketStore(state => state.loading);
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
|
import React from "react";
|
||||||
import { Link } from "react-router";
|
import { Link } from "react-router";
|
||||||
|
|
||||||
const NotFound = () => {
|
const NotFound: React.FC = () => {
|
||||||
return (
|
return (
|
||||||
<div className="not-found-container">
|
<div className="not-found-container">
|
||||||
<h1 className="title">404</h1>
|
<h1 className="title">404</h1>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user