diff --git a/packages/claims-controller/CHANGELOG.md b/packages/claims-controller/CHANGELOG.md index d8014673c56..6d24789fab9 100644 --- a/packages/claims-controller/CHANGELOG.md +++ b/packages/claims-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Added `updatedAt` field to the claims draft. ([#7523](https://github.com/MetaMask/core/pull/7523)) + ## [0.3.0] ### Added diff --git a/packages/claims-controller/src/ClaimsController.test.ts b/packages/claims-controller/src/ClaimsController.test.ts index cda45e8d394..8bc40c8350f 100644 --- a/packages/claims-controller/src/ClaimsController.test.ts +++ b/packages/claims-controller/src/ClaimsController.test.ts @@ -265,6 +265,7 @@ describe('ClaimsController', () => { impactedTxHash: '0x123', reimbursementWalletAddress: '0x456', description: 'test description', + updatedAt: '2025-12-17T06:10:32.213Z', }; const MOCK_CLAIM_DRAFTS: ClaimDraft[] = [ { @@ -275,6 +276,7 @@ describe('ClaimsController', () => { impactedTxHash: '0x123', reimbursementWalletAddress: '0x456', description: 'test description', + updatedAt: '2025-12-17T06:10:32.213Z', }, { draftId: 'mock-draft-2', @@ -284,6 +286,7 @@ describe('ClaimsController', () => { impactedTxHash: '0x789', reimbursementWalletAddress: '0x012', description: 'test description 2', + updatedAt: '2025-12-17T06:10:32.213Z', }, ]; @@ -295,7 +298,10 @@ describe('ClaimsController', () => { expect(updatedState).not.toBe(initialState); expect(updatedState.drafts).toHaveLength(1); expect(updatedState.drafts[0].draftId).toBeDefined(); - expect(updatedState.drafts[0]).toMatchObject(MOCK_DRAFT); + expect(updatedState.drafts[0]).toMatchObject({ + ...MOCK_DRAFT, + updatedAt: expect.any(String), + }); expect(updatedState.drafts[0].draftId).toBeDefined(); }); }); diff --git a/packages/claims-controller/src/ClaimsController.ts b/packages/claims-controller/src/ClaimsController.ts index 9dd51fa704c..5df80a402fb 100644 --- a/packages/claims-controller/src/ClaimsController.ts +++ b/packages/claims-controller/src/ClaimsController.ts @@ -232,14 +232,19 @@ export class ClaimsController extends BaseController< ); if (isExistingDraft) { + const updatedAt = new Date().toISOString(); this.update((state) => { state.drafts = state.drafts.map((existingDraft) => existingDraft.draftId === draft.draftId - ? { ...existingDraft, ...draft } + ? { + ...existingDraft, + ...draft, + updatedAt, + } : existingDraft, ); }); - return draft as ClaimDraft; + return { ...draft, updatedAt } as ClaimDraft; } // generate a new draft id, name and add it to the state @@ -248,6 +253,7 @@ export class ClaimsController extends BaseController< const newDraft: ClaimDraft = { ...draft, draftId, + updatedAt: new Date().toISOString(), }; this.update((state) => { diff --git a/packages/claims-controller/src/types.ts b/packages/claims-controller/src/types.ts index 818251f2b40..9eae8d3d4d0 100644 --- a/packages/claims-controller/src/types.ts +++ b/packages/claims-controller/src/types.ts @@ -51,13 +51,7 @@ export type Claim = { export type ClaimDraft = Partial< Omit< Claim, - | 'id' - | 'shortId' - | 'createdAt' - | 'updatedAt' - | 'intercomId' - | 'status' - | 'attachments' + 'id' | 'shortId' | 'createdAt' | 'intercomId' | 'status' | 'attachments' > > & { /**