From 2419fbf08bce55ea946f5eca5cdc07dca3d9a40d Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Sat, 30 Jan 2021 19:29:24 +1300 Subject: [PATCH] Change self_blocked_status to include timeline Disabled by default, enable in the usual way. --- src/lib/collectors.js | 20 +++++++++++++++----- src/lib/constants.js | 10 ++++++++-- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/lib/collectors.js b/src/lib/collectors.js index 5de17b2..5fea0dd 100644 --- a/src/lib/collectors.js +++ b/src/lib/collectors.js @@ -86,10 +86,11 @@ async function fetchUser(username, context) { * @returns {Promise<{user: import("./structures/User"), quotaUsed: number}>} */ function fetchUserFromHTML(username) { - if (constants.caching.self_blocked_status.enabled) { + const blockedCacheConfig = constants.caching.self_blocked_status.user_html + if (blockedCacheConfig) { if (history.store.has("user")) { const entry = history.store.get("user") - if (!entry.lastRequestSuccessful && Date.now() < entry.lastRequestAt + constants.caching.self_blocked_status.time) { + if (!entry.lastRequestSuccessful && Date.now() < entry.lastRequestAt + blockedCacheConfig.time) { return Promise.reject(constants.symbols.RATE_LIMITED) } } @@ -271,6 +272,15 @@ function fetchUserFromSaved(saved) { * @returns {Promise<{result: import("./types").PagedEdges, fromCache: boolean}>} */ function fetchTimelinePage(userID, after) { + const blockedCacheConfig = constants.caching.self_blocked_status.timeline_graphql + if (blockedCacheConfig) { + if (history.store.has("timeline")) { + const entry = history.store.get("timeline") + if (!entry.lastRequestSuccessful && Date.now() < entry.lastRequestAt + blockedCacheConfig.time) { + return Promise.reject(constants.symbols.RATE_LIMITED) + } + } + } const p = new URLSearchParams() p.set("query_hash", constants.external.timeline_query_hash) p.set("variables", JSON.stringify({ @@ -294,7 +304,7 @@ function fetchTimelinePage(userID, after) { history.report("timeline", true) return timeline }).catch(error => { - if (error === constants.symbols.RATE_LIMITED) { + if (error === constants.symbols.RATE_LIMITED || error === constants.symbols.INSTAGRAM_BLOCK_TYPE_DECEMBER) { history.report("timeline", false) } throw error @@ -326,7 +336,7 @@ function fetchIGTVPage(userID, after) { history.report("igtv", true) return timeline }).catch(error => { - if (error === constants.symbols.RATE_LIMITED) { + if (error === constants.symbols.RATE_LIMITED || error === constants.symbols.INSTAGRAM_BLOCK_TYPE_DECEMBER) { history.report("igtv", false) } throw error @@ -430,7 +440,7 @@ function fetchShortcodeData(shortcode) { return data } }).catch(error => { - if (error === constants.symbols.RATE_LIMITED) { + if (error === constants.symbols.RATE_LIMITED || error === constants.symbols.INSTAGRAM_BLOCK_TYPE_DECEMBER) { history.report("post", false) } throw error diff --git a/src/lib/constants.js b/src/lib/constants.js index 4d7a1d9..1b409b3 100644 --- a/src/lib/constants.js +++ b/src/lib/constants.js @@ -216,8 +216,14 @@ let constants = { cache_sweep_interval: 3*60*1000, csrf_time: 60*60*1000, self_blocked_status: { - enabled: true, - time: 2*60*60*1000, + user_html: { + enabled: false, + time: 15*60*1000 + }, + timeline_graphql: { + enabled: false, + time: 24*60*60*1000 + } }, db_user_id: true, db_post_n3: false,