-
+
{{ filteredHistoryGroupIndex }}
@@ -68,15 +101,6 @@
/>
-
-
-
- {{ t("state.nothing_found") }} "{{ filterText }}"
-
-
+
+
+
+ {{ t("state.nothing_found") }} "{{ filterText || filterSelection }}"
+
+ {
+ filterText = ''
+ filterSelection = 'ALL'
+ }
+ "
+ />
+
)
)
+const filters = computed(() => [
+ { value: "ALL" as const, label: t("filter.all") },
+ { value: "STARRED" as const, label: t("filter.starred") },
+])
+
+type FilterMode = typeof filters["value"][number]["value"]
+
+const filterSelection = ref("ALL")
+
+const groups = computed(() => [
+ { value: "TIME" as const, label: t("group.time") },
+ { value: "URL" as const, label: t("group.url") },
+])
+
+type GroupMode = typeof groups["value"][number]["value"]
+
+const groupSelection = ref("TIME")
+
const filteredHistoryGroups = computed(() =>
- groupBy(filteredHistory.value, (entry) => entry.timeAgo.value)
+ groupBy(
+ filter(filteredHistory.value, (input) =>
+ filterSelection.value === "STARRED" ? input.entry.star : true
+ ),
+ (input) =>
+ groupSelection.value === "TIME"
+ ? input.timeAgo.value
+ : getAppropriateURL(input.entry)
+ )
)
+const getAppropriateURL = (entry: HistoryEntry) => {
+ if (props.page === "rest") {
+ return (entry.request as HoppRESTRequest).endpoint
+ } else if (props.page === "graphql") {
+ return (entry.request as HoppGQLRequest).url
+ }
+}
+
const clearHistory = () => {
if (props.page === "rest") clearRESTHistory()
else clearGraphqlHistory()
diff --git a/packages/hoppscotch-app/src/components/lenses/renderers/JSONLensRenderer.vue b/packages/hoppscotch-app/src/components/lenses/renderers/JSONLensRenderer.vue
index 362a555e1..774dd544b 100644
--- a/packages/hoppscotch-app/src/components/lenses/renderers/JSONLensRenderer.vue
+++ b/packages/hoppscotch-app/src/components/lenses/renderers/JSONLensRenderer.vue
@@ -21,7 +21,7 @@