fix(core): fix migrate filter list error (#13022)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Improved error handling for collection filter migrations, reducing the chance of failures affecting filter lists. * **New Features** * Expanded support for filter conditions on the "Tags" field, including options like "is empty," "is not empty," "contains all," and more. * **Enhancements** * Improved handling of "Is Favourited" and "Is Public" filters for more consistent results. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -191,7 +191,9 @@ export class CollectionStore extends Store {
|
||||
id: legacyCollectionInfo.id,
|
||||
name: legacyCollectionInfo.name,
|
||||
rules: {
|
||||
filters: this.migrateFilterList(legacyCollectionInfo.filterList),
|
||||
filters: legacyCollectionInfo.filterList
|
||||
? this.migrateFilterList(legacyCollectionInfo.filterList)
|
||||
: [],
|
||||
},
|
||||
allowList: legacyCollectionInfo.allowList,
|
||||
};
|
||||
@@ -200,6 +202,7 @@ export class CollectionStore extends Store {
|
||||
migrateFilterList(
|
||||
filterList: LegacyCollectionInfo['filterList']
|
||||
): FilterParams[] {
|
||||
try {
|
||||
return filterList.map(filter => {
|
||||
const leftValue = filter.left.name;
|
||||
const method = filter.funcName;
|
||||
@@ -266,7 +269,10 @@ export class CollectionStore extends Store {
|
||||
method: 'include-any-of',
|
||||
value: arg0.join(','),
|
||||
};
|
||||
} else if (method === 'does not contains all' && Array.isArray(arg0)) {
|
||||
} else if (
|
||||
method === 'does not contains all' &&
|
||||
Array.isArray(arg0)
|
||||
) {
|
||||
return {
|
||||
type: 'system',
|
||||
key: 'tags',
|
||||
@@ -299,5 +305,9 @@ export class CollectionStore extends Store {
|
||||
method: 'unknown',
|
||||
};
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('Failed to migrate filter list', err);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user