fix: signing order
All checks were successful
Open PR on Staging / audit_and_check (pull_request) Successful in 34s
All checks were successful
Open PR on Staging / audit_and_check (pull_request) Successful in 34s
This commit is contained in:
parent
0b9c9906b7
commit
ec305c417b
@ -24,7 +24,7 @@ interface PdfMarkingProps {
|
|||||||
meta: Meta | null
|
meta: Meta | null
|
||||||
otherUserMarks: Mark[]
|
otherUserMarks: Mark[]
|
||||||
setCurrentUserMarks: (currentUserMarks: CurrentUserMark[]) => void
|
setCurrentUserMarks: (currentUserMarks: CurrentUserMark[]) => void
|
||||||
setIsReadyToSign: (isReadyToSign: boolean) => void
|
setIsMarksCompleted: (isMarksCompleted: boolean) => void
|
||||||
setUpdatedMarks: (markToUpdate: Mark) => void
|
setUpdatedMarks: (markToUpdate: Mark) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ const PdfMarking = (props: PdfMarkingProps) => {
|
|||||||
const {
|
const {
|
||||||
files,
|
files,
|
||||||
currentUserMarks,
|
currentUserMarks,
|
||||||
setIsReadyToSign,
|
setIsMarksCompleted,
|
||||||
setCurrentUserMarks,
|
setCurrentUserMarks,
|
||||||
setUpdatedMarks,
|
setUpdatedMarks,
|
||||||
handleDownload,
|
handleDownload,
|
||||||
@ -102,7 +102,7 @@ const PdfMarking = (props: PdfMarkingProps) => {
|
|||||||
)
|
)
|
||||||
setCurrentUserMarks(updatedCurrentUserMarks)
|
setCurrentUserMarks(updatedCurrentUserMarks)
|
||||||
setSelectedMark(null)
|
setSelectedMark(null)
|
||||||
setIsReadyToSign(true)
|
setIsMarksCompleted(true)
|
||||||
setUpdatedMarks(updatedMark.mark)
|
setUpdatedMarks(updatedMark.mark)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ import styles from './style.module.scss'
|
|||||||
import { PdfFile } from '../../types/drawing.ts'
|
import { PdfFile } from '../../types/drawing.ts'
|
||||||
import { convertToPdfFile } from '../../utils/pdf.ts'
|
import { convertToPdfFile } from '../../utils/pdf.ts'
|
||||||
import { CurrentUserMark, Mark } from '../../types/mark.ts'
|
import { CurrentUserMark, Mark } from '../../types/mark.ts'
|
||||||
import { getLastSignersSig } from '../../utils/sign.ts'
|
import { getLastSignersSig, isFullySigned } from '../../utils/sign.ts'
|
||||||
import {
|
import {
|
||||||
filterMarksByPubkey,
|
filterMarksByPubkey,
|
||||||
getCurrentUserMarks,
|
getCurrentUserMarks,
|
||||||
@ -110,13 +110,13 @@ export const SignPage = () => {
|
|||||||
const [currentUserMarks, setCurrentUserMarks] = useState<CurrentUserMark[]>(
|
const [currentUserMarks, setCurrentUserMarks] = useState<CurrentUserMark[]>(
|
||||||
[]
|
[]
|
||||||
)
|
)
|
||||||
const [isReadyToSign, setIsReadyToSign] = useState(false)
|
const [isMarksCompleted, setIsMarksCompleted] = useState(false)
|
||||||
const [otherUserMarks, setOtherUserMarks] = useState<Mark[]>([])
|
const [otherUserMarks, setOtherUserMarks] = useState<Mark[]>([])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (signers.length > 0) {
|
if (signers.length > 0) {
|
||||||
// check if all signers have signed then its fully signed
|
// 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)
|
setSignedStatus(SignedStatus.Fully_Signed)
|
||||||
} else {
|
} else {
|
||||||
for (const signer of signers) {
|
for (const signer of signers) {
|
||||||
@ -214,7 +214,7 @@ export const SignPage = () => {
|
|||||||
const otherUserMarks = findOtherUserMarks(signedMarks, usersPubkey!)
|
const otherUserMarks = findOtherUserMarks(signedMarks, usersPubkey!)
|
||||||
setOtherUserMarks(otherUserMarks)
|
setOtherUserMarks(otherUserMarks)
|
||||||
setCurrentUserMarks(currentUserMarks)
|
setCurrentUserMarks(currentUserMarks)
|
||||||
setIsReadyToSign(isCurrentUserMarksComplete(currentUserMarks))
|
setIsMarksCompleted(isCurrentUserMarksComplete(currentUserMarks))
|
||||||
}
|
}
|
||||||
|
|
||||||
setSignedBy(Object.keys(meta.docSignatures) as `npub1${string}`[])
|
setSignedBy(Object.keys(meta.docSignatures) as `npub1${string}`[])
|
||||||
@ -882,7 +882,21 @@ export const SignPage = () => {
|
|||||||
return <LoadingSpinner desc={loadingSpinnerDesc} />
|
return <LoadingSpinner desc={loadingSpinnerDesc} />
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isReadyToSign) {
|
if (!isMarksCompleted && signedStatus === SignedStatus.User_Is_Next_Signer) {
|
||||||
|
return (
|
||||||
|
<PdfMarking
|
||||||
|
files={getCurrentUserFiles(files, currentFileHashes, creatorFileHashes)}
|
||||||
|
currentUserMarks={currentUserMarks}
|
||||||
|
setIsMarksCompleted={setIsMarksCompleted}
|
||||||
|
setCurrentUserMarks={setCurrentUserMarks}
|
||||||
|
setUpdatedMarks={setUpdatedMarks}
|
||||||
|
handleDownload={handleDownload}
|
||||||
|
otherUserMarks={otherUserMarks}
|
||||||
|
meta={meta}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Container className={styles.container}>
|
<Container className={styles.container}>
|
||||||
@ -954,18 +968,4 @@ export const SignPage = () => {
|
|||||||
</Container>
|
</Container>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<PdfMarking
|
|
||||||
files={getCurrentUserFiles(files, currentFileHashes, creatorFileHashes)}
|
|
||||||
currentUserMarks={currentUserMarks}
|
|
||||||
setIsReadyToSign={setIsReadyToSign}
|
|
||||||
setCurrentUserMarks={setCurrentUserMarks}
|
|
||||||
setUpdatedMarks={setUpdatedMarks}
|
|
||||||
handleDownload={handleDownload}
|
|
||||||
otherUserMarks={otherUserMarks}
|
|
||||||
meta={meta}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
@ -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 }
|
||||||
|
Loading…
Reference in New Issue
Block a user