From 610cd0e89927e8759c2a748a82115149d34e7fee Mon Sep 17 00:00:00 2001 From: Varun Raj Date: Sat, 7 Sep 2024 20:17:25 +0530 Subject: [PATCH 01/10] feat: added option in immich for potential albums asset Signed-off-by: Varun Raj --- .../PotentialAlbumsAssets.tsx | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/components/albums/potential-albums/PotentialAlbumsAssets.tsx b/src/components/albums/potential-albums/PotentialAlbumsAssets.tsx index c0d0d2d..ba4d894 100644 --- a/src/components/albums/potential-albums/PotentialAlbumsAssets.tsx +++ b/src/components/albums/potential-albums/PotentialAlbumsAssets.tsx @@ -8,8 +8,10 @@ import Lightbox, { SlideImage, SlideTypes } from "yet-another-react-lightbox"; import Captions from "yet-another-react-lightbox/plugins/captions"; import { CalendarArrowDown, CalendarArrowUp, Hourglass } from "lucide-react"; import Video from "yet-another-react-lightbox/plugins/video"; +import { useConfig } from "@/contexts/ConfigContext"; export default function PotentialAlbumsAssets() { + const { exImmichUrl } = useConfig(); const { startDate, selectedIds, assets, updateContext } = usePotentialAlbumContext(); @@ -37,12 +39,22 @@ export default function PotentialAlbumsAssets() { width: p.exifImageWidth as number, height: p.exifImageHeight as number, isSelected: selectedIds.includes(p.id), + tags: [ + { + title: "Immich Link", + value: ( + + Open in Immich + + ), + }, + ], })); }, [assets, selectedIds]); const slides = useMemo( () => - images.map(({ original, width, height, type, videoURL }) => ({ + images.map(({ original, width, height, type, videoURL}) => ({ src: original, width, height, @@ -111,6 +123,13 @@ export default function PotentialAlbumsAssets() { onClick={handleClick} enableImageSelection={true} onSelect={handleSelect} + tagStyle={{ + color: "white", + fontSize: "12px", + backgroundColor: "rgba(0, 0, 0)", + padding: "2px", + borderRadius: "5px", + }} /> From 574f83615ef7de2eedc8a4de9706428191d37232 Mon Sep 17 00:00:00 2001 From: Varun Raj Date: Sat, 7 Sep 2024 20:24:18 +0530 Subject: [PATCH 02/10] feat: added version Signed-off-by: Varun Raj --- next.config.mjs | 12 +++++++++++- src/components/shared/ProfileInfo.tsx | 7 +++++-- src/config/environment.ts | 1 + src/contexts/ConfigContext.tsx | 2 ++ src/pages/_app.tsx | 8 ++++---- 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/next.config.mjs b/next.config.mjs index 9685eaf..00835c9 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,10 +1,20 @@ /** @type {import('next').NextConfig} */ + +import { readFileSync } from 'fs'; + +const { version } = JSON.parse(readFileSync('./package.json', 'utf-8')); + +console.log(`Version: ${version}`); + const nextConfig = { reactStrictMode: false, output: 'standalone', images: { unoptimized: true, - } + }, + env: { + VERSION: version, + }, }; export default nextConfig; diff --git a/src/components/shared/ProfileInfo.tsx b/src/components/shared/ProfileInfo.tsx index d7036c3..c6c8617 100644 --- a/src/components/shared/ProfileInfo.tsx +++ b/src/components/shared/ProfileInfo.tsx @@ -8,7 +8,7 @@ import { useToast } from "../ui/use-toast"; export default function ProfileInfo() { const { updateContext, ...user } = useCurrentUser() - const { immichURL, exImmichUrl } = useConfig(); + const { immichURL, exImmichUrl, version } = useConfig(); const toast = useToast(); const handleLogout = () => logoutUser() @@ -44,7 +44,7 @@ export default function ProfileInfo() { )} -
+

Made with ♥ by{" "}

+ + v{version} +
); diff --git a/src/config/environment.ts b/src/config/environment.ts index 7a5945d..08dc3b2 100644 --- a/src/config/environment.ts +++ b/src/config/environment.ts @@ -5,6 +5,7 @@ export const ENV = { DATABASE_URL: (process.env.DATABASE_URL || `postgresql://${process.env.DB_USERNAME}:${process.env.DB_PASSWORD}@${(process.env.DB_HOST || 'immich_postgres')}:${(process.env.DB_PORT || '5432')}/${process.env.DB_DATABASE_NAME}`), JWT_SECRET: process.env.JWT_SECRET as string, SECURE_COOKIE: process.env.SECURE_COOKIE === 'true', + VERSION: process.env.VERSION }; diff --git a/src/contexts/ConfigContext.tsx b/src/contexts/ConfigContext.tsx index 9c742cf..af5b2f8 100644 --- a/src/contexts/ConfigContext.tsx +++ b/src/contexts/ConfigContext.tsx @@ -3,11 +3,13 @@ import { createContext, useContext } from "react"; interface ConfigContextType { immichURL: string; exImmichUrl: string; + version?: string; } const ConfigContext = createContext({ immichURL: "", exImmichUrl: "", + version: "", }); export default ConfigContext; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index d3eaa84..802034b 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -4,14 +4,12 @@ import type { AppProps } from "next/app"; import { ThemeProvider } from "next-themes"; import { ENV } from "@/config/environment"; import ConfigContext from "@/contexts/ConfigContext"; -import { useEffect, useRef, useState } from "react"; -import { getMe } from "@/handlers/api/user.handler"; -import { db } from "@/config/db"; - +import { useRef } from "react"; interface AppPropsWithProps extends AppProps { props: { immichURL: string; exImmichUrl: string; + version?: string; }; } const App = ({ Component, pageProps, ...props }: AppPropsWithProps) => { @@ -29,10 +27,12 @@ const App = ({ Component, pageProps, ...props }: AppPropsWithProps) => { }; App.getInitialProps = async () => { + return { props: { exImmichUrl: ENV.EXTERNAL_IMMICH_URL, immichURL: ENV.IMMICH_URL, + version: ENV.VERSION }, }; }; From 9af0ba0cbe3658c10d071365f53f0ce052bd4733 Mon Sep 17 00:00:00 2001 From: Varun Raj Date: Sat, 7 Sep 2024 20:30:27 +0530 Subject: [PATCH 03/10] feat: store date in url when filtering in missing locations and potential albums Signed-off-by: Varun Raj --- .../albums/potential-albums/PotentialAlbumsDates.tsx | 7 +++++++ .../assets/missing-location/MissingLocationDates.tsx | 7 ++++++- src/pages/albums/potential-albums.tsx | 8 ++++++-- src/pages/assets/missing-locations.tsx | 5 ++++- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/components/albums/potential-albums/PotentialAlbumsDates.tsx b/src/components/albums/potential-albums/PotentialAlbumsDates.tsx index 03a428c..31c537e 100644 --- a/src/components/albums/potential-albums/PotentialAlbumsDates.tsx +++ b/src/components/albums/potential-albums/PotentialAlbumsDates.tsx @@ -5,8 +5,10 @@ import { import React, { use, useEffect, useState } from "react"; import PotentialDateItem from "./PotentialDateItem"; import { usePotentialAlbumContext } from "@/contexts/PotentialAlbumContext"; +import { useRouter } from "next/router"; export default function PotentialAlbumsDates() { + const router = useRouter(); const { updateContext } = usePotentialAlbumContext(); const [dateRecords, setDateRecords] = React.useState< IPotentialAlbumsDatesResponse[] @@ -25,6 +27,11 @@ export default function PotentialAlbumsDates() { const handleSelect = (date: string) => { updateContext({ startDate: date }); + router.push({ + pathname: router.pathname, + query: { startDate: date }, + }) + }; useEffect(() => { diff --git a/src/components/assets/missing-location/MissingLocationDates.tsx b/src/components/assets/missing-location/MissingLocationDates.tsx index 8af86ec..41f6216 100644 --- a/src/components/assets/missing-location/MissingLocationDates.tsx +++ b/src/components/assets/missing-location/MissingLocationDates.tsx @@ -3,13 +3,14 @@ import { usePotentialAlbumContext } from "@/contexts/PotentialAlbumContext"; import { IMissingLocationDatesResponse, listMissingLocationDates } from "@/handlers/api/asset.handler"; import MissingLocationDateItem from "./MissingLocationDateItem"; import { useMissingLocationContext } from "@/contexts/MissingLocationContext"; +import { useRouter } from "next/router"; export default function MissingLocationDates() { const { updateContext } = useMissingLocationContext(); + const router = useRouter(); const [dateRecords, setDateRecords] = React.useState< IMissingLocationDatesResponse[] >([]); - const [loading, setLoading] = useState(false); const [errorMessage, setErrorMessage] = useState(null); @@ -23,6 +24,10 @@ export default function MissingLocationDates() { const handleSelect = (date: string) => { updateContext({ startDate: date }); + router.push({ + pathname: router.pathname, + query: { startDate: date }, + }); }; useEffect(() => { diff --git a/src/pages/albums/potential-albums.tsx b/src/pages/albums/potential-albums.tsx index 8e5ef26..b7aa580 100644 --- a/src/pages/albums/potential-albums.tsx +++ b/src/pages/albums/potential-albums.tsx @@ -13,14 +13,17 @@ import PotentialAlbumContext, { } from "@/contexts/PotentialAlbumContext"; import { addAssetToAlbum, createAlbum } from "@/handlers/api/album.handler"; import { IAlbum, IAlbumCreate } from "@/types/album"; +import { useRouter } from "next/router"; import React from "react"; export default function PotentialAlbums() { const { toast } = useToast(); const { id } = useCurrentUser(); + const { query } = useRouter(); + const { startDate } = query as { startDate: string }; const [config, setConfig] = React.useState({ - startDate: undefined, + startDate: startDate || undefined, selectedIds: [], assets: [], }); @@ -62,6 +65,7 @@ export default function PotentialAlbums() { }] }) } + return (
{config.selectedIds.length} Selected - {config.selectedIds.length === config.assets.length ? ( + {config.selectedIds.length && config.selectedIds.length === config.assets.length ? ( - @@ -72,7 +84,7 @@ export function PeopleFilters() { - updateContext({ sort: "assetCount", sortOrder: "asc" }) + handleChange({ sort: "assetCount", sortOrder: "asc" }) } > @@ -81,7 +93,7 @@ export function PeopleFilters() { - updateContext({ sort: "assetCount", sortOrder: "desc" }) + handleChange({ sort: "assetCount", sortOrder: "desc" }) } > @@ -91,7 +103,7 @@ export function PeopleFilters() { - updateContext({ sort: "updatedAt", sortOrder: "asc" }) + handleChange({ sort: "updatedAt", sortOrder: "asc" }) } > @@ -100,7 +112,7 @@ export function PeopleFilters() { - updateContext({ sort: "updatedAt", sortOrder: "desc" }) + handleChange({ sort: "updatedAt", sortOrder: "desc" }) } > diff --git a/src/components/people/PeopleList.tsx b/src/components/people/PeopleList.tsx index c54f2f9..c0ce3e6 100644 --- a/src/components/people/PeopleList.tsx +++ b/src/components/people/PeopleList.tsx @@ -16,6 +16,7 @@ export default function PeopleList() { const [loading, setLoading] = useState(false); const [errorMessage, setErrorMessage] = useState(null); const [filters, setFilters] = useState({ + ...router.query, page: 1, }); From 894b44877bacd1d0a6829446f14373c8ce4d79de Mon Sep 17 00:00:00 2001 From: Varun Raj Date: Sun, 8 Sep 2024 10:58:06 +0530 Subject: [PATCH 05/10] feat: added filters endpoint Signed-off-by: Varun Raj --- .../api/assets/missing-location-assets.ts | 3 +- .../api/assets/missing-location-dates.ts | 1 + src/pages/api/filters/asset-filters.ts | 64 +++++++++++++++++++ src/schema/exif.schema.ts | 4 +- 4 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 src/pages/api/filters/asset-filters.ts diff --git a/src/pages/api/assets/missing-location-assets.ts b/src/pages/api/assets/missing-location-assets.ts index 2d6d16a..4847b53 100644 --- a/src/pages/api/assets/missing-location-assets.ts +++ b/src/pages/api/assets/missing-location-assets.ts @@ -4,7 +4,7 @@ import { getCurrentUser } from "@/handlers/serverUtils/user.utils"; import { parseDate } from "@/helpers/date.helper"; import { assets, exif } from "@/schema"; import { addDays } from "date-fns"; -import { and, count, desc, eq, gte, isNotNull, isNull, lte, ne, sql } from "drizzle-orm"; +import { and, eq, gte, isNotNull, isNull, lte, ne, sql } from "drizzle-orm"; import type { NextApiRequest, NextApiResponse } from "next"; export default async function handler( @@ -51,7 +51,6 @@ export default async function handler( isNotNull(assets.createdAt), gte(exif.dateTimeOriginal, startDateDate), lte(exif.dateTimeOriginal, endDateDate), - eq(assets.type, "VIDEO"), eq(assets.ownerId, currentUser.id), eq(assets.isVisible, true), )); diff --git a/src/pages/api/assets/missing-location-dates.ts b/src/pages/api/assets/missing-location-dates.ts index 86af049..ca57e77 100644 --- a/src/pages/api/assets/missing-location-dates.ts +++ b/src/pages/api/assets/missing-location-dates.ts @@ -21,6 +21,7 @@ export default async function handler( .leftJoin(exif, eq(exif.assetId, assets.id)) .where(and( isNull(exif.latitude), + isNotNull(assets.createdAt), eq(assets.type, "VIDEO"), eq(assets.ownerId, currentUser.id), eq(assets.isVisible, true), diff --git a/src/pages/api/filters/asset-filters.ts b/src/pages/api/filters/asset-filters.ts new file mode 100644 index 0000000..a679944 --- /dev/null +++ b/src/pages/api/filters/asset-filters.ts @@ -0,0 +1,64 @@ +// Next.js API route support: https://nextjs.org/docs/api-routes/introduction +import { db } from "@/config/db"; +import { getCurrentUser } from "@/handlers/serverUtils/user.utils"; +import { assets, exif } from "@/schema"; +import { IExifColumns } from "@/schema/exif.schema"; +import { IUser } from "@/types/user"; +import { and, eq } from "drizzle-orm"; +import type { NextApiRequest, NextApiResponse } from "next"; + +const FIELDS: IExifColumns[] = [ + "make", + "model", + "lensModel", + "city", + "state", + "country", + "projectionType", + "colorspace", + "bitsPerSample", + "rating", +]; + +const getFilters = async (currentUser: IUser) => { + const filters: { + [key in IExifColumns]?: (string | number | Date)[]; + } = {}; + for (const field of FIELDS) { + const values = (await db.selectDistinct({ + [field]: exif[field], + }) + .from(exif) + .leftJoin(assets, eq(exif.assetId, assets.id)) + .where( + and( + eq(assets.ownerId, currentUser.id), + ) + ) + ).map((value) => value[field]).filter((value) => value !== null); + + filters[field] = values; + } + return filters; +} + +export default async function handler( + req: NextApiRequest, + res: NextApiResponse +) { + + try { + const currentUser = await getCurrentUser(req); + if (!currentUser) { + return res.status(401).json({ + error: "Unauthorized", + }); + } + const filters = await getFilters(currentUser); + return res.status(200).json({ filters }); + } catch (error: any) { + res.status(500).json({ + error: error?.message, + }); + } +} diff --git a/src/schema/exif.schema.ts b/src/schema/exif.schema.ts index 128ca2e..367573b 100644 --- a/src/schema/exif.schema.ts +++ b/src/schema/exif.schema.ts @@ -31,4 +31,6 @@ export const exif = pgTable('exif', { bitsPerSample: integer('bitsPerSample'), autoStackId: varchar('autoStackId'), rating: integer('rating'), -}); \ No newline at end of file +}); + +export type IExifColumns = keyof typeof exif.$inferSelect \ No newline at end of file From e8a3d50e1144711d16a153f222eb9b9db58cd5c9 Mon Sep 17 00:00:00 2001 From: Varun Raj Date: Sun, 8 Sep 2024 11:59:43 +0530 Subject: [PATCH 06/10] feat: lazy load images in potential albums and missing locations Signed-off-by: Varun Raj --- bun.lockb | Bin 383385 -> 387559 bytes package.json | 1 + .../PotentialAlbumsAssets.tsx | 2 + .../MissingLocationAssets.tsx | 2 + src/components/layouts/RootLayout.tsx | 29 ++++--- src/components/people/PeopleFilters.tsx | 1 + src/components/shared/common/AssetFilter.tsx | 57 +++++++++++++ src/components/ui/combobox.tsx | 78 ++++++++++++++++++ src/components/ui/lazy-image.tsx | 44 ++++++++++ src/config/rQuery.ts | 5 ++ src/config/routes.ts | 5 +- src/contexts/ExifFiltersContext.tsx | 19 +++++ src/handlers/api/common.handler.ts | 6 +- src/pages/assets/missing-locations.tsx | 2 + 14 files changed, 236 insertions(+), 15 deletions(-) create mode 100644 src/components/shared/common/AssetFilter.tsx create mode 100644 src/components/ui/combobox.tsx create mode 100644 src/components/ui/lazy-image.tsx create mode 100644 src/config/rQuery.ts create mode 100644 src/contexts/ExifFiltersContext.tsx diff --git a/bun.lockb b/bun.lockb index 5a977a2545971ebbd55aebe89ad3a265c9d0b44e..e7f248c8988b90bebe2769fe067041a7a70439e4 100755 GIT binary patch delta 76813 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

0Mn4 zBk_M3zpN%|RgQJ9YIQ|xWob5HTy>q>e*32y)-mJRcLTFbwK>L}?5ziTa~|}5dq$Vw;Rhd$%xt6$ z*;8>%sT93qH9lS8SJv0RgiFQDYB*^fL8io^+tb%%%~9*`c!`dg)n?HihD25@EKzNK zhg~T$+Tta~nK8@Oj_mm;Rl&3IF>^DkcanC!DUm93<)XV?XC051h$conb2Mcm6?nJz z_wg}jGpqU=u`Je<_}=AFtwQ%~0r3*AGph(BoEfqhI*Mc|T+;R1n@i&*@|iK6vcE~4 zF^~I;_!wsvbyCvSH6@O|h{!X1MRUFjV0orJG1;(eu~&(`=k9fG9Us#_i*iI^**8eY ze3m{(jeCou2K^K-u_TLXBoaGJiC!I-y}vMhPt|ydV_DSLD6K|;ZJx%c`kYWEv1`{3 zEL!jXT{&H{9Q$t6oq8a;D&hx`xHD(Kv!zvD?2DHO%B;LMQI?LTgtPwfol9qI9~v)_ zWZmi7$7NQbl6Ed>rFJK18+vreTz+tT+9c~vPaBFkT|by3@5&cNw;j_NKQntM-|D zD&xor^%eb%hZOSs;^XgNJVsWgqc`5FEor?{<~6465&ph;zRzlxMLrEr`g{B*)}qwf zEn3M&$t$~z66ri~6@r6*_76&p61JmcSN}0FlHD$kAFiA}{Z2NuWYytU*5yrJRctG} zr$#n8SOO$2Mkd#8`P8JXypYOM�}eHOyCaRLoZH4va@as>3#(81hhPW8kM7Y zhWGBJu8mjyc4$>vd-X6bk1bpJxa;5y??U_b)-y`i;QjSdLzn&Dbg^;Y9$DehlZNHz zz6k9*SdZ5x-1FR8WOm_TGd|#$_pof8iVf;`*f6x=ym3&OL%dL%a6s9Xz0O51;;h z!Um`<=iGAn$Del%LrcO_A9=sClxPX-+Plx7u0Fw?J9iBopfdlWIr9GNQhz=F1Ty`7 zN+{O@TK={l<&We?*RWTfWs^~tt^>MKxX?aby7ms~9M-3Q*Uo)HyYvqY4(+3V<*HAo zULk`*`V8cwN?ix2ywRFhX5(8&s5K6J{8gi?S^?F@?v^G!SK~FRr%`T&cIBGv=H{wm zCc6Ekww7`$tMW~8TbT1-YDpA-t}1PCD_rZ5YHqvk-`0)> e?Ydve?L~9dd#YQ?T~Xh<^>N)5J;m*E-Twh9n_gW2 delta 73715 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 diff --git a/package.json b/package.json index da657a3..d4f94f3 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "react-day-picker": "9.0.8", "react-dom": "^18", "react-grid-gallery": "^1.0.1", + "react-query": "^3.39.3", "recharts": "^2.12.7", "sass": "^1.77.8", "tailwind-merge": "^2.5.2", diff --git a/src/components/albums/potential-albums/PotentialAlbumsAssets.tsx b/src/components/albums/potential-albums/PotentialAlbumsAssets.tsx index ba4d894..2818863 100644 --- a/src/components/albums/potential-albums/PotentialAlbumsAssets.tsx +++ b/src/components/albums/potential-albums/PotentialAlbumsAssets.tsx @@ -9,6 +9,7 @@ import Captions from "yet-another-react-lightbox/plugins/captions"; import { CalendarArrowDown, CalendarArrowUp, Hourglass } from "lucide-react"; import Video from "yet-another-react-lightbox/plugins/video"; import { useConfig } from "@/contexts/ConfigContext"; +import LazyImage from "@/components/ui/lazy-image"; export default function PotentialAlbumsAssets() { const { exImmichUrl } = useConfig(); @@ -123,6 +124,7 @@ export default function PotentialAlbumsAssets() { onClick={handleClick} enableImageSelection={true} onSelect={handleSelect} + thumbnailImageComponent={LazyImage} tagStyle={{ color: "white", fontSize: "12px", diff --git a/src/components/assets/missing-location/MissingLocationAssets.tsx b/src/components/assets/missing-location/MissingLocationAssets.tsx index 7acda77..6b58ace 100644 --- a/src/components/assets/missing-location/MissingLocationAssets.tsx +++ b/src/components/assets/missing-location/MissingLocationAssets.tsx @@ -18,6 +18,7 @@ import { listMissingLocationAssets } from "@/handlers/api/asset.handler"; import { formatDate, parseDate } from "@/helpers/date.helper"; import { addDays } from "date-fns"; import { useConfig } from "@/contexts/ConfigContext"; +import LazyImage from "@/components/ui/lazy-image"; export default function MissingLocationAssets() { const { exImmichUrl } = useConfig(); @@ -125,6 +126,7 @@ export default function MissingLocationAssets() { onClick={handleClick} enableImageSelection={true} onSelect={handleSelect} + thumbnailImageComponent={LazyImage} tagStyle={{ color: "white", fontSize: "12px", diff --git a/src/components/layouts/RootLayout.tsx b/src/components/layouts/RootLayout.tsx index 91ff2b5..3eab240 100644 --- a/src/components/layouts/RootLayout.tsx +++ b/src/components/layouts/RootLayout.tsx @@ -10,11 +10,14 @@ import { ArrowRight, TriangleAlert } from "lucide-react"; import Link from "next/link"; import { LoginForm } from "../auth/LoginForm"; import { useConfig } from "@/contexts/ConfigContext"; +import { queryClient } from "@/config/rQuery"; +import { QueryClientProvider } from "react-query"; type RootLayoutProps = { children: ReactNode; }; + export default function RootLayout({ children }: RootLayoutProps) { const { immichURL, exImmichUrl } = useConfig(); const [user, setUser] = useState(null); @@ -34,9 +37,7 @@ export default function RootLayout({ children }: RootLayoutProps) { .finally(() => setLoading(false)); }; - const handleLoginCompletion = (user: IUser) => { - setUser(user); - } + const handleLoginCompletion = (user: IUser) => setUser(user); useEffect(() => { fetchData(); @@ -86,15 +87,17 @@ export default function RootLayout({ children }: RootLayoutProps) { if (!user) return ; return ( - -

- -
{children}
- -
- + + +
+ +
{children}
+ +
+
+
); } diff --git a/src/components/people/PeopleFilters.tsx b/src/components/people/PeopleFilters.tsx index a36de1f..232ba81 100644 --- a/src/components/people/PeopleFilters.tsx +++ b/src/components/people/PeopleFilters.tsx @@ -14,6 +14,7 @@ import { } from "../ui/dropdown-menu"; import { Input } from "../ui/input"; import { IPersonListFilters } from "@/handlers/api/people.handler"; +import AssetFilter from "../shared/common/AssetFilter"; export function PeopleFilters() { const router = useRouter(); diff --git a/src/components/shared/common/AssetFilter.tsx b/src/components/shared/common/AssetFilter.tsx new file mode 100644 index 0000000..bff8f0e --- /dev/null +++ b/src/components/shared/common/AssetFilter.tsx @@ -0,0 +1,57 @@ +import { Combobox } from '@/components/ui/combobox'; +import { getFilters } from '@/handlers/api/common.handler'; +import React, { useMemo, useState } from 'react' +import { useQuery } from 'react-query'; + +const fields = [ + "make", + "model", + "lensModel", + "city", + "state", + "country", + "projectionType", + "colorspace", + "bitsPerSample", + "rating", +]; + +const formattedFields = fields.map(field => ({ + label: field.replace(/([A-Z])/g, ' $1').replace(/^./, str => str.toUpperCase()), + value: field +})); + + +export default function AssetFilter() { + const [selectedField, setSelectedField] = useState(null); + + const { data } = useQuery('filters', getFilters) + + + const options = useMemo(() => { + if (!selectedField) return formattedFields; + const { filters } = data; + + if (!filters) return formattedFields; + const field = filters[selectedField]; + if (!field) return []; + return field.map((value: string) => ({ + label: value, + value + })); + }, [selectedField, data]); + + return ( + { + if (!selectedField) setSelectedField(value); + + }} + onOpenChange={(open) => { + if (!open) setSelectedField(null); + }} + /> + ) +} diff --git a/src/components/ui/combobox.tsx b/src/components/ui/combobox.tsx new file mode 100644 index 0000000..b7fd690 --- /dev/null +++ b/src/components/ui/combobox.tsx @@ -0,0 +1,78 @@ +"use client" + +import * as React from "react" +import { Check, Filter } from "lucide-react" + +import { cn } from "@/lib/utils" +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, + CommandList, +} from "@/components/ui/command" +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover" + + +export interface IComboBoxOption { label: string; value: string } + +export interface IComboBoxProps { + options: IComboBoxOption[] + onSelect?: (value: string) => void + onOpenChange?: (open: boolean) => void + closeOnSelect?: boolean +} + +export function Combobox( + { options, onSelect, onOpenChange, closeOnSelect }: IComboBoxProps +) { + const [open, setOpen] = React.useState(false) + const [value, setValue] = React.useState("") + + return ( + { + setOpen(openState) + onOpenChange?.(openState) + }}> + + + + + + + + No framework found. + + {options.map((option) => ( + { + setValue(currentValue === value ? "" : currentValue) + onSelect?.(currentValue) + if (closeOnSelect) { + setOpen(false) + } + }} + > + + {option.label.trim()} + + ))} + + + + + + ) +} diff --git a/src/components/ui/lazy-image.tsx b/src/components/ui/lazy-image.tsx new file mode 100644 index 0000000..9027779 --- /dev/null +++ b/src/components/ui/lazy-image.tsx @@ -0,0 +1,44 @@ +/* eslint-disable @next/next/no-img-element */ +import React, { useEffect } from 'react' +import { Image, ImageExtended, ThumbnailImageProps } from 'react-grid-gallery' + +interface LazyImageProps extends ThumbnailImageProps> {} + +export default function LazyImage( + props: LazyImageProps +) { + const [isVisible, setIsVisible] = React.useState(false) + const imageRef = React.useRef(null) + + const setupObserver = () => { + const observer = new IntersectionObserver((entries) => { + + entries.forEach((entry) => { + if (entry.isIntersecting) { + setIsVisible(true) + observer.disconnect() + } + }) + }) + + if (imageRef.current) { + observer.observe(imageRef.current) + } + return observer + } + + useEffect(() => { + const observer = setupObserver() + return () => { + observer?.disconnect() + } + }, []) + + if (!isVisible) return ( +
+ ) + + return ( + {props.imageProps.alt + ) +} diff --git a/src/config/rQuery.ts b/src/config/rQuery.ts new file mode 100644 index 0000000..3118e51 --- /dev/null +++ b/src/config/rQuery.ts @@ -0,0 +1,5 @@ +import { + QueryClient, +} from 'react-query' + +export const queryClient = new QueryClient() \ No newline at end of file diff --git a/src/config/routes.ts b/src/config/routes.ts index 4aa8025..1cb02e1 100644 --- a/src/config/routes.ts +++ b/src/config/routes.ts @@ -34,4 +34,7 @@ export const ASSET_VIDEO_PATH = (id: string) => BASE_PROXY_ENDPOINT + "/asset/vi // Location -export const SEARCH_PLACES_PATH = BASE_PROXY_ENDPOINT + "/search/places"; \ No newline at end of file +export const SEARCH_PLACES_PATH = BASE_PROXY_ENDPOINT + "/search/places"; + +// Common +export const GET_FILTERS = BASE_API_ENDPOINT + "/filters/asset-filters"; \ No newline at end of file diff --git a/src/contexts/ExifFiltersContext.tsx b/src/contexts/ExifFiltersContext.tsx new file mode 100644 index 0000000..fe8efec --- /dev/null +++ b/src/contexts/ExifFiltersContext.tsx @@ -0,0 +1,19 @@ +import { createContext, useContext } from "react"; + +type FilterValue = string | string[] | number | number[] | undefined; + +interface ExifFiltersType { + updateContext: (key: string, value: FilterValue) => void; + [key: string]: FilterValue | ((key: string, value: FilterValue) => void); +} + +const ExifFilters = createContext({ + updateContext: () => {}, +}); + +export default ExifFilters; + +export const useExifFilters = () => { + const context = useContext(ExifFilters) as ExifFiltersType; + return context; +} \ No newline at end of file diff --git a/src/handlers/api/common.handler.ts b/src/handlers/api/common.handler.ts index c2ba640..3626e32 100644 --- a/src/handlers/api/common.handler.ts +++ b/src/handlers/api/common.handler.ts @@ -1,4 +1,4 @@ -import { SEARCH_PLACES_PATH } from "@/config/routes"; +import { GET_FILTERS, SEARCH_PLACES_PATH } from "@/config/routes"; import API from "@/lib/api"; import { IPlace } from "@/types/common"; @@ -6,3 +6,7 @@ export const searchPlaces = async (name: string): Promise => { return API.get(SEARCH_PLACES_PATH, { name }); } + +export const getFilters = async () => { + return API.get(GET_FILTERS); +} \ No newline at end of file diff --git a/src/pages/assets/missing-locations.tsx b/src/pages/assets/missing-locations.tsx index 8654509..ea5def3 100644 --- a/src/pages/assets/missing-locations.tsx +++ b/src/pages/assets/missing-locations.tsx @@ -5,6 +5,7 @@ import MissingLocationAssets from "@/components/assets/missing-location/MissingL import MissingLocationDates from "@/components/assets/missing-location/MissingLocationDates"; import TagMissingLocationDialog from "@/components/assets/missing-location/TagMissingLocationDialog/TagMissingLocationDialog"; import PageLayout from "@/components/layouts/PageLayout"; +import AssetFilter from "@/components/shared/common/AssetFilter"; import Header from "@/components/shared/Header"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; @@ -48,6 +49,7 @@ export default function MissingLocations() { leftComponent="Missing Location" rightComponent={ <> + {config.selectedIds.length} Selected From 7fdb42137ceed56439fe99c700371027379c2a7a Mon Sep 17 00:00:00 2001 From: Varun Raj Date: Sat, 14 Sep 2024 11:49:26 +0530 Subject: [PATCH 07/10] fix: relative date for birthday Signed-off-by: Varun Raj --- bun.lockb | Bin 387559 -> 388252 bytes package.json | 1 + src/components/people/PeopleList.tsx | 2 +- src/components/people/PersonBirthdayCell.tsx | 41 ++++++++++++++++--- src/components/people/PersonItem.tsx | 2 +- src/components/ui/datepicker.tsx | 9 ++-- src/handlers/api/people.handler.ts | 2 +- src/pages/assets/missing-locations.tsx | 1 - 8 files changed, 45 insertions(+), 13 deletions(-) diff --git a/bun.lockb b/bun.lockb index e7f248c8988b90bebe2769fe067041a7a70439e4..a8bbfdd63ae7efe310108b2c893ca1a188da9f40 100755 GIT binary patch delta 70502 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 x3-@l8Y+rBREO*{`r0!Fh;-jrSit;C delta 70106 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 diff --git a/package.json b/package.json index d4f94f3..3f8f3ed 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "@types/cookie": "^0.6.0", "@types/qs": "^6.9.15", "axios": "^1.7.4", + "chrono-node": "^1.4.9", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "cmdk": "1.0.0", diff --git a/src/components/people/PeopleList.tsx b/src/components/people/PeopleList.tsx index c0ce3e6..392fb0d 100644 --- a/src/components/people/PeopleList.tsx +++ b/src/components/people/PeopleList.tsx @@ -54,7 +54,7 @@ export default function PeopleList() { if (errorMessage) return
{errorMessage}
; return ( -
+
{people.map((person) => ( ))} diff --git a/src/components/people/PersonBirthdayCell.tsx b/src/components/people/PersonBirthdayCell.tsx index 2004952..4909bee 100644 --- a/src/components/people/PersonBirthdayCell.tsx +++ b/src/components/people/PersonBirthdayCell.tsx @@ -3,6 +3,12 @@ import React, { useState } from 'react' import { DatePicker } from '../ui/datepicker' import { updatePerson } from '@/handlers/api/people.handler'; import { formatDate } from '@/helpers/date.helper'; +import { Input } from '../ui/input'; +import { useToast } from '../ui/use-toast'; +// @ts-ignore +import chrono from 'chrono-node' + + interface IProps { person: IPerson @@ -11,19 +17,22 @@ interface IProps { export default function PersonBirthdayCell( { person }: IProps ) { - const [formData, setFormData] = useState(person); const [loading, setLoading] = useState(false); + const { toast } = useToast(); const [errorMessage, setErrorMessage] = useState(null); + const [textDate, setTextDate] = useState(person.birthDate ? formatDate(person.birthDate?.toString(), 'PPP'): ""); const handleEdit = (date?: Date | null) => { - if (!date) return; - const formatedDate = formatDate(date.toString(), 'yyyy-MM-dd'); + const formatedDate = date ? formatDate(date.toString(), 'yyyy-MM-dd') : null; setLoading(true); return updatePerson(person.id, { birthDate: formatedDate, }) .then(() => { - + toast({ + title: "Success", + description: "Person updated successfully", + }) }) .catch(() => {}) .finally(() => { @@ -33,5 +42,27 @@ export default function PersonBirthdayCell( - return + return ( +
+ { + if (e.key === 'Enter') { + const parsedDate = chrono.parseDate(textDate || ""); + if (parsedDate) { + handleEdit(parsedDate); + setTextDate(formatDate(parsedDate.toString(), 'PPP')); + } else { + handleEdit(null); + } + } + }} + disabled={loading} + onChange={(e) => setTextDate(e.target.value)} + /> + +
+ ) } diff --git a/src/components/people/PersonItem.tsx b/src/components/people/PersonItem.tsx index fc04f64..95e3faa 100644 --- a/src/components/people/PersonItem.tsx +++ b/src/components/people/PersonItem.tsx @@ -86,7 +86,7 @@ export default function PersonItem({ person, onRemove }: IProps) { }} > diff --git a/src/components/ui/datepicker.tsx b/src/components/ui/datepicker.tsx index 3053e3e..090993f 100644 --- a/src/components/ui/datepicker.tsx +++ b/src/components/ui/datepicker.tsx @@ -16,9 +16,10 @@ import { interface IProps { date?: Date | null onSelect?: (date?: Date | null) => any + iconOnly?: boolean } export function DatePicker( - { date: _date, onSelect }: IProps + { date: _date, onSelect, iconOnly }: IProps ) { const [date, setDate] = React.useState(_date || null) @@ -32,12 +33,12 @@ export function DatePicker( diff --git a/src/handlers/api/people.handler.ts b/src/handlers/api/people.handler.ts index 4fd5ecc..a295e58 100644 --- a/src/handlers/api/people.handler.ts +++ b/src/handlers/api/people.handler.ts @@ -26,7 +26,7 @@ export const listPeople = (filters: IPersonListFilters): Promise) => { return API.put(UPDATE_PERSON_PATH(id), data) diff --git a/src/pages/assets/missing-locations.tsx b/src/pages/assets/missing-locations.tsx index ea5def3..c299609 100644 --- a/src/pages/assets/missing-locations.tsx +++ b/src/pages/assets/missing-locations.tsx @@ -49,7 +49,6 @@ export default function MissingLocations() { leftComponent="Missing Location" rightComponent={ <> - {config.selectedIds.length} Selected From 90ed5230b32f9200416efb16c3eea86a742e59c4 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 14 Sep 2024 06:35:24 +0000 Subject: [PATCH 08/10] chore(release): 0.6.0 [skip ci] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 🚀 **Immich Power Tools** 0.6.0 ### Bug Fixes * relative date for birthday ([7fdb421](https://github.com/varun-raj/immich-power-tools/commit/7fdb42137ceed56439fe99c700371027379c2a7a)) ### Features * added filters endpoint ([894b448](https://github.com/varun-raj/immich-power-tools/commit/894b44877bacd1d0a6829446f14373c8ce4d79de)) * added option in immich for potential albums asset ([610cd0e](https://github.com/varun-raj/immich-power-tools/commit/610cd0e89927e8759c2a748a82115149d34e7fee)) * added version ([574f836](https://github.com/varun-raj/immich-power-tools/commit/574f83615ef7de2eedc8a4de9706428191d37232)) * lazy load images in potential albums and missing locations ([e8a3d50](https://github.com/varun-raj/immich-power-tools/commit/e8a3d50e1144711d16a153f222eb9b9db58cd5c9)) * store date in url when filtering in missing locations and potential albums ([9af0ba0](https://github.com/varun-raj/immich-power-tools/commit/9af0ba0cbe3658c10d071365f53f0ce052bd4733)) * store query in url while filtering people ([a596fa4](https://github.com/varun-raj/immich-power-tools/commit/a596fa49437a44bcd1a81f75180468455c28b8e7)) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3f8f3ed..7516f90 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "immich-power-tools", - "version": "0.5.0", + "version": "0.6.0", "private": true, "scripts": { "dev": "next dev", From c36f94f381d7533b300716f1d468566e27fe9fb8 Mon Sep 17 00:00:00 2001 From: Varun Raj Date: Sat, 14 Sep 2024 12:17:32 +0530 Subject: [PATCH 09/10] fix: version patch Signed-off-by: Varun Raj --- .github/workflows/release.yml | 2 +- docker-compose.build.yml | 2 ++ next.config.mjs | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a19a850..a6ef46e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -43,7 +43,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Docker image run: | - docker build --build-arg VERSION=${{ needs.release.outputs.new-release-version }} \ + docker build --build-arg BUILD_VERSION=${{ needs.release.outputs.new-release-version }} VERSION=${{ needs.release.outputs.new-release-version }} \ -t ghcr.io/${{ github.repository }}:${{ needs.release.outputs.new-release-version }} \ -t ghcr.io/${{ github.repository }}:latest . docker push ghcr.io/${{ github.repository }}:latest diff --git a/docker-compose.build.yml b/docker-compose.build.yml index 23e85e3..3c431eb 100644 --- a/docker-compose.build.yml +++ b/docker-compose.build.yml @@ -10,3 +10,5 @@ services: - "3000:3000" env_file: - .env + environment: + - BUILD_VERSION=${BUILD_VERSION} diff --git a/next.config.mjs b/next.config.mjs index 00835c9..ee15efb 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -13,7 +13,7 @@ const nextConfig = { unoptimized: true, }, env: { - VERSION: version, + VERSION: process.env.BUILD_VERSION || version, }, }; From 9488f8dd83ab9fced5f66270876cb6c80822f05e Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 14 Sep 2024 06:48:51 +0000 Subject: [PATCH 10/10] chore(release): 0.6.1 [skip ci] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 🚀 **Immich Power Tools** 0.6.1 ### Bug Fixes * version patch ([c36f94f](https://github.com/varun-raj/immich-power-tools/commit/c36f94f381d7533b300716f1d468566e27fe9fb8)) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7516f90..cb37978 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "immich-power-tools", - "version": "0.6.0", + "version": "0.6.1", "private": true, "scripts": { "dev": "next dev",