Format & Lint
This commit is contained in:
parent
2b04bcb1df
commit
4f6368fcbf
|
@ -1,40 +1,43 @@
|
||||||
|
|
||||||
import LinkCard from "@/components/LinkViews/LinkCard";
|
import LinkCard from "@/components/LinkViews/LinkCard";
|
||||||
import { LinkIncludingShortenedCollectionAndTags } from "@/types/global";
|
import { LinkIncludingShortenedCollectionAndTags } from "@/types/global";
|
||||||
import { GridLoader } from "react-spinners";
|
import { GridLoader } from "react-spinners";
|
||||||
import Masonry from 'react-masonry-css'
|
import Masonry from "react-masonry-css";
|
||||||
|
|
||||||
export default function MasonryView({
|
export default function MasonryView({
|
||||||
links,
|
links,
|
||||||
editMode,
|
editMode,
|
||||||
isLoading,
|
isLoading,
|
||||||
}: {
|
}: {
|
||||||
links: LinkIncludingShortenedCollectionAndTags[];
|
links: LinkIncludingShortenedCollectionAndTags[];
|
||||||
editMode?: boolean;
|
editMode?: boolean;
|
||||||
isLoading?: boolean;
|
isLoading?: boolean;
|
||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<Masonry breakpointCols={4} columnClassName="!w-full flex flex-col gap-5" className="grid min-[1900px]:grid-cols-4 xl:grid-cols-3 sm:grid-cols-2 grid-cols-1 gap-5">
|
<Masonry
|
||||||
{links.map((e, i) => {
|
breakpointCols={4}
|
||||||
return (
|
columnClassName="!w-full flex flex-col gap-5"
|
||||||
<LinkCard
|
className="grid min-[1900px]:grid-cols-4 xl:grid-cols-3 sm:grid-cols-2 grid-cols-1 gap-5"
|
||||||
key={i}
|
>
|
||||||
link={e}
|
{links.map((e, i) => {
|
||||||
count={i}
|
return (
|
||||||
flipDropdown={i === links.length - 1}
|
<LinkCard
|
||||||
editMode={editMode}
|
key={i}
|
||||||
/>
|
link={e}
|
||||||
);
|
count={i}
|
||||||
})}
|
flipDropdown={i === links.length - 1}
|
||||||
|
editMode={editMode}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
|
||||||
{isLoading && links.length > 0 && (
|
{isLoading && links.length > 0 && (
|
||||||
<GridLoader
|
<GridLoader
|
||||||
color="oklch(var(--p))"
|
color="oklch(var(--p))"
|
||||||
loading={true}
|
loading={true}
|
||||||
size={20}
|
size={20}
|
||||||
className="fixed top-5 right-5 opacity-50 z-30"
|
className="fixed top-5 right-5 opacity-50 z-30"
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</Masonry>
|
</Masonry>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,8 +122,8 @@ export default function LinkCard({ link, flipDropdown, editMode }: Props) {
|
||||||
? handleCheckboxClick(link)
|
? handleCheckboxClick(link)
|
||||||
: editMode
|
: editMode
|
||||||
? toast.error(
|
? toast.error(
|
||||||
"You don't have permission to edit or delete this item."
|
"You don't have permission to edit or delete this item."
|
||||||
)
|
)
|
||||||
: undefined
|
: undefined
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
@ -133,7 +133,7 @@ export default function LinkCard({ link, flipDropdown, editMode }: Props) {
|
||||||
!editMode && window.open(generateLinkHref(link, account), "_blank")
|
!editMode && window.open(generateLinkHref(link, account), "_blank")
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
{viewMode === 'masonry' && !(previewAvailable(link)) ? null : (
|
{viewMode === "masonry" && !previewAvailable(link) ? null : (
|
||||||
<>
|
<>
|
||||||
<div className="relative rounded-t-2xl h-40 overflow-hidden">
|
<div className="relative rounded-t-2xl h-40 overflow-hidden">
|
||||||
{previewAvailable(link) ? (
|
{previewAvailable(link) ? (
|
||||||
|
@ -234,7 +234,11 @@ export default function LinkCard({ link, flipDropdown, editMode }: Props) {
|
||||||
<LinkActions
|
<LinkActions
|
||||||
link={link}
|
link={link}
|
||||||
collection={collection}
|
collection={collection}
|
||||||
position={!(previewAvailable(link)) && viewMode === 'masonry' ? "top-[.75rem] right-3" : "top-[10.75rem] right-3"}
|
position={
|
||||||
|
!previewAvailable(link) && viewMode === "masonry"
|
||||||
|
? "top-[.75rem] right-3"
|
||||||
|
: "top-[10.75rem] right-3"
|
||||||
|
}
|
||||||
toggleShowInfo={() => setShowInfo(!showInfo)}
|
toggleShowInfo={() => setShowInfo(!showInfo)}
|
||||||
linkInfo={showInfo}
|
linkInfo={showInfo}
|
||||||
flipDropdown={flipDropdown}
|
flipDropdown={flipDropdown}
|
||||||
|
|
|
@ -26,30 +26,33 @@ export default function ViewDropdown({ viewMode, setViewMode }: Props) {
|
||||||
<div className="p-1 flex flex-row gap-1 border border-neutral-content rounded-[0.625rem]">
|
<div className="p-1 flex flex-row gap-1 border border-neutral-content rounded-[0.625rem]">
|
||||||
<button
|
<button
|
||||||
onClick={(e) => onChangeViewMode(e, ViewMode.Card)}
|
onClick={(e) => onChangeViewMode(e, ViewMode.Card)}
|
||||||
className={`btn btn-square btn-sm btn-ghost ${viewMode == ViewMode.Card
|
className={`btn btn-square btn-sm btn-ghost ${
|
||||||
? "bg-primary/20 hover:bg-primary/20"
|
viewMode == ViewMode.Card
|
||||||
: "hover:bg-neutral/20"
|
? "bg-primary/20 hover:bg-primary/20"
|
||||||
}`}
|
: "hover:bg-neutral/20"
|
||||||
|
}`}
|
||||||
>
|
>
|
||||||
<i className="bi-grid w-4 h-4 text-neutral"></i>
|
<i className="bi-grid w-4 h-4 text-neutral"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
onClick={(e) => onChangeViewMode(e, ViewMode.Masonry)}
|
onClick={(e) => onChangeViewMode(e, ViewMode.Masonry)}
|
||||||
className={`btn btn-square btn-sm btn-ghost ${viewMode == ViewMode.Masonry
|
className={`btn btn-square btn-sm btn-ghost ${
|
||||||
? "bg-primary/20 hover:bg-primary/20"
|
viewMode == ViewMode.Masonry
|
||||||
: "hover:bg-neutral/20"
|
? "bg-primary/20 hover:bg-primary/20"
|
||||||
}`}
|
: "hover:bg-neutral/20"
|
||||||
|
}`}
|
||||||
>
|
>
|
||||||
<i className="bi bi-columns-gap w-4 h-4 text-neutral"></i>
|
<i className="bi bi-columns-gap w-4 h-4 text-neutral"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
onClick={(e) => onChangeViewMode(e, ViewMode.List)}
|
onClick={(e) => onChangeViewMode(e, ViewMode.List)}
|
||||||
className={`btn btn-square btn-sm btn-ghost ${viewMode == ViewMode.List
|
className={`btn btn-square btn-sm btn-ghost ${
|
||||||
? "bg-primary/20 hover:bg-primary/20"
|
viewMode == ViewMode.List
|
||||||
: "hover:bg-neutral/20"
|
? "bg-primary/20 hover:bg-primary/20"
|
||||||
}`}
|
: "hover:bg-neutral/20"
|
||||||
|
}`}
|
||||||
>
|
>
|
||||||
<i className="bi bi-view-stacked w-4 h-4 text-neutral"></i>
|
<i className="bi bi-view-stacked w-4 h-4 text-neutral"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -98,19 +98,19 @@ if (
|
||||||
const user = await prisma.user.findFirst({
|
const user = await prisma.user.findFirst({
|
||||||
where: emailEnabled
|
where: emailEnabled
|
||||||
? {
|
? {
|
||||||
OR: [
|
OR: [
|
||||||
{
|
{
|
||||||
username: username.toLowerCase(),
|
username: username.toLowerCase(),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
email: username?.toLowerCase(),
|
email: username?.toLowerCase(),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
emailVerified: { not: null },
|
emailVerified: { not: null },
|
||||||
}
|
}
|
||||||
: {
|
: {
|
||||||
username: username.toLowerCase(),
|
username: username.toLowerCase(),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
let passwordMatches: boolean = false;
|
let passwordMatches: boolean = false;
|
||||||
|
@ -242,27 +242,25 @@ if (process.env.NEXT_PUBLIC_AUTH0_ENABLED === "true") {
|
||||||
|
|
||||||
// Authelia
|
// Authelia
|
||||||
if (process.env.NEXT_PUBLIC_AUTHELIA_ENABLED === "true") {
|
if (process.env.NEXT_PUBLIC_AUTHELIA_ENABLED === "true") {
|
||||||
providers.push(
|
providers.push({
|
||||||
{
|
id: "authelia",
|
||||||
id: "authelia",
|
name: "Authelia",
|
||||||
name: "Authelia",
|
type: "oauth",
|
||||||
type: "oauth",
|
clientId: process.env.AUTHELIA_CLIENT_ID!,
|
||||||
clientId: process.env.AUTHELIA_CLIENT_ID!,
|
clientSecret: process.env.AUTHELIA_CLIENT_SECRET!,
|
||||||
clientSecret: process.env.AUTHELIA_CLIENT_SECRET!,
|
wellKnown: process.env.AUTHELIA_WELLKNOWN_URL!,
|
||||||
wellKnown: process.env.AUTHELIA_WELLKNOWN_URL!,
|
authorization: { params: { scope: "openid email profile" } },
|
||||||
authorization: { params: { scope: "openid email profile" } },
|
idToken: true,
|
||||||
idToken: true,
|
checks: ["pkce", "state"],
|
||||||
checks: ["pkce", "state"],
|
profile(profile) {
|
||||||
profile(profile) {
|
return {
|
||||||
return {
|
id: profile.sub,
|
||||||
id: profile.sub,
|
name: profile.name,
|
||||||
name: profile.name,
|
email: profile.email,
|
||||||
email: profile.email,
|
username: profile.preferred_username,
|
||||||
username: profile.preferred_username,
|
};
|
||||||
}
|
},
|
||||||
},
|
});
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
const _linkAccount = adapter.linkAccount;
|
const _linkAccount = adapter.linkAccount;
|
||||||
adapter.linkAccount = (account) => {
|
adapter.linkAccount = (account) => {
|
||||||
|
|
|
@ -401,7 +401,7 @@ export function getLogins() {
|
||||||
return {
|
return {
|
||||||
credentialsEnabled:
|
credentialsEnabled:
|
||||||
process.env.NEXT_PUBLIC_CREDENTIALS_ENABLED === "true" ||
|
process.env.NEXT_PUBLIC_CREDENTIALS_ENABLED === "true" ||
|
||||||
process.env.NEXT_PUBLIC_CREDENTIALS_ENABLED === undefined
|
process.env.NEXT_PUBLIC_CREDENTIALS_ENABLED === undefined
|
||||||
? "true"
|
? "true"
|
||||||
: "false",
|
: "false",
|
||||||
emailEnabled:
|
emailEnabled:
|
||||||
|
|
|
@ -127,7 +127,8 @@ export default function Index() {
|
||||||
|
|
||||||
const bulkDeleteLinks = async () => {
|
const bulkDeleteLinks = async () => {
|
||||||
const load = toast.loading(
|
const load = toast.loading(
|
||||||
`Deleting ${selectedLinks.length} Link${selectedLinks.length > 1 ? "s" : ""
|
`Deleting ${selectedLinks.length} Link${
|
||||||
|
selectedLinks.length > 1 ? "s" : ""
|
||||||
}...`
|
}...`
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -139,7 +140,8 @@ export default function Index() {
|
||||||
|
|
||||||
response.ok &&
|
response.ok &&
|
||||||
toast.success(
|
toast.success(
|
||||||
`Deleted ${selectedLinks.length} Link${selectedLinks.length > 1 ? "s" : ""
|
`Deleted ${selectedLinks.length} Link${
|
||||||
|
selectedLinks.length > 1 ? "s" : ""
|
||||||
}!`
|
}!`
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -149,8 +151,9 @@ export default function Index() {
|
||||||
<div
|
<div
|
||||||
className="h-[60rem] p-5 flex gap-3 flex-col"
|
className="h-[60rem] p-5 flex gap-3 flex-col"
|
||||||
style={{
|
style={{
|
||||||
backgroundImage: `linear-gradient(${activeCollection?.color}20 10%, ${settings.theme === "dark" ? "#262626" : "#f3f4f6"
|
backgroundImage: `linear-gradient(${activeCollection?.color}20 10%, ${
|
||||||
} 13rem, ${settings.theme === "dark" ? "#171717" : "#ffffff"} 100%)`,
|
settings.theme === "dark" ? "#262626" : "#f3f4f6"
|
||||||
|
} 13rem, ${settings.theme === "dark" ? "#171717" : "#ffffff"} 100%)`,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{activeCollection && (
|
{activeCollection && (
|
||||||
|
@ -325,10 +328,11 @@ export default function Index() {
|
||||||
setEditMode(!editMode);
|
setEditMode(!editMode);
|
||||||
setSelectedLinks([]);
|
setSelectedLinks([]);
|
||||||
}}
|
}}
|
||||||
className={`btn btn-square btn-sm btn-ghost ${editMode
|
className={`btn btn-square btn-sm btn-ghost ${
|
||||||
|
editMode
|
||||||
? "bg-primary/20 hover:bg-primary/20"
|
? "bg-primary/20 hover:bg-primary/20"
|
||||||
: "hover:bg-neutral/20"
|
: "hover:bg-neutral/20"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<i className="bi-pencil-fill text-neutral text-xl"></i>
|
<i className="bi-pencil-fill text-neutral text-xl"></i>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -52,7 +52,8 @@ export default function Links() {
|
||||||
|
|
||||||
const bulkDeleteLinks = async () => {
|
const bulkDeleteLinks = async () => {
|
||||||
const load = toast.loading(
|
const load = toast.loading(
|
||||||
`Deleting ${selectedLinks.length} Link${selectedLinks.length > 1 ? "s" : ""
|
`Deleting ${selectedLinks.length} Link${
|
||||||
|
selectedLinks.length > 1 ? "s" : ""
|
||||||
}...`
|
}...`
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -64,7 +65,8 @@ export default function Links() {
|
||||||
|
|
||||||
response.ok &&
|
response.ok &&
|
||||||
toast.success(
|
toast.success(
|
||||||
`Deleted ${selectedLinks.length} Link${selectedLinks.length > 1 ? "s" : ""
|
`Deleted ${selectedLinks.length} Link${
|
||||||
|
selectedLinks.length > 1 ? "s" : ""
|
||||||
}!`
|
}!`
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -97,10 +99,11 @@ export default function Links() {
|
||||||
setEditMode(!editMode);
|
setEditMode(!editMode);
|
||||||
setSelectedLinks([]);
|
setSelectedLinks([]);
|
||||||
}}
|
}}
|
||||||
className={`btn btn-square btn-sm btn-ghost ${editMode
|
className={`btn btn-square btn-sm btn-ghost ${
|
||||||
|
editMode
|
||||||
? "bg-primary/20 hover:bg-primary/20"
|
? "bg-primary/20 hover:bg-primary/20"
|
||||||
: "hover:bg-neutral/20"
|
: "hover:bg-neutral/20"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<i className="bi-pencil-fill text-neutral text-xl"></i>
|
<i className="bi-pencil-fill text-neutral text-xl"></i>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -50,7 +50,8 @@ export default function PinnedLinks() {
|
||||||
|
|
||||||
const bulkDeleteLinks = async () => {
|
const bulkDeleteLinks = async () => {
|
||||||
const load = toast.loading(
|
const load = toast.loading(
|
||||||
`Deleting ${selectedLinks.length} Link${selectedLinks.length > 1 ? "s" : ""
|
`Deleting ${selectedLinks.length} Link${
|
||||||
|
selectedLinks.length > 1 ? "s" : ""
|
||||||
}...`
|
}...`
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -62,7 +63,8 @@ export default function PinnedLinks() {
|
||||||
|
|
||||||
response.ok &&
|
response.ok &&
|
||||||
toast.success(
|
toast.success(
|
||||||
`Deleted ${selectedLinks.length} Link${selectedLinks.length > 1 ? "s" : ""
|
`Deleted ${selectedLinks.length} Link${
|
||||||
|
selectedLinks.length > 1 ? "s" : ""
|
||||||
}!`
|
}!`
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -94,10 +96,11 @@ export default function PinnedLinks() {
|
||||||
setEditMode(!editMode);
|
setEditMode(!editMode);
|
||||||
setSelectedLinks([]);
|
setSelectedLinks([]);
|
||||||
}}
|
}}
|
||||||
className={`btn btn-square btn-sm btn-ghost ${editMode
|
className={`btn btn-square btn-sm btn-ghost ${
|
||||||
|
editMode
|
||||||
? "bg-primary/20 hover:bg-primary/20"
|
? "bg-primary/20 hover:bg-primary/20"
|
||||||
: "hover:bg-neutral/20"
|
: "hover:bg-neutral/20"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<i className="bi-pencil-fill text-neutral text-xl"></i>
|
<i className="bi-pencil-fill text-neutral text-xl"></i>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -125,7 +125,8 @@ export default function Index() {
|
||||||
|
|
||||||
const bulkDeleteLinks = async () => {
|
const bulkDeleteLinks = async () => {
|
||||||
const load = toast.loading(
|
const load = toast.loading(
|
||||||
`Deleting ${selectedLinks.length} Link${selectedLinks.length > 1 ? "s" : ""
|
`Deleting ${selectedLinks.length} Link${
|
||||||
|
selectedLinks.length > 1 ? "s" : ""
|
||||||
}...`
|
}...`
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -137,7 +138,8 @@ export default function Index() {
|
||||||
|
|
||||||
response.ok &&
|
response.ok &&
|
||||||
toast.success(
|
toast.success(
|
||||||
`Deleted ${selectedLinks.length} Link${selectedLinks.length > 1 ? "s" : ""
|
`Deleted ${selectedLinks.length} Link${
|
||||||
|
selectedLinks.length > 1 ? "s" : ""
|
||||||
}!`
|
}!`
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -197,10 +199,11 @@ export default function Index() {
|
||||||
</p>
|
</p>
|
||||||
<div className="relative">
|
<div className="relative">
|
||||||
<div
|
<div
|
||||||
className={`dropdown dropdown-bottom font-normal ${activeTag?.name.length && activeTag?.name.length > 8
|
className={`dropdown dropdown-bottom font-normal ${
|
||||||
|
activeTag?.name.length && activeTag?.name.length > 8
|
||||||
? "dropdown-end"
|
? "dropdown-end"
|
||||||
: ""
|
: ""
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
|
@ -252,10 +255,11 @@ export default function Index() {
|
||||||
setEditMode(!editMode);
|
setEditMode(!editMode);
|
||||||
setSelectedLinks([]);
|
setSelectedLinks([]);
|
||||||
}}
|
}}
|
||||||
className={`btn btn-square btn-sm btn-ghost ${editMode
|
className={`btn btn-square btn-sm btn-ghost ${
|
||||||
|
editMode
|
||||||
? "bg-primary/20 hover:bg-primary/20"
|
? "bg-primary/20 hover:bg-primary/20"
|
||||||
: "hover:bg-neutral/20"
|
: "hover:bg-neutral/20"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<i className="bi-pencil-fill text-neutral text-xl"></i>
|
<i className="bi-pencil-fill text-neutral text-xl"></i>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -418,4 +418,4 @@ declare global {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export { };
|
export {};
|
||||||
|
|
Ŝarĝante…
Reference in New Issue