@@ -89,7 +89,7 @@ export class HistoryService {
8989 * concatenate results if this was a 'fetch more' request, or overwrite
9090 */
9191 let valueToPublish ;
92- if ( eq ( old . info . query , next . info . query ) && next . lastQueryParams ?. offset > 0 ) {
92+ if ( queryEq ( old . info . query , next . info . query ) && next . lastQueryParams ?. offset > 0 ) {
9393 const results = old . results . concat ( next . results ) ;
9494 valueToPublish = { info : next . info , results, lastQueryParams : next . lastQueryParams } ;
9595 } else {
@@ -134,6 +134,7 @@ export class HistoryService {
134134 query : lastquery ,
135135 limit : HistoryService . CHUNK_SIZE ,
136136 offset : this . data . results . length ,
137+ source : 'user' ,
137138 } ;
138139 this . internal . dispatchEvent ( new CustomEvent ( HistoryService . QUERY_EVENT , { detail : query } ) ) ;
139140 }
@@ -156,7 +157,7 @@ export class HistoryService {
156157 * @param {HistoryQuery } query
157158 */
158159 queryFetcher ( query ) {
159- console . log ( `🦻 [query] ${ JSON . stringify ( query . query ) } offset: ${ query . offset } , limit: ${ query . limit } ` ) ;
160+ console . log ( `🦻 [query] ${ JSON . stringify ( query . query ) } offset: ${ query . offset } , limit: ${ query . limit } source: ${ query . source } ` ) ;
160161 // eslint-disable-next-line promise/prefer-await-to-then
161162 return this . history . messaging . request ( 'query' , query ) . then ( ( resp ) => {
162163 return { info : resp . info , results : resp . value , lastQueryParams : query } ;
@@ -374,9 +375,10 @@ function deleteByIndexes(old, indexes) {
374375
375376/**
376377 * @param {URLSearchParams } params
378+ * @param {HistoryQuery['source'] } source
377379 * @return {HistoryQuery }
378380 */
379- export function paramsToQuery ( params ) {
381+ export function paramsToQuery ( params , source ) {
380382 /** @type {HistoryQuery['query'] | undefined } */
381383 let query ;
382384 const range = toRange ( params . get ( 'range' ) ) ;
@@ -396,6 +398,7 @@ export function paramsToQuery(params) {
396398 query,
397399 limit : HistoryService . CHUNK_SIZE ,
398400 offset : 0 ,
401+ source,
399402 } ;
400403}
401404
@@ -423,11 +426,27 @@ export function toRange(input) {
423426}
424427
425428/**
426- * @param {Record<string, any>|null|undefined } q1
427- * @param {Record<string, any> |null|undefined } q2
428- * @return {boolean }
429+ * @param {HistoryQuery } a
430+ * @param {HistoryQuery |null} [b]
431+ * @returns {boolean }
429432 */
430- function eq ( q1 , q2 ) {
431- if ( ! q1 || ! q2 ) return false ;
432- return JSON . stringify ( q1 ) === JSON . stringify ( q2 ) ;
433+ function eq ( a , b ) {
434+ if ( ! b ) return false ;
435+ if ( a . limit !== b . limit ) return false ;
436+ if ( a . offset !== b . offset ) return false ;
437+ if ( a . source !== b . source ) return false ;
438+ return queryEq ( a . query , b . query ) ;
439+ }
440+
441+ /**
442+ * @param {QueryKind } a
443+ * @param {QueryKind|null } [b]
444+ * @returns {boolean }
445+ */
446+ function queryEq ( a , b ) {
447+ if ( ! b ) return false ;
448+ const k1 = Object . keys ( a ) [ 0 ] ;
449+ const k2 = Object . keys ( b ) [ 0 ] ;
450+ if ( k1 === k2 && a [ k1 ] === b [ k2 ] ) return true ;
451+ return false ;
433452}
0 commit comments