final touch

This commit is contained in:
daniel31x13 2024-03-05 09:03:04 -05:00
parent 750aa294d0
commit f26cd31694
5 changed files with 24 additions and 23 deletions

View File

@ -93,16 +93,17 @@ export default async function postLink(
},
});
if (user?.preventDuplicateLinks) {
const existingLink = await prisma.link.findFirst({
where: {
url: link.url,
url: link.url?.trim(),
collection: {
ownerId: userId,
},
},
});
if (existingLink && user?.mergeDuplicateLinks) {
if (existingLink)
return {
response: "Link already exists",
status: 409,
@ -148,7 +149,7 @@ export default async function postLink(
const newLink = await prisma.link.create({
data: {
url: link.url,
url: link.url?.trim(),
name: link.name,
description,
type: linkType,

View File

@ -190,7 +190,7 @@ export default async function updateUserById(
archiveAsPDF: data.archiveAsPDF,
archiveAsWaybackMachine: data.archiveAsWaybackMachine,
linksRouteTo: data.linksRouteTo,
mergeDuplicateLinks: data.mergeDuplicateLinks,
preventDuplicateLinks: data.preventDuplicateLinks,
password:
data.newPassword && data.newPassword !== ""
? newHashedPassword

View File

@ -16,7 +16,7 @@ export default function Appearance() {
const { account, updateAccount } = useAccountStore();
const [user, setUser] = useState<AccountSettings>(account);
const [mergeDuplicateLinks, setMergeDuplicateLinks] =
const [preventDuplicateLinks, setPreventDuplicateLinks] =
useState<boolean>(false);
const [archiveAsScreenshot, setArchiveAsScreenshot] =
useState<boolean>(false);
@ -34,7 +34,7 @@ export default function Appearance() {
archiveAsPDF,
archiveAsWaybackMachine,
linksRouteTo,
mergeDuplicateLinks,
preventDuplicateLinks,
});
}, [
account,
@ -42,7 +42,7 @@ export default function Appearance() {
archiveAsPDF,
archiveAsWaybackMachine,
linksRouteTo,
mergeDuplicateLinks,
preventDuplicateLinks,
]);
function objectIsEmpty(obj: object) {
@ -55,7 +55,7 @@ export default function Appearance() {
setArchiveAsPDF(account.archiveAsPDF);
setArchiveAsWaybackMachine(account.archiveAsWaybackMachine);
setLinksRouteTo(account.linksRouteTo);
setMergeDuplicateLinks(account.mergeDuplicateLinks);
setPreventDuplicateLinks(account.preventDuplicateLinks);
}
}, [account]);
@ -151,9 +151,9 @@ export default function Appearance() {
<div className="divider my-3"></div>
<div className="mb-3">
<Checkbox
label="Merge duplicate links"
state={mergeDuplicateLinks}
onClick={() => setMergeDuplicateLinks(!mergeDuplicateLinks)}
label="Prevent duplicate links"
state={preventDuplicateLinks}
onClick={() => setPreventDuplicateLinks(!preventDuplicateLinks)}
/>
</div>

View File

@ -1,2 +1,2 @@
-- AlterTable
ALTER TABLE "User" ADD COLUMN "mergeDuplicateLinks" BOOLEAN NOT NULL DEFAULT false;
ALTER TABLE "User" ADD COLUMN "preventDuplicateLinks" BOOLEAN NOT NULL DEFAULT false;

View File

@ -43,7 +43,7 @@ model User {
accessTokens AccessToken[]
subscriptions Subscription?
linksRouteTo LinksRouteTo @default(ORIGINAL)
mergeDuplicateLinks Boolean @default(false)
preventDuplicateLinks Boolean @default(false)
archiveAsScreenshot Boolean @default(true)
archiveAsPDF Boolean @default(true)
archiveAsWaybackMachine Boolean @default(false)