Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into release-2.33.0
Browse files Browse the repository at this point in the history
  • Loading branch information
mateodaza committed Oct 1, 2024
2 parents 9368772 + 2bcbfe0 commit 3af9de8
Show file tree
Hide file tree
Showing 31 changed files with 267 additions and 170 deletions.
11 changes: 5 additions & 6 deletions lang/ca.json
Original file line number Diff line number Diff line change
Expand Up @@ -308,10 +308,10 @@
"label.deposit_confirmed": "Dipòsit confirmat",
"label.deposit_or_stream_balance": "Diposita Tokens o utilitza el Saldo de Transmissió",
"label.deposit_token_use_balance": "Diposita Tokens o utilitza el Saldo de Transmissió",
"label.devouch.attest_on_devouch": "Certifica a DeVouch",
"label.devouch.if_you_are_eligible": "Si ets un verificador elegible de Giveth, pots avalar la legitimitat d'aquest projecte, potencialment augmentant els beneficis que rep a Giveth.",
"label.devouch.go_to_devouch": "Anar a DeVouch",
"label.devouch.description.vouch_this_project": "Amb DeVouch, pots assenyalar el teu suport a aquest projecte testificant la seva legitimitat, cosa que potencialment augmentarà els beneficis que rep a Giveth.",
"label.devouch.learn_more_about_devouch": "Més informació sobre DeVouch i la verificació descentralitzada",
"label.devouch.view_this_project": "Veure aquest projecte a DeVouch",
"label.devouch.title.vouch_this_project": "Avalar aquest Projecte",
"label.didnt_get_the_givdrop": "No has rebut el GIVdrop?",
"label.did_the_donation_but_not_confirmed": "He fet la donació però no està confirmada.",
"label.discover_our_roadmap": "descobreix la nostra planificació estratègica",
Expand Down Expand Up @@ -1662,10 +1662,9 @@
"project.givback_toast.description.non_verified_owner_submitted": "Notícies emocionants! La teva sol·licitud ha estat enviada i està a la cua per ser revisada pel nostre equip de revisió d'elegibilitat per a GIVbacks. Et respondrem en un termini d'1-2 setmanes.",
"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": "Potencia el teu projecte per augmentar el seu percentatge de GIVbacks i ajudar-lo a aparèixer més amunt a la pàgina de projectes!",
"project.givback_toast.description.verified_owner_not_eligible": "El teu projecte ha estat avalat pels Verificadors de Giveth i ara pot beneficiar-se de GIVpower. Fes stake i bloqueja els teus tokens GIV per impulsar aquest projecte i fer-lo més visible a la pàgina de projectes. No obstant això, donar a aquest projecte no generarà GIVbacks per als donants.",
"project.givback_toast.description.verified_public": "Les donacions de ${value} o més són elegibles per a GIVbacks. Impulsa aquest projecte per augmentar el seu percentatge de recompenses i visibilitat a la pàgina de projectes!",
"project.givback_toast.description.verified_public_not_eligible": "{stakeLock} els teus tokens GIV per obtenir GIVpower. Impulsa aquest projecte per fer-lo més visible a la pàgina de projectes. Nota: Tot i que aquest projecte és elegible per ser impulsat amb GIVpower, no generarà GIVbacks per als seus donants.",
"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_owner_not_eligible": "El teu projecte ha estat avalat pels Verificadors de Giveth i ara pot beneficiar-se de GIVpower. Fes stake i bloqueja els teus tokens GIV per impulsar aquest projecte i fer-lo més visible a la pàgina de projectes. No obstant això, donar a aquest projecte no generarà GIVbacks per als 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!",
Expand Down
6 changes: 3 additions & 3 deletions lang/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -308,10 +308,10 @@
"label.deposit_confirmed": "Deposit confirmed",
"label.deposit_or_stream_balance": "Deposit Tokens or use Stream Balance",
"label.deposit_token_use_balance": "Deposit Tokens or use Stream Balance",
"label.devouch.attest_on_devouch": "Attest on Devouch",
"label.devouch.if_you_are_eligible": "If you are an eligible Giveth Verifier you can vouch for this project's legitimacy, potentially increasing the benefits it receives on Giveth.",
"label.devouch.go_to_devouch": "Go to DeVouch",
"label.devouch.title.vouch_this_project": "Vouch for this Project",
"label.devouch.description.vouch_this_project": "With DeVouch, you can signal your support for this project by attesting to its legitimacy, potentially increasing the benefits it receives on Giveth.",
"label.devouch.learn_more_about_devouch": "Learn more about DeVouch & Decentralized Verification",
"label.devouch.view_this_project": "View this Project on DeVouch",
"label.didnt_get_the_givdrop": "Didn’t get the GIVdrop?",
"label.did_the_donation_but_not_confirmed": "I did the donation but it's not confirmed.",
"label.discover_our_roadmap": "discover our roadmap",
Expand Down
10 changes: 5 additions & 5 deletions lang/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -308,10 +308,10 @@
"label.deposit_confirmed": "Depósito confirmado",
"label.deposit_or_stream_balance": "Deposita Tokens o usa el Saldo de Transmisión",
"label.deposit_token_use_balance": "Deposita Tokens o usa el Saldo de Transmisión",
"label.devouch.attest_on_devouch": "Certificar en DeVouch",
"label.devouch.if_you_are_eligible": "Si eres un verificador elegible de Giveth, puedes avalar la legitimidad de este proyecto, potencialmente aumentando los beneficios que recibe en Giveth.",
"label.devouch.go_to_devouch": "Ir a DeVouch",
"label.devouch.description.vouch_this_project": "Con DeVouch, puedes señalar tu apoyo a este proyecto atestiguando su legitimidad, lo que potencialmente aumentará los beneficios que recibe en Giveth.",
"label.devouch.learn_more_about_devouch": "Más información sobre DeVouch y la verificación descentralizada",
"label.devouch.view_this_project": "Ver este proyecto en DeVouch",
"label.devouch.title.vouch_this_project": "Avalar este Proyecto",
"label.didnt_get_the_givdrop": "¿No has recibido el GIVdrop?",
"label.did_the_donation_but_not_confirmed": "Hice la donación pero no está confirmada.",
"label.discover_our_roadmap": "descubre nuestra hoja de ruta",
Expand Down Expand Up @@ -1661,10 +1661,10 @@
"project.givback_toast.description.non_verified_owner_rejected_2": " o al soporte de Discord para más instrucciones.",
"project.givback_toast.description.non_verified_owner_submitted": "¡Noticias emocionantes! Tu solicitud ha sido enviada y está en la cola para ser revisada por nuestro equipo de revisión de elegibilidad para GIVbacks. Te responderemos en un plazo de 1-2 semanas.",
"project.givback_toast.description.non_verified_public": "Actualmente, los GIVbacks solo se otorgan por donaciones hechas a proyectos elegibles para GIVbacks en Ethereum. ¡Tu contribución sigue siendo importante, incluso si no genera GIVbacks!",
"project.givback_toast.description.verified_owner": "Impulsa tu proyecto para aumentar su porcentaje de GIVbacks y ayudarlo a aparecer más alto en la página de proyectos.",
"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_not_eligible": "Tu proyecto ha sido avalado por los Verificadores de Giveth y ahora puede beneficiarse de GIVpower. Haz stake y bloquea tus tokens GIV para impulsar este proyecto y hacerlo más visible en la página de proyectos. Sin embargo, donar a este proyecto no generará GIVbacks para los donantes.",
"project.givback_toast.description.verified_public": "Las donaciones de ${value} o más son elegibles para recibir GIVbacks. ¡Impulsa este proyecto para aumentar su porcentaje de recompensas y su visibilidad en la página de proyectos!",
"project.givback_toast.description.verified_public_not_eligible": "{stakeLock} tus tokens GIV para obtener GIVpower. Impulsa este proyecto para hacerlo más visible en la página de proyectos. Nota: Aunque este proyecto es elegible para ser impulsado con GIVpower, no generará GIVbacks para sus donantes.",
"project.givback_toast.description.verified_public_not_eligible": "{stakeLock} 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",
Expand Down
1 change: 0 additions & 1 deletion lang/t_ca.json
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,6 @@
"page.project.preview_hint": "Aquesta és una previsualització del teu projecte.",
"project.givback_toast.description.non_verified_owner": "Pots demostrar que el teu projecte està proporcionant un bé públic? La verificació et dóna accés a una gran quantitat de beneficis com recompenses per a donants, major visibilitat i formes addicionals d'obtenir fons!",
"project.givback_toast.description.non_verified_public": "Actualment, els GIVbacks només es concedeixen per donacions fetes a projectes verificats. La teva contribució encara és important, encara que no generi GIVbacks!",
"project.givback_toast.description.verified_owner": "Impulsa el teu projecte per augmentar el seu percentatge de recompenses i fer-lo més visible a la pàgina de projectes!",
"project.givback_toast.description.verified_public": "Els donants de projectes verificats són recompensats 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": "Porta el teu projecte al següent nivell amb la Verificació!",
"project.givback_toast.title.non_verified_public": "Per què no hi ha GIVbacks?",
Expand Down
1 change: 0 additions & 1 deletion lang/t_es.json
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,6 @@
"page.project.preview_hint": "Esta es una vista previa de tu proyecto.",
"project.givback_toast.description.non_verified_owner": "¿Puedes demostrar que tu proyecto está proporcionando un bien público? ¡La verificación te da acceso a una gran cantidad de beneficios como recompensas para los donantes, mayor visibilidad y formas adicionales de recaudar fondos!",
"project.givback_toast.description.non_verified_public": "Los GIVbacks se otorgan actualmente solo por donaciones realizadas a proyectos verificados. ¡Tu contribución sigue siendo importante, incluso si no genera GIVbacks!",
"project.givback_toast.description.verified_owner": "¡Impulsa tu proyecto para aumentar su porcentaje de recompensas y hacerlo más visible en la página de proyectos!",
"project.givback_toast.description.verified_public": "Los donantes a proyectos verificados son recompensados 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.title.non_verified_owner": "¡Lleva tu proyecto al siguiente nivel con la Verificación!",
"project.givback_toast.title.non_verified_public": "¿Por qué no hay GIVbacks?",
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
"devDependencies": {
"@babel/preset-typescript": "^7.23.3",
"@next/bundle-analyzer": "^14.1.0",
"@tanstack/react-query-devtools": "^5.58.0",
"@testing-library/cypress": "^10.0.1",
"@testing-library/jest-dom": "^6.4.2",
"@testing-library/react": "^14.2.1",
Expand Down
50 changes: 37 additions & 13 deletions src/apollo/apolloClient.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import { useMemo } from 'react';
import { ApolloClient, InMemoryCache, ApolloLink } from '@apollo/client';
import {
ApolloClient,
InMemoryCache,
ApolloLink,
NormalizedCacheObject,
} from '@apollo/client';
import { RetryLink } from '@apollo/client/link/retry';
import { setContext } from '@apollo/client/link/context';
import { onError } from '@apollo/client/link/error';
Expand All @@ -14,20 +19,21 @@ import { signOut } from '@/features/user/user.thunks';
import config from '@/configuration';
import { setShowSignWithWallet } from '@/features/modal/modal.slice';

let apolloClient: any;
let apolloClient: ApolloClient<NormalizedCacheObject> | undefined;

const ssrMode = isSSRMode;

export const APOLLO_STATE_PROP_NAME = '__APOLLO_STATE__';

const parseHeaders = (rawHeaders: any) => {
// Parses headers into the Headers object
const parseHeaders = (rawHeaders: string) => {
const headers = new Headers();
// Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space
// https://tools.ietf.org/html/rfc7230#section-3.2
const preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' ');
preProcessedHeaders.split(/\r?\n/).forEach((line: any) => {
preProcessedHeaders.split(/\r?\n/).forEach((line: string) => {
const parts = line.split(':');
const key = parts.shift().trim();
const key = parts.shift()?.trim();
if (key) {
const value = parts.join(':').trim();
headers.append(key, value);
Expand All @@ -36,6 +42,7 @@ const parseHeaders = (rawHeaders: any) => {
return headers;
};

// Custom fetch logic with file upload handling
const uploadFetch = (url: string, options: any) =>
new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
Expand All @@ -49,8 +56,11 @@ const uploadFetch = (url: string, options: any) =>
'responseURL' in xhr
? xhr.responseURL
: opts.headers.get('X-Request-URL');
// TypeScript fix: Explicitly cast `xhr` to `XMLHttpRequest` to access responseText
const body =
'response' in xhr ? xhr.response : (xhr as any).responseText;
'response' in xhr
? xhr.response
: (xhr as XMLHttpRequest).responseText;
resolve(new Response(body, opts));
};
xhr.onerror = () => {
Expand All @@ -76,26 +86,30 @@ const uploadFetch = (url: string, options: any) =>
xhr.send(options.body);
});

const customFetch = (uri: any, options: any) => {
// Custom fetch function to determine when to use upload fetch or standard fetch
const customFetch = (uri: string, options: any) => {
if (options.useUpload) {
return uploadFetch(uri, options);
}
return fetch(uri, options);
};

function createApolloClient() {
// Creates the Apollo Client with the custom link setup
function createApolloClient(): ApolloClient<NormalizedCacheObject> {
let userWalletAddress: string | null;
if (!ssrMode) {
userWalletAddress = localStorage.getItem(StorageLabel.USER);
}

const retryLink = new RetryLink();

// Custom link for handling file uploads
const httpLink = createUploadLink({
uri: config.BACKEND_LINK,
fetch: customFetch as any,
});

// Auth link to add Authorization and locale headers
const authLink = setContext((_, { headers }) => {
let locale: string | null = !ssrMode
? localStorage.getItem(StorageLabel.LOCALE)
Expand All @@ -117,12 +131,13 @@ function createApolloClient() {
};
});

// Error handling link
const errorLink = onError(({ graphQLErrors, networkError, operation }) => {
if (graphQLErrors) {
console.log('operation', operation);
graphQLErrors.forEach(err => {
console.error('err', JSON.stringify(err));
const { message, locations, path } = err;
const { message } = err;
if (message.toLowerCase().includes('authentication required')) {
console.log(Date.now(), 'sign out from graphQL');
// removes token and user from store
Expand Down Expand Up @@ -190,7 +205,10 @@ function createApolloClient() {
});
}

export function initializeApollo(initialState = null) {
// Initialize Apollo Client for SSR and client-side rendering
export function initializeApollo(
initialState: any = null,
): ApolloClient<NormalizedCacheObject> {
const _apolloClient = apolloClient ?? createApolloClient();

// If your page has Next.js data fetching methods that use Apollo Client, the initial state
Expand All @@ -202,7 +220,7 @@ export function initializeApollo(initialState = null) {
// Merge the existing cache into data passed from getStaticProps/getServerSideProps
const data = merge(initialState, existingCache, {
// combine arrays using object equality (like in sets)
arrayMerge: (destinationArray, sourceArray) => [
arrayMerge: (destinationArray: any[], sourceArray: any[]) => [
...sourceArray,
...destinationArray.filter(d =>
sourceArray.every(s => !isEqual(d, s)),
Expand All @@ -221,18 +239,24 @@ export function initializeApollo(initialState = null) {
return _apolloClient;
}

export function addApolloState(client: any, pageProps: any) {
// Adds Apollo Client's state to pageProps
export function addApolloState(
client: ApolloClient<NormalizedCacheObject>,
pageProps: any,
) {
if (pageProps?.props) {
pageProps.props[APOLLO_STATE_PROP_NAME] = client.cache.extract();
}

return pageProps;
}

// Custom React hook to use Apollo Client
export function useApollo(pageProps: any) {
const state = pageProps[APOLLO_STATE_PROP_NAME];

return useMemo(() => initializeApollo(state), [state]);
}

export const client = initializeApollo();
// Export the client instance
export const client: ApolloClient<NormalizedCacheObject> = initializeApollo();
6 changes: 6 additions & 0 deletions src/apollo/gql/gqlProjects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -804,3 +804,9 @@ export const FETCH_RECURRING_DONATIONS_BY_DATE = gql`
}
}
`;

export const DELETE_DRAFT_PROJECT = gql`
mutation ($projectId: Float!) {
deleteDraftProject(projectId: $projectId)
}
`;
9 changes: 6 additions & 3 deletions src/components/VerificationBadge.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@ import { EVerificationStatus } from '@/apollo/types/types';
import { Badge, EBadgeStatus } from './Badge';

interface IProps {
isVerified?: boolean;
isGivbackEligible?: boolean;
verificationStatus?: EVerificationStatus;
}

const VerificationBadge: FC<IProps> = ({ isVerified, verificationStatus }) => {
const verStatus = isVerified
const VerificationBadge: FC<IProps> = ({
isGivbackEligible,
verificationStatus,
}) => {
const verStatus = isGivbackEligible
? EVerificationStatus.VERIFIED
: verificationStatus !== EVerificationStatus.VERIFIED
? verificationStatus
Expand Down
2 changes: 1 addition & 1 deletion src/components/badges/ShareLikeBadge.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ const Wrapper = styled(FlexCenter)`
const BadgeText = styled(ButtonText)<{ $fromDonate?: boolean | null }>`
color: ${props =>
props.$fromDonate ? brandColors.pinky[500] : neutralColors.gray[700]};
text-transform: ${props => (props.$fromDonate ? 'none' : 'uppercase')};
text-transform: ${props => (props.$fromDonate ? 'none' : '')};
margin: 0 auto;
`;

Expand Down
20 changes: 14 additions & 6 deletions src/components/views/project/ProjectBadges.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,22 @@ import { IconWithTooltip } from '@/components/IconWithToolTip';
const ProjectBadges = () => {
const { projectData } = useProjectContext();

const { verified, isGivbackEligible, qfRounds, campaigns } =
projectData || {};
const {
verified: projectVerified,
isGivbackEligible,
qfRounds,
campaigns,
} = projectData || {};
const { formatMessage } = useIntl();
const isQF = hasActiveRound(qfRounds);
const verified = projectVerified || isGivbackEligible;

if (!verified && !isQF && (!campaigns || campaigns.length === 0)) {
if (
!verified &&
!isGivbackEligible &&
!isQF &&
(!campaigns || campaigns.length === 0)
) {
return null;
}

Expand Down Expand Up @@ -92,11 +102,9 @@ const ProjectBadges = () => {
};

const CustomFlex = styled(Flex)`
overflow-x: scroll;
overflow-y: hidden;
white-space: nowrap;
margin-bottom: -3px;
padding-top: 8px;
margin-bottom: 24px;
`;

export const TooltipContent = styled.div`
Expand Down
6 changes: 3 additions & 3 deletions src/components/views/project/ProjectDevouchBox.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ const ProjectDevouchBox = () => {
<TextContent>
<Title>
{formatMessage({
id: 'label.devouch.view_this_project',
id: 'label.devouch.title.vouch_this_project',
})}
</Title>
<Description>
{formatMessage({
id: 'label.devouch.if_you_are_eligible',
id: 'label.devouch.description.vouch_this_project',
})}{' '}
<ExternalLink href={links.DEVOUCH_DOCS}>
<LearnMore>
Expand All @@ -62,7 +62,7 @@ const ProjectDevouchBox = () => {
>
<OutlineButton
label={formatMessage({
id: 'label.devouch.attest_on_devouch',
id: 'label.devouch.go_to_devouch',
})}
leftIcon={
<IconExternalLink
Expand Down
Loading

0 comments on commit 3af9de8

Please sign in to comment.