From 6a75a0a9edf3aa668ba1a91590879f9aa070950c Mon Sep 17 00:00:00 2001 From: Esdras Renan Date: Thu, 13 Nov 2025 21:55:56 -0300 Subject: [PATCH] Wire quick actions to reopen admin modals in-place --- .../companies/admin-companies-manager.tsx | 9 ++++++++ .../admin/devices/admin-devices-overview.tsx | 9 ++++++++ .../admin/users/admin-users-workspace.tsx | 9 ++++++++ src/components/global-quick-actions.tsx | 22 +++++++++++++++++-- 4 files changed, 47 insertions(+), 2 deletions(-) diff --git a/src/components/admin/companies/admin-companies-manager.tsx b/src/components/admin/companies/admin-companies-manager.tsx index a78fb4f..4906bf2 100644 --- a/src/components/admin/companies/admin-companies-manager.tsx +++ b/src/components/admin/companies/admin-companies-manager.tsx @@ -436,6 +436,15 @@ export function AdminCompaniesManager({ initialCompanies, tenantId, autoOpenCrea } }, [autoOpenCreate, openCreate]) + useEffect(() => { + if (typeof window === "undefined") return + const handler = () => { + openCreate() + } + window.addEventListener("quick-open-company", handler) + return () => window.removeEventListener("quick-open-company", handler) + }, [openCreate]) + const handleDelete = useCallback(async () => { if (!isDeleting) return try { diff --git a/src/components/admin/devices/admin-devices-overview.tsx b/src/components/admin/devices/admin-devices-overview.tsx index 3630598..60ea135 100644 --- a/src/components/admin/devices/admin-devices-overview.tsx +++ b/src/components/admin/devices/admin-devices-overview.tsx @@ -1569,6 +1569,15 @@ export function AdminDevicesOverview({ } }, [autoOpenCreateDevice, handleOpenCreateDevice]) + useEffect(() => { + if (typeof window === "undefined") return + const handler = () => { + handleOpenCreateDevice() + } + window.addEventListener("quick-open-device", handler) + return () => window.removeEventListener("quick-open-device", handler) + }, [handleOpenCreateDevice]) + const handleCreateDevice = useCallback(async () => { if (!convexUserId) { toast.error("Sincronize a sessão antes de criar dispositivos.") diff --git a/src/components/admin/users/admin-users-workspace.tsx b/src/components/admin/users/admin-users-workspace.tsx index b5b24a8..8f3a1d7 100644 --- a/src/components/admin/users/admin-users-workspace.tsx +++ b/src/components/admin/users/admin-users-workspace.tsx @@ -416,6 +416,15 @@ function AccountsTable({ setCreateDialogOpen(true) }, [autoOpenCreate]) + useEffect(() => { + if (typeof window === "undefined") return + const handler = () => { + handleOpenCreateDialog() + } + window.addEventListener("quick-open-user", handler) + return () => window.removeEventListener("quick-open-user", handler) + }, [handleOpenCreateDialog]) + useEffect(() => { if (editAccount) { setEditForm({ diff --git a/src/components/global-quick-actions.tsx b/src/components/global-quick-actions.tsx index 5164ce5..0b1769a 100644 --- a/src/components/global-quick-actions.tsx +++ b/src/components/global-quick-actions.tsx @@ -1,7 +1,7 @@ "use client" import { useId, useMemo } from "react" -import { useRouter } from "next/navigation" +import { usePathname, useRouter } from "next/navigation" import { MonitorSmartphone, Building, UserPlus, ChevronRight } from "lucide-react" import { Button } from "@/components/ui/button" @@ -22,6 +22,7 @@ type QuickLink = { export function GlobalQuickActions() { const { convexUserId, isAdmin, isStaff, isLoading } = useAuth() const router = useRouter() + const pathname = usePathname() const actionId = useId() const links = useMemo(() => { @@ -81,7 +82,24 @@ export function GlobalQuickActions() {