diff --git a/.vscode/settings.json b/.vscode/settings.json index bcac97ec..59c766b2 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -16,6 +16,6 @@ "editor.formatOnSave": false }, "editor.codeActionsOnSave": { - "source.fixAll.eslint": true + "source.fixAll.eslint": "explicit" } } diff --git a/client/src/AdminDashboard/PromoteUserButton.tsx b/client/src/AdminDashboard/PromoteUserButton.tsx index 388fa108..db1f4252 100644 --- a/client/src/AdminDashboard/PromoteUserButton.tsx +++ b/client/src/AdminDashboard/PromoteUserButton.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import Button from '@mui/material/Button'; -import { upgradePrivilege } from './api'; +import { upgradePrivilege, downgradePrivilege } from './api'; import LoadingButton from '../components/buttons/LoadingButton'; import ConfirmationModal from '../components/ConfirmationModal'; @@ -8,6 +8,7 @@ interface PromoteUserButtonProps { admin: boolean; email: string; updateAdmin: (email: string) => void; + removeAdmin: (email: string) => void; } /** @@ -23,6 +24,7 @@ function PromoteUserButton({ admin, email, updateAdmin, + removeAdmin, }: PromoteUserButtonProps) { const [isLoading, setLoading] = useState(false); @@ -33,6 +35,15 @@ function PromoteUserButton({ } setLoading(false); } + + async function handleDemote() { + setLoading(true); + if (await downgradePrivilege(email)) { + removeAdmin(email); + } + setLoading(false); + } + if (isLoading) { return ; } @@ -47,9 +58,12 @@ function PromoteUserButton({ ); } return ( - + handleDemote()} + /> ); } diff --git a/client/src/AdminDashboard/UserTable.tsx b/client/src/AdminDashboard/UserTable.tsx index f7d6fbc6..8909bee9 100644 --- a/client/src/AdminDashboard/UserTable.tsx +++ b/client/src/AdminDashboard/UserTable.tsx @@ -99,6 +99,19 @@ function UserTable() { ); }; + const removeAdmin = (email: string) => { + setUserList( + userList.map((entry) => { + if (entry.email !== email) { + return entry; + } + const newEntry = entry; + newEntry.admin = false; + return newEntry; + }), + ); + }; + const enableUser = (email: string) => { setUserList( userList.map((entry) => { @@ -130,6 +143,7 @@ function UserTable() { admin={user.admin} email={user.email} updateAdmin={updateAdmin} + removeAdmin={removeAdmin} />, - {row.organization} - + {row.organization} + {row.advanced ? row.dry.map((item: IRetailRescueItem) => (
@@ -65,8 +65,8 @@ function PickSheetTable({ orders }: PickSheetTableProps) { )) : row.dry} - {row.produce} - + {row.produce} + {row.advanced ? row.vito.map((item: IRetailRescueItem) => (
diff --git a/client/src/NewOrderForm/NewOrderForm.tsx b/client/src/NewOrderForm/NewOrderForm.tsx index 1dfb6d65..22a8a526 100644 --- a/client/src/NewOrderForm/NewOrderForm.tsx +++ b/client/src/NewOrderForm/NewOrderForm.tsx @@ -182,6 +182,7 @@ function NewOrderForm({ settings, dates }: NewOrderFormProps) { .set('minutes', formatedTime.minute()); const order = { + email: user.email, advanced: settings.advanced, organization: user.organization, produce: values.produce, diff --git a/client/src/OrderPage/OrderPage.tsx b/client/src/OrderPage/OrderPage.tsx index 26b4cf48..14d0bdbb 100644 --- a/client/src/OrderPage/OrderPage.tsx +++ b/client/src/OrderPage/OrderPage.tsx @@ -268,9 +268,14 @@ function OrderPage() { {admin ? ( <> - + {order.status === 'PENDING' && ( + + )}