diff --git a/.env b/.env index 51d74b4a..d8a8b5c6 100644 --- a/.env +++ b/.env @@ -14,6 +14,6 @@ JIRA_LABELS=sites_BAU JIRA_COPY_UPDATES_EPIC=KAN-1 GOOGLE_CREDENTIALS=googlecreds GOOGLE_DRIVE_FOLDER_ID=googlecreds -COPYD0C_TEMPLATE_ID=googlecreds +COPYDOC_TEMPLATE_ID=googlecreds GOOGLE_PRIVATE_KEY=base64encodedprivatekey GOOGLE_PRIVATE_KEY_ID=privatekeyid diff --git a/static/client/components/Navigation/Navigation.tsx b/static/client/components/Navigation/Navigation.tsx index 139de460..806a86c1 100644 --- a/static/client/components/Navigation/Navigation.tsx +++ b/static/client/components/Navigation/Navigation.tsx @@ -9,6 +9,7 @@ import NavigationItems from "./NavigationItems"; import NavigationCollapseToggle from "@/components/Navigation/NavigationCollapseToggle"; import SiteSelector from "@/components/SiteSelector"; +import type { IUser } from "@/services/api/types/users"; import { useStore } from "@/store"; const Navigation = (): JSX.Element => { @@ -17,7 +18,7 @@ const Navigation = (): JSX.Element => { const [user, setUser] = useStore((state) => [state.user, state.setUser]); const logout = useCallback(() => { - setUser(null); + setUser({} as IUser); window.open("/logout", "_self"); }, [setUser]); diff --git a/static/client/components/OwnerAndReviewers/OwnerAndReviewers.types.ts b/static/client/components/OwnerAndReviewers/OwnerAndReviewers.types.ts index 179fcee0..4bcb426b 100644 --- a/static/client/components/OwnerAndReviewers/OwnerAndReviewers.types.ts +++ b/static/client/components/OwnerAndReviewers/OwnerAndReviewers.types.ts @@ -24,3 +24,8 @@ export interface IUseUsersRequest { setOptions: Dispatch>; handleChange: (event: ChangeEvent) => void; } + +export interface IReporterProps { + reporter: IUser | null; + setReporter: React.Dispatch>; +} diff --git a/static/client/components/OwnerAndReviewers/Reporter.tsx b/static/client/components/OwnerAndReviewers/Reporter.tsx new file mode 100644 index 00000000..cefda835 --- /dev/null +++ b/static/client/components/OwnerAndReviewers/Reporter.tsx @@ -0,0 +1,42 @@ +import { useCallback } from "react"; + +import CustomSearchAndFilter from "./CustomSearchAndFilter"; +import { useUsersRequest } from "./OwnerAndReviewers.hooks"; +import type { IReporterProps } from "./OwnerAndReviewers.types"; + +import { type IUser } from "@/services/api/types/users"; +import { useStore } from "@/store"; + +const Reporter = ({ reporter, setReporter }: IReporterProps): JSX.Element => { + const user = useStore((state) => state.user); + const { options, setOptions, handleChange } = useUsersRequest(); + + const handleRemoveReporter = useCallback( + () => () => { + setReporter(user); + }, + [setReporter, user], + ); + + const handleSelectReporter = useCallback( + (option: IUser) => { + setOptions([]); + setReporter(option); + }, + [setOptions, setReporter], + ); + + return ( + + ); +}; + +export default Reporter; diff --git a/static/client/components/RequestTaskModal/RequestTaskModal.tsx b/static/client/components/RequestTaskModal/RequestTaskModal.tsx index 1b48d779..5110a514 100644 --- a/static/client/components/RequestTaskModal/RequestTaskModal.tsx +++ b/static/client/components/RequestTaskModal/RequestTaskModal.tsx @@ -4,10 +4,12 @@ import { Button, Input, Modal, RadioInput, Spinner, Textarea, Tooltip } from "@c import type { IRequestTaskModalProps } from "./RequestTaskModal.types"; +import Reporter from "@/components/OwnerAndReviewers/Reporter"; import config from "@/config"; import { PagesServices } from "@/services/api/services/pages"; import { ChangeRequestType, PageStatus } from "@/services/api/types/pages"; import { DatesServices } from "@/services/dates"; +import { useStore } from "@/store"; const RequestTaskModal = ({ changeType, @@ -21,6 +23,8 @@ const RequestTaskModal = ({ const [summary, setSummary] = useState(); const [descr, setDescr] = useState(""); const [isLoading, setIsLoading] = useState(false); + const user = useStore((state) => state.user); + const [reporter, setReporter] = useState(user); const handleChangeDueDate = useCallback((e: ChangeEvent) => { setDueDate(e.target.value); @@ -52,7 +56,7 @@ const RequestTaskModal = ({ PagesServices.requestRemoval({ due_date: dueDate, webpage_id: webpage.id, - reporter_id: webpage.owner.id, + reporter_struct: reporter, description: descr, }).then(() => { setIsLoading(false); @@ -67,7 +71,7 @@ const RequestTaskModal = ({ PagesServices.requestChanges({ due_date: dueDate, webpage_id: webpage.id, - reporter_id: webpage.owner.id, + reporter_struct: reporter, type: changeType, summary, description: `Copy doc link: ${webpage.copy_doc_link} \n${descr}`, @@ -78,7 +82,7 @@ const RequestTaskModal = ({ }); } } - }, [changeType, dueDate, summary, descr, webpage, onClose]); + }, [dueDate, webpage.id, webpage.status, webpage.copy_doc_link, changeType, reporter, descr, onClose, summary]); const title = useMemo(() => { switch (changeType) { @@ -176,6 +180,9 @@ const RequestTaskModal = ({ )} +
+ +