Skip to content

Commit

Permalink
Merge pull request #47 from customerio/hotfix/local-store-fix
Browse files Browse the repository at this point in the history
Added timestamp to Queue URL and Updated local store logic
  • Loading branch information
BernardGatt committed Feb 29, 2024
2 parents e648691 + 62ce135 commit 2956de4
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 6 deletions.
12 changes: 10 additions & 2 deletions src/managers/message-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 = [];

Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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;
}
15 changes: 12 additions & 3 deletions src/managers/queue-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -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.`);
Expand All @@ -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);
}
3 changes: 2 additions & 1 deletion src/services/queue-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit 2956de4

Please sign in to comment.