Skip to content

Conversation

@terrerox
Copy link
Contributor

@terrerox terrerox commented Dec 4, 2025

Description

Add version history sidebar with UI for viewing, restoring, and deleting file versions. Includes state management in UI slice, integration with drive explorer context menus, and mock data structure for version display.

Related Issues

Related Pull Requests

Checklist

  • Changes have been tested locally.
  • Unit tests have been written or updated as necessary.
  • The code adheres to the repository's coding standards.
  • Relevant documentation has been added or updated.
  • No new warnings or errors have been introduced.
  • SonarCloud issues have been reviewed and addressed.
  • QA Passed

Testing Process

Additional Notes

  Add "Version history" option to drive item context menu for files across all drive views (personal, shared, workspace). Menu item is disabled for folders and includes placeholder implementation in useDriveItemActions hook.
  Add version history sidebar with UI for viewing, restoring, and deleting file versions. Includes state management in UI slice,
  integration with drive explorer context menus, and mock data structure for version display.
@terrerox terrerox marked this pull request as draft December 4, 2025 04:13
@terrerox terrerox self-assigned this Dec 4, 2025
@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Dec 4, 2025

Deploying drive-web with  Cloudflare Pages  Cloudflare Pages

Latest commit: 19e5544
Status: ✅  Deploy successful!
Preview URL: https://5d04d4cd.drive-web.pages.dev
Branch Preview URL: https://feature-file-version-history.drive-web.pages.dev

View logs

@terrerox terrerox force-pushed the feature/file-version-history branch from e0a0878 to cc7a1ac Compare December 5, 2025 05:18
Refactors the version history sidebar by extracting components into separate files for better maintainability and code organization. Replaces magic strings with constants for dropdown positioning.
@terrerox terrerox force-pushed the feature/file-version-history branch from cc7a1ac to fc14a30 Compare December 5, 2025 05:21
@terrerox
Copy link
Contributor Author

terrerox commented Dec 5, 2025

Quality Gate Failed Quality Gate failed

Failed conditions 0.0% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

NOTE: Tests will be added in another PR.

@terrerox terrerox marked this pull request as ready for review December 5, 2025 05:39
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You must add the translations for the other 7 languages.

className="h-4 w-4"
/>
<span className="text-base text-gray-80">
{totalAutosaveCount}/{totalAutosaveCount} autosave versions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add the text to the JSON and add its translations.

Also, these values are the same {totalAutosaveCount}/{totalAutosaveCount}. How should it look like?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The {totalAutosaveCount}/{totalAutosaveCount} was intentional. I plan to address that in a separate PR

<div className="flex min-w-0 flex-1 flex-col space-y-1">
<div className="flex items-center justify-between">
<span className="text-base font-semibold text-gray-100">
{dateService.format(version.date, 'MMM D, h:mm A')}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extract that to a variable, something like const versionDate = dateService.format...

{dateService.format(version.date, 'MMM D, h:mm A')}
</span>
<span className="rounded bg-primary/10 px-[4px] py-[2px] text-xs font-semibold text-primary dark:bg-[#082D66] dark:text-[#72AAFF]">
Current
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extract the text to the JSON and add its translations.

<div className="flex min-w-0 flex-1 flex-col space-y-1">
<div className="flex items-center justify-between">
<span className="text-base font-semibold text-gray-100">
{dateService.format(version.date, 'MMM D, h:mm A')}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see you use the date with the same format. What about format the date when you fetch it so you can use directly version.date instead of formatting it every time?

{version.expiresInDays !== undefined && (
<div className="flex items-center space-x-1 text-[12px] text-red-dark">
<Info size={16} weight="regular" />
<span>Expires in {version.expiresInDays} days</span>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add the text to the JSONs and ad its translations.

Comment on lines 26 to 43
{
name: 'Restore version',
icon: ClockCounterClockwise,
action: handleRestore,
},
{
name: 'Download version',
icon: DownloadSimple,
action: handleDownload,
},
{
separator: true,
},
{
name: 'Delete version',
icon: Trash,
action: handleDelete,
},
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add the text to the JSONs and add its translations.

@terrerox terrerox requested a review from xabg2 December 5, 2025 14:55
@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
0.0% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants