/** * DO NOT EDIT THIS FILE. * See the following change record for more information, * https://www.drupal.org/node/2815083 * @preserve **/ (function ($, Drupal, drupalSettings, storage) { var currentUserID = parseInt(drupalSettings.user.uid, 10); var secondsIn30Days = 2592000; var thirtyDaysAgo = Math.round(new Date().getTime() / 1000) - secondsIn30Days; var embeddedLastReadTimestamps = false; if (drupalSettings.history && drupalSettings.history.lastReadTimestamps) { embeddedLastReadTimestamps = drupalSettings.history.lastReadTimestamps; } Drupal.history = { fetchTimestamps: function fetchTimestamps(nodeIDs, callback) { if (embeddedLastReadTimestamps) { callback(); return; } $.ajax({ url: Drupal.url('history/get_node_read_timestamps'), type: 'POST', data: { 'node_ids[]': nodeIDs }, dataType: 'json', success: function success(results) { Object.keys(results || {}).forEach(function (nodeID) { storage.setItem('Drupal.history.' + currentUserID + '.' + nodeID, results[nodeID]); }); callback(); } }); }, getLastRead: function getLastRead(nodeID) { if (embeddedLastReadTimestamps && embeddedLastReadTimestamps[nodeID]) { return parseInt(embeddedLastReadTimestamps[nodeID], 10); } return parseInt(storage.getItem('Drupal.history.' + currentUserID + '.' + nodeID) || 0, 10); }, markAsRead: function markAsRead(nodeID) { $.ajax({ url: Drupal.url('history/' + nodeID + '/read'), type: 'POST', dataType: 'json', success: function success(timestamp) { if (embeddedLastReadTimestamps && embeddedLastReadTimestamps[nodeID]) { return; } storage.setItem('Drupal.history.' + currentUserID + '.' + nodeID, timestamp); } }); }, needsServerCheck: function needsServerCheck(nodeID, contentTimestamp) { if (contentTimestamp < thirtyDaysAgo) { return false; } if (embeddedLastReadTimestamps && embeddedLastReadTimestamps[nodeID]) { return contentTimestamp > parseInt(embeddedLastReadTimestamps[nodeID], 10); } var minLastReadTimestamp = parseInt(storage.getItem('Drupal.history.' + currentUserID + '.' + nodeID) || 0, 10); return contentTimestamp > minLastReadTimestamp; } }; })(jQuery, Drupal, drupalSettings, window.localStorage);