🚸 Make errors red

This commit is contained in:
nikolark committed 2021-11-18 22:58:30 +01:00
1 parent 9576becb62
commit 40b3cb119f
5 files changed
+26 -19

No files matched your search

+10 -10
View File
@@ -2,17 +2,17 @@
Before starting, make sure you have a working python and nodejs setup with pyenv and nvm. Before starting, make sure you have a working python and nodejs setup with pyenv and nvm.
```bash ```bash
apt-get install libmysqlclient-dev apt-get install libmysqlclient-dev
poetry install poetry install
poetry shell poetry shell
python manage.py migrate python manage.py migrate
python manage.py runserver python manage.py runserver
# in another terminal # in another terminal
cd frontend cd frontend
npm install npm install
npm start npm start
``` ```
## References: ## References:
- We use JS code generation to work with queries/mutations in our graphql API: https://github.com/dotansimha/graphql-typed-document-node - We use JS code generation to work with queries/mutations in our graphql API: https://github.com/dotansimha/graphql-typed-document-node
+2 -2
View File
@@ -1,5 +1,5 @@
.toast { .toast {
position: absolute; position: absolute;
right: 32px;
bottom: 32px; bottom: 32px;
} left: 32px;
}
+3 -2
View File
@@ -7,9 +7,10 @@ import { useToast } from "./ToastProvider";
export const Toast: React.FC = () => { export const Toast: React.FC = () => {
const ref = useRef<HTMLInputElement>(null); const ref = useRef<HTMLInputElement>(null);
const { visible, showToast, message } = useToast(); const { visible, showToast, message, background } = useToast();
const classes = clsx("toast align-items-center text-white bg-primary border-0", styles.toast); const backgroundColor = `bg-${background}`;
const classes = clsx("toast align-items-center text-white bg-primary border-0", backgroundColor, styles.toast);
useEffect(() => { useEffect(() => {
if (!ref.current) return; if (!ref.current) return;
+9 -3
View File
@@ -3,8 +3,9 @@ import React, { ReactNode, useContext, useState } from "react";
interface ToastProps { interface ToastProps {
visible: boolean; visible: boolean;
message: string; message: string;
showToast: (message: string) => void; showToast: (message: string, background?: string) => void;
hide: () => void; hide: () => void;
background: string;
} }
const defaultState = { const defaultState = {
@@ -14,6 +15,7 @@ const defaultState = {
showToast: () => {}, showToast: () => {},
// eslint-disable-next-line @typescript-eslint/no-empty-function // eslint-disable-next-line @typescript-eslint/no-empty-function
hide: () => {}, hide: () => {},
background: "primary",
}; };
const ToastContext = React.createContext<ToastProps>(defaultState); const ToastContext = React.createContext<ToastProps>(defaultState);
@@ -24,9 +26,11 @@ type ToastProviderProps = {
export const ToastProvider: React.FC<ToastProviderProps> = ({ children }) => { export const ToastProvider: React.FC<ToastProviderProps> = ({ children }) => {
const [visible, setVisible] = useState(defaultState.visible); const [visible, setVisible] = useState(defaultState.visible);
const [message, setMessage] = useState(""); const [message, setMessage] = useState("");
const [background, setBackground] = useState("");
const showToast = (newMessage: string) => { const showToast = (newMessage: string, background = "primary") => {
setMessage(newMessage); setMessage(newMessage);
setBackground(background);
if (!visible) { if (!visible) {
setVisible(true); setVisible(true);
setTimeout(() => { setTimeout(() => {
@@ -39,7 +43,9 @@ export const ToastProvider: React.FC<ToastProviderProps> = ({ children }) => {
setVisible(true); setVisible(true);
setMessage(""); setMessage("");
}; };
return <ToastContext.Provider value={{ visible, showToast, message, hide }}>{children}</ToastContext.Provider>; return (
<ToastContext.Provider value={{ visible, showToast, message, hide, background }}>{children}</ToastContext.Provider>
);
}; };
export const useToast = (): ToastProps => useContext(ToastContext); export const useToast = (): ToastProps => useContext(ToastContext);
+2 -2
View File
@@ -78,12 +78,12 @@ export const Register: React.FC = () => {
} }
if (createOrderResponse?.__typename === "FormErrors") { if (createOrderResponse?.__typename === "FormErrors") {
showToast(createOrderResponse.message); showToast(createOrderResponse.message, "danger");
return; return;
} }
if (createOrderResponse?.__typename === "InsufficientFunds") { if (createOrderResponse?.__typename === "InsufficientFunds") {
showToast(`${createOrderResponse.message} Du mangler ${createOrderResponse.amountLacking},-`); showToast(`${createOrderResponse.message} Du mangler ${createOrderResponse.amountLacking},-`, "danger");
} }
}; };
return ( return (