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

View File

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

View File

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

View File

@ -1,2 +1,2 @@
-- AlterTable -- 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[] accessTokens AccessToken[]
subscriptions Subscription? subscriptions Subscription?
linksRouteTo LinksRouteTo @default(ORIGINAL) linksRouteTo LinksRouteTo @default(ORIGINAL)
mergeDuplicateLinks Boolean @default(false) preventDuplicateLinks Boolean @default(false)
archiveAsScreenshot Boolean @default(true) archiveAsScreenshot Boolean @default(true)
archiveAsPDF Boolean @default(true) archiveAsPDF Boolean @default(true)
archiveAsWaybackMachine Boolean @default(false) archiveAsWaybackMachine Boolean @default(false)