fix bug where task search would be called multiple times

This commit is contained in:
marlon-erler
2024-07-28 13:15:15 +02:00
parent 61b15cecee
commit df8a17eb75
4 changed files with 12 additions and 6 deletions
+6 -3
View File
@@ -426,7 +426,7 @@
function getLocalStorageItemAndClear(key) { function getLocalStorageItemAndClear(key) {
const value = localStorage.getItem(key); const value = localStorage.getItem(key);
localStorage.removeItem(key); localStorage.removeItem(key);
console.log(localStorage.getItem(key)); if (value != null) localStorage.setItem(`_${key}`, value);
return value; return value;
} }
function stringify(data) { function stringify(data) {
@@ -2049,7 +2049,7 @@
}; };
applySearch = () => { applySearch = () => {
this.appliedQuery.value = this.searchInput.value; this.appliedQuery.value = this.searchInput.value;
console.log("applying search"); console.trace("applying search");
this.matchingObjects.clear(); this.matchingObjects.clear();
for (const object of this.allObjects.value.values()) { for (const object of this.allObjects.value.values()) {
const doesMatch = this.checkDoesMatchSearch(object); const doesMatch = this.checkDoesMatchSearch(object);
@@ -2124,6 +2124,7 @@
this.searchViewModel.appliedQuery.subscribeSilent((newQuery) => { this.searchViewModel.appliedQuery.subscribeSilent((newQuery) => {
this.handleNewSearch(newQuery); this.handleNewSearch(newQuery);
}); });
this.restoreSearch();
} }
storageModel; storageModel;
boardsAndTasksModel; boardsAndTasksModel;
@@ -2282,9 +2283,11 @@
const dirPath = this.getPreviousSearchesPath(); const dirPath = this.getPreviousSearchesPath();
const searches = this.storageModel.list(dirPath); const searches = this.storageModel.list(dirPath);
this.coreViewModel.boardSearchSuggestions.add(...searches); this.coreViewModel.boardSearchSuggestions.add(...searches);
};
restoreSearch = () => {
const lastSearchPath = this.getLastSearchPath(); const lastSearchPath = this.getLastSearchPath();
const lastSearch = this.storageModel.read(lastSearchPath); const lastSearch = this.storageModel.read(lastSearchPath);
if (lastSearch) { if (lastSearch != null) {
this.searchViewModel.search(lastSearch); this.searchViewModel.search(lastSearch);
} }
}; };
+1 -1
View File
@@ -223,7 +223,7 @@ export class IndexManager<T> {
export function getLocalStorageItemAndClear(key: string): string | null { export function getLocalStorageItemAndClear(key: string): string | null {
const value: string | null = localStorage.getItem(key); const value: string | null = localStorage.getItem(key);
localStorage.removeItem(key); localStorage.removeItem(key);
console.log(localStorage.getItem(key)); if (value != null) localStorage.setItem(`_${key}`, value);
return value; return value;
} }
+4 -1
View File
@@ -214,10 +214,12 @@ export default class BoardViewModel extends TaskContainingPageViewModel {
const dirPath: string[] = this.getPreviousSearchesPath(); const dirPath: string[] = this.getPreviousSearchesPath();
const searches: string[] = this.storageModel.list(dirPath); const searches: string[] = this.storageModel.list(dirPath);
this.coreViewModel.boardSearchSuggestions.add(...searches); this.coreViewModel.boardSearchSuggestions.add(...searches);
};
restoreSearch = (): void => {
const lastSearchPath: string[] = this.getLastSearchPath(); const lastSearchPath: string[] = this.getLastSearchPath();
const lastSearch: string | null = this.storageModel.read(lastSearchPath); const lastSearch: string | null = this.storageModel.read(lastSearchPath);
if (lastSearch) { if (lastSearch != null) {
this.searchViewModel.search(lastSearch); this.searchViewModel.search(lastSearch);
} }
}; };
@@ -282,6 +284,7 @@ export default class BoardViewModel extends TaskContainingPageViewModel {
this.searchViewModel.appliedQuery.subscribeSilent((newQuery) => { this.searchViewModel.appliedQuery.subscribeSilent((newQuery) => {
this.handleNewSearch(newQuery); this.handleNewSearch(newQuery);
}); });
this.restoreSearch();
} }
} }
+1 -1
View File
@@ -28,7 +28,7 @@ export default class SearchViewModel<T> {
applySearch = (): void => { applySearch = (): void => {
this.appliedQuery.value = this.searchInput.value; this.appliedQuery.value = this.searchInput.value;
console.log("applying search"); console.trace("applying search");
this.matchingObjects.clear(); this.matchingObjects.clear();
for (const object of this.allObjects.value.values()) { for (const object of this.allObjects.value.values()) {