From 62ce1351e4e76be2aa517abab92e416d8c3b9ebb Mon Sep 17 00:00:00 2001 From: Bernard Gatt Date: Wed, 28 Feb 2024 17:03:15 +0100 Subject: [PATCH] Added timestamp to Queue URL and Updated local store logic --- src/managers/message-manager.js | 12 ++++++++++-- src/managers/queue-manager.js | 15 ++++++++++++--- src/services/queue-service.js | 3 ++- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/managers/message-manager.js b/src/managers/message-manager.js index a834712..8b98ead 100644 --- a/src/managers/message-manager.js +++ b/src/managers/message-manager.js @@ -17,7 +17,7 @@ import { } from "./message-component-manager"; import { resolveMessageProperties } from "./gist-properties-manager"; import { positions, addPageElement } from "./page-component-manager"; -import { checkMessageQueue } from "./queue-manager"; +import { checkMessageQueue, updateQueueLocalStore, getMessagesFromLocalStore } from "./queue-manager"; var shownMessages = []; @@ -191,7 +191,7 @@ async function handleGistEvents(e) { log(`Engine render for message: ${currentMessage.messageId} timer elapsed in ${timeElapsed.toFixed(3)} seconds`); currentMessage.currentRoute = e.data.gist.parameters.route; if (currentMessage.firstLoad) { - shownMessages.push(currentMessage); + messageShown(currentMessage); if (currentMessage.overlay) { showOverlayComponent(currentMessage); } else { @@ -286,6 +286,14 @@ async function handleGistEvents(e) { } } +function messageShown(message) { + shownMessages.push(message); + var messagesInLocalStore = getMessagesFromLocalStore(); + if (messagesInLocalStore != null && messagesInLocalStore.length > 0) { + updateQueueLocalStore(messagesInLocalStore.filter(item => item.queueId !== message.queueId)); + } +} + export function hasMessageBeenShownBefore(message) { return shownMessages.find(msg => msg.queueId === message.queueId) !== undefined; } \ No newline at end of file diff --git a/src/managers/queue-manager.js b/src/managers/queue-manager.js index 9428f6d..6526064 100644 --- a/src/managers/queue-manager.js +++ b/src/managers/queue-manager.js @@ -88,13 +88,13 @@ export async function pullMessagesFromQueue() { var responseData = []; if (response) { if (response.status === 200 || response.status === 204) { - var expiryDate = new Date(new Date().getTime() + MESSAGES_LOCAL_STORE_CACHE_IN_MINUTES); - setKeyWithExpiryToLocalStore(userQueueLocalStoreName, response.data, expiryDate); + log("200 response, updating local store."); responseData = response.data; + updateQueueLocalStore(responseData); } else if (response.status === 304) { log("304 response, using local store."); - responseData = getKeyFromLocalStore(userQueueLocalStoreName); + responseData = getMessagesFromLocalStore(); } if (responseData && responseData.length > 0) { log(`Message queue checked for user ${getUserToken()}, ${responseData.length} messages found.`); @@ -116,4 +116,13 @@ export async function pullMessagesFromQueue() { } else { log(`User token reset, skipping queue check.`); } +} + +export function updateQueueLocalStore(messages) { + var expiryDate = new Date(new Date().getTime() + MESSAGES_LOCAL_STORE_CACHE_IN_MINUTES); + setKeyWithExpiryToLocalStore(userQueueLocalStoreName, messages, expiryDate); +} + +export function getMessagesFromLocalStore() { + return getKeyFromLocalStore(userQueueLocalStoreName); } \ No newline at end of file diff --git a/src/services/queue-service.js b/src/services/queue-service.js index 630204f..fca96df 100644 --- a/src/services/queue-service.js +++ b/src/services/queue-service.js @@ -11,8 +11,9 @@ export async function getUserQueue() { var response; try { if (!checkInProgress) { + var timestamp = new Date().getTime(); checkInProgress = true; - response = await UserNetworkInstance().post(`/api/v1/users`, {}); + response = await UserNetworkInstance().post(`/api/v1/users?timestamp=${timestamp}`, {}); } } catch (error) { if (error.response) {