Local API: Return everything when since=0

Addresses #5011 (option A)
This commit is contained in:
Abe Jellinek 2025-01-28 10:39:43 -05:00
parent 2aee7ae8d5
commit 2a7f4fb2a5
2 changed files with 12 additions and 7 deletions

View file

@ -139,7 +139,9 @@ class LocalAPIEndpoint {
if (Number.isNaN(since)) {
return this.makeResponse(400, 'text/plain', `Invalid 'since' value '${requestData.searchParams.get('since')}'`);
}
response.data = response.data.filter(dataObject => dataObject.version > since);
if (since !== 0) {
response.data = response.data.filter(dataObject => dataObject.version > since);
}
}
if (dataIsArray && response.data.length > 1) {
@ -215,9 +217,12 @@ class LocalAPIEndpoint {
if (lastModifiedVersion !== undefined) {
headers['Last-Modified-Version'] = lastModifiedVersion;
}
if (requestData.headers['If-Modified-Since-Version']
&& lastModifiedVersion <= parseInt(requestData.headers['If-Modified-Since-Version'])) {
return this.makeResponse(304, headers, '');
let ifModifiedSinceVersion = requestData.headers['If-Modified-Since-Version'];
if (ifModifiedSinceVersion) {
ifModifiedSinceVersion = parseInt(ifModifiedSinceVersion);
if (ifModifiedSinceVersion !== 0 && lastModifiedVersion <= ifModifiedSinceVersion) {
return this.makeResponse(304, headers, '');
}
}
return this.makeDataObjectResponse(requestData, response.data, headers);
}
@ -792,7 +797,7 @@ Zotero.Server.LocalAPI.FullText = class extends LocalAPIEndpoint {
let rows = await Zotero.DB.queryAsync(
"SELECT I.key, FI.version "
+ "FROM fulltextItems FI JOIN items I USING (itemID) "
+ "WHERE libraryID=? AND FI.version>?",
+ "WHERE libraryID=?1 AND (?2=0 OR FI.version>?2)",
[libraryID, since]
);
let obj = {};

View file

@ -271,7 +271,7 @@ describe("Local API Server", function () {
let { response: response1 } = await apiGet('/users/0/items?since=' + Zotero.Libraries.userLibrary.libraryVersion);
assert.isEmpty(response1);
let { response: response2 } = await apiGet('/users/0/items?since=-1');
let { response: response2 } = await apiGet('/users/0/items?since=0');
assert.lengthOf(response2, allItems.length);
});
});
@ -302,7 +302,7 @@ describe("Local API Server", function () {
describe("<userOrGroupPrefix>/fulltext?since=", function () {
it("should return items with full-text content", async function () {
let { response } = await apiGet('/users/0/fulltext?since=-1');
let { response } = await apiGet('/users/0/fulltext?since=0');
assert.deepEqual(Object.entries(response), [[subcollectionAttachment.key, subcollectionAttachment.version]]);
});
});