diff --git a/backend/src/lib/knex/index.ts b/backend/src/lib/knex/index.ts index bf057cc73..0faeba290 100644 --- a/backend/src/lib/knex/index.ts +++ b/backend/src/lib/knex/index.ts @@ -128,7 +128,7 @@ export const ormify = (db: Kne } if ($decr) { Object.entries($decr).forEach(([incrementField, incrementValue]) => { - void query.increment(incrementField, incrementValue); + void query.decrement(incrementField, incrementValue); }); } const [docs] = await query; diff --git a/backend/src/services/secret-sharing/secret-sharing-service.ts b/backend/src/services/secret-sharing/secret-sharing-service.ts index 23d39ea9e..ccbce0a52 100644 --- a/backend/src/services/secret-sharing/secret-sharing-service.ts +++ b/backend/src/services/secret-sharing/secret-sharing-service.ts @@ -62,9 +62,7 @@ export const secretSharingServiceFactory = ({ await secretSharingDAL.deleteById(sharedSecretId); return; } - await secretSharingDAL.updateById(sharedSecretId, { - expiresAfterViews: sharedSecret.expiresAfterViews - 1 - }); + await secretSharingDAL.updateById(sharedSecretId, { $decr: { expiresAfterViews: 1 } }); } return sharedSecret; }; diff --git a/frontend/src/hooks/api/secretSharing/queries.ts b/frontend/src/hooks/api/secretSharing/queries.ts index d2ae2a30e..c7970fabc 100644 --- a/frontend/src/hooks/api/secretSharing/queries.ts +++ b/frontend/src/hooks/api/secretSharing/queries.ts @@ -24,8 +24,6 @@ export const useGetActiveSharedSecretByIdAndHashedHex = (id: string, hashedHex: encryptedValue: data.encryptedValue, iv: data.iv, tag: data.tag, - expiresAt: data.expiresAt, - expiresAfterViews: data.expiresAfterViews }; } }); diff --git a/frontend/src/hooks/api/secretSharing/types.ts b/frontend/src/hooks/api/secretSharing/types.ts index 04bd19de7..272100bc6 100644 --- a/frontend/src/hooks/api/secretSharing/types.ts +++ b/frontend/src/hooks/api/secretSharing/types.ts @@ -19,8 +19,6 @@ export type TViewSharedSecretResponse = { encryptedValue: string; iv: string; tag: string; - expiresAt?: Date; - expiresAfterViews?: number; }; export type TDeleteSharedSecretRequest = { diff --git a/frontend/src/views/ShareSecretPublicPage/ShareSecretPublicPage.tsx b/frontend/src/views/ShareSecretPublicPage/ShareSecretPublicPage.tsx index ee0212a1e..2da836eaa 100644 --- a/frontend/src/views/ShareSecretPublicPage/ShareSecretPublicPage.tsx +++ b/frontend/src/views/ShareSecretPublicPage/ShareSecretPublicPage.tsx @@ -1,4 +1,4 @@ -import { useEffect, useMemo, useState } from "react"; +import { useEffect, useMemo } from "react"; import Head from "next/head"; import Image from "next/image"; import { useRouter } from "next/router"; @@ -39,45 +39,10 @@ export const ShareSecretPublicPage = () => { return ""; }, [data, publicKey]); - const [timeLeft, setTimeLeft] = useState(""); const [isUrlCopied, , setIsUrlCopied] = useTimedReset({ initialState: false }); - const millisecondsPerDay = 1000 * 60 * 60 * 24; - const millisecondsPerHour = 1000 * 60 * 60; - const millisecondsPerMinute = 1000 * 60; - - useEffect(() => { - const updateTimer = () => { - if (data) { - if (data.expiresAt) { - const expirationTime = new Date(data.expiresAt).getTime(); - const currentTime = new Date().getTime(); - const timeDifference = expirationTime - currentTime; - - if (timeDifference < 0) { - setTimeLeft("Expired"); - } else { - const hoursRemaining = Math.floor( - (timeDifference % millisecondsPerDay) / millisecondsPerHour - ); - const minutesRemaining = Math.floor( - (timeDifference % millisecondsPerHour) / millisecondsPerMinute - ); - const secondsRemaining = Math.floor((timeDifference % millisecondsPerMinute) / 1000); - setTimeLeft(`${hoursRemaining}h ${minutesRemaining}m ${secondsRemaining}s`); - } - } else if (data.expiresAfterViews) { - setTimeLeft(`${data.expiresAfterViews - 1} more views`); - } - } - }; - - const timer = setInterval(updateTimer, 1000); - return () => clearInterval(timer); - }, [data?.expiresAt]); - useEffect(() => { if (isUrlCopied) { setTimeout(() => setIsUrlCopied(false), 2000); @@ -106,14 +71,12 @@ export const ShareSecretPublicPage = () => {

- Secret Details + Shared Secret

-
+
diff --git a/frontend/src/views/ShareSecretPublicPage/components/SecretTable.tsx b/frontend/src/views/ShareSecretPublicPage/components/SecretTable.tsx index 1cc25c39d..526798871 100644 --- a/frontend/src/views/ShareSecretPublicPage/components/SecretTable.tsx +++ b/frontend/src/views/ShareSecretPublicPage/components/SecretTable.tsx @@ -1,90 +1,44 @@ import { faCheck, faCopy, faKey } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { - EmptyState, - IconButton, - SecretInput, - Table, - TableContainer, - TBody, - Td, - Th, - THead, - Tr -} from "@app/components/v2"; -import { TViewSharedSecretResponse } from "@app/hooks/api/secretSharing"; +import { EmptyState, IconButton, SecretInput, Td, Tr } from "@app/components/v2"; type Props = { isLoading: boolean; - sharedSecret?: TViewSharedSecretResponse; decryptedSecret: string; - timeLeft: string; isUrlCopied: boolean; copyUrlToClipboard: () => void; }; export const SecretTable = ({ isLoading, - sharedSecret, decryptedSecret, - timeLeft, isUrlCopied, copyUrlToClipboard -}: Props) => { - return ( - - - - - - - - - - {!isLoading && sharedSecret && decryptedSecret && ( - - - - - )} - {isLoading && ( - - - - )} - {!isLoading && !sharedSecret && ( - - - - )} - {!isLoading && sharedSecret && !decryptedSecret && ( - - - - )} - -
SecretValid Until
-
-
- -
- - - -
-
{timeLeft}
- Loading... -
- -
- -
-
- ); -}; +}: Props) => ( +
+ {isLoading &&
Loading...
} + {!isLoading && !decryptedSecret && ( + + + + + + )} + {!isLoading && decryptedSecret && ( + <> +
+ +
+ + + + + )} +
+);