From 766e276a70834f1690be06ba52c019bbdc9a3864 Mon Sep 17 00:00:00 2001 From: Tomas Pulenta Date: Fri, 24 Mar 2023 12:26:22 -0300 Subject: [PATCH 1/4] feat(SchemeInfo): scheme selection clean up --- apps/davi/public/locales/en/translation.json | 5 ++- .../pages/SchemeSelection/SchemeInfo.tsx | 38 ++++++++++++------- .../fetchers/subgraph/useGetSubDAOs/index.tsx | 1 + .../subgraph/useGetSubDAOs/query.graphql | 2 + 4 files changed, 30 insertions(+), 16 deletions(-) diff --git a/apps/davi/public/locales/en/translation.json b/apps/davi/public/locales/en/translation.json index ae2f545b..2fa4a14e 100644 --- a/apps/davi/public/locales/en/translation.json +++ b/apps/davi/public/locales/en/translation.json @@ -394,13 +394,14 @@ "proposalTimeInPreBoost": "Proposal time in pre boost", "canManageSchemes": "Can manage schemes", "canControlMainTreasury": "Can control main treasury", - "canChangeReputation": "Can change reputation", + "canMakeAvatarCalls": "Can make avatar calls", "maxRepPercentageChange": "Maximum rep percentage change", "backToScheme": "Back to Scheme", "type": "Type", "next": "Next", "errorFetchingSchemes": "Error while fetching schemes", - "daoHasNoSchemes": "This DAO has no schemes registered" + "daoHasNoSchemes": "This DAO has no schemes registered", + "daoBounty": "DAO Bounty" }, "inputValidation": { "recipientAddressIsRequired": "Recipient address is required", diff --git a/apps/davi/src/Modules/Guilds/pages/SchemeSelection/SchemeInfo.tsx b/apps/davi/src/Modules/Guilds/pages/SchemeSelection/SchemeInfo.tsx index 9607e9b1..801a4df1 100644 --- a/apps/davi/src/Modules/Guilds/pages/SchemeSelection/SchemeInfo.tsx +++ b/apps/davi/src/Modules/Guilds/pages/SchemeSelection/SchemeInfo.tsx @@ -38,6 +38,11 @@ export const SchemeInfo = ({ selectedScheme }: { selectedScheme: Scheme }) => { return ( + + {t('schemes.type')} + {selectedScheme.type} + + {t('proposal.quorum')} @@ -45,10 +50,11 @@ export const SchemeInfo = ({ selectedScheme }: { selectedScheme: Scheme }) => { + {/* TODO: remove this? or is it another variable? */} - {t('schemes.canManageSchemes')} + {t('proposal.quorum')} - {selectedScheme.canManageSchemes ? 'yes' : 'no'} + {formattedBoostedVoteRequiredPercentage}% @@ -58,28 +64,30 @@ export const SchemeInfo = ({ selectedScheme }: { selectedScheme: Scheme }) => { - {t('schemes.canControlMainTreasury')} - - {selectedScheme.canMakeAvatarCalls ? 'yes' : 'no'} - + {t('schemes.proposalTimeInBoost')} + {formattedBoostedVotePeriodLimit} - {t('schemes.proposalTimeInBoost')} - {formattedBoostedVotePeriodLimit} + {t('schemes.proposalTimeInPreBoost')} + + {formattedPreBoostedVotePeriodLimit} + - {t('schemes.canChangeReputation')} + {/* TODO: if we remove this, remove the translation as well */} + {/* {t('schemes.canControlMainTreasury')} */} + {t('schemes.canMakeAvatarCalls')} - {selectedScheme.canChangeReputation ? 'yes' : 'no'} + {selectedScheme.canMakeAvatarCalls ? 'yes' : 'no'} - {t('schemes.proposalTimeInPreBoost')} + {t('schemes.canManageSchemes')} - {formattedPreBoostedVotePeriodLimit} + {selectedScheme.canManageSchemes ? 'yes' : 'no'} @@ -91,8 +99,10 @@ export const SchemeInfo = ({ selectedScheme }: { selectedScheme: Scheme }) => { - {t('schemes.type')} - {selectedScheme.type} + {t('schemes.daoBounty')} + + {selectedScheme.votingMachine.daoBounty} + diff --git a/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/index.tsx b/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/index.tsx index 98fbf156..dd1847b7 100644 --- a/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/index.tsx +++ b/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/index.tsx @@ -63,6 +63,7 @@ export const useGetSubDAOs: IUseGetSubDAOs = daoId => { scheme.votingMachine.preBoostedVotePeriodLimit, boostedVotePeriodLimit: scheme.votingMachine.boostedVotePeriodLimit, quietEndingPeriod: scheme.votingMachine.quietEndingPeriod, + daoBounty: scheme.votingMachine.boostedVoteRequiredPercentage, }, }; }); diff --git a/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/query.graphql b/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/query.graphql index 61563b1e..d2654275 100644 --- a/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/query.graphql +++ b/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/query.graphql @@ -11,6 +11,7 @@ query getSchemes($id: ID!) { paramsHash permissionRegistry stakingTokenBalance + # capabilities canChangeReputation canMakeAvatarCalls @@ -25,6 +26,7 @@ query getSchemes($id: ID!) { preBoostedVotePeriodLimit boostedVotePeriodLimit quietEndingPeriod + daoBounty } } } From 1918b30d9d69377584d9cdea80d9baa71229daea Mon Sep 17 00:00:00 2001 From: Tomas Pulenta Date: Tue, 28 Mar 2023 10:32:00 -0300 Subject: [PATCH 2/4] changes in order and adding queuedVotingRequiredPercentage --- apps/davi/public/locales/en/translation.json | 2 +- .../pages/SchemeSelection/SchemeInfo.tsx | 24 +++++++++++-------- .../fetchers/subgraph/useGetSubDAOs/index.tsx | 2 ++ .../subgraph/useGetSubDAOs/query.graphql | 1 + 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/apps/davi/public/locales/en/translation.json b/apps/davi/public/locales/en/translation.json index 2fa4a14e..4b482223 100644 --- a/apps/davi/public/locales/en/translation.json +++ b/apps/davi/public/locales/en/translation.json @@ -231,6 +231,7 @@ "consensusSystem": "Consensus System", "proposalDuration": "Proposal Duration", "quorum": "Quorum", + "boostedQuoroum": "Boosted Quorum", "backToOverview": "Back to Overview", "backToDiscussion": "Back to Discussion", "originalDiscussion": "Original Discussion", @@ -393,7 +394,6 @@ "proposalTimeInBoost": "Proposal time in boost", "proposalTimeInPreBoost": "Proposal time in pre boost", "canManageSchemes": "Can manage schemes", - "canControlMainTreasury": "Can control main treasury", "canMakeAvatarCalls": "Can make avatar calls", "maxRepPercentageChange": "Maximum rep percentage change", "backToScheme": "Back to Scheme", diff --git a/apps/davi/src/Modules/Guilds/pages/SchemeSelection/SchemeInfo.tsx b/apps/davi/src/Modules/Guilds/pages/SchemeSelection/SchemeInfo.tsx index 801a4df1..df21e57e 100644 --- a/apps/davi/src/Modules/Guilds/pages/SchemeSelection/SchemeInfo.tsx +++ b/apps/davi/src/Modules/Guilds/pages/SchemeSelection/SchemeInfo.tsx @@ -17,6 +17,13 @@ const humanizedTime = (time: string) => { export const SchemeInfo = ({ selectedScheme }: { selectedScheme: Scheme }) => { const { t } = useTranslation(); + + const formattedQueuedVoteRequiredPercentage = BigNumber.from( + selectedScheme.votingMachine.queuedVoteRequiredPercentage + ) + .div(100) + .toString(); + const formattedBoostedVoteRequiredPercentage = BigNumber.from( selectedScheme.votingMachine.boostedVoteRequiredPercentage ) @@ -46,13 +53,12 @@ export const SchemeInfo = ({ selectedScheme }: { selectedScheme: Scheme }) => { {t('proposal.quorum')} - {formattedBoostedVoteRequiredPercentage}% + {formattedQueuedVoteRequiredPercentage}% - {/* TODO: remove this? or is it another variable? */} - {t('proposal.quorum')} + {t('proposal.boostedQuoroum')} {formattedBoostedVoteRequiredPercentage}% @@ -63,11 +69,6 @@ export const SchemeInfo = ({ selectedScheme }: { selectedScheme: Scheme }) => { {formattedQuietEndingPeriod} - - {t('schemes.proposalTimeInBoost')} - {formattedBoostedVotePeriodLimit} - - {t('schemes.proposalTimeInPreBoost')} @@ -76,8 +77,11 @@ export const SchemeInfo = ({ selectedScheme }: { selectedScheme: Scheme }) => { - {/* TODO: if we remove this, remove the translation as well */} - {/* {t('schemes.canControlMainTreasury')} */} + {t('schemes.proposalTimeInBoost')} + {formattedBoostedVotePeriodLimit} + + + {t('schemes.canMakeAvatarCalls')} {selectedScheme.canMakeAvatarCalls ? 'yes' : 'no'} diff --git a/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/index.tsx b/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/index.tsx index dd1847b7..5e866077 100644 --- a/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/index.tsx +++ b/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/index.tsx @@ -59,6 +59,8 @@ export const useGetSubDAOs: IUseGetSubDAOs = daoId => { votingMachine: { boostedVoteRequiredPercentage: scheme.votingMachine.boostedVoteRequiredPercentage, + queuedVoteRequiredPercentage: + scheme.votingMachine.queuedVoteRequiredPercentage, preBoostedVotePeriodLimit: scheme.votingMachine.preBoostedVotePeriodLimit, boostedVotePeriodLimit: scheme.votingMachine.boostedVotePeriodLimit, diff --git a/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/query.graphql b/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/query.graphql index d2654275..451c0faf 100644 --- a/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/query.graphql +++ b/apps/davi/src/stores/modules/1_5/fetchers/subgraph/useGetSubDAOs/query.graphql @@ -27,6 +27,7 @@ query getSchemes($id: ID!) { boostedVotePeriodLimit quietEndingPeriod daoBounty + queuedVoteRequiredPercentage } } } From eee95168f6ba4baf2e157557999befa1053864d7 Mon Sep 17 00:00:00 2001 From: Tomas Pulenta Date: Wed, 29 Mar 2023 10:55:38 -0300 Subject: [PATCH 3/4] feat(SchemeInfo.tsx): adding support for translations on time units of scheme info --- .../pages/SchemeSelection/SchemeInfo.tsx | 21 +++++++++---------- .../Guilds/time/useTimeDifferenceHumanized.ts | 12 +++++------ 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/apps/davi/src/Modules/Guilds/pages/SchemeSelection/SchemeInfo.tsx b/apps/davi/src/Modules/Guilds/pages/SchemeSelection/SchemeInfo.tsx index df21e57e..5e6a85ea 100644 --- a/apps/davi/src/Modules/Guilds/pages/SchemeSelection/SchemeInfo.tsx +++ b/apps/davi/src/Modules/Guilds/pages/SchemeSelection/SchemeInfo.tsx @@ -7,14 +7,10 @@ import { InfoDetailMuted, } from 'components/ProposalInfoCard/ProposalInfoCard.styled'; import { CardBody, SchemePropertiesGrid } from './SchemeSelection.styled'; +import useTimeDifferenceHumanized from 'hooks/Guilds/time/useTimeDifferenceHumanized'; type Scheme = getSchemesQuery['dao']['schemes'][0]; -const humanizedTime = (time: string) => { - const timeInSeconds = Number.parseInt(time); - return moment.duration(timeInSeconds, 'seconds').humanize({ ss: 1 }); -}; - export const SchemeInfo = ({ selectedScheme }: { selectedScheme: Scheme }) => { const { t } = useTranslation(); @@ -30,16 +26,19 @@ export const SchemeInfo = ({ selectedScheme }: { selectedScheme: Scheme }) => { .div(100) .toString(); - const formattedQuietEndingPeriod = humanizedTime( - selectedScheme.votingMachine.quietEndingPeriod + const formattedQuietEndingPeriod = useTimeDifferenceHumanized( + moment().add(selectedScheme.votingMachine.quietEndingPeriod, 'seconds') ); - const formattedBoostedVotePeriodLimit = humanizedTime( - selectedScheme.votingMachine.boostedVotePeriodLimit + const formattedBoostedVotePeriodLimit = useTimeDifferenceHumanized( + moment().add(selectedScheme.votingMachine.boostedVotePeriodLimit, 'seconds') ); - const formattedPreBoostedVotePeriodLimit = humanizedTime( - selectedScheme.votingMachine.preBoostedVotePeriodLimit + const formattedPreBoostedVotePeriodLimit = useTimeDifferenceHumanized( + moment().add( + selectedScheme.votingMachine.preBoostedVotePeriodLimit, + 'seconds' + ) ); return ( diff --git a/apps/davi/src/hooks/Guilds/time/useTimeDifferenceHumanized.ts b/apps/davi/src/hooks/Guilds/time/useTimeDifferenceHumanized.ts index d849c05b..58e76c90 100644 --- a/apps/davi/src/hooks/Guilds/time/useTimeDifferenceHumanized.ts +++ b/apps/davi/src/hooks/Guilds/time/useTimeDifferenceHumanized.ts @@ -6,6 +6,7 @@ const DAY_IN_MILLIS = 1000 * 60 * 60 * 24; const MONTH_IN_MILLIS = 1000 * 60 * 60 * 24 * 30; const HOUR_IN_MILLIS = 1000 * 60 * 60; const MINS_IN_MILLIS = 1000 * 60; +const SECONDS_IN_MILLIS = 1000; /** * Translates from and to time difference into human readable date format @@ -59,10 +60,11 @@ const useTimeDifferenceHumanized = ( }, { value: Math.floor( - ((((timeDifferenceInMilliSecs % YEAR_IN_MILLIS) % MONTH_IN_MILLIS) % + (((((timeDifferenceInMilliSecs % YEAR_IN_MILLIS) % MONTH_IN_MILLIS) % DAY_IN_MILLIS) % HOUR_IN_MILLIS) % - MINS_IN_MILLIS + MINS_IN_MILLIS) / + SECONDS_IN_MILLIS ), name: t('duration.seconds_other'), }, @@ -72,11 +74,7 @@ const useTimeDifferenceHumanized = ( return levels .reduce((acc, level) => { - if ( - level.value === 0 || - level.name === t('duration.seconds_other') || - measurementDepth === 0 - ) { + if (level.value === 0 || measurementDepth === 0) { return acc; } measurementDepth--; From 552869367505872f4cb9de8ce53c9764ab3ca3c2 Mon Sep 17 00:00:00 2001 From: Tomas Pulenta Date: Thu, 30 Mar 2023 09:54:19 -0300 Subject: [PATCH 4/4] style(spanish-translations): adding spanish translations --- apps/davi/public/locales/es/translation.json | 22 +++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/apps/davi/public/locales/es/translation.json b/apps/davi/public/locales/es/translation.json index 35febdd3..d82d3463 100644 --- a/apps/davi/public/locales/es/translation.json +++ b/apps/davi/public/locales/es/translation.json @@ -228,7 +228,8 @@ "information": "Información", "consensusSystem": "Sistema de Consenso", "proposalDuration": "Duración de la Propuesta", - "quorum": "Cuórum", + "quorum": "Quórum", + "boostedQuoroum": "Quórum impulsado", "backToOverview": "Regresar a la Vista General", "backToDiscussion": "Regresar a la Discusión", "originalDiscussion": "Discusión Original", @@ -382,6 +383,24 @@ "reload": "Recargar" } }, + "schemes": { + "schemes_one": "Esquema", + "schemes_other": "Esquemas", + "schemeParameters": "Parámetros del Esquema", + "schemeForProposal": "Esquema para la propuesta", + "maxProposalTime": "Tiempo máximo de propuesta", + "proposalTimeInBoost": "Tiempo de propuesta impulsada", + "proposalTimeInPreBoost": "Tiempo de propuesta en pre-impulso", + "canManageSchemes": "Puede gestionar esquemas", + "canMakeAvatarCalls": "Puede hacer llamadas al avatar", + "maxRepPercentageChange": "Máximo porcentaje de cambio de REP", + "backToScheme": "Volver al Esquema", + "type": "Tipo", + "next": "Siguiente", + "errorFetchingSchemes": "Error buscando los esquemas", + "daoHasNoSchemes": "Esta DAO no tiene esquemas registrados", + "daoBounty": "Recompensa de la DAO" + }, "inputValidation": { "recipientAddressIsRequired": "La dirección del destinatario es requerida", "amountIsRequired": "La cantidad es requerida", @@ -433,3 +452,4 @@ "showMore": "Mostrar más", "showLess": "Mostrar menos" } +