[ACS-9166]: introduces variable for search save mode threshold

This commit is contained in:
Anton Ramanovich
2025-11-03 08:04:11 +01:00
parent 53d3076a6f
commit 34cb40ccf3
2 changed files with 10 additions and 7 deletions
@@ -51,7 +51,7 @@ describe('SavedSearchesBaseService', () => {
service.init();
});
it('should emit updated searches with correct order if total of saved searches is less than 5', (done) => {
it('should emit updated searches with correct order if total of saved searches is less than limit (5)', (done) => {
service.mockFetch(SAVED_SEARCHES_CONTENT);
const newSearch = { name: 'new-search' } as SavedSearch;
service.saveSearch(newSearch).subscribe(() => {
@@ -68,7 +68,7 @@ describe('SavedSearchesBaseService', () => {
});
});
it('should emit updated searches with correct order if total of saved searches is more than 5', (done) => {
it('should emit updated searches with correct order if total of saved searches is more than limit (5)', (done) => {
const moreSavedSearches = [...SAVED_SEARCHES_CONTENT, ...SAVED_SEARCHES_CONTENT, ...SAVED_SEARCHES_CONTENT];
service.mockFetch(moreSavedSearches);
const newSearch = { name: 'new-search' } as SavedSearch;
@@ -27,6 +27,8 @@ import { AlfrescoApiService } from '../../services';
export abstract class SavedSearchesBaseService implements SavedSearchStrategy {
private _nodesApi: NodesApi;
private static readonly SAVE_MODE_THRESHOLD = 5;
protected readonly _savedSearches$ = new ReplaySubject<SavedSearch[]>(1);
readonly savedSearches$: Observable<SavedSearch[]> = this._savedSearches$.asObservable();
@@ -35,7 +37,7 @@ export abstract class SavedSearchesBaseService implements SavedSearchStrategy {
return this._nodesApi;
}
constructor(
protected constructor(
protected readonly apiService: AlfrescoApiService,
protected readonly authService: AuthenticationService
) {}
@@ -52,17 +54,18 @@ export abstract class SavedSearchesBaseService implements SavedSearchStrategy {
}
saveSearch(newSaveSearch: Pick<SavedSearch, 'name' | 'description' | 'encodedUrl'>): Observable<NodeEntry> {
const limit = SavedSearchesBaseService.SAVE_MODE_THRESHOLD;
return this.fetchAllSavedSearches().pipe(
take(1),
switchMap((savedSearches) => {
let updatedSavedSearches: SavedSearch[] = [];
if (savedSearches.length < 5) {
if (savedSearches.length < limit) {
updatedSavedSearches = [{ ...newSaveSearch, order: 0 }, ...savedSearches];
} else {
const firstFiveSearches = savedSearches.slice(0, 5);
const restOfSearches = savedSearches.slice(5);
updatedSavedSearches = [...firstFiveSearches, { ...newSaveSearch, order: 5 }, ...restOfSearches];
const upToLimitSearches = savedSearches.slice(0, limit);
const restSearches = savedSearches.slice(limit);
updatedSavedSearches = [...upToLimitSearches, { ...newSaveSearch, order: limit }, ...restSearches];
}
updatedSavedSearches = updatedSavedSearches.map((search, index) => ({ ...search, order: index }));