Skip to content

Commit

Permalink
Merge branch 'develop' into fix/app-3261-long-link
Browse files Browse the repository at this point in the history
  • Loading branch information
Barukimang authored Jul 11, 2024
2 parents b8e483c + 8a1cd9c commit 37d6653
Show file tree
Hide file tree
Showing 9 changed files with 84 additions and 96 deletions.
43 changes: 32 additions & 11 deletions src/containers/createProposalDialog/createProposalDialog.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {ModalProps} from '@aragon/ods-old';
import {TransactionDialog} from 'containers/transactionDialog';
import React, {useState} from 'react';
import React, {useEffect, useState} from 'react';
import {CreateProposalDialogSteps} from './createProposalDialogSteps';
import {useTranslation} from 'react-i18next';
import {useDaoDetailsQuery} from 'hooks/useDaoDetails';
Expand Down Expand Up @@ -29,6 +29,7 @@ import {toDisplayEns} from 'utils/library';
import {CreateProposalDialogGaslessSteps} from './createProposalDialogGaslessSteps';
import {useCreateVocdoniProposalTransaction} from './hooks/useCreateVocdoniProposalTransaction';
import {ICreateProposalParams} from './utils/createProposalUtils';
import {useProtocolVersion} from 'services/aragon-sdk/queries/use-protocol-version';

export interface ICreateProposalDialogProps extends ModalProps {}

Expand Down Expand Up @@ -59,18 +60,11 @@ export const CreateProposalDialog: React.FC<
const pluginClient = usePluginClient(pluginType);
const {data: votingSettings} = useVotingSettings({pluginAddress, pluginType});

const {data: versions} = useProtocolVersion(daoDetails?.address as string);

const [metadataCid, setMetadataCid] = useState<string>();

const {data: encodedActions} = useEncodeActions({
actions,
network,
pluginClient,
votingSettings,
client,
pluginAddress,
t,
daoAddress: daoDetails?.address,
});
const {data: encodedActions, mutate: encodeActions} = useEncodeActions();

