diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-07-07 08:24:16 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-07-07 08:24:16 +0000 |
| commit | 44bdb81a60d3a44ba7e379f3c20fe6d8fb284339 (patch) | |
| tree | b5c916a1c7ea37573f9bba7fefcef60a3b8aec20 /lib/login-session | |
| parent | 90f79a7a691943a496f67f01c1e493256070e4de (diff) | |
(대표님) 변경사항 20250707 12시 30분
Diffstat (limited to 'lib/login-session')
3 files changed, 66 insertions, 53 deletions
diff --git a/lib/login-session/table/login-sessions-table-columns.tsx b/lib/login-session/table/login-sessions-table-columns.tsx index e3d8bc2f..5d2389be 100644 --- a/lib/login-session/table/login-sessions-table-columns.tsx +++ b/lib/login-session/table/login-sessions-table-columns.tsx @@ -193,51 +193,51 @@ export function getColumns({ setRowAction }: GetColumnsProps): ColumnDef<Extende }, ], }, - { - id: "actions", - cell: function Cell({ row }) { - const session = row.original + // { + // id: "actions", + // cell: function Cell({ row }) { + // const session = row.original - return ( - <DropdownMenu> - <DropdownMenuTrigger asChild> - <Button - aria-label="Open menu" - variant="ghost" - className="flex size-8 p-0 data-[state=open]:bg-muted" - > - <Ellipsis className="size-4" aria-hidden="true" /> - </Button> - </DropdownMenuTrigger> - <DropdownMenuContent align="end" className="w-40"> - <DropdownMenuItem - onSelect={() => setRowAction({ type: "view", row })} - > - <Eye className="mr-2 size-4" aria-hidden="true" /> - 상세 보기 - </DropdownMenuItem> - <DropdownMenuItem - onSelect={() => setRowAction({ type: "viewSecurity", row })} - > - <Shield className="mr-2 size-4" aria-hidden="true" /> - 보안 정보 - </DropdownMenuItem> - {session.isCurrentlyActive && ( - <DropdownMenuItem - onSelect={() => setRowAction({ type: "forceLogout", row })} - className="text-red-600" - > - <LogOut className="mr-2 size-4" aria-hidden="true" /> - 강제 로그아웃 - <DropdownMenuShortcut>⌘⌫</DropdownMenuShortcut> - </DropdownMenuItem> - )} - </DropdownMenuContent> - </DropdownMenu> - ) - }, - enableSorting: false, - enableHiding: false, - }, + // return ( + // <DropdownMenu> + // <DropdownMenuTrigger asChild> + // <Button + // aria-label="Open menu" + // variant="ghost" + // className="flex size-8 p-0 data-[state=open]:bg-muted" + // > + // <Ellipsis className="size-4" aria-hidden="true" /> + // </Button> + // </DropdownMenuTrigger> + // <DropdownMenuContent align="end" className="w-40"> + // <DropdownMenuItem + // onSelect={() => setRowAction({ type: "view", row })} + // > + // <Eye className="mr-2 size-4" aria-hidden="true" /> + // 상세 보기 + // </DropdownMenuItem> + // <DropdownMenuItem + // onSelect={() => setRowAction({ type: "viewSecurity", row })} + // > + // <Shield className="mr-2 size-4" aria-hidden="true" /> + // 보안 정보 + // </DropdownMenuItem> + // {session.isCurrentlyActive && ( + // <DropdownMenuItem + // onSelect={() => setRowAction({ type: "forceLogout", row })} + // className="text-red-600" + // > + // <LogOut className="mr-2 size-4" aria-hidden="true" /> + // 강제 로그아웃 + // <DropdownMenuShortcut>⌘⌫</DropdownMenuShortcut> + // </DropdownMenuItem> + // )} + // </DropdownMenuContent> + // </DropdownMenu> + // ) + // }, + // enableSorting: false, + // enableHiding: false, + // }, ] }
\ No newline at end of file diff --git a/lib/login-session/table/login-sessions-table-toolbar-actions.tsx b/lib/login-session/table/login-sessions-table-toolbar-actions.tsx index 36665bc0..2c8781a3 100644 --- a/lib/login-session/table/login-sessions-table-toolbar-actions.tsx +++ b/lib/login-session/table/login-sessions-table-toolbar-actions.tsx @@ -8,6 +8,8 @@ import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip import { ExtendedLoginSession } from "../validation" import { exportTableToExcel } from "@/lib/export_all" +import { useTransition } from "react" +import { useRouter } from "next/navigation" interface LoginSessionsTableToolbarActionsProps { table: Table<ExtendedLoginSession> @@ -16,6 +18,15 @@ interface LoginSessionsTableToolbarActionsProps { export function LoginSessionsTableToolbarActions({ table, }: LoginSessionsTableToolbarActionsProps) { + + const router = useRouter() + const [isPending, startTransition] = useTransition() + + const handleRefresh = () => { + startTransition(() => { + router.refresh() // ✅ 서버 컴포넌트만 새로고침 (더 빠르고 부드러움) + }) + } return ( <div className="flex items-center gap-2"> <Tooltip> @@ -44,18 +55,23 @@ export function LoginSessionsTableToolbarActions({ <Button variant="outline" size="sm" - onClick={() => window.location.reload()} + onClick={handleRefresh} + disabled={isPending} // 로딩 중 비활성화 > - <RotateCcw className="mr-2 size-4" aria-hidden="true" /> - 새로고침 + <RotateCcw + className={`mr-2 size-4 ${isPending ? 'animate-spin' : ''}`} + aria-hidden="true" + /> + {isPending ? '새로고침 중...' : '새로고침'} </Button> </TooltipTrigger> <TooltipContent> <p>데이터 새로고침</p> </TooltipContent> </Tooltip> + - <Tooltip> + {/* <Tooltip> <TooltipTrigger asChild> <Button variant="outline" @@ -72,7 +88,7 @@ export function LoginSessionsTableToolbarActions({ <TooltipContent> <p>보안 분석 리포트 생성</p> </TooltipContent> - </Tooltip> + </Tooltip> */} </div> ) }
\ No newline at end of file diff --git a/lib/login-session/table/login-sessions-table.tsx b/lib/login-session/table/login-sessions-table.tsx index 43568f41..c81efc37 100644 --- a/lib/login-session/table/login-sessions-table.tsx +++ b/lib/login-session/table/login-sessions-table.tsx @@ -10,7 +10,6 @@ import type { import { useDataTable } from "@/hooks/use-data-table" import { DataTable } from "@/components/data-table/data-table" import { DataTableAdvancedToolbar } from "@/components/data-table/data-table-advanced-toolbar" -import { useFeatureFlags } from "@/components/data-table/feature-flags-provider" import { getLoginSessions } from "../service" import { LoginSessionsTableToolbarActions } from "./login-sessions-table-toolbar-actions" @@ -26,8 +25,6 @@ interface LoginSessionsTableProps { } export function LoginSessionsTable({ promises }: LoginSessionsTableProps) { - const { featureFlags } = useFeatureFlags() - const [{ data, pageCount }] = React.use(promises) const [rowAction, setRowAction] = |
