From 0cd6d7fd3fa705e95ca6b97af9e66cf9269b2025 Mon Sep 17 00:00:00 2001 From: MehrdadAdabi <126083584+mehrdadAdabi@users.noreply.github.com> Date: Fri, 28 Nov 2025 13:22:26 +0330 Subject: [PATCH] feat: refactor campaigns filtering and add profile validation - Change user filter from WorkflowID to username in campaigns - Simplify handleTabChange by removing inline filtering logic - Add null check for currentCampaign length - Add required validation for profile image field - Add error display for school_code and image fields - Minor formatting fixes in login page --- src/modules/auth/pages/login/index.tsx | 3 +- .../dashboard/pages/campaigns/index.tsx | 59 ++++++++++--------- src/modules/dashboard/pages/profile/index.tsx | 6 ++ src/modules/dashboard/service/user.service.ts | 7 ++- 4 files changed, 42 insertions(+), 33 deletions(-) diff --git a/src/modules/auth/pages/login/index.tsx b/src/modules/auth/pages/login/index.tsx index 37e4563..9be883a 100644 --- a/src/modules/auth/pages/login/index.tsx +++ b/src/modules/auth/pages/login/index.tsx @@ -73,7 +73,7 @@ export function LoginPage() { const verifyOtpMutation = useMutation({ mutationFn: verifyOtpService, - onSuccess: async(data) => { + onSuccess: async (data) => { setSubmitLoading(false); if (data.resultType !== 0) { toast.error(data.message); @@ -99,6 +99,7 @@ export function LoginPage() { }, onError: () => { + setSubmitLoading(false); toast.error("خطا در تایید کد"); }, diff --git a/src/modules/dashboard/pages/campaigns/index.tsx b/src/modules/dashboard/pages/campaigns/index.tsx index cd9049b..60b1d8c 100644 --- a/src/modules/dashboard/pages/campaigns/index.tsx +++ b/src/modules/dashboard/pages/campaigns/index.tsx @@ -37,7 +37,7 @@ export function CampaignsPage() { switch (activeTab) { case "my": filtered = campaigns.filter( - (c) => Number(c.user_id) === Number(user.WorkflowID) + (c) => Number(c.user_id) === Number(user.username) ); break; case "منتخب": @@ -55,7 +55,7 @@ export function CampaignsPage() { } setCurrentCampaign(filtered); } - }, [campaigns, activeTab]); // Added activeTab to dependencies + }, [campaigns, activeTab]); const tabs: { value: CampaignTab; label: string }[] = [ { value: "فعال", label: "تمام کارزار‌ها" }, @@ -70,7 +70,7 @@ export function CampaignsPage() { setActiveTab("فعال"); if (query === "") { - handleTabChange(activeTab, campaigns); + handleTabChange(activeTab); } else { const filteredCampaigns = campaigns.filter((campaign) => campaign.title.toLowerCase().includes(query.toLowerCase()) @@ -79,33 +79,34 @@ export function CampaignsPage() { } }; - const handleTabChange = (tab: CampaignTab, campaignData = campaigns) => { + const handleTabChange = (tab: CampaignTab) => { setActiveTab(tab); - const user = userInfoService.getUserInfo(); - let filtered = campaignData; - - switch (tab) { - case "my": - filtered = campaignData.filter( - (c) => Number(c.user_id) === Number(user.WorkflowID) - ); - break; - case "منتخب": - filtered = campaignData.filter((c) => c.status === "منتخب"); - break; - - case "group": - filtered = campaignData.filter( - (c) => c.school_code === user.school_code - ); - break; - case "فعال": - default: - filtered = campaignData; - break; - } - setCurrentCampaign(filtered); setSearchQuery(""); + // const user = userInfoService.getUserInfo(); + // let filtered = campaignData; + // switch (tab) { + // case "my": + // filtered = campaignData.filter( + // (c) => Number(c.user_id) === Number(user.username) + // ); + // break; + // case "منتخب": + // filtered = campaignData.filter((c) => c.status === "منتخب"); + // break; + + // case "group": + // filtered = campaignData.filter( + // (c) => c.school_code === user.school_code + // ); + // break; + // case "فعال": + // default: + // filtered = campaignData; + // break; + // } + // setSearchQuery(""); + // debugger + // setCurrentCampaign(filtered); }; const handleJoin = (campaign: Campaign) => { @@ -199,7 +200,7 @@ export function CampaignsPage() {
{isLoading ? ( renderSkeleton() - ) : currentCampaign.length > 0 ? ( + ) : currentCampaign?.length > 0 ? (