History aus search state entfernt

This commit is contained in:
Lorenz Hilpert
2021-05-20 11:40:59 +02:00
parent e8ebdbddb6
commit dba3e77aee

View File

@@ -29,7 +29,6 @@ export interface ArticleSearchState {
items?: ItemDTO[];
hits?: number;
history?: QueryTokenDTO[];
}
@Injectable()
@@ -74,15 +73,20 @@ export class ArticleSearchStore extends ComponentStore<ArticleSearchState> {
readonly filter$ = combineLatest([this.queryParamsFilter$, this.defaultFilter$]).pipe(
map(([selectedFilters, defaultFilters]) => {
const filters = [...defaultFilters.filter, ...defaultFilters.inputSelector];
const keys = selectedFilters.split(';');
const keys = selectedFilters?.split(';');
filters?.forEach((filter) => {
filter?.input?.forEach((input) => {
input?.options?.forEach((option) => {
option.selected = keys.includes(String(option.key));
// Wenn selectedFilters == undefined dann soll der default Filter ferwendet werden
// ist der selectedFilter ein leerstring ist dann sind alle Filter nicht selected
// TODO: Logik ist doppelt und sollte in eine extra funktion ausgelagert werden (primaryFilter$)
if (selectedFilters != undefined) {
filters?.forEach((filter) => {
filter?.input?.forEach((input) => {
input?.options?.forEach((option) => {
option.selected = keys.includes(String(option.key));
});
});
});
});
}
return filters.reduce((agg, filter) => [...agg, ...filter.input], []) as Filter[];
})
@@ -91,15 +95,20 @@ export class ArticleSearchStore extends ComponentStore<ArticleSearchState> {
readonly primaryFilter$ = combineLatest([this.queryParamsPrimaryFilter$, this.defaultFilter$]).pipe(
map(([selectedFilters, defaultFilters]) => {
const filters = [...defaultFilters.main];
const keys = selectedFilters.split(';');
const keys = selectedFilters?.split(';');
filters?.forEach((filter) => {
filter?.input?.forEach((input) => {
input?.options?.forEach((option) => {
option.selected = keys.includes(String(option.key));
// Wenn selectedFilters == undefined dann soll der default Filter ferwendet werden
// ist der selectedFilter ein leerstring ist dann sind alle Filter nicht selected
// TODO: Logik ist doppelt und sollte in eine extra funktion ausgelagert werden (filter$)
if (selectedFilters != undefined) {
filters?.forEach((filter) => {
filter?.input?.forEach((input) => {
input?.options?.forEach((option) => {
option.selected = keys.includes(String(option.key));
});
});
});
});
}
return filters.reduce((agg, filter) => [...agg, ...filter.input], []) as Filter[];
})
@@ -131,23 +140,22 @@ export class ArticleSearchStore extends ComponentStore<ArticleSearchState> {
map(([orderBy, desc, orderByOptions]) => orderByOptions.filter((opt) => opt.by === orderBy && !!opt.desc === Boolean(desc)))
);
readonly queryToken$ = combineLatest([this.queryTokenInput$, this.queryTokenFilter$, this.queryTokenOrderBy$]).pipe(
map(([input, filter, orderBy]) => {
const query = {
input,
orderBy,
filter,
returnStockData: false,
} as QueryTokenDTO;
const friendlyName = this.getFriendlyName(query);
if (!!friendlyName) {
query.friendlyName = friendlyName;
}
return query;
})
readonly queryToken$ = combineLatest([
this.queryTokenInput$,
this.queryTokenFilter$,
this.queryTokenOrderBy$,
this.queryParamsQuery$,
]).pipe(
map(
([input, filter, orderBy, friendlyName]) =>
({
input,
orderBy,
filter,
returnStockData: false,
friendlyName,
} as QueryTokenDTO)
)
);
private connectedRouteSubscription: Subscription;
@@ -206,19 +214,6 @@ export class ArticleSearchStore extends ComponentStore<ArticleSearchState> {
return { disconnect: () => this.disconnect() };
}
readonly loadHistory = this.effect(($) =>
$.pipe(
switchMap((_) =>
this.catalog.getSearchHistory({ take: 5 }).pipe(
tapResponse(
(history) => this.patchState({ history }),
(err) => {}
)
)
)
)
);
async updateBreadcrumbs() {
const params = this.get(this.queryParamsSelector);
const crumbs = await this.breadcrumb
@@ -239,12 +234,6 @@ export class ArticleSearchStore extends ComponentStore<ArticleSearchState> {
});
}
getFriendlyName(query: QueryTokenDTO) {
return this.get((s) => s.history).find((history) =>
isEqual({ input: history.input, filter: history.filter }, { input: query.input, filter: query.filter })
)?.friendlyName;
}
disconnect() {
this.connectedRouteSubscription?.unsubscribe();
}
@@ -301,4 +290,11 @@ export class ArticleSearchStore extends ComponentStore<ArticleSearchState> {
this.updateQueryParams();
}
reset() {
this.setState({
params: {},
searchState: '',
});
}
}