Skip to content

Commit

Permalink
Hid client withdrawals and invoices url from admin navbar & panel
Browse files Browse the repository at this point in the history
  • Loading branch information
A-Hazzard committed Nov 4, 2024
1 parent 2dd5b4b commit 0d094d0
Show file tree
Hide file tree
Showing 3 changed files with 125 additions and 126 deletions.
74 changes: 37 additions & 37 deletions components/InvoiceManagement.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -80,50 +80,50 @@ const InvoiceManagement = () => {
amountRange: "",
});
const [sortConfig, setSortConfig] = useState<SortConfig>({ field: '', direction: 'asc' });
const [unsubscribe, setUnsubscribe] = useState<(() => void) | null>(null);

useEffect(() => {
subscribeToInvoices();
let unsubscribe: (() => void) | undefined;

const setupSubscription = () => {
setLoading(true);
try {
const invoicesCollection = collection(db, "invoices");
unsubscribe = onSnapshot(invoicesCollection, (snapshot) => {
const invoicesData: Invoice[] = snapshot.docs.map((doc) => {
const data = doc.data() as DocumentData;
return {
id: doc.id,
invoiceNumber: data.invoiceNumber,
description: data.description,
amount: parseFloat(data.amount) || 0,
date: data.date,
status: data.status,
userId: data.userId,
userEmail: data.userEmail,
createdAt: data.createdAt,
username: data.username,
country: data.country,
userName: data.username,
};
});
setInvoices(invoicesData);
setLoading(false);
});
} catch (err) {
console.error("Error subscribing to invoices:", err);
setLoading(false);
}
};

setupSubscription();

// Cleanup subscription on unmount
return () => {
// Cleanup subscription on component unmount
if (unsubscribe) {
unsubscribe();
}
};
}, [unsubscribe]);

const subscribeToInvoices = () => {
setLoading(true);
try {
const invoicesCollection = collection(db, "invoices");
const unsub = onSnapshot(invoicesCollection, (snapshot) => {
const invoicesData: Invoice[] = snapshot.docs.map((doc) => {
const data = doc.data() as DocumentData;
return {
id: doc.id,
invoiceNumber: data.invoiceNumber,
description: data.description,
amount: parseFloat(data.amount) || 0,
date: data.date,
status: data.status,
userId: data.userId,
userEmail: data.userEmail,
createdAt: data.createdAt,
username: data.username,
country: data.country,
userName: data.username,
};
});
setInvoices(invoicesData);
setLoading(false);
});

setUnsubscribe(() => unsub);
} catch (err) {
console.error("Error subscribing to invoices:", err);
setLoading(false);
}
};
}, []);

