diff --git a/.changeset/violet-cheetahs-yawn.md b/.changeset/violet-cheetahs-yawn.md new file mode 100644 index 0000000000..4470af5d3d --- /dev/null +++ b/.changeset/violet-cheetahs-yawn.md @@ -0,0 +1,5 @@ +--- +'@aws-amplify/ui-react-storage': patch +--- + +Fixed bug causing incorrect progress to be displayed during uploads diff --git a/packages/react-storage/src/components/StorageBrowser/views/LocationActionView/__tests__/getActionViewTableData.spec.ts b/packages/react-storage/src/components/StorageBrowser/views/LocationActionView/__tests__/getActionViewTableData.spec.ts index 2dce64bf61..43c11a18cf 100644 --- a/packages/react-storage/src/components/StorageBrowser/views/LocationActionView/__tests__/getActionViewTableData.spec.ts +++ b/packages/react-storage/src/components/StorageBrowser/views/LocationActionView/__tests__/getActionViewTableData.spec.ts @@ -167,4 +167,68 @@ describe('getActionViewTableData', () => { ); expect(result.rows).toMatchSnapshot(); }); + + it('should return the right display value for progress', () => { + const tasks: Tasks = [ + { + data: { + id: '1', + fileKey: 'file1.txt', + key: 'folder/subfolder/file1.txt', + lastModified: new Date(), + size: 1000, + type: 'FILE', + }, + status: 'QUEUED', + cancel: jest.fn(), + progress: 0, + message: '', + }, + { + data: { + id: '2', + fileKey: 'file2.txt', + key: 'folder/subfolder/file2.txt', + lastModified: new Date(), + size: 1000, + type: 'FILE', + }, + status: 'PENDING', + cancel: jest.fn(), + progress: 0.5, + message: '', + }, + { + data: { + id: '3', + fileKey: 'file3.txt', + key: 'folder/subfolder/file3.txt', + lastModified: new Date(), + size: 1000, + type: 'FILE', + }, + status: 'COMPLETE', + cancel: jest.fn(), + progress: 1, + message: '', + }, + ]; + + const result = getActionViewTableData({ + tasks, + locationKey: 'folder/subfolder/', + displayText: DEFAULT_UPLOAD_VIEW_DISPLAY_TEXT, + isProcessing: false, + onTaskRemove: jest.fn(), + shouldDisplayProgress: true, + }); + + const zero = result.rows[0].content[5].content; + const half = result.rows[1].content[5].content; + const full = result.rows[2].content[5].content; + + expect((zero as { displayValue: string }).displayValue).toBe('0%'); + expect((half as { displayValue: string }).displayValue).toBe('50%'); + expect((full as { displayValue: string }).displayValue).toBe('100%'); + }); }); diff --git a/packages/react-storage/src/components/StorageBrowser/views/LocationActionView/getActionViewTableData.ts b/packages/react-storage/src/components/StorageBrowser/views/LocationActionView/getActionViewTableData.ts index 6c79bcebbb..bbccbe9e35 100644 --- a/packages/react-storage/src/components/StorageBrowser/views/LocationActionView/getActionViewTableData.ts +++ b/packages/react-storage/src/components/StorageBrowser/views/LocationActionView/getActionViewTableData.ts @@ -171,7 +171,7 @@ export const getActionViewTableData = ({ value: progress, displayValue: `${getPercentValue( // Default progress to 100% if progress value is unavailable but status is recognized as complete - progress ?? status === 'COMPLETE' ? 1 : 0 + progress ?? (status === 'COMPLETE' ? 1 : 0) )}%`, }, };