post stubs example
This commit is contained in:
parent
0f3ddfb9f5
commit
2ce27bf8de
@ -2,6 +2,6 @@ import React from "react";
|
|||||||
|
|
||||||
import { ButtonStyled } from "./button.style";
|
import { ButtonStyled } from "./button.style";
|
||||||
|
|
||||||
export const Button = (props: React.HtmlHTMLAttributes<HTMLButtonElement>) => {
|
export const Button = (props: React.HtmlHTMLAttributes<HTMLButtonElement> & { type: "button" | "submit" | "reset" }) => {
|
||||||
return <ButtonStyled {...props} />;
|
return <ButtonStyled {...props} />;
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import React, { useEffect, useState, useRef } from "react";
|
import React, { useEffect, useState, useRef } from "react";
|
||||||
import { Link as Connectedlink } from "react-router-dom";
|
import { Link as Connectedlink, useNavigate } from "react-router-dom";
|
||||||
|
|
||||||
import data from "../__stubs__/characters.json";
|
import data from "../__stubs__/characters.json";
|
||||||
import logo from "../assets/logo_1x.png";
|
import logo from "../assets/logo_1x.png";
|
||||||
@ -27,6 +27,7 @@ export const SearchCharacterPage = () => {
|
|||||||
const [searchValue, setSearchValue] = useState("");
|
const [searchValue, setSearchValue] = useState("");
|
||||||
const [searchValueError, setSearchValueError] = useState(false);
|
const [searchValueError, setSearchValueError] = useState(false);
|
||||||
const searchInputRef = useRef<any>();
|
const searchInputRef = useRef<any>();
|
||||||
|
const nav = useNavigate()
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
searchInputRef.current.focus();
|
searchInputRef.current.focus();
|
||||||
@ -45,6 +46,30 @@ export const SearchCharacterPage = () => {
|
|||||||
setSearchValue(value);
|
setSearchValue(value);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleSubmitSearchFrom = (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
fetch(`${URLs.api.main}/search`, {
|
||||||
|
method: 'POST',
|
||||||
|
body: JSON.stringify({
|
||||||
|
search: searchValue
|
||||||
|
}),
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then((response) => response.json())
|
||||||
|
.then((data) => {
|
||||||
|
const isAlive = data.data[0].status === "alive";
|
||||||
|
|
||||||
|
if (isAlive) {
|
||||||
|
nav(URLs.baseUrl)
|
||||||
|
} else {
|
||||||
|
nav(URLs.ui.charDetail.getUrl(data.data[0].id))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<PageHeader>
|
<PageHeader>
|
||||||
@ -71,7 +96,7 @@ export const SearchCharacterPage = () => {
|
|||||||
<Header1>
|
<Header1>
|
||||||
<BrandText>Поиск</BrandText> персонажей
|
<BrandText>Поиск</BrandText> персонажей
|
||||||
</Header1>
|
</Header1>
|
||||||
<SearchForm>
|
<SearchForm onSubmit={handleSubmitSearchFrom}>
|
||||||
<InputField
|
<InputField
|
||||||
inputRef={searchInputRef}
|
inputRef={searchInputRef}
|
||||||
onChange={handleSearchChange}
|
onChange={handleSearchChange}
|
||||||
@ -80,7 +105,7 @@ export const SearchCharacterPage = () => {
|
|||||||
placeHolder="Напишите имя для поиска"
|
placeHolder="Напишите имя для поиска"
|
||||||
/>
|
/>
|
||||||
{searchValueError && <span style={{ color: 'red', display: 'flex'}}>Ай яй</span>}
|
{searchValueError && <span style={{ color: 'red', display: 'flex'}}>Ай яй</span>}
|
||||||
<SearchButton>Поиск</SearchButton>
|
<SearchButton type="submit">Поиск</SearchButton>
|
||||||
</SearchForm>
|
</SearchForm>
|
||||||
</MainCardWrapper>
|
</MainCardWrapper>
|
||||||
<CharacterList>
|
<CharacterList>
|
||||||
|
@ -7,10 +7,20 @@ router.get("/landing-data", (request, response) => {
|
|||||||
router.post("/login", (req, res) => {
|
router.post("/login", (req, res) => {
|
||||||
const { username, password } = req.body;
|
const { username, password } = req.body;
|
||||||
if (username === "admin") {
|
if (username === "admin") {
|
||||||
response.send(require("../json/landing-data/success.json"));
|
response.send(require("../json/user/sitter.success.json"));
|
||||||
} else {
|
} else {
|
||||||
response.send(require("../json/landing-data/success.json"));
|
response.send(require("../json/landing-data/success.json"));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
router.post('/search', (req, res) => {
|
||||||
|
const { search } = req.body;
|
||||||
|
|
||||||
|
if (search === "Morty") {
|
||||||
|
return res.send(require("../json/seach/alive.success.json"));
|
||||||
|
}
|
||||||
|
|
||||||
|
res.send(require("../json/seach/success.json"));
|
||||||
|
})
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
|
24
stubs/json/seach/alive.success.json
Normal file
24
stubs/json/seach/alive.success.json
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"id": 14,
|
||||||
|
"name": "Morty",
|
||||||
|
"status": "alive",
|
||||||
|
"species": "Alien",
|
||||||
|
"type": "",
|
||||||
|
"gender": "Male",
|
||||||
|
"origin": {
|
||||||
|
"name": "unknown",
|
||||||
|
"url": ""
|
||||||
|
},
|
||||||
|
"location": {
|
||||||
|
"name": "Citadel of Ricks",
|
||||||
|
"url": "https://rickandmortyapi.com/api/location/3"
|
||||||
|
},
|
||||||
|
"image": "https://rickandmortyapi.com/api/character/avatar/14.jpeg",
|
||||||
|
"episode": ["https://rickandmortyapi.com/api/episode/10"],
|
||||||
|
"url": "https://rickandmortyapi.com/api/character/14",
|
||||||
|
"created": "2017-11-04T20:51:31.373Z"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
24
stubs/json/seach/success.json
Normal file
24
stubs/json/seach/success.json
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"id": 14,
|
||||||
|
"name": "Alien Morty",
|
||||||
|
"status": "unknown",
|
||||||
|
"species": "Alien",
|
||||||
|
"type": "",
|
||||||
|
"gender": "Male",
|
||||||
|
"origin": {
|
||||||
|
"name": "unknown",
|
||||||
|
"url": ""
|
||||||
|
},
|
||||||
|
"location": {
|
||||||
|
"name": "Citadel of Ricks",
|
||||||
|
"url": "https://rickandmortyapi.com/api/location/3"
|
||||||
|
},
|
||||||
|
"image": "https://rickandmortyapi.com/api/character/avatar/14.jpeg",
|
||||||
|
"episode": ["https://rickandmortyapi.com/api/episode/10"],
|
||||||
|
"url": "https://rickandmortyapi.com/api/character/14",
|
||||||
|
"created": "2017-11-04T20:51:31.373Z"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
6
stubs/json/user/sitter.success.json
Normal file
6
stubs/json/user/sitter.success.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"role": "sitter",
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user