@@ -405,7 +407,7 @@ const Content = styled(Flex)`
}
`;
-const Wrapper = styled(Flex)`
+const Wrapper = styled(Flex)<{ $isverified: boolean }>`
justify-content: space-between;
align-items: center;
gap: 24px;
@@ -417,6 +419,7 @@ const Wrapper = styled(Flex)`
${mediaQueries.laptopL} {
flex-direction: row;
}
+ opacity: ${({ $isverified }) => ($isverified ? '1' : '0.75')};
`;
const InnerLink = styled.a`
diff --git a/src/components/views/project/ProjectIndex.tsx b/src/components/views/project/ProjectIndex.tsx
index 55acb70dbc..91edab1f12 100644
--- a/src/components/views/project/ProjectIndex.tsx
+++ b/src/components/views/project/ProjectIndex.tsx
@@ -137,7 +137,9 @@ const ProjectIndex: FC
= () => {
return (
{!isAdminEmailVerified && isAdmin && }
- {hasActiveQFRound && !isOnSolana && }
+ {hasActiveQFRound && !isOnSolana && isAdminEmailVerified && (
+
+ )}
{title && `${title} |`} Giveth
@@ -221,7 +223,11 @@ const ProjectIndex: FC = () => {
{projectData && !isDraft && (
-
+
)}
diff --git a/src/components/views/project/ProjectTabs.tsx b/src/components/views/project/ProjectTabs.tsx
index 744aaf581b..9aeaf8686f 100644
--- a/src/components/views/project/ProjectTabs.tsx
+++ b/src/components/views/project/ProjectTabs.tsx
@@ -17,6 +17,7 @@ import { Shadow } from '@/components/styled-components/Shadow';
interface IProjectTabs {
activeTab: number;
slug: string;
+ verified?: boolean;
}
const badgeCount = (count?: number) => {
@@ -24,7 +25,7 @@ const badgeCount = (count?: number) => {
};
const ProjectTabs = (props: IProjectTabs) => {
- const { activeTab, slug } = props;
+ const { activeTab, slug, verified } = props;
const { projectData, totalDonationsCount, boostersData } =
useProjectContext();
const { totalProjectUpdates } = projectData || {};
@@ -61,8 +62,22 @@ const ProjectTabs = (props: IProjectTabs) => {
i.query ? `?tab=${i.query}` : ''
}`}
scroll={false}
+ onClick={e => {
+ if (
+ !verified &&
+ i.query === EProjectPageTabs.UPDATES
+ ) {
+ e.preventDefault(); // Prevent the link from navigating from unverified users
+ }
+ }}
>
-
+
{formatMessage({ id: i.title })}
{badgeCount(i.badge) && (
`
display: flex;
padding: 9px 24px;
border-radius: 48px;
@@ -117,6 +136,7 @@ const Tab = styled(P)`
color: ${brandColors.pinky[500]};
background: ${neutralColors.gray[200]};
}
+ opacity: ${({ $unverified }) => ($unverified ? '0.5' : '1')};
`;
const Wrapper = styled.div`
diff --git a/src/components/views/userProfile/UserProfile.view.tsx b/src/components/views/userProfile/UserProfile.view.tsx
index 9235c4b532..2fbd335488 100644
--- a/src/components/views/userProfile/UserProfile.view.tsx
+++ b/src/components/views/userProfile/UserProfile.view.tsx
@@ -47,6 +47,8 @@ import { useGeneralWallet } from '@/providers/generalWalletProvider';
export interface IUserProfileView {}
const UserProfileView: FC = () => {
+ const router = useRouter();
+
const [showModal, setShowModal] = useState(false); // follow this state to refresh user content on screen
const [showUploadProfileModal, setShowUploadProfileModal] = useState(false);
const [showIncompleteWarning, setShowIncompleteWarning] = useState(false);
@@ -57,12 +59,16 @@ const UserProfileView: FC = () => {
const [pfpData, setPfpData] = useState();
const { walletChainType, chain } = useGeneralWallet();
const { user, myAccount } = useProfileContext();
- const router = useRouter();
const pfpToken = useGiverPFPToken(user?.walletAddress, user?.avatar);
const showCompleteProfile =
user && !isUserRegistered(user) && showIncompleteWarning && myAccount;
+ // Update the modal state if the query changes
+ useEffect(() => {
+ setShowModal(!!router.query.opencheck);
+ }, [router.query.opencheck]);
+
useEffect(() => {
if (user && !isUserRegistered(user) && myAccount) {
setShowIncompleteWarning(true);
diff --git a/src/components/views/userProfile/VerifyEmailBanner.tsx b/src/components/views/userProfile/VerifyEmailBanner.tsx
index ea992647a8..0a3dfe9741 100644
--- a/src/components/views/userProfile/VerifyEmailBanner.tsx
+++ b/src/components/views/userProfile/VerifyEmailBanner.tsx
@@ -16,7 +16,14 @@ const VerifyEmailBanner = () => {