diff --git a/src/components/PDFView/PdfMarking.tsx b/src/components/PDFView/PdfMarking.tsx index dafe42b..062fad5 100644 --- a/src/components/PDFView/PdfMarking.tsx +++ b/src/components/PDFView/PdfMarking.tsx @@ -23,7 +23,7 @@ interface PdfMarkingProps { meta: Meta | null otherUserMarks: Mark[] setCurrentUserMarks: (currentUserMarks: CurrentUserMark[]) => void - setIsReadyToSign: (isReadyToSign: boolean) => void + setIsMarksCompleted: (isMarksCompleted: boolean) => void setUpdatedMarks: (markToUpdate: Mark) => void } @@ -37,7 +37,7 @@ const PdfMarking = (props: PdfMarkingProps) => { const { files, currentUserMarks, - setIsReadyToSign, + setIsMarksCompleted, setCurrentUserMarks, setUpdatedMarks, handleDownload, @@ -101,7 +101,7 @@ const PdfMarking = (props: PdfMarkingProps) => { ) setCurrentUserMarks(updatedCurrentUserMarks) setSelectedMark(null) - setIsReadyToSign(true) + setIsMarksCompleted(true) setUpdatedMarks(updatedMark.mark) } diff --git a/src/pages/sign/index.tsx b/src/pages/sign/index.tsx index 0e0b135..7ca88e6 100644 --- a/src/pages/sign/index.tsx +++ b/src/pages/sign/index.tsx @@ -39,7 +39,7 @@ import { Container } from '../../components/Container' import { DisplayMeta } from './internal/displayMeta' import styles from './style.module.scss' import { CurrentUserMark, Mark } from '../../types/mark.ts' -import { getLastSignersSig } from '../../utils/sign.ts' +import { getLastSignersSig, isFullySigned } from '../../utils/sign.ts' import { filterMarksByPubkey, getCurrentUserMarks, @@ -112,13 +112,13 @@ export const SignPage = () => { const [currentUserMarks, setCurrentUserMarks] = useState( [] ) - const [isReadyToSign, setIsReadyToSign] = useState(false) + const [isMarksCompleted, setIsMarksCompleted] = useState(false) const [otherUserMarks, setOtherUserMarks] = useState([]) useEffect(() => { if (signers.length > 0) { // check if all signers have signed then its fully signed - if (signers.every((signer) => signedBy.includes(signer))) { + if (isFullySigned(signers, signedBy)) { setSignedStatus(SignedStatus.Fully_Signed) } else { for (const signer of signers) { @@ -216,7 +216,7 @@ export const SignPage = () => { const otherUserMarks = findOtherUserMarks(signedMarks, usersPubkey!) setOtherUserMarks(otherUserMarks) setCurrentUserMarks(currentUserMarks) - setIsReadyToSign(isCurrentUserMarksComplete(currentUserMarks)) + setIsMarksCompleted(isCurrentUserMarksComplete(currentUserMarks)) } setSignedBy(Object.keys(meta.docSignatures) as `npub1${string}`[]) @@ -883,90 +883,90 @@ export const SignPage = () => { return } - if (isReadyToSign) { + if (!isMarksCompleted && signedStatus === SignedStatus.User_Is_Next_Signer) { return ( - <> - - {displayInput && ( - <> - - Select sigit file - - - - setSelectedFile(value)} - /> - - - {selectedFile && ( - - - - )} - - )} - - {submittedBy && Object.entries(files).length > 0 && meta && ( - <> - - - {signedStatus === SignedStatus.Fully_Signed && ( - - - - )} - - {signedStatus === SignedStatus.User_Is_Next_Signer && ( - - - - )} - - {isSignerOrCreator && ( - - - - )} - - )} - - + ) } return ( - + <> + + {displayInput && ( + <> + + Select sigit file + + + + setSelectedFile(value)} + /> + + + {selectedFile && ( + + + + )} + + )} + + {submittedBy && Object.entries(files).length > 0 && meta && ( + <> + + + {signedStatus === SignedStatus.Fully_Signed && ( + + + + )} + + {signedStatus === SignedStatus.User_Is_Next_Signer && ( + + + + )} + + {isSignerOrCreator && ( + + + + )} + + )} + + ) } diff --git a/src/utils/sign.ts b/src/utils/sign.ts index 3369c54..ff67e44 100644 --- a/src/utils/sign.ts +++ b/src/utils/sign.ts @@ -31,4 +31,16 @@ const getLastSignersSig = ( } } -export { getLastSignersSig } +/** + * Checks if all signers have signed the sigit + * @param signers - an array of npubs of all signers from the Sigit + * @param signedBy - an array of npubs that have signed it already + */ +const isFullySigned = ( + signers: `npub1${string}`[], + signedBy: `npub1${string}`[] +): boolean => { + return signers.every((signer) => signedBy.includes(signer)) +} + +export { getLastSignersSig, isFullySigned }