diff --git a/.changeset/funny-rice-clap.md b/.changeset/funny-rice-clap.md new file mode 100644 index 00000000..3a38fffd --- /dev/null +++ b/.changeset/funny-rice-clap.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +fix: Statment's expiratime compatibility diff --git a/examples/nextjs/src/components/policy/bucketPolicy/index.tsx b/examples/nextjs/src/components/policy/bucketPolicy/index.tsx index 876aa026..7141f2a6 100644 --- a/examples/nextjs/src/components/policy/bucketPolicy/index.tsx +++ b/examples/nextjs/src/components/policy/bucketPolicy/index.tsx @@ -1,5 +1,10 @@ import { client } from '@/client'; -import { GRNToString, newBucketGRN, PermissionTypes } from '@bnb-chain/greenfield-js-sdk'; +import { + GRNToString, + newBucketGRN, + PermissionTypes, + toTimestamp, +} from '@bnb-chain/greenfield-js-sdk'; import { useState } from 'react'; import { useAccount } from 'wagmi'; @@ -25,10 +30,14 @@ export const BucketPolicy = () => { onClick={async () => { if (!address) return; + const date = new Date(); + date.setDate(date.getMinutes() + 10); + const statement: PermissionTypes.Statement = { effect: PermissionTypes.Effect.EFFECT_ALLOW, actions: [PermissionTypes.ActionType.ACTION_UPDATE_BUCKET_INFO], resources: [GRNToString(newBucketGRN(policyBucketInfo.bucketName))], + expirationTime: toTimestamp(date), }; const tx = await client.bucket.putBucketPolicy(policyBucketInfo.bucketName, { @@ -38,6 +47,7 @@ export const BucketPolicy = () => { type: PermissionTypes.PrincipalType.PRINCIPAL_TYPE_GNFD_ACCOUNT, value: '0x0000000000000000000000000000000000000001', }, + expirationTime: toTimestamp(date), }); const simulateInfo = await tx.simulate({ diff --git a/examples/nextjs/src/components/policy/objectPolicy/index.tsx b/examples/nextjs/src/components/policy/objectPolicy/index.tsx index 5cc1751c..bae2d0de 100644 --- a/examples/nextjs/src/components/policy/objectPolicy/index.tsx +++ b/examples/nextjs/src/components/policy/objectPolicy/index.tsx @@ -1,5 +1,5 @@ import { client } from '@/client'; -import { PermissionTypes, TimestampTypes } from '@bnb-chain/greenfield-js-sdk'; +import { PermissionTypes, TimestampTypes, toTimestamp } from '@bnb-chain/greenfield-js-sdk'; import { useState } from 'react'; import { useAccount } from 'wagmi'; @@ -35,10 +35,13 @@ export const ObjectPolicy = () => { onClick={async () => { if (!address) return; + const date = new Date(); + date.setDate(date.getMinutes() + 10); const statement: PermissionTypes.Statement = { effect: PermissionTypes.Effect.EFFECT_ALLOW, actions: [PermissionTypes.ActionType.ACTION_GET_OBJECT], resources: [], + // expirationTime: toTimestamp(date), }; const tx = await client.object.putObjectPolicy( @@ -51,6 +54,7 @@ export const ObjectPolicy = () => { type: PermissionTypes.PrincipalType.PRINCIPAL_TYPE_GNFD_ACCOUNT, value: '0x0000000000000000000000000000000000000001', }, + expirationTime: toTimestamp(date), }, ); diff --git a/packages/js-sdk/src/api/objects.ts b/packages/js-sdk/src/api/objects.ts index 04b5fcf8..9e05f461 100644 --- a/packages/js-sdk/src/api/objects.ts +++ b/packages/js-sdk/src/api/objects.ts @@ -144,7 +144,7 @@ export interface IObject { bucketName: string, objectName: string, // expirationTime: Date, - srcMsg: Omit, + srcMsg: Omit, ): Promise; deleteObjectPolicy( @@ -618,7 +618,7 @@ export class Objects implements IObject { bucketName: string, objectName: string, // expirationTime: Date, - srcMsg: Omit, + srcMsg: Omit, ) { const resource = GRNToString(newObjectGRN(bucketName, objectName)); const msg: MsgPutPolicy = { diff --git a/packages/js-sdk/src/api/storage.ts b/packages/js-sdk/src/api/storage.ts index 97c849b9..b4d20b38 100644 --- a/packages/js-sdk/src/api/storage.ts +++ b/packages/js-sdk/src/api/storage.ts @@ -83,8 +83,13 @@ export class Storage implements IStorage { ...toSdk, expiration_time: msg.expirationTime ? fromTimestamp(msg.expirationTime) : '', statements: toSdk.statements.map((e) => { - // @ts-ignore - e.expiration_time = ''; + if (e.expiration_time) { + // @ts-ignore + e.expiration_time = fromTimestamp(e.expiration_time); + } else { + // @ts-ignore + e.expiration_time = ''; + } if (e.resources.length == 0) { // @ts-ignore diff --git a/packages/js-sdk/src/clients/txClient.ts b/packages/js-sdk/src/clients/txClient.ts index cf39972f..4cfffad4 100644 --- a/packages/js-sdk/src/clients/txClient.ts +++ b/packages/js-sdk/src/clients/txClient.ts @@ -289,6 +289,7 @@ export class TxClient implements ITxClient { gasLimit, granter, payer, + // @ts-ignore 712, );