diff --git a/app/web/src/App.svelte b/app/web/src/App.svelte
index 1376a2b..a72530e 100644
--- a/app/web/src/App.svelte
+++ b/app/web/src/App.svelte
@@ -12,7 +12,6 @@
import SprocketView from "./SprocketView.svelte";
import PolicyView from "./PolicyView.svelte";
import SearchResultsView from "./SearchResultsView.svelte";
- import FilterBuilder from "./FilterBuilder.svelte";
import FilterDisplay from "./FilterDisplay.svelte";
// Utility imports
@@ -56,8 +55,8 @@
let userSigner = null;
let showSettingsDrawer = false;
let selectedTab = localStorage.getItem("selectedTab") || "export";
- let showFilterBuilder = false; // Show advanced filter builder
- let searchQuery = "";
+ let showFilterBuilder = false; // Show filter builder in events view
+ let eventsViewFilter = {}; // Active filter for events view
let searchTabs = [];
let allEvents = [];
let selectedFile = null;
@@ -1796,27 +1795,8 @@
showSettingsDrawer = false;
}
- function toggleSearchMode() {
+ function toggleFilterBuilder() {
showFilterBuilder = !showFilterBuilder;
- if (!showFilterBuilder) {
- searchQuery = "";
- }
- }
-
- function handleSearchKeydown(event) {
- if (event.key === "Enter" && searchQuery.trim()) {
- createSimpleSearchTab(searchQuery.trim());
- searchQuery = "";
- showFilterBuilder = false;
- } else if (event.key === "Escape") {
- showFilterBuilder = false;
- searchQuery = "";
- }
- }
-
- function createSimpleSearchTab(query) {
- const filter = buildFilter({ searchText: query, limit: 100 });
- createSearchTab(filter, `Search: ${query}`);
}
function createSearchTab(filter, label) {
@@ -1846,7 +1826,8 @@
function handleFilterApply(event) {
const { searchText, selectedKinds, pubkeys, eventIds, tags, sinceTimestamp, untilTimestamp, limit } = event.detail;
-
+
+ // Build the filter for the events view
const filter = buildFilter({
searchText,
kinds: selectedKinds,
@@ -1858,22 +1839,15 @@
limit: limit || 100,
});
- let label = "Filter";
- if (searchText) {
- label = `Search: ${searchText.substring(0, 20)}${searchText.length > 20 ? '...' : ''}`;
- } else if (selectedKinds.length > 0) {
- label = `Kinds: ${selectedKinds.slice(0, 3).join(', ')}${selectedKinds.length > 3 ? '...' : ''}`;
- } else if (pubkeys.length > 0) {
- label = `Authors: ${pubkeys.length}`;
- }
-
- createSearchTab(filter, label);
- showFilterBuilder = false;
+ // Store the active filter and reload events with it
+ eventsViewFilter = filter;
+ loadAllEvents(true, null);
}
function handleFilterClear() {
- // Just close the filter builder
- showFilterBuilder = false;
+ // Clear the filter and reload all events
+ eventsViewFilter = {};
+ loadAllEvents(true, null);
}
function handleFilterSweep(searchTabId) {
@@ -2316,10 +2290,14 @@
? Math.floor(Date.now() / 1000)
: oldestEventTimestamp;
+ // Merge eventsViewFilter with pagination params
+ // eventsViewFilter takes precedence for authors if set, otherwise use the authors param
+ const filterAuthors = eventsViewFilter.authors || authors;
const events = await fetchAllEvents({
+ ...eventsViewFilter,
limit: reset ? 100 : 200,
- until: untilTimestamp,
- authors: authors,
+ until: eventsViewFilter.until || untilTimestamp,
+ authors: filterAuthors,
});
console.log("Received events:", events.length, "events");
if (authors && events.length > 0) {
@@ -2674,32 +2652,16 @@