From ed57c386db34d8693ca75311972d0929ebe5f488 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 01 Jun 2026 22:23:19 +0000
Subject: [PATCH] =Added some more Schema classes, allowed for override of array in outputSchema for complex schema, as for timeline post types
---
assets/js/concise/DataStore.js | 51 +++++++++++++++++++++++++++++++++++----------------
1 files changed, 35 insertions(+), 16 deletions(-)
diff --git a/assets/js/concise/DataStore.js b/assets/js/concise/DataStore.js
index 7948f97..284c913 100644
--- a/assets/js/concise/DataStore.js
+++ b/assets/js/concise/DataStore.js
@@ -85,6 +85,8 @@
ignore: [], //any filters to ignore when filtering store locally
required: null,
+ isAuth: false,
+
// Cache
TTL: 3600000, // 1 hour
useHttpCaching: true,
@@ -542,11 +544,27 @@
const controller = new AbortController();
store.currentRequest = controller;
- const response = await fetch(url, {
- method: 'GET',
- headers,
- signal: controller.signal
- });
+ let response;
+ if (store.isAuth) {
+ response = await window.auth.fetch(url, {
+ method: 'GET',
+ headers,
+ signal: controller.signal
+ });
+ } else {
+ response = await fetch(url, {
+ method: 'GET',
+ headers,
+ signal: controller.signal
+ });
+ }
+
+ if (!response.ok) {
+ // Access the error details from the response body
+ const errorBody = await response.text();
+ // Throw a new error with a descriptive message
+ throw new Error(`HTTP error! status: ${response.status}, message: ${errorBody}`);
+ }
if (response.status === 304) {
// 304 means "Not Modified" - use cached data if available
@@ -581,7 +599,6 @@
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
}
-
const data = await response.json();
await this.processFetchedData(name, data, cacheKey, response);
@@ -597,7 +614,8 @@
const isAbortError = error?.name === 'AbortError';
if (!isAbortError) {
- console.error(`Fetch error for store "${name}":`, error);
+ console.error(`Fetch error for store "${name}":`, error.message);
+ console.dir(error);
this.notify(name, 'fetch-error', { error });
throw error;
}
@@ -903,6 +921,7 @@
if (type === 'object') {
const processed = {};
for (const [key, value] of Object.entries(obj)) {
+ if (value === undefined) continue;
const result = this.processForStorage(value, validate, `${path}.${key}`);
if (!result.valid) return result;
// Include null values, skip undefined
@@ -1108,7 +1127,12 @@
// Handle other filters
for (const [key, value] of Object.entries(store.filters)) {
- if (key === 'taxonomy') continue;
+ if (key === 'taxonomy') {
+ if (typeof value === 'string' && !value.includes(',')) {
+ filterPredicates.push(item => item.taxonomy === value);
+ }
+ continue;
+ }
if (store.ignoreFilters.has(key)) {
continue;
}
@@ -1266,14 +1290,9 @@
}
if (store.lastResponse.has_more === false) {
- // Check if new filters are a subset of what we have
- const isSubsetFilter = Object.entries(updates).every(([key, value]) => {
- if (store.ignoreFilters.has(key)) return true;
- if (key === 'page') return true; // Handle pagination locally
- return true; // We have all data, can filter locally
- });
-
- if (isSubsetFilter) return false;
+ if (this.hasCompleteData(store, store.filters)) {
+ return false;
+ }
}
if ('page' in updates) {
--
Gitblit v1.10.0