diff --git a/package-lock.json b/package-lock.json index 445d2e7..8d732e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,6 +21,7 @@ "@trpc/react-query": "^10.18.0", "@trpc/server": "^10.18.0", "axios": "^1.3.5", + "dayjs": "^1.11.7", "next": "^13.2.4", "next-auth": "^4.21.0", "react": "18.2.0", @@ -2724,6 +2725,11 @@ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, + "node_modules/dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -8338,6 +8344,11 @@ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, + "dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", diff --git a/package.json b/package.json index daa2253..d962423 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "@trpc/react-query": "^10.18.0", "@trpc/server": "^10.18.0", "axios": "^1.3.5", + "dayjs": "^1.11.7", "next": "^13.2.4", "next-auth": "^4.21.0", "react": "18.2.0", diff --git a/src/components/ExpireDateSelectMenu.tsx b/src/components/ExpireDateSelectMenu.tsx index 221dee9..a3c6171 100644 --- a/src/components/ExpireDateSelectMenu.tsx +++ b/src/components/ExpireDateSelectMenu.tsx @@ -1,7 +1,10 @@ import { Listbox, Transition } from "@headlessui/react"; import { Fragment } from "react"; -import { getTime } from "~/utils/getTime"; import { api } from "~/utils/api"; +import dayjs from "dayjs"; +import relativeTime from "dayjs/plugin/relativeTime"; + +dayjs.extend(relativeTime); interface Props { shareLinkExpiresAt: Date | null; @@ -35,16 +38,28 @@ export default function ExpireDateSelectMenu({ }, }); const handleChange = (value: string) => { - console.log("selecting value", value); - - const now = new Date(); - now.setHours(now.getHours() + 1); - - console.log(now); + let timestamp: null | Date = new Date(); + switch (value) { + case "Never expire": + timestamp = null; + break; + case "In 1 hour": + timestamp.setHours(timestamp.getHours() + 1); + break; + case "In 24 hours": + timestamp.setDate(timestamp.getDate() + 1); + break; + case "In 7 days": + timestamp.setDate(timestamp.getDate() + 7); + break; + case "In 30 days": + timestamp.setDate(timestamp.getDate() + 30); + break; + } setShareLinkExpiresAtMutation.mutate({ videoId, - shareLinkExpiresAt: now, + shareLinkExpiresAt: timestamp, }); }; @@ -58,12 +73,12 @@ export default function ExpireDateSelectMenu({ return (
- +
{shareLinkExpiresAt - ? getTime(shareLinkExpiresAt) + ? "In " + dayjs(shareLinkExpiresAt).fromNow(true) : "Never expire"} @@ -76,7 +91,7 @@ export default function ExpireDateSelectMenu({ leaveFrom="transform opacity-100 scale-100" leaveTo="transform opacity-0 scale-95" > - + {availableExpireDates.map((person, personIdx) => ( { const updateVideo = await ctx.prisma.video.updateMany({ where: {