refactor(core): refactor collection to use new filter system (#12228)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced a new Collection entity and store with reactive management and real-time updates. - Added reactive favorite and shared filters with expanded filtering options. - **Refactor** - Overhauled collection and filtering logic for better performance and maintainability. - Replaced legacy filtering UI and logic with a streamlined, service-driven rules system. - Updated collection components to use reactive data streams and simplified props. - Simplified collection creation by delegating ID generation and instantiation to the service layer. - Removed deprecated hooks and replaced state-based filtering with observable-driven filtering. - **Bug Fixes** - Improved accuracy and consistency of tag and favorite filtering in collections. - **Chores** - Removed deprecated and unused filter-related files, types, components, and styles to reduce complexity. - Cleaned up imports and removed unused code across multiple components. - **Documentation** - Corrected inline documentation for improved clarity. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -34,48 +34,43 @@ const createAndPinCollection = async (
|
||||
collectionName?: string;
|
||||
}
|
||||
) => {
|
||||
await clickNewPageButton(page);
|
||||
await getBlockSuiteEditorTitle(page).click();
|
||||
await getBlockSuiteEditorTitle(page).fill('test page');
|
||||
|
||||
// fixme: remove this timeout. looks like an issue with useBindWorkbenchToBrowserRouter?
|
||||
await page.waitForTimeout(500);
|
||||
|
||||
await page.getByTestId('all-pages').click();
|
||||
|
||||
const cell = page.getByTestId('page-list-item-title').getByText('test page');
|
||||
await expect(cell).toBeVisible();
|
||||
await page.getByTestId('create-first-filter').click({
|
||||
delay: 200,
|
||||
});
|
||||
await page
|
||||
.getByTestId('variable-select')
|
||||
.getByTestId(`filler-tag-Created`)
|
||||
.click({
|
||||
delay: 200,
|
||||
});
|
||||
await page.getByTestId('save-as-collection').click({
|
||||
delay: 200,
|
||||
});
|
||||
await page.getByTestId('navigation-panel-bar-add-collection-button').click();
|
||||
const title = page.getByTestId('prompt-modal-input');
|
||||
await expect(title).toBeVisible();
|
||||
await title.fill(options?.collectionName ?? 'test collection');
|
||||
await page.getByTestId('prompt-modal-confirm').click();
|
||||
await page.waitForTimeout(100);
|
||||
await page
|
||||
.locator('[data-testid^="navigation-panel-collection-"]')
|
||||
.first()
|
||||
.click();
|
||||
await page.getByTestId('collection-add-doc-button').click();
|
||||
await page.getByTestId('confirm-modal-confirm').click();
|
||||
|
||||
// fixme: remove this timeout. looks like an issue with useBindWorkbenchToBrowserRouter?
|
||||
await page.waitForTimeout(500);
|
||||
|
||||
await getBlockSuiteEditorTitle(page).click();
|
||||
await getBlockSuiteEditorTitle(page).fill('test page');
|
||||
|
||||
await page.getByTestId('all-pages').click();
|
||||
|
||||
const cell = page.getByTestId('page-list-item-title').getByText('test page');
|
||||
await expect(cell).toBeVisible();
|
||||
};
|
||||
|
||||
test('Show collections items in sidebar', async ({ page }) => {
|
||||
await removeOnboardingPages(page);
|
||||
await createAndPinCollection(page);
|
||||
const collections = page.getByTestId('navigation-panel-collections');
|
||||
await collections.getByTestId('category-divider-collapse-button').click();
|
||||
const items = collections.locator(
|
||||
'[data-testid^="navigation-panel-collection-"]'
|
||||
);
|
||||
await expect(items).toHaveCount(1);
|
||||
const first = items.first();
|
||||
expect(await first.textContent()).toBe('test collection');
|
||||
await first.getByTestId('navigation-panel-collapsed-button').click();
|
||||
expect((await first.textContent())!.startsWith('test collection')).toBe(true);
|
||||
const collectionPage = first
|
||||
.locator('[data-testid^="navigation-panel-doc-"]')
|
||||
.nth(0);
|
||||
@@ -118,34 +113,12 @@ test('edit collection', async ({ page }) => {
|
||||
await removeOnboardingPages(page);
|
||||
await createAndPinCollection(page);
|
||||
const collections = page.getByTestId('navigation-panel-collections');
|
||||
await collections.getByTestId('category-divider-collapse-button').click();
|
||||
const items = collections.locator(
|
||||
'[data-testid^="navigation-panel-collection-"]'
|
||||
);
|
||||
await expect(items).toHaveCount(1);
|
||||
const first = items.first();
|
||||
await first.hover();
|
||||
await first
|
||||
.getByTestId('navigation-panel-tree-node-operation-button')
|
||||
.click();
|
||||
const editCollection = page.getByText('Rename');
|
||||
await editCollection.click();
|
||||
await page.getByTestId('rename-modal-input').fill('123');
|
||||
await page.keyboard.press('Enter');
|
||||
await page.waitForTimeout(100);
|
||||
expect(await first.textContent()).toBe('123');
|
||||
});
|
||||
|
||||
test('edit collection and change filter date', async ({ page }) => {
|
||||
await removeOnboardingPages(page);
|
||||
await createAndPinCollection(page);
|
||||
const collections = page.getByTestId('navigation-panel-collections');
|
||||
await collections.getByTestId('category-divider-collapse-button').click();
|
||||
const items = collections.locator(
|
||||
'[data-testid^="navigation-panel-collection-"]'
|
||||
);
|
||||
await expect(items).toHaveCount(1);
|
||||
const first = items.first();
|
||||
await first.getByTestId('navigation-panel-collapsed-button').first().click();
|
||||
await first.hover();
|
||||
await first
|
||||
.getByTestId('navigation-panel-tree-node-operation-button')
|
||||
|
||||
Reference in New Issue
Block a user