diff --git a/src/components/UsersDetails.tsx/index.tsx b/src/components/UsersDetails.tsx/index.tsx
index 778a3d9..25ccf7f 100644
--- a/src/components/UsersDetails.tsx/index.tsx
+++ b/src/components/UsersDetails.tsx/index.tsx
@@ -4,6 +4,7 @@ import {
fromUnixTimestamp,
hexToNpub,
npubToHex,
+ SigitStatus,
SignStatus
} from '../../utils'
import { useSigitMeta } from '../../hooks/useSigitMeta'
@@ -15,6 +16,8 @@ import {
faCalendar,
faCalendarCheck,
faCalendarPlus,
+ faCheck,
+ faClock,
faEye,
faFile,
faFileCircleExclamation
@@ -22,7 +25,7 @@ import {
import { getExtensionIconLabel } from '../getExtensionIconLabel'
import { useAppSelector } from '../../hooks/store'
import { DisplaySigner } from '../DisplaySigner'
-import { Meta } from '../../types'
+import { Meta, OpenTimestamp } from '../../types'
import { extractFileExtensions } from '../../utils/file'
import { UserAvatar } from '../UserAvatar'
@@ -42,7 +45,9 @@ export const UsersDetails = ({ meta }: UsersDetailsProps) => {
completedAt,
parsedSignatureEvents,
signedStatus,
- isValid
+ isValid,
+ id,
+ timestamps
} = useSigitMeta(meta)
const { usersPubkey } = useAppSelector((state) => state.auth)
const userCanSign =
@@ -51,6 +56,50 @@ export const UsersDetails = ({ meta }: UsersDetailsProps) => {
const { extensions, isSame } = extractFileExtensions(Object.keys(fileHashes))
+ const isTimestampVerified = (
+ timestamps: OpenTimestamp[],
+ nostrId: string
+ ): boolean => {
+ const matched = timestamps.find((t) => t.nostrId === nostrId)
+ return !!(matched && matched.verification)
+ }
+
+ const getOpenTimestampsInfo = (
+ timestamps: OpenTimestamp[],
+ nostrId: string
+ ) => {
+ if (isTimestampVerified(timestamps, nostrId)) {
+ return
+ } else {
+ return
+ }
+ }
+
+ const getCompletedOpenTimestampsInfo = (timestamp: OpenTimestamp) => {
+ if (timestamp.verification) {
+ return
+ } else {
+ return
+ }
+ }
+
+ const getTimestampTooltipTitle = (label: string, isVerified: boolean) => {
+ return `${label} / Open Timestamp ${isVerified ? 'Verified' : 'Pending'}`
+ }
+
+ const isUserSignatureTimestampVerified = () => {
+ if (
+ userCanSign &&
+ hexToNpub(usersPubkey) in parsedSignatureEvents &&
+ timestamps &&
+ timestamps.length > 0
+ ) {
+ const nostrId = parsedSignatureEvents[hexToNpub(usersPubkey)].id
+ return isTimestampVerified(timestamps, nostrId)
+ }
+ return false
+ }
+
return submittedBy ? (
@@ -115,19 +164,36 @@ export const UsersDetails = ({ meta }: UsersDetailsProps) => {
Details
{' '}
- {createdAt ? formatTimestamp(createdAt) : <>—>}
+ {createdAt ? formatTimestamp(createdAt) : <>—>}{' '}
+ {timestamps && timestamps.length > 0 && id && (
+
+ {getOpenTimestampsInfo(timestamps, id)}
+
+ )}
0 &&
+ timestamps[timestamps.length - 1].verification
+ )
+ )}
placement="top"
arrow
disableInteractive
@@ -135,13 +201,26 @@ export const UsersDetails = ({ meta }: UsersDetailsProps) => {
{' '}
{completedAt ? formatTimestamp(completedAt) : <>—>}
+ {signedStatus === SigitStatus.Complete &&
+ completedAt &&
+ timestamps &&
+ timestamps.length > 0 && (
+
+ {getCompletedOpenTimestampsInfo(
+ timestamps[timestamps.length - 1]
+ )}
+
+ )}
{/* User signed date */}
{userCanSign ? (
{
) : (
<>—>
)}
+ {hexToNpub(usersPubkey) in parsedSignatureEvents &&
+ timestamps &&
+ timestamps.length > 0 && (
+
+ {getOpenTimestampsInfo(
+ timestamps,
+ parsedSignatureEvents[hexToNpub(usersPubkey)].id
+ )}
+
+ )}
) : null}
diff --git a/src/components/UsersDetails.tsx/style.module.scss b/src/components/UsersDetails.tsx/style.module.scss
index 9d906c1..af18b04 100644
--- a/src/components/UsersDetails.tsx/style.module.scss
+++ b/src/components/UsersDetails.tsx/style.module.scss
@@ -31,8 +31,6 @@
padding: 5px;
display: flex;
- align-items: center;
- justify-content: start;
> :first-child {
padding: 5px;
@@ -44,3 +42,7 @@
color: white;
}
}
+
+.ticket {
+ margin-left: auto;
+}
diff --git a/src/pages/verify/index.tsx b/src/pages/verify/index.tsx
index 0718cd6..8f70528 100644
--- a/src/pages/verify/index.tsx
+++ b/src/pages/verify/index.tsx
@@ -294,7 +294,9 @@ export const VerifyPage = () => {
return timestamp
})
- if (upgradedUserTimestamps.length > 0) {
+ console.log('upgraded timestamps: ', upgradedTimestamps)
+
+ if (upgradedUserTimestamps.length === 0) {
return
}
@@ -323,6 +325,7 @@ export const VerifyPage = () => {
updatedMeta.modifiedAt = unixNow()
const updatedEvent = await updateUsersAppData(updatedMeta)
+ console.log('updated event: ', updatedEvent)
if (!updatedEvent) return
const userSet = new Set<`npub1${string}`>()