From d4d658429439b5df4684568e8ee25a7f237a4dd4 Mon Sep 17 00:00:00 2001 From: Kilter Date: Thu, 12 Sep 2024 13:47:24 -0500 Subject: [PATCH 1/2] moving from verified to vouches --- lang/ca.json | 9 ++++- lang/en.json | 4 ++ lang/es.json | 4 ++ src/apollo/gql/gqlProjects.ts | 4 ++ src/apollo/types/types.ts | 1 + src/components/DonateSocialBox.tsx | 2 +- src/components/badges/GivBackBadge.tsx | 36 +++++++++++++++++ src/components/badges/VerifiedBadge.tsx | 2 +- src/components/menu/FilterMenu.tsx | 2 +- src/components/project-card/ProjectCard.tsx | 20 +++++++++- src/components/views/donate/DonateIndex.tsx | 2 +- .../donate/DonatePageProjectDescription.tsx | 6 +++ .../donate/OnTime/OneTimeDonationCard.tsx | 4 +- .../Recurring/RecurringDonationCard.tsx | 2 +- .../views/project/ProjectBadges.tsx | 17 +++++++- .../views/project/ProjectGIVbackToast.tsx | 40 ++++++++++++++----- 16 files changed, 134 insertions(+), 21 deletions(-) create mode 100644 src/components/badges/GivBackBadge.tsx diff --git a/lang/ca.json b/lang/ca.json index 2c88960307..306600cafc 100644 --- a/lang/ca.json +++ b/lang/ca.json @@ -1108,6 +1108,8 @@ "label.verification_rejected": "Verificació rebutjada", "label.verification_status": "Estat de verificació", "label.verified": "Verificat", + "label.vouched": "Avalat", + "label.isGivbackEligible": "Apte per a Givbacks", "label.verified_projects": "Projectes verificats", "label.verified_status_for": "Elegibilitat per a GIVbacks per a", "label.verify_email_address": "Verificar correu electrònic", @@ -1302,7 +1304,7 @@ "label.passport_connected": "Passaport connectat", "label.increase_passport_score": "Augmenta la puntuació del passaport", "label.project_owner_address_detected": "Adreça del propietari del projecte detectada", - "label.project_owner_cant_donate_to_own_project": "No pots donar a un projecte del qual ets propietari. Hi ha milers de projectes a Giveth que busquen el teu suport! Si us plau, tria un altre projecte per donar.", + "label.project_owner_cant_donate_to_own_project": "No pots donar a un projecte del qual ets propietari. Hi ha milers de projectes a Giveth que busquen el teu suport! Si us plau, tria un altre projecte per donar.", "label.qf_donor_eligibility.banner.check_eligibility": "Fes que les teves donacions es igualin! Verifica la teva unicitat amb un clic.", "label.qf_donor_eligibility.banner.recheck_eligibility": "Fes que les teves donacions es igualin! Augmenta la teva puntuació de Gitcoin Passport abans de", "label.qf_donor_eligibility.banner.more_info_needed": "Necessitem una mica més d'informació per verificar la teva elegibilitat per QF!", @@ -1627,7 +1629,9 @@ "project.givback_toast.description.non_verified_public": "Actualment, els GIVbacks només s'atorguen per donacions fetes a projectes elegibles per a GIVbacks a Ethereum. La teva contribució segueix sent important, fins i tot si no genera GIVbacks!", "project.givback_toast.description.verified_owner": "Impulsa el teu projecte per augmentar la quantitat de GIVbacks que reben els teus donants a Ethereum i augmentar la seva visibilitat entre altres projectes.", "project.givback_toast.description.verified_owner.note": "Com a propietari d'aquest projecte, no rebràs GIVbacks per donar-hi.", - "project.givback_toast.description.verified_public": "Les donacions a Ethereum a projectes elegibles per a GIVbacks són recompensades amb GIV. Impulsa aquest projecte per augmentar el seu percentatge de recompenses i fer-lo més visible a la pàgina de projectes!", "project.givback_toast.title.non_verified_owner": "El teu projecte està creant o donant suport a béns públics?", + "project.givback_toast.description.verified_public": "Les donacions a Ethereum a projectes elegibles per a GIVbacks són recompensades amb GIV. Impulsa aquest projecte per augmentar el seu percentatge de recompenses i fer-lo més visible a la pàgina de projectes!", + "project.givback_toast.title.non_verified_owner": "El teu projecte està creant o donant suport a béns públics?", + "project.givback_toast.description.verified_public_not_eligible": "Bloqueja i assegura els teus tokens GIV per obtenir GIVpower. Impulsa aquest projecte per fer-lo més visible a la pàgina de projectes! Tingues en compte que, tot i que aquest projecte és elegible per ser impulsat amb GIVpower, no generarà GIVbacks per als seus donants.", "project.givback_toast.title.non_verified_owner_cancelled": "Estat Cancel·lat", "project.givback_toast.title.non_verified_owner_deactive": "Mode Desactivat", "project.givback_toast.title.non_verified_owner_draft": "Publica el teu projecte avui!", @@ -1639,6 +1643,7 @@ "project.givback_toast.title.verified_owner_2": " del valor de la donació!", "project.givback_toast.title.verified_public_1": "Rep recompenses de fins a ", "project.givback_toast.title.verified_public_2": " del valor de la teva donació!", + "project.givback_toast.title.verified_public_not_eligible": "Impulsa aquest projecte amb GIVpower!", "projects_all": "Tots els Projectes", "projects_all_desc": "SUPORT A PROJECTES GLOBALS DE BÉS PÚBLICS, SOSTENIBILITAT I REGENERACIÓ AMB CRYPTODONACIONS", "projects_art-and-culture": "Art i Cultura", diff --git a/lang/en.json b/lang/en.json index fa7868718f..0a680c2653 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1110,6 +1110,8 @@ "label.verification_rejected": "Verification Rejected", "label.verification_status": "GIVbacks Eligibility status", "label.verified": "Verified", + "label.vouched": "Vouched", + "label.isGivbackEligible": "Givbacks Eligible", "label.verified_projects": "Verified projects", "label.verified_status_for": "GIVbacks Eligibility for", "label.verify_email_address": "Verify email address", @@ -1633,6 +1635,7 @@ "project.givback_toast.description.verified_owner": "Boost your project to increase the amount of GIVbacks your donors on Ethereum receive and increase its visibility among other projects!", "project.givback_toast.description.verified_owner.note": "As the owner of this project, you won’t get GIVbacks for donating to it.", "project.givback_toast.description.verified_public": "Ethereum donations to GIVbacks Eligible projects are rewarded with GIV. Boost this project to increase its rewards percentage and make it more visible on the projects page!", + "project.givback_toast.description.verified_public_not_eligible": "Stake and lock your GIV tokens to get GIVpower. Boost this project make it more visible on the projects page! Note that while this project is eligible to be boosted with GIVpower, it will not yield GIVbacks to it's donors.", "project.givback_toast.title.non_verified_owner": "Is your project creating or supporting public goods?", "project.givback_toast.title.non_verified_owner_cancelled": "Project Cancelled", "project.givback_toast.title.non_verified_owner_deactive": "Project Deactivated", @@ -1641,6 +1644,7 @@ "project.givback_toast.title.non_verified_owner_rejected": "We couldn't verify your project as a public good", "project.givback_toast.title.non_verified_owner_submitted": "Application submitted", "project.givback_toast.title.non_verified_public": "Why no GIVbacks?", + "project.givback_toast.title.verified_public_not_eligible": "Boost this project with GIVpower!", "project.givback_toast.title.verified_owner_1": "Donors get rewarded with up to ", "project.givback_toast.title.verified_owner_2": " of the donation value!", "project.givback_toast.title.verified_public_1": "Get rewarded with up to ", diff --git a/lang/es.json b/lang/es.json index 12754c7a8c..f38f96da94 100644 --- a/lang/es.json +++ b/lang/es.json @@ -1107,6 +1107,8 @@ "label.verification_rejected": "Verificación rechazada", "label.verification_status": "Estado de verificación", "label.verified": "Verificado", + "label.vouched": "Avalado", + "label.isGivbackEligible": "Elegible para GIVbacks", "label.verified_projects": "Proyectos verificados", "label.verified_status_for": "Elegibilidad para GIVbacks para", "label.verify_email_address": "Verificar email", @@ -1628,6 +1630,7 @@ "project.givback_toast.description.verified_owner": "Impulsa tu proyecto para aumentar la cantidad de GIVbacks que reciben tus donantes en Ethereum y aumentar su visibilidad entre otros proyectos.", "project.givback_toast.description.verified_owner.note": "Como propietario de este proyecto, no recibirás GIVbacks por donar a él.", "project.givback_toast.description.verified_public": "Las donaciones en Ethereum a proyectos elegibles para GIVbacks son recompensadas con GIV. ¡Impulsa este proyecto para aumentar su porcentaje de recompensas y hacerlo más visible en la página de proyectos!", + "project.givback_toast.description.verified_public_not_eligible": "Haz stake y bloquea tus GIV tokens para obtener GIVpower. ¡Impulsa este proyecto para hacerlo más visible en la página de proyectos! Ten en cuenta que aunque este proyecto es elegible para ser impulsado con GIVpower, no generará GIVbacks para sus donantes.", "project.givback_toast.title.non_verified_owner": "¿Tu proyecto está creando o apoyando bienes públicos?", "project.givback_toast.title.non_verified_owner_cancelled": "Estado Cancelado", "project.givback_toast.title.non_verified_owner_deactive": "Modo Desactivado", @@ -1636,6 +1639,7 @@ "project.givback_toast.title.non_verified_owner_rejected": "No pudimos verificar tu proyecto como un bien público", "project.givback_toast.title.non_verified_owner_submitted": "Solicitud enviada", "project.givback_toast.title.non_verified_public": "¿Por qué no GIVbacks?", + "project.givback_toast.title.verified_public_not_eligible": "Boostea este proyecto con GIVpower!", "project.givback_toast.title.verified_owner_1": "Los donantes reciben recompensas de hasta ", "project.givback_toast.title.verified_owner_2": " del valor de la donación.", "project.givback_toast.title.verified_public_1": "¡Recibe recompensas de hasta ", diff --git a/src/apollo/gql/gqlProjects.ts b/src/apollo/gql/gqlProjects.ts index 2b59212024..ee009ad012 100644 --- a/src/apollo/gql/gqlProjects.ts +++ b/src/apollo/gql/gqlProjects.ts @@ -8,6 +8,7 @@ export const PROJECT_CORE_FIELDS = gql` image slug verified + isGivbackEligible totalDonations qfRounds { id @@ -142,6 +143,7 @@ export const FETCH_PROJECT_BY_SLUG_DONATION = gql` slug descriptionSummary verified + isGivbackEligible totalDonations sumDonationValueUsdForActiveQfRound countUniqueDonorsForActiveQfRound @@ -211,6 +213,7 @@ export const FETCH_PROJECT_BY_SLUG_SINGLE_PROJECT = gql` image slug verified + isGivbackEligible totalDonations description addresses { @@ -595,6 +598,7 @@ export const ADD_RECIPIENT_ADDRESS_TO_PROJECT = gql` listed reviewStatus verified + isGivbackEligible slugHistory creationDate adminUserId diff --git a/src/apollo/types/types.ts b/src/apollo/types/types.ts index ad0f16556f..b2ee503baf 100644 --- a/src/apollo/types/types.ts +++ b/src/apollo/types/types.ts @@ -48,6 +48,7 @@ export interface IProject { impactLocation?: string; qualityScore?: number; verified?: boolean; + isGivbackEligible?: boolean; verificationStatus?: EProjectVerificationStatus; listed?: boolean | null; categories: ICategory[]; diff --git a/src/components/DonateSocialBox.tsx b/src/components/DonateSocialBox.tsx index 69f4cb9542..b63eb76ba8 100644 --- a/src/components/DonateSocialBox.tsx +++ b/src/components/DonateSocialBox.tsx @@ -27,7 +27,7 @@ interface ISocialBox { const DonateSocialBox: FC = props => { const [showModal, setShowModal] = useState(false); const { project, isDonateFooter } = props; - const { slug, verified } = project; + const { slug } = project; const { isMobile } = useDetectDevice(); const { formatMessage } = useIntl(); const { isActive } = useProjectContext(); diff --git a/src/components/badges/GivBackBadge.tsx b/src/components/badges/GivBackBadge.tsx new file mode 100644 index 0000000000..633317abce --- /dev/null +++ b/src/components/badges/GivBackBadge.tsx @@ -0,0 +1,36 @@ +import { + Overline, + FlexCenter, + brandColors, + IconGIVBack, +} from '@giveth/ui-design-system'; +import styled from 'styled-components'; +import { useIntl } from 'react-intl'; + +export const GivBackBadge = () => { + const { formatMessage } = useIntl(); + return ( + + + + {formatMessage({ id: 'label.isGivbackEligible' })} + + + ); +}; + +const Wrapper = styled(FlexCenter)` + height: 30px; + background: ${brandColors.giv[500]}; + border-radius: 56px; + color: white; + padding: 2px 12px 0 10px; + justify-content: center; + margin-right: 8px; +`; + +const TextBadge = styled(Overline)` + padding-left: 0.5rem; + margin-right: 5px; + text-transform: uppercase; +`; diff --git a/src/components/badges/VerifiedBadge.tsx b/src/components/badges/VerifiedBadge.tsx index 85c151a083..ccc62a2091 100644 --- a/src/components/badges/VerifiedBadge.tsx +++ b/src/components/badges/VerifiedBadge.tsx @@ -12,7 +12,7 @@ export const VerifiedBadge = () => { - {formatMessage({ id: 'label.verified' })} + {formatMessage({ id: 'label.vouched' })} ); diff --git a/src/components/menu/FilterMenu.tsx b/src/components/menu/FilterMenu.tsx index a7baeb5d9a..5be3f95aee 100644 --- a/src/components/menu/FilterMenu.tsx +++ b/src/components/menu/FilterMenu.tsx @@ -23,7 +23,7 @@ interface IFilterMenuProps { const projectsFeatures = [ { - label: { id: 'label.verified' }, + label: { id: 'label.vouched' }, value: EProjectsFilter.VERIFIED, }, ]; diff --git a/src/components/project-card/ProjectCard.tsx b/src/components/project-card/ProjectCard.tsx index 9ea9b3767f..38a73c3663 100644 --- a/src/components/project-card/ProjectCard.tsx +++ b/src/components/project-card/ProjectCard.tsx @@ -14,6 +14,7 @@ import { H5, Flex, IconHelpFilled16, + IconGIVBack16, } from '@giveth/ui-design-system'; import Link from 'next/link'; import { useIntl } from 'react-intl'; @@ -61,6 +62,7 @@ interface IRecurringDonation { } const ProjectCard = (props: IProjectCard) => { const { project, className } = props; + const { id, title, @@ -72,6 +74,7 @@ const ProjectCard = (props: IProjectCard) => { sumDonationValueUsdForActiveQfRound, organization, verified, + isGivbackEligible, latestUpdateCreationDate, countUniqueDonors, qfRounds, @@ -338,6 +341,16 @@ const ProjectCard = (props: IProjectCard) => {
+ {isGivbackEligible && ( + + + + GIVbacks + + + )} {verified && ( { /> {formatMessage({ - id: 'label.verified', + id: 'label.vouched', })} @@ -424,6 +437,11 @@ const VerifiedText = styled(Subline)` color: ${semanticColors.jade[500]}; `; +const GivbackEligibleText = styled(Subline)` + text-transform: uppercase; + color: ${brandColors.giv[500]}; +`; + const LastUpdatedContainer = styled(Subline)<{ $isHover?: boolean }>` position: absolute; bottom: 30px; diff --git a/src/components/views/donate/DonateIndex.tsx b/src/components/views/donate/DonateIndex.tsx index 9758a8e374..e3a50ecf88 100644 --- a/src/components/views/donate/DonateIndex.tsx +++ b/src/components/views/donate/DonateIndex.tsx @@ -122,7 +122,7 @@ const DonateIndex: FC = () => { ], givBackEligible: isTokenEligibleForGivback && - project.verified && + project.isGivbackEligible && isSignedIn && isEnabled, chainId: config.STELLAR_NETWORK_NUMBER, diff --git a/src/components/views/donate/DonatePageProjectDescription.tsx b/src/components/views/donate/DonatePageProjectDescription.tsx index 18c98ced24..25decd8889 100644 --- a/src/components/views/donate/DonatePageProjectDescription.tsx +++ b/src/components/views/donate/DonatePageProjectDescription.tsx @@ -20,6 +20,7 @@ import { slugToProjectView } from '@/lib/routeCreators'; import { ProjectCardUserName } from '@/components/project-card/ProjectCardUserName'; import { ORGANIZATION } from '@/lib/constants/organizations'; import { useDonateData } from '@/context/donate.context'; +import { GivBackBadge } from '@/components/badges/GivBackBadge'; interface IDonatePageProjectDescriptionProps { projectData?: IProject; @@ -48,6 +49,11 @@ export const DonatePageProjectDescription: FC< return ( + {projectData?.isGivbackEligible && ( + + + + )} {projectData?.verified && ( diff --git a/src/components/views/donate/OnTime/OneTimeDonationCard.tsx b/src/components/views/donate/OnTime/OneTimeDonationCard.tsx index f977521755..748d807c0f 100644 --- a/src/components/views/donate/OnTime/OneTimeDonationCard.tsx +++ b/src/components/views/donate/OnTime/OneTimeDonationCard.tsx @@ -80,7 +80,7 @@ const CryptoDonation: FC<{ const dispatch = useAppDispatch(); const { - verified, + isGivbackEligible, id: projectId, status, addresses, @@ -139,7 +139,7 @@ const CryptoDonation: FC<{ }); const tokenDecimals = selectedOneTimeToken?.decimals || 18; - const projectIsGivBackEligible = !!verified; + const projectIsGivBackEligible = !!isGivbackEligible; const { activeStartedRound } = getActiveRound(project.qfRounds); const networkId = (chain as Chain)?.id; diff --git a/src/components/views/donate/Recurring/RecurringDonationCard.tsx b/src/components/views/donate/Recurring/RecurringDonationCard.tsx index a98ae21d56..4a13b307cc 100644 --- a/src/components/views/donate/Recurring/RecurringDonationCard.tsx +++ b/src/components/views/donate/Recurring/RecurringDonationCard.tsx @@ -167,7 +167,7 @@ export const RecurringDonationCard = () => { ? semanticColors.punch : brandColors.giv; - const projectIsGivBackEligible = !!project.verified; + const projectIsGivBackEligible = !!project.isGivbackEligible; const handleDonate = () => { if (anchorContractAddress) { diff --git a/src/components/views/project/ProjectBadges.tsx b/src/components/views/project/ProjectBadges.tsx index 49615755c3..a5e4937c0d 100644 --- a/src/components/views/project/ProjectBadges.tsx +++ b/src/components/views/project/ProjectBadges.tsx @@ -5,6 +5,7 @@ import { neutralColors, semanticColors, Flex, + IconGIVBack16, } from '@giveth/ui-design-system'; import styled from 'styled-components'; import { useIntl } from 'react-intl'; @@ -15,7 +16,8 @@ import { hasActiveRound } from '@/helpers/qf'; const ProjectBadges = () => { const { projectData } = useProjectContext(); - const { verified, qfRounds, campaigns } = projectData || {}; + const { verified, isGivbackEligible, qfRounds, campaigns } = + projectData || {}; const { formatMessage } = useIntl(); const isQF = hasActiveRound(qfRounds); @@ -28,12 +30,23 @@ const ProjectBadges = () => { {verified && ( } /> )} + {isGivbackEligible && ( + } + /> + )} + {isQF && ( { const [showBoost, setShowBoost] = useState(false); const [showVerification, setShowVerification] = useState(false); const { projectData, isAdmin, activateProject } = useProjectContext(); + console.log({ projectData }); const verStatus = projectData?.verificationFormStatus; const projectStatus = projectData?.status.name; - const verified = projectData?.verified; + const isVerified = projectData?.verified; + const isGivbackEligible = projectData?.isGivbackEligible; const { givbackFactor } = projectData || {}; - const isOwnerVerified = verified && isAdmin; - const isOwnerNotVerified = !verified && isAdmin; - const isPublicVerified = verified && !isAdmin; - const color = isOwnerVerified + const isOwnerGivbackEligible = isGivbackEligible && isAdmin; + const isOwnerNotVerified = !isVerified && isAdmin; + const isPublicGivbackEligible = isGivbackEligible && !isAdmin; + const isPublicVerifiedNotEligible = isVerified && !isGivbackEligible; + + const color = isOwnerGivbackEligible ? semanticColors.golden[600] : neutralColors.gray[900]; const { formatMessage, locale } = useIntl(); @@ -84,7 +88,7 @@ const ProjectGIVbackToast = () => { let title = ''; let description, Button; - if (isOwnerVerified) { + if (isOwnerGivbackEligible) { if (givbackFactor !== 0) { title = formatMessage({ @@ -211,7 +215,22 @@ const ProjectGIVbackToast = () => { /> ); } - } else if (isPublicVerified) { + } else if (isPublicVerifiedNotEligible) { + title = formatMessage({ + id: `${useIntlTitle}verified_public_not_eligible`, + }); + description = formatMessage({ + id: `${useIntlDescription}verified_public_not_eligible`, + }); + link = links.GIVPOWER_DOC; + Button = ( + } + /> + ); + } else if (isPublicGivbackEligible) { if (givbackFactor !== 0) { title = formatMessage({ @@ -259,7 +278,7 @@ const ProjectGIVbackToast = () => {
{title} {description} - {isOwnerVerified && ( + {isOwnerGivbackEligible && ( {formatMessage({ @@ -272,7 +291,10 @@ const ProjectGIVbackToast = () => { )} {link && ( - + {formatMessage({ id: 'label.learn_more' })} From c263d9704d24fb9f38652bef77df2709c6c672b4 Mon Sep 17 00:00:00 2001 From: Kilter Date: Thu, 12 Sep 2024 13:49:37 -0500 Subject: [PATCH 2/2] Update ProjectGIVbackToast.tsx --- src/components/views/project/ProjectGIVbackToast.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/views/project/ProjectGIVbackToast.tsx b/src/components/views/project/ProjectGIVbackToast.tsx index a14f8cad50..1fbb49fc84 100644 --- a/src/components/views/project/ProjectGIVbackToast.tsx +++ b/src/components/views/project/ProjectGIVbackToast.tsx @@ -39,7 +39,6 @@ const ProjectGIVbackToast = () => { const [showBoost, setShowBoost] = useState(false); const [showVerification, setShowVerification] = useState(false); const { projectData, isAdmin, activateProject } = useProjectContext(); - console.log({ projectData }); const verStatus = projectData?.verificationFormStatus; const projectStatus = projectData?.status.name; const isVerified = projectData?.verified;