Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -157,12 +157,12 @@ export function calculateAmountPerSecond(
* @param periodDuration - The period duration string to validate.
* @returns Object containing parsed duration and any validation error.
*/
export function validatePeriodDuration(periodDuration: string): {
export function validatePeriodDuration(periodDuration: number): {
duration: number | undefined;
error: string | undefined;
} {
try {
const duration = parseInt(periodDuration, 10);
const duration = periodDuration;
if (isNaN(duration) || duration <= 0) {
return {
duration: undefined,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ export async function applyContext({
periodAmount: bigIntToHex(
parseUnits({ formatted: permissionDetails.periodAmount, decimals }),
),
periodDuration: parseInt(permissionDetails.periodDuration, 10),
periodDuration: permissionDetails.periodDuration,
startTime: permissionDetails.startTime,
justification: originalRequest.permission.data.justification,
tokenAddress: originalRequest.permission.data.tokenAddress,
Expand Down Expand Up @@ -176,7 +176,7 @@ export async function buildContext({
decimals,
});

const periodDuration = data.periodDuration.toString();
const { periodDuration } = data;

const startTime = data.startTime ?? Math.floor(Date.now() / 1000);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,7 @@ export const periodDurationRule: RuleDefinition<
type: 'dropdown',
getRuleData: ({ context, metadata }) => ({
isAdjustmentAllowed: context.isAdjustmentAllowed,
value: getClosestTimePeriod(
parseInt(context.permissionDetails.periodDuration, 10),
),
value: getClosestTimePeriod(context.permissionDetails.periodDuration),
isVisible: true,
tooltip: 'The duration of the period',
options: Object.values(TimePeriod),
Expand All @@ -73,7 +71,7 @@ export const periodDurationRule: RuleDefinition<
);
}

const periodDuration = Number(periodSeconds).toString();
const periodDuration = Number(periodSeconds);

return {
...context,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export type Erc20TokenPeriodicMetadata = BaseMetadata & {
export type Erc20TokenPeriodicContext = BaseContext & {
permissionDetails: {
periodAmount: string;
periodDuration: string;
periodDuration: number;
startTime: number;
};
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ export async function applyContext({
periodAmount: bigIntToHex(
parseUnits({ formatted: permissionDetails.periodAmount, decimals }),
),
periodDuration: parseInt(permissionDetails.periodDuration, 10),
periodDuration: permissionDetails.periodDuration,
startTime: permissionDetails.startTime,
justification: originalRequest.permission.data.justification,
};
Expand Down Expand Up @@ -176,7 +176,7 @@ export async function buildContext({
decimals,
});

const periodDuration = data.periodDuration.toString();
const { periodDuration } = data;

const startTime = data.startTime ?? Math.floor(Date.now() / 1000);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,7 @@ export const periodDurationRule: RuleDefinition<
type: 'dropdown',
getRuleData: ({ context, metadata }) => ({
isAdjustmentAllowed: context.isAdjustmentAllowed,
value: getClosestTimePeriod(
parseInt(context.permissionDetails.periodDuration, 10),
),
value: getClosestTimePeriod(context.permissionDetails.periodDuration),
isVisible: true,
tooltip: 'The duration of the period',
options: Object.values(TimePeriod),
Expand All @@ -73,7 +71,7 @@ export const periodDurationRule: RuleDefinition<
);
}

const periodDuration = Number(periodSeconds).toString();
const periodDuration = Number(periodSeconds);

return {
...context,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export type NativeTokenPeriodicMetadata = BaseMetadata & {
export type NativeTokenPeriodicContext = BaseContext & {
permissionDetails: {
periodAmount: string;
periodDuration: string;
periodDuration: number;
startTime: number;
};
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ const alreadyPopulatedContext: Erc20TokenPeriodicContext = {
},
permissionDetails: {
periodAmount: '100',
periodDuration: Number(TIME_PERIOD_TO_SECONDS[TimePeriod.DAILY]).toString(),
periodDuration: Number(TIME_PERIOD_TO_SECONDS[TimePeriod.DAILY]),
startTime: 1729900800,
},
} as const;
Expand Down Expand Up @@ -306,7 +306,7 @@ describe('erc20TokenPeriodic:context', () => {
...context,
permissionDetails: {
...context.permissionDetails,
periodDuration: 'invalid',
periodDuration: 'invalid' as unknown as number,
},
};

Expand All @@ -324,7 +324,7 @@ describe('erc20TokenPeriodic:context', () => {
...context,
permissionDetails: {
...context.permissionDetails,
periodDuration: '-1',
periodDuration: '-1' as unknown as number,
},
};

Expand Down Expand Up @@ -452,7 +452,7 @@ describe('erc20TokenPeriodic:context', () => {
permissionDetails: {
...alreadyPopulatedContext.permissionDetails,
periodAmount: '200',
periodDuration: '604800', // 1 week
periodDuration: 604800, // 1 week
startTime: Math.floor(Date.now() / 1000),
},
expiry: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ const alreadyPopulatedContext: NativeTokenPeriodicContext = {
},
permissionDetails: {
periodAmount: '1',
periodDuration: Number(TIME_PERIOD_TO_SECONDS[TimePeriod.DAILY]).toString(),
periodDuration: Number(TIME_PERIOD_TO_SECONDS[TimePeriod.DAILY]),
startTime: 1729900800,
},
} as const;
Expand Down Expand Up @@ -296,7 +296,7 @@ describe('nativeTokenPeriodic:context', () => {
...context,
permissionDetails: {
...context.permissionDetails,
periodDuration: 'invalid',
periodDuration: 'invalid' as unknown as number,
},
};

Expand All @@ -314,7 +314,7 @@ describe('nativeTokenPeriodic:context', () => {
...context,
permissionDetails: {
...context.permissionDetails,
periodDuration: '-1',
periodDuration: '-1' as unknown as number,
},
};

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { useCallback, useEffect, useState } from 'react';
import { parseUnits, toHex, type Hex } from 'viem';

import type { ERC20TokenPeriodicPermissionRequest } from './types';

type ERC20TokenPeriodicFormProps = {
Expand All @@ -15,7 +16,9 @@ export const ERC20TokenPeriodicForm = ({
BigInt(toHex(parseUnits('1', decimals))),
);
const [periodDuration, setPeriodDuration] = useState(2592000); // 30 days in seconds
const [startTime, setStartTime] = useState<number | null>(Math.floor(Date.now() / 1000));
const [startTime, setStartTime] = useState<number | null>(
Math.floor(Date.now() / 1000),
);
const [expiry, setExpiry] = useState(
Math.floor(Date.now() / 1000) + 60 * 60 * 24 * 30, // 30 days from now
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { bigIntToHex } from '@metamask/utils';
import { useCallback, useEffect, useState } from 'react';
import { parseUnits } from 'viem';

import type { NativeTokenPeriodicPermissionRequest } from './types';
import { bigIntToHex } from '@metamask/utils';

type NativeTokenPeriodicFormProps = {
onChange: (request: NativeTokenPeriodicPermissionRequest) => void;
Expand All @@ -14,7 +15,9 @@ export const NativeTokenPeriodicForm = ({
BigInt(bigIntToHex(parseUnits('1', 18))),
);
const [periodDuration, setPeriodDuration] = useState(2592000); // 30 days in seconds
const [startTime, setStartTime] = useState<number | null>(Math.floor(Date.now() / 1000));
const [startTime, setStartTime] = useState<number | null>(
Math.floor(Date.now() / 1000),
);
const [expiry, setExpiry] = useState(
Math.floor(Date.now() / 1000) + 60 * 60 * 24 * 30, // 30 days from now
);
Expand Down
Loading