From 84f070d456e7afbfa92237a5c7cd3b0c0ca698e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chif=20Gerg=C5=91?= <chif.gergo@cloud.bme.hu> Date: Wed, 21 Oct 2020 22:28:37 +0200 Subject: [PATCH] Refactor context, add types from request --- package-lock.json | 14 +++++++++----- src/core/context/UserContext.tsx | 29 +++++++++++------------------ src/core/types.ts | 25 +++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 23 deletions(-) create mode 100644 src/core/types.ts diff --git a/package-lock.json b/package-lock.json index 1809a4e..a1fa745 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2512,6 +2512,14 @@ } } }, + "@material-ui/icons": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.9.1.tgz", + "integrity": "sha512-GBitL3oBWO0hzBhvA9KxqcowRUsA0qzwKkURyC8nppnC3fw54KPKZ+d4V1Eeg/UnDRSzDaI9nGCdel/eh9AQMg==", + "requires": { + "@babel/runtime": "^7.4.4" + } + }, "@material-ui/styles": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.10.0.tgz", @@ -2934,7 +2942,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "dev": true, "requires": { "@types/react": "*", "hoist-non-react-statics": "^3.3.0" @@ -3037,7 +3044,6 @@ "version": "0.63.6", "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.63.6.tgz", "integrity": "sha512-qAv/VOyXAk4it9MOsQoyUjUnEJ3kAW1FCRGi0OvfQDKLH1/FFogVFvoB6xAlBNc6lPyBtCg+nvzj/ScYe0PqCQ==", - "dev": true, "requires": { "@types/react": "*" } @@ -3080,7 +3086,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.2.tgz", "integrity": "sha512-HNocYLfrsnNNm8NTS/W53OERSjRA8dx5Bn6wBd2rXXwt4Z3s+oqvY6/PbVt3e6sgtzI63GX//WiWiRhWur08qQ==", - "dev": true, "requires": { "@types/hoist-non-react-statics": "*", "@types/react": "*", @@ -3091,8 +3096,7 @@ "csstype": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.2.tgz", - "integrity": "sha512-ofovWglpqoqbfLNOTBNZLSbMuGrblAf1efvvArGKOZMBrIoJeu5UsAipQolkijtyQx5MtAzT/J9IHj/CEY1mJw==", - "dev": true + "integrity": "sha512-ofovWglpqoqbfLNOTBNZLSbMuGrblAf1efvvArGKOZMBrIoJeu5UsAipQolkijtyQx5MtAzT/J9IHj/CEY1mJw==" } } }, diff --git a/src/core/context/UserContext.tsx b/src/core/context/UserContext.tsx index d7f8437..34f1be7 100644 --- a/src/core/context/UserContext.tsx +++ b/src/core/context/UserContext.tsx @@ -1,4 +1,5 @@ -import React, { createContext, ReactNode, useReducer } from 'react'; +import React, { createContext, ReactNode, useState } from 'react'; +import { Profile } from '../types'; // Interface definitions interface IWarnings extends Document { @@ -31,37 +32,29 @@ type Props = { children: ReactNode; }; -interface IContextProps { - state: IProfile; - dispatch: ({ type }: { type: string }) => void; +interface ContextProps { + profile: Profile; + setProfile: (profile: Profile) => void; } // Context -const initialState = { +const initialState: Profile = { external_id: 'abcd', studentCardNumber: '1234', - roomNumber: 104, + roomNumber: '104', picture: 'alma.jpg', role: Role.User, email: 'alma@gmail.com', name: 'Nagy Gizike', - warning: [], + warnings: [], }; export const userContext = createContext({} as IContextProps); const { Provider } = userContext; -export const UserStateProvider: React.FunctionComponent<Props> = (props: Props) => { - const { children } = props; - const [state, dispatch] = useReducer((prevState: any, action: any) => { - switch (action.type) { - case 'update': - return action.payload; - default: - return prevState; // do nothing - } - }, initialState); +export const UserStateProvider: React.FC = ({ children }) => { + const [profile, setProfile] = useState<Profile>(initialState); - return <Provider value={{ state, dispatch }}>{children}</Provider>; + return <Provider value={{ profile, setProfile }}>{children}</Provider>; }; export default { userContext, UserStateProvider }; diff --git a/src/core/types.ts b/src/core/types.ts new file mode 100644 index 0000000..60db482 --- /dev/null +++ b/src/core/types.ts @@ -0,0 +1,25 @@ +export enum Role { + Admin, + Staff, + User, +} + +export interface Profile { + external_id: string; + studentCardNumber: string; + roomNumber?: string; + picture: string; + role: Role.Admin | Role.Staff | Role.User; + email?: string; + name?: string; + warnings: [Warnings] | []; +} + +export interface Warnings { + text: string; + date: Date; + given_by: { + _id: string; + name: string; + }; +} -- GitLab