diff --git a/apps/desktop/src/components/finder/views/contact-view.tsx b/apps/desktop/src/components/finder/views/contact-view.tsx index 511633a1b0..c225597e10 100644 --- a/apps/desktop/src/components/finder/views/contact-view.tsx +++ b/apps/desktop/src/components/finder/views/contact-view.tsx @@ -1,6 +1,6 @@ import { RiCornerDownLeftLine } from "@remixicon/react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; -import { ArrowUpAZ, Building2, CircleMinus, FileText, Pencil, Plus, SearchIcon, TrashIcon, User } from "lucide-react"; +import { Building2, CircleMinus, FileText, Pencil, Plus, SearchIcon, TrashIcon, User } from "lucide-react"; import React, { useEffect, useRef, useState } from "react"; import { commands as dbCommands } from "@hypr/plugin-db"; @@ -9,6 +9,7 @@ import { commands as windowsCommands } from "@hypr/plugin-windows"; import { Button } from "@hypr/ui/components/ui/button"; import { Input } from "@hypr/ui/components/ui/input"; import { Popover, PopoverContent, PopoverTrigger } from "@hypr/ui/components/ui/popover"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@hypr/ui/components/ui/select"; import { cn } from "@hypr/ui/lib/utils"; import { getInitials } from "@hypr/utils"; import { LinkProps } from "node_modules/@tanstack/react-router/dist/esm/link"; @@ -27,7 +28,7 @@ export function ContactView({ userId, initialPersonId, initialOrgId }: ContactVi const [editingPerson, setEditingPerson] = useState(null); const [editingOrg, setEditingOrg] = useState(null); const [showNewOrg, setShowNewOrg] = useState(false); - const [sortAlphabetically, setSortAlphabetically] = useState(true); + const [sortOption, setSortOption] = useState<"alphabetical" | "oldest" | "newest">("alphabetical"); const queryClient = useQueryClient(); // Load organizations once and keep cached (global data) @@ -123,16 +124,18 @@ export function ContactView({ userId, initialPersonId, initialOrgId }: ContactVi ? allPeopleWithUser.filter(person => person.organization_id === selectedOrganization) : allPeopleWithUser).filter(person => person.id === userId || isValidName(person.full_name)); - if (sortAlphabetically) { + if (sortOption === "alphabetical") { filtered = [...filtered].sort((a, b) => { const nameA = (a.full_name || a.email || "").toLowerCase(); const nameB = (b.full_name || b.email || "").toLowerCase(); return nameA.localeCompare(nameB); }); + } else if (sortOption === "newest") { + filtered = [...filtered].reverse(); } return filtered; - }, [selectedOrganization, allPeopleWithUser, userId, sortAlphabetically]); + }, [selectedOrganization, allPeopleWithUser, userId, sortOption]); const selectedPersonData = displayPeople.find(p => p.id === selectedPerson); @@ -254,16 +257,25 @@ export function ContactView({ userId, initialPersonId, initialOrgId }: ContactVi

People

-