Skip to content
Snippets Groups Projects
Commit adafe99e authored by xaralis's avatar xaralis
Browse files

feat: support accept and archive action

parent feefa1e2
No related branches found
No related tags found
No related merge requests found
...@@ -253,16 +253,16 @@ export const acceptProposal = createAsyncAction( ...@@ -253,16 +253,16 @@ export const acceptProposal = createAsyncAction(
/** /**
* @param {CF2021.ProposalPost} proposal * @param {CF2021.ProposalPost} proposal
*/ */
(proposal) => { ({ proposal, archive }) => {
return updateProposalState(proposal, "accepted"); return updateProposalState(proposal, "accepted", { is_archived: archive });
}, },
{ {
shortCircuitHook: ({ args }) => { shortCircuitHook: ({ args }) => {
if (args.type !== "procedure-proposal") { if (args.proposal.type !== "procedure-proposal") {
return errorResult(); return errorResult();
} }
if (args.state !== "announced") { if (args.proposal.state !== "announced") {
return errorResult(); return errorResult();
} }
......
...@@ -65,8 +65,10 @@ const PostsContainer = ({ className, showAddPostCta }) => { ...@@ -65,8 +65,10 @@ const PostsContainer = ({ className, showAddPostCta }) => {
setPostToAccept, setPostToAccept,
onAcceptConfirm, onAcceptConfirm,
onAcceptCancel, onAcceptCancel,
acceptState, ] = useItemActionConfirm(acceptProposal, (item, archive) => ({
] = useItemActionConfirm(acceptProposal); proposal: item,
archive,
}));
const [ const [
postToEdit, postToEdit,
setPostToEdit, setPostToEdit,
...@@ -104,6 +106,20 @@ const PostsContainer = ({ className, showAddPostCta }) => { ...@@ -104,6 +106,20 @@ const PostsContainer = ({ className, showAddPostCta }) => {
(state) => state.filters.flags === "archived" (state) => state.filters.flags === "archived"
); );
const [acceptingProposal, acceptingProposalError] = useActionState(
acceptProposal,
{
proposal: postToAccept,
archive: false,
}
);
const [
acceptingAndArchivingProposal,
acceptingAndArchivingProposalError,
] = useActionState(acceptProposal, {
proposal: postToAccept,
archive: true,
});
const [rejectingProposal, rejectingProposalError] = useActionState( const [rejectingProposal, rejectingProposalError] = useActionState(
rejectProposal, rejectProposal,
{ {
...@@ -237,17 +253,45 @@ const PostsContainer = ({ className, showAddPostCta }) => { ...@@ -237,17 +253,45 @@ const PostsContainer = ({ className, showAddPostCta }) => {
> >
Procedurální návrh bude <strong>vyhlášen</strong>. Opravdu to chcete? Procedurální návrh bude <strong>vyhlášen</strong>. Opravdu to chcete?
</ModalConfirm> </ModalConfirm>
<ModalConfirm <ModalWithActions
isOpen={!!postToAccept} isOpen={!!postToAccept}
onConfirm={onAcceptConfirm}
onCancel={onAcceptCancel} onCancel={onAcceptCancel}
confirming={acceptState.loading} error={acceptingProposalError || acceptingAndArchivingProposalError}
error={acceptState.error}
title="Schválit procedurální návrh?" title="Schválit procedurální návrh?"
yesActionLabel="Schválit návrh" containerClassName="max-w-lg"
actions={
<>
<Button
hoverActive
color="blue-300"
className="text-sm"
onClick={() => onAcceptConfirm(false)}
loading={acceptingProposal}
>
Schválit
</Button>
<Button
hoverActive
color="blue-300"
className="text-sm"
onClick={() => onAcceptConfirm(true)}
loading={acceptingAndArchivingProposal}
>
Schválit a archivovat
</Button>
<Button
hoverActive
color="grey-125"
className="text-sm"
onClick={onAcceptCancel}
>
Zrušit
</Button>
</>
}
> >
Procedurální návrh bude <strong>schválen</strong>. Opravdu to chcete? Procedurální návrh bude <strong>schválen</strong>. Opravdu to chcete?
</ModalConfirm> </ModalWithActions>
<ModalWithActions <ModalWithActions
isOpen={!!postToReject} isOpen={!!postToReject}
onCancel={onRejectCancel} onCancel={onRejectCancel}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment