mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-13 21:05:19 +00:00
feat(core): workspace attachment uploading & error (#12330)
### TL;DR feat: optimize workspace attachment uploading & error display  ### What Changes #### Support for Workspace Attachment Uploading & Error Handling * Added support for three attachment states: uploading (local), upload failed (local error), and uploaded (persisted). The frontend UI now displays real-time upload progress and error messages. * Attachments that fail to upload can be deleted directly without confirmation. * Merged display of uploading and uploaded attachments for a smoother user experience. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Attachments now show real-time upload status including uploading, error, and uploaded states. - Users can remove failed (error) attachments instantly without confirmation. - Attachment list merges uploading and uploaded files, displaying up to 10 items. - **Bug Fixes** - Improved error handling and messaging for failed attachment uploads. - **Style** - Enhanced visual styling for error attachments with distinct colors and backgrounds. - **Tests** - Added tests simulating slow network uploads, upload failures, and direct removal of error attachments. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -87,23 +87,35 @@ export class SettingsPanelUtils {
|
||||
|
||||
while (count > 0) {
|
||||
const attachmentItem = await page.getByTestId(itemId).first();
|
||||
const hasErrorItem = await attachmentItem
|
||||
.getByTestId('workspace-embedding-setting-attachment-error-item')
|
||||
.isVisible();
|
||||
await attachmentItem
|
||||
.getByTestId('workspace-embedding-setting-attachment-delete-button')
|
||||
.click();
|
||||
await page.getByTestId('confirm-modal-confirm').click();
|
||||
|
||||
if (!hasErrorItem) {
|
||||
await page.getByTestId('confirm-modal-confirm').click();
|
||||
}
|
||||
await page.waitForTimeout(1000);
|
||||
count = await page.getByTestId(itemId).count();
|
||||
}
|
||||
}
|
||||
|
||||
public static async removeAttachment(page: Page, attachment: string) {
|
||||
public static async removeAttachment(
|
||||
page: Page,
|
||||
attachment: string,
|
||||
shouldConfirm = true
|
||||
) {
|
||||
const attachmentItem = await page
|
||||
.getByTestId('workspace-embedding-setting-attachment-item')
|
||||
.filter({ hasText: attachment });
|
||||
await attachmentItem
|
||||
.getByTestId('workspace-embedding-setting-attachment-delete-button')
|
||||
.click();
|
||||
await page.getByTestId('confirm-modal-confirm').click();
|
||||
if (shouldConfirm) {
|
||||
await page.getByTestId('confirm-modal-confirm').click();
|
||||
}
|
||||
await page
|
||||
.getByTestId('workspace-embedding-setting-attachment-item')
|
||||
.filter({ hasText: attachment })
|
||||
|
||||
Reference in New Issue
Block a user