From a65191024c6b18bd77cdb8f948a2fbd651689627 Mon Sep 17 00:00:00 2001
From: brooktewabe
Date: Thu, 11 Jun 2026 10:48:11 +0300
Subject: [PATCH] TS issues
---
src/components/ProtectedRoute.tsx | 2 --
src/hooks/use-admin-role.ts | 2 ++
src/layouts/app-shell.tsx | 2 +-
src/pages/admin/analytics/revenue.tsx | 2 +-
src/pages/admin/analytics/storage.tsx | 2 +-
src/pages/admin/analytics/users.tsx | 18 +++++++++---------
src/pages/admin/announcements/index.tsx | 4 ++--
src/pages/admin/audit/index.tsx | 1 -
src/pages/admin/security/suspicious.tsx | 2 +-
src/pages/admin/settings/index.tsx | 1 -
src/pages/admin/support/faq.tsx | 3 +--
src/pages/admin/system-members/index.tsx | 16 +++++++++++-----
src/pages/notifications/index.tsx | 7 +------
src/services/notification.service.ts | 20 ++++++++++++++++++++
14 files changed, 50 insertions(+), 32 deletions(-)
diff --git a/src/components/ProtectedRoute.tsx b/src/components/ProtectedRoute.tsx
index 3d688ee..cc8b6b8 100644
--- a/src/components/ProtectedRoute.tsx
+++ b/src/components/ProtectedRoute.tsx
@@ -1,5 +1,3 @@
-import { Navigate, useLocation } from "react-router-dom";
-
interface ProtectedRouteProps {
children: React.ReactNode;
}
diff --git a/src/hooks/use-admin-role.ts b/src/hooks/use-admin-role.ts
index 4149682..7d9395f 100644
--- a/src/hooks/use-admin-role.ts
+++ b/src/hooks/use-admin-role.ts
@@ -16,5 +16,7 @@ export function useAdminRole() {
roleLabel: roleLabel(role),
hasPanelAccess: hasPanelAccess(role),
...permissions,
+ canAccessSystemMembers: permissions.canManageSystem,
+ canSendBroadcast: permissions.canSendNotifications,
};
}
diff --git a/src/layouts/app-shell.tsx b/src/layouts/app-shell.tsx
index 4dbe40c..bef61bf 100644
--- a/src/layouts/app-shell.tsx
+++ b/src/layouts/app-shell.tsx
@@ -1,4 +1,4 @@
-import React, { useState, type ComponentType, useEffect } from "react";
+import { useState, type ComponentType, useEffect } from "react";
import { Outlet, Link, useLocation, useNavigate } from "react-router-dom";
import {
LayoutDashboard,
diff --git a/src/pages/admin/analytics/revenue.tsx b/src/pages/admin/analytics/revenue.tsx
index 0692d35..bb097dc 100644
--- a/src/pages/admin/analytics/revenue.tsx
+++ b/src/pages/admin/analytics/revenue.tsx
@@ -150,7 +150,7 @@ export default function AnalyticsStoragePage() {
fontWeight: "700",
textTransform: "uppercase",
}}
- formatter={(value: number) => formatBytes(value)}
+ formatter={(value) => formatBytes(Number(value ?? 0))}
/>
diff --git a/src/pages/admin/analytics/storage.tsx b/src/pages/admin/analytics/storage.tsx
index 0692d35..bb097dc 100644
--- a/src/pages/admin/analytics/storage.tsx
+++ b/src/pages/admin/analytics/storage.tsx
@@ -150,7 +150,7 @@ export default function AnalyticsStoragePage() {
fontWeight: "700",
textTransform: "uppercase",
}}
- formatter={(value: number) => formatBytes(value)}
+ formatter={(value) => formatBytes(Number(value ?? 0))}
/>
diff --git a/src/pages/admin/analytics/users.tsx b/src/pages/admin/analytics/users.tsx
index 62df350..2b01e16 100644
--- a/src/pages/admin/analytics/users.tsx
+++ b/src/pages/admin/analytics/users.tsx
@@ -38,19 +38,19 @@ export default function AnalyticsUsersPage() {
{[
{
label: "Total Population",
- value: lastMetrics?.total || 0,
+ value: lastMetrics?.users || 0,
icon: Users,
color: "text-blue-600 bg-blue-50 border-blue-100",
},
{
- label: "Privileged Access",
- value: lastMetrics?.admins || 0,
+ label: "Active Users",
+ value: lastMetrics?.activeUsers || 0,
icon: ShieldCheck,
color: "text-emerald-600 bg-emerald-50 border-emerald-100",
},
{
- label: "Standard Users",
- value: lastMetrics?.regular || 0,
+ label: "Inactive Users",
+ value: (lastMetrics?.users ?? 0) - (lastMetrics?.activeUsers ?? 0),
icon: UserCheck,
color: "text-purple-600 bg-purple-50 border-purple-100",
},
@@ -126,21 +126,21 @@ export default function AnalyticsUsersPage() {
/>
diff --git a/src/pages/admin/announcements/index.tsx b/src/pages/admin/announcements/index.tsx
index e52ef24..095d788 100644
--- a/src/pages/admin/announcements/index.tsx
+++ b/src/pages/admin/announcements/index.tsx
@@ -1,6 +1,6 @@
import { useState } from "react";
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
-import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
+import { Card, CardContent, CardHeader } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import {
Dialog,
@@ -10,7 +10,7 @@ import {
DialogHeader,
DialogTitle,
} from "@/components/ui/dialog";
-import { Megaphone, Plus, Edit, Trash2, Filter } from "lucide-react";
+import { Plus, Edit, Trash2, Filter } from "lucide-react";
import {
announcementService,
type Announcement,
diff --git a/src/pages/admin/audit/index.tsx b/src/pages/admin/audit/index.tsx
index 23f917f..b352613 100644
--- a/src/pages/admin/audit/index.tsx
+++ b/src/pages/admin/audit/index.tsx
@@ -5,7 +5,6 @@ import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import {
Search,
- Eye,
ChevronLeft,
ChevronRight,
Filter,
diff --git a/src/pages/admin/security/suspicious.tsx b/src/pages/admin/security/suspicious.tsx
index 218932f..0df17cd 100644
--- a/src/pages/admin/security/suspicious.tsx
+++ b/src/pages/admin/security/suspicious.tsx
@@ -1,7 +1,7 @@
import { useQuery } from "@tanstack/react-query";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
-import { Shield, Ban, Mail, Globe, AlertTriangle } from "lucide-react";
+import { Ban, Mail, Globe, AlertTriangle } from "lucide-react";
import { securityService } from "@/services";
import type { SuspiciousIP, SuspiciousEmail } from "@/types/security.types";
diff --git a/src/pages/admin/settings/index.tsx b/src/pages/admin/settings/index.tsx
index b996d21..c4d63d8 100644
--- a/src/pages/admin/settings/index.tsx
+++ b/src/pages/admin/settings/index.tsx
@@ -1,7 +1,6 @@
import { useState } from "react";
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
-import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
diff --git a/src/pages/admin/support/faq.tsx b/src/pages/admin/support/faq.tsx
index f58827c..ee6a00d 100644
--- a/src/pages/admin/support/faq.tsx
+++ b/src/pages/admin/support/faq.tsx
@@ -1,7 +1,7 @@
import { useState } from "react";
import { NavLink } from "react-router-dom";
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
-import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
+import { Tabs, TabsContent } from "@/components/ui/tabs";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
@@ -31,7 +31,6 @@ import {
Globe,
ArrowRight,
Library,
- Settings2,
ChevronRight,
} from "lucide-react";
import { faqService } from "@/services";
diff --git a/src/pages/admin/system-members/index.tsx b/src/pages/admin/system-members/index.tsx
index 1b0632b..8a07b70 100644
--- a/src/pages/admin/system-members/index.tsx
+++ b/src/pages/admin/system-members/index.tsx
@@ -23,16 +23,22 @@ import {
import { Search, UserPlus } from "lucide-react"
import { systemMemberService } from "@/services"
import { useAdminRole } from "@/hooks/use-admin-role"
-import { AdminRole } from "@/lib/admin-roles"
+import { AdminRole, type AdminRoleValue } from "@/lib/admin-roles"
import { toast } from "sonner"
export default function SystemMembersPage() {
- const { canAccessSystemMembers, canEdit } = useAdminRole()
+ const { canAccessSystemMembers, canManageSystem } = useAdminRole()
const queryClient = useQueryClient()
const [page, setPage] = useState(1)
const [search, setSearch] = useState("")
const [open, setOpen] = useState(false)
- const [form, setForm] = useState({
+ const [form, setForm] = useState<{
+ email: string
+ firstName: string
+ lastName: string
+ password: string
+ role: AdminRoleValue
+ }>({
email: "",
firstName: "",
lastName: "",
@@ -85,7 +91,7 @@ export default function SystemMembersPage() {
areas; cannot manage this list).
- {canEdit && (
+ {canManageSystem && (