Skip to content

Commit 64eef04

Browse files
committed
add (front end test)) updateUser
1 parent 8a9fb52 commit 64eef04

File tree

5 files changed

+330
-74
lines changed

5 files changed

+330
-74
lines changed

src/app/app.tsx

Lines changed: 107 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
1-
import React from 'react';
2-
import { useEffect } from 'react';
3-
import { useLocation, Routes, Route } from 'react-router-dom';
4-
import Header from './header';
5-
import Footer from './footer';
6-
import Home from '../views/home';
7-
import About from '../views/about';
8-
import Register from '../views/register';
9-
import Login from '../views/login';
10-
import Logout from '../views/logout';
11-
import Menu from '../views/menu';
12-
import Delivery from '../views/delivery';
13-
import FranchiseDashboard from '../views/franchiseDashboard';
14-
import History from '../views/history';
15-
import AdminDashboard from '../views/adminDashboard';
16-
import DinerDashboard from '../views/dinerDashboard';
17-
import CreateStore from '../views/createStore';
18-
import CreateFranchise from '../views/createFranchise';
19-
import CloseFranchise from '../views/closeFranchise';
20-
import CloseStore from '../views/closeStore';
21-
import Payment from '../views/payment';
22-
import NotFound from '../views/notFound';
23-
import Docs from '../views/docs';
24-
import Breadcrumb from '../components/breadcrumb';
25-
import { pizzaService } from '../service/service';
26-
import { Role, User } from '../service/pizzaService';
27-
import 'preline/preline';
1+
import React from "react";
2+
import { useEffect } from "react";
3+
import { useLocation, Routes, Route } from "react-router-dom";
4+
import Header from "./header";
5+
import Footer from "./footer";
6+
import Home from "../views/home";
7+
import About from "../views/about";
8+
import Register from "../views/register";
9+
import Login from "../views/login";
10+
import Logout from "../views/logout";
11+
import Menu from "../views/menu";
12+
import Delivery from "../views/delivery";
13+
import FranchiseDashboard from "../views/franchiseDashboard";
14+
import History from "../views/history";
15+
import AdminDashboard from "../views/adminDashboard";
16+
import DinerDashboard from "../views/dinerDashboard";
17+
import CreateStore from "../views/createStore";
18+
import CreateFranchise from "../views/createFranchise";
19+
import CloseFranchise from "../views/closeFranchise";
20+
import CloseStore from "../views/closeStore";
21+
import Payment from "../views/payment";
22+
import NotFound from "../views/notFound";
23+
import Docs from "../views/docs";
24+
import Breadcrumb from "../components/breadcrumb";
25+
import { pizzaService } from "../service/service";
26+
import { Role, User } from "../service/pizzaService";
27+
import "preline/preline";
2828