const handleAddInvoice = async () => {
// Validation
Expand Down
91 changes: 46 additions & 45 deletions components/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -79,33 +79,17 @@ const Navbar = () => {
className="absolute top-4 right-4 cursor-pointer text-light"
/>
<nav className="flex flex-col items-center gap-4">
<Link
href="/"
className={`text-lg text-light ${
pathname === "/" ? "underline font-bold" : ""
}`}
onClick={toggleNavbar}
>
Dashboard
</Link>
<Link
href="/invoices"
className={`text-lg text-light ${
pathname === "/invoices" ? "underline font-bold" : ""
}`}
onClick={toggleNavbar}
>
Invoices
</Link>
<Link
href="/withdrawals"
className={`text-lg text-light ${
pathname === "/withdrawals" ? "underline font-bold" : ""
}`}
onClick={toggleNavbar}
>
Withdrawals
</Link>
{!isAdmin && (
<Link
href="/"
className={`text-lg text-light ${
pathname === "/" ? "underline font-bold" : ""
}`}
onClick={toggleNavbar}
>
Dashboard
</Link>
)}
<Link
href="/resources"
className={`text-lg text-light ${
Expand All @@ -115,26 +99,46 @@ const Navbar = () => {
>
Resources
</Link>

{!isAdmin && (
<>
<Link
href="/invoices"
className={`text-lg text-light ${
pathname === "/invoices" ? "underline font-bold" : ""
}`}
onClick={toggleNavbar}
>
Invoices
</Link>
<Link
href="/withdrawals"
className={`text-lg text-light ${
pathname === "/withdrawals" ? "underline font-bold" : ""
}`}
onClick={toggleNavbar}
>
Withdrawals
</Link>
</>
)}
{isAdmin && (
<>
<div className="w-full border-t border-gray my-2"></div>
<span className="text-gray text-sm">Admin Panel</span>

<Link
href="/admin/manage-resources"
href="/admin/user-management"
className={`text-lg text-light ${
pathname === "/admin/manage-resources"
? "underline font-bold"
: ""
pathname === "/admin/user-management" ? "underline font-bold" : ""
}`}
onClick={toggleNavbar}
>
Manage Resources
User Management
</Link>
<Link
href="/admin/invoices"
className={`text-lg text-light ${
pathname === "/admin/invoices"
? "underline font-bold"
: ""
pathname === "/admin/invoices" ? "underline font-bold" : ""
}`}
onClick={toggleNavbar}
>
Expand All @@ -143,9 +147,7 @@ const Navbar = () => {
<Link
href="/admin/deposits"
className={`text-lg text-light ${
pathname === "/admin/deposits"
? "underline font-bold"
: ""
pathname === "/admin/deposits" ? "underline font-bold" : ""
}`}
onClick={toggleNavbar}
>
Expand All @@ -154,9 +156,7 @@ const Navbar = () => {
<Link
href="/admin/withdrawals"
className={`text-lg text-light ${
pathname === "/admin/withdrawals"
? "underline font-bold"
: ""
pathname === "/admin/withdrawals" ? "underline font-bold" : ""
}`}
onClick={toggleNavbar}
>
Expand All @@ -172,16 +172,17 @@ const Navbar = () => {
Trade Results
</Link>
<Link
href="/admin/user-management"
href="/admin/manage-resources"
className={`text-lg text-light ${
pathname === "/admin/user-management" ? "underline font-bold" : ""
pathname === "/admin/manage-resources" ? "underline font-bold" : ""
}`}
onClick={toggleNavbar}
>
User Management
Manage Resources
</Link>
</>
)}
<div className="w-full border-t border-gray my-2"></div>
<div className="flex flex-col items-center gap-4">
<button
className="bg-none text-light inline w-fit"
Expand Down
86 changes: 42 additions & 44 deletions components/Panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -64,16 +64,28 @@ export default function Panel() {
</div>

<ul className="flex flex-col gap-4">
{!isAdmin && (
<Link
href="/"
className={`text-lg text-light ${
pathname === "/" ? "underline font-bold" : ""
}`}
>
Dashboard
</Link>
)}

<Link
href="/resources"
className={`text-lg text-light ${
pathname === "/resources" ? "underline font-bold" : ""
}`}
>
Resources
</Link>

{!isAdmin && (
<>
<Link
href="/"
className={`text-lg text-light ${
pathname === "/" ? "underline font-bold" : ""
}`}
>
Dashboard
</Link>
<Link
href="/invoices"
className={`text-lg text-light ${
Expand All @@ -93,77 +105,63 @@ export default function Panel() {
</>
)}

<Link
href="/resources"
className={`text-lg text-light ${
pathname === "/resources" ? "underline font-bold" : ""
}`}
>
Resources
</Link>

<button className="bg-none inline w-fit" onClick={openModal}>
Profile
</button>

{isAdmin && (
<>
<div className="w-full border-t border-gray my-2"></div>
<span className="text-gray text-sm">Admin Panel</span>

<Link
href="/admin/user-management"
className={pathname === "/admin/user-management" ? "underline" : ""}
>
User Management
</Link>
<Link
href="/admin/invoices"
className={pathname === "/admin/invoices" ? "underline" : ""}
>
Invoices
</Link>

<Link
href="/admin/deposits"
className={pathname === "/admin/deposits" ? "underline" : ""}
>
Deposits
</Link>

<Link
href="/admin/withdrawals"
className={pathname === "/admin/withdrawals" ? "underline" : ""}
>
Withdrawals
</Link>

<Link
href="/admin/trades"
className={pathname === "/admin/trades" ? "underline" : ""}
>
Trade Results
</Link>

<Link
href="/admin/manage-resources"
className={
pathname === "/admin/manage-resources" ? "underline" : ""
}
className={pathname === "/admin/manage-resources" ? "underline" : ""}
>
Manage Resources
</Link>

<Link
href="/admin/user-management"
className={
pathname === "/admin/user-management" ? "underline" : ""
}
>
User Management
</Link>
</>
)}
</ul>

<button
className="bg-transparent w-fit text-light absolute bottom-0 left-0 flex items-center gap-2"
onClick={handleSignOut}
>
<LogOut size={20} />
Sign Out
</button>
<div className="mt-auto">
<button className="bg-none inline w-fit mb-4" onClick={openModal}>
Profile
</button>
<button
className="bg-transparent w-fit text-light flex items-center gap-2"
onClick={handleSignOut}
>
<LogOut size={20} />
Sign Out
</button>
</div>
{isOpen && <ProfileSettingsModal onClose={closeModal} />}
</div>
);
Expand Down

0 comments on commit 0d094d0

Please sign in to comment.