const createProposalParams = createProposalUtils.buildCreateProposalParams({
values: formValues as CreateProposalFormData,
Expand Down Expand Up @@ -132,6 +126,33 @@ export const CreateProposalDialog: React.FC<
onClose?.();
};

useEffect(() => {
if (client && pluginClient && pluginAddress && daoDetails) {
encodeActions({
actions,
network,
pluginClient,
votingSettings,
client,
pluginAddress,
t,
daoAddress: daoDetails?.address,
versions,
});
}
}, [
client,
pluginClient,
encodeActions,
actions,
network,
votingSettings,
pluginAddress,
t,
daoDetails,
versions,
]);

return (
<TransactionDialog
title={t('createProposalDialog.title')}
Expand Down
26 changes: 17 additions & 9 deletions src/containers/transactionDetail/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,14 @@ import {Proposal} from 'utils/paths';
import {abbreviateTokenAmount} from 'utils/tokens';
import {Withdraw} from 'utils/types';

// extract the part of proposal id needed for the useproposal hook
const extractProposalId = (proposalId: string): string => {
const parts = proposalId.split('_');
const secondPart = parts[1];
const truncatedSecondPart = secondPart.replace(/0{62}$/, '');
return `${parts[0]}_${truncatedSecondPart}`;
};

const TransactionDetail: React.FC = () => {
const {t} = useTranslation();
const navigate = useNavigate();
Expand All @@ -36,9 +44,10 @@ const TransactionDetail: React.FC = () => {

const explorerURL = CHAIN_METADATA[network].explorer;
const transactionUrl = ` ${explorerURL}tx/${transfer.transaction}`;

const proposalId =
transfer.transferType === TransferTypes.Withdraw
? (transfer as Withdraw).proposalId
? extractProposalId(String((transfer as Withdraw).proposalId))
: undefined;

const daoExplorerURL = `${explorerURL}address/${address}`;
Expand All @@ -50,15 +59,14 @@ const TransactionDetail: React.FC = () => {
});

const handleNavigateToProposal = useCallback(() => {
navigate(
generatePath(Proposal, {
network,
dao: toDisplayEns(ensDomain) ?? daoName,
id: proposalId!.toUrlSlug(), // only called for Withdrawals
})
);
const path = generatePath(Proposal, {
network,
dao: ensDomain || daoDetails?.address,
id: proposalId,
});
navigate(path);
onClose();
}, [ensDomain, daoName, navigate, network, onClose, proposalId]);
}, [network, ensDomain, daoDetails?.address, proposalId, navigate, onClose]);

return (
<ModalBottomSheetSwitcher isOpen={isOpen} onClose={onClose}>
Expand Down
34 changes: 11 additions & 23 deletions src/context/update.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -169,30 +169,18 @@ const UpdateProvider: React.FC<{children: ReactElement}> = ({children}) => {
useEffect(() => {
if (versions) {
const OSXVersions = new Map();
const versionKeys = Object.keys(SupportedVersions);

Object.keys(SupportedVersions).forEach(key => {
if (
compareVersions(
SupportedVersions[key as keyof typeof SupportedVersions],
versions.join('.')
) === 1
) {
OSXVersions.set(
SupportedVersions[key as keyof typeof SupportedVersions],
{
version: SupportedVersions[
key as keyof typeof SupportedVersions
] as string,
...(key === 'LATEST' && {isLatest: true}),
} as OSX
);

if (key === 'LATEST') {
setValue('osSelectedVersion', {
version: SupportedVersions[
key as keyof typeof SupportedVersions
] as string,
});
versionKeys.forEach((key, index) => {
const version =
SupportedVersions[key as keyof typeof SupportedVersions];
const isLatest = index === versionKeys.length - 1;

if (compareVersions(version, versions.join('.')) === 1) {
OSXVersions.set(version, {version, isLatest});

if (isLatest) {
setValue('osSelectedVersion', {version});
}
}
});
Expand Down
8 changes: 4 additions & 4 deletions src/services/actionEncoder/actionEncoderService.api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ import {SupportedNetworks} from 'utils/constants';
import {Action, SupportedVotingSettings} from 'utils/types';

export interface IEncodeActionParams {
client?: Client;
pluginClient?: PluginClient;
pluginAddress?: string;
client: Client;
pluginClient: PluginClient;
pluginAddress: string;
actions: Action[];
t: TFunction;
network: SupportedNetworks;
daoAddress?: string;
daoAddress: string;
versions?: [number, number, number];
votingSettings?: SupportedVotingSettings | null;
}
13 changes: 1 addition & 12 deletions src/services/actionEncoder/actionEncoderService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,7 @@ import {
} from '@aragon/osx-commons-configs';

class ActionEncoderService {
encodeActions = async (
params: IEncodeActionParams
): Promise<DaoAction[] | null> => {
encodeActions = async (params: IEncodeActionParams): Promise<DaoAction[]> => {
const {
actions,
network,
Expand All @@ -45,15 +43,6 @@ class ActionEncoderService {
t,
} = params;

if (
client == null ||
pluginClient == null ||
pluginAddress == null ||
daoAddress == null
) {
return null;
}

const validActions = getNonEmptyActions(
actions,
isMultisigVotingSettings(votingSettings) ? votingSettings : undefined,
Expand Down
12 changes: 5 additions & 7 deletions src/services/actionEncoder/queries/useEncodeActions.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
import {UseQueryOptions, useQuery} from '@tanstack/react-query';
import {actionEncoderQueryKeys} from '../queryKeys';
import {UseMutationOptions, useMutation} from '@tanstack/react-query';
import {IEncodeActionParams} from '../actionEncoderService.api';
import {actionEncoderService} from '../actionEncoderService';
import {DaoAction} from '@aragon/sdk-client-common';

export const useEncodeActions = (
params: IEncodeActionParams,
options?: Omit<UseQueryOptions<DaoAction[] | null>, 'queryKey'>
options?: UseMutationOptions<DaoAction[], unknown, IEncodeActionParams>
) => {
return useQuery({
queryKey: actionEncoderQueryKeys.encodeActions(params),
queryFn: () => actionEncoderService.encodeActions(params),
return useMutation({
mutationFn: (params: IEncodeActionParams) =>
actionEncoderService.encodeActions(params),
...options,
});
};
27 changes: 0 additions & 27 deletions src/services/actionEncoder/queryKeys.ts

This file was deleted.

12 changes: 10 additions & 2 deletions src/utils/library.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1286,8 +1286,8 @@ export const walletInWalletList = (
export function compareVersions(version1: string, version2: string): number {
if (!version1 || !version2) return 0;

const v1 = version1.split('.').map(Number);
const v2 = version2.split('.').map(Number);
const v1 = normalizeVersion(version1).split('.').map(Number);
const v2 = normalizeVersion(version2).split('.').map(Number);

for (let i = 0; i < v1.length; i++) {
if (v1[i] > v2[i]) {
Expand All @@ -1300,6 +1300,14 @@ export function compareVersions(version1: string, version2: string): number {
return 0;
}

export function normalizeVersion(version: string): string {
if (version.startsWith('v')) {
return version.slice(1);
}

return version;
}

/**
* Retrieves the repository address for a specific plugin type on a supported network and protocol version.
* @param network - The supported network
Expand Down
5 changes: 4 additions & 1 deletion src/utils/osxUpdates.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {IReleaseNote} from 'services/aragon-sdk/domain/release-note';
import {VersionTag} from '@aragon/sdk-client-common';
import {normalizeVersion} from './library';

export interface IGetReleaseNotesParams {
releases?: IReleaseNote[];
Expand All @@ -17,7 +18,9 @@ class OsxUpdates {
? version.join('.')
: version;

return processedVersion ? `Aragon OSx v${processedVersion}` : undefined;
return processedVersion
? `Aragon OSx v${normalizeVersion(processedVersion)}`
: undefined;
};

getPluginVersion = (version?: VersionTag): string | undefined => {
Expand Down

0 comments on commit 37d6653

Please sign in to comment.