2929
declare global {
3030
interface Window {
@@ -62,36 +62,95 @@ export default function App() {
6262
}
6363

6464
const navItems = [
65-
{ title: 'Home', to: '/', component: <Home />, display: [] },
66-
{ title: 'Diner', to: '/diner-dashboard', component: <DinerDashboard user={user} />, display: [] },
67-
{ title: 'Order', to: '/menu', component: <Menu />, display: ['nav'] },
65+
{ title: "Home", to: "/", component: <Home />, display: [] },
6866
{
69-
title: 'Franchise',
70-
to: '/franchise-dashboard',
67+
title: "Diner",
68+
to: "/diner-dashboard",
69+
component: <DinerDashboard user={user} setUser={setUser} />,
70+
display: [],
71+
},
72+
{ title: "Order", to: "/menu", component: <Menu />, display: ["nav"] },
73+
{
74+
title: "Franchise",
75+
to: "/franchise-dashboard",
7176
component: <FranchiseDashboard user={user} />,
7277
constraints: [isNotAdmin],
73-
display: ['nav', 'footer'],
78+
display: ["nav", "footer"],
79+
},
80+
{ title: "About", to: "/about", component: <About />, display: ["footer"] },
81+
{
82+
title: "History",
83+
to: "/history",
84+
component: <History />,
85+
display: ["footer"],
86+
},
87+
{
88+
title: "Admin",
89+
to: "/admin-dashboard",
90+
component: <AdminDashboard user={user} />,
91+
constraints: [isAdmin],
92+
display: ["nav"],
93+
},
94+
{
95+
title: "Create franchise",
96+
to: "/:subPath?/create-franchise",
97+
component: <CreateFranchise />,
98+
display: [],
99+
},
100+
{
101+
title: "Close franchise",
102+
to: "/:subPath?/close-franchise",
103+
component: <CloseFranchise />,
104+
display: [],
105+
},
106+
{
107+
title: "Create store",
108+
to: "/:subPath?/create-store",
109+
component: <CreateStore />,
110+
display: [],
111+
},
112+
{
113+
title: "Close store",
114+
to: "/:subPath?/close-store",
115+
component: <CloseStore />,
116+
display: [],
117+
},
118+
{ title: "Payment", to: "/payment", component: <Payment />, display: [] },
119+
{
120+
title: "Delivery",
121+
to: "/delivery",
122+
component: <Delivery />,
123+
display: [],
124+
},
125+
{
126+
title: "Login",
127+
to: "/:subPath?/login",
128+
component: <Login setUser={setUser} />,
129+
constraints: [loggedOut],
130+
display: ["nav"],
131+
},
132+
{
133+
title: "Register",
134+
to: "/:subPath?/register",
135+
component: <Register setUser={setUser} />,
136+
constraints: [loggedOut],
137+
display: ["nav"],
138+
},
139+
{
140+
title: "Logout",
141+
to: "/:subPath?/logout",
142+
component: <Logout setUser={setUser} />,
143+
constraints: [loggedIn],
144+
display: ["nav"],
74145
},
75-
{ title: 'About', to: '/about', component: <About />, display: ['footer'] },
76-
{ title: 'History', to: '/history', component: <History />, display: ['footer'] },
77-
{ title: 'Admin', to: '/admin-dashboard', component: <AdminDashboard user={user} />, constraints: [isAdmin], display: ['nav'] },
78-
{ title: 'Create franchise', to: '/:subPath?/create-franchise', component: <CreateFranchise />, display: [] },
79-
{ title: 'Close franchise', to: '/:subPath?/close-franchise', component: <CloseFranchise />, display: [] },
80-
{ title: 'Create store', to: '/:subPath?/create-store', component: <CreateStore />, display: [] },
81-
{ title: 'Close store', to: '/:subPath?/close-store', component: <CloseStore />, display: [] },
82-
{ title: 'Payment', to: '/payment', component: <Payment />, display: [] },
83-
{ title: 'Delivery', to: '/delivery', component: <Delivery />, display: [] },
84-
{ title: 'Login', to: '/:subPath?/login', component: <Login setUser={setUser} />, constraints: [loggedOut], display: ['nav'] },
85-
{ title: 'Register', to: '/:subPath?/register', component: <Register setUser={setUser} />, constraints: [loggedOut], display: ['nav'] },
86-
{ title: 'Logout', to: '/:subPath?/logout', component: <Logout setUser={setUser} />, constraints: [loggedIn], display: ['nav'] },
87-
{ title: 'Docs', to: '/docs/:docType?', component: <Docs />, display: [] },
88-
{ title: 'Opps', to: '*', component: <NotFound />, display: [] },
146+
{ title: "Docs", to: "/docs/:docType?", component: <Docs />, display: [] },
147+
{ title: "Opps", to: "*", component: <NotFound />, display: [] },
89148
];
90149

91150
return (
92151
<div className="bg-gray-800">
93152
<Header user={user} navItems={navItems} />
94-
<Breadcrumb location={location.pathname.replace('/', '')} />
153+
<Breadcrumb location={location.pathname.replace("/", "")} />
95154

96155
<main className="size-full">
97156
<Routes>

src/service/httpPizzaService.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,16 @@ class HttpPizzaService implements PizzaService {
154154
}
155155
return this.callEndpoint(`/api/docs`);
156156
}
157+
158+
async updateUser(updatedUser: User): Promise<User> {
159+
const { user, token } = await this.callEndpoint(
160+
`/api/user/${updatedUser.id}`,
161+
"PUT",
162+
updatedUser
163+
);
164+
localStorage.setItem("token", token);
165+
return Promise.resolve(user);
166+
}
157167
}
158168

159169
const httpPizzaService = new HttpPizzaService();

src/service/pizzaService.ts

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
enum Role {
2-
Diner = 'diner',
3-
Franchisee = 'franchisee',
4-
Admin = 'admin',
2+
Diner = "diner",
3+
Franchisee = "franchisee",
4+
Admin = "admin",
55
}
66

77
namespace Role {
88
export function isRole(user: User | null, role: Role): boolean {
9-
return user != null && Array.isArray(user.roles) && !!user.roles.find((r) => r.role === role);
9+
return (
10+
user != null &&
11+
Array.isArray(user.roles) &&
12+
!!user.roles.find((r) => r.role === role)
13+
);
1014
}
1115
}
1216

@@ -105,11 +109,32 @@ interface PizzaService {
105109
verifyOrder(jwt: string): Promise<JWTPayload>;
106110
getFranchise(user: User): Promise<Franchise[]>;
107111
createFranchise(franchise: Franchise): Promise<Franchise>;
108-
getFranchises(page: number, limit: number, nameFilter: string): Promise<FranchiseList>;
112+
getFranchises(
113+
page: number,
114+
limit: number,
115+
nameFilter: string
116+
): Promise<FranchiseList>;
109117
closeFranchise(franchise: Franchise): Promise<void>;
110118
createStore(franchise: Franchise, store: Store): Promise<Store>;
111119
closeStore(franchise: Franchise, store: Store): Promise<null>;
112120
docs(docType: string): Promise<Endpoints>;
121+
updateUser(user: User): Promise<User>;
113122
}
114123

115-
export { Role, PizzaService, User, Menu, Pizza, OrderHistory, Order, Franchise, FranchiseList, Store, OrderItem, Endpoint, Endpoints, OrderResponse, JWTPayload };
124+
export {
125+
Role,
126+
PizzaService,
127+
User,
128+
Menu,
129+
Pizza,
130+
OrderHistory,
131+
Order,
132+
Franchise,
133+
FranchiseList,
134+
Store,
135+
OrderItem,
136+
Endpoint,
137+
Endpoints,
138+
OrderResponse,
139+
JWTPayload,
140+
};

0 commit comments

Comments
 (0)