Compare commits

...

3 Commits
v0.8 ... master

Author SHA1 Message Date
Dessa Simpson dd423bdb34 Fix empty subscriptions page crash
Fix issue where when Twitch returns an empty page of subscribers, the
app crashes due to trying to get response.data[0].user_id where
response.data[0] is undefined

Also adds some debug logging
2022-02-28 09:34:18 -07:00
Dessa Simpson ac953b0bb5 Uncomment debug lines 2022-02-27 17:36:55 -07:00
Dessa Simpson 90f672b288 Bump version to v0.8 2022-02-27 17:36:50 -07:00
6 changed files with 16 additions and 13 deletions

View File

@ -8,4 +8,4 @@ CREATE OR REPLACE FUNCTION get_version() RETURNS VARCHAR
AS $$SELECT major || '.' || minor FROM version $$
LANGUAGE SQL;
INSERT INTO version (major,minor) VALUES (0,7);
INSERT INTO version (major,minor) VALUES (0,8);

View File

@ -1,5 +1,7 @@
BEGIN;
UPDATE version SET minor = 8;
ALTER TABLE config
ALTER COLUMN normaluservotepoints SET DEFAULT 10,
ALTER COLUMN followervotepoints SET DEFAULT 50,
@ -30,5 +32,4 @@ CREATE OR REPLACE VIEW ratelimit_vw AS
)) AS ratelimit(reqcount);
ROLLBACK;
--COMMIT;
COMMIT;

View File

@ -9,8 +9,8 @@ export async function processBans(streamer: twitch.StreamerUserIdTokenPair) {
await dbconn.query("DELETE FROM bans");
var response = await twitch.streamerApiRequest(streamer,
`/moderation/banned?broadcaster_id=${streamer.userid}&first=100`);
//log(LogLevel.DEBUG,"Ban API response:")
//log(LogLevel.DEBUG,JSON.stringify(response,null,2));
log(LogLevel.DEBUG,"Ban API response:")
log(LogLevel.DEBUG,JSON.stringify(response,null,2));
while (true) {
var insertBanQuery = "INSERT INTO bans (userid) VALUES ";
var banRow = 0; // Used for $1, $2, etc. in parameterized query
@ -37,8 +37,8 @@ export async function processBans(streamer: twitch.StreamerUserIdTokenPair) {
var oldFirstUserid = response.data[0].user_id;
response = await twitch.streamerApiRequest(streamer,
`/moderation/banned?broadcaster_id=${streamer.userid}&after=${response.pagination.cursor}&first=100`);
//log(LogLevel.DEBUG,"Ban API response:");
//log(LogLevel.DEBUG,JSON.stringify(response,null,2));
log(LogLevel.DEBUG,"Ban API response:");
log(LogLevel.DEBUG,JSON.stringify(response,null,2));
// Work around broken api endpoint giving a cursor referring to the
// current page, causing an infinite loop
if (oldFirstUserid == response.data[0].user_id) break;

View File

@ -9,8 +9,8 @@ export async function processSubscriptions(streamer: twitch.StreamerUserIdTokenP
await dbconn.query("DELETE FROM subscriptions");
var response = await twitch.streamerApiRequest(streamer,
`/subscriptions?broadcaster_id=${streamer.userid}&first=100`);
//log(LogLevel.DEBUG,"Subscriptions API response:")
//log(LogLevel.DEBUG,JSON.stringify(response,null,2));
log(LogLevel.DEBUG,"Subscriptions API response:")
log(LogLevel.DEBUG,JSON.stringify(response,null,2));
while (true) {
var insertSubscriptionQuery = "INSERT INTO subscriptions (userid) VALUES ";
var subscriptionRow = 0; // Used for $1, $2, etc. in parameterized query
@ -35,9 +35,9 @@ export async function processSubscriptions(streamer: twitch.StreamerUserIdTokenP
var oldFirstUserid = response.data[0].user_id;
response = await twitch.streamerApiRequest(streamer,
`/subscriptions?broadcaster_id=${streamer.userid}&after=${response.pagination.cursor}&first=100`);
if (oldFirstUserid == response.data[0].user_id) break;
//log(LogLevel.DEBUG,"Subscription API response:");
//log(LogLevel.DEBUG,JSON.stringify(response,null,2));
log(LogLevel.DEBUG,"Subscription API response:");
log(LogLevel.DEBUG,JSON.stringify(response,null,2));
if (response.data.length === 0 || oldFirstUserid === response.data[0].user_id) break;
} else {
break;
}
@ -45,6 +45,7 @@ export async function processSubscriptions(streamer: twitch.StreamerUserIdTokenP
await dbconn.query("CALL update_scores()");
await dbconn.query('COMMIT');
} catch (e) {
log(LogLevel.ERROR,"cronjobs.processSubscriptions: Exception: " + e);
log(LogLevel.ERROR,"cronjobs.processSubscriptions: Exception thrown; rolling back");
await dbconn.query('ROLLBACK');
throw(e);

View File

@ -53,6 +53,7 @@ export async function apiRequest(tokens: TokenPair, endpoint: string): Promise <
return fetch("https://api.twitch.tv/helix" + endpoint, { headers: headers })
.then(async (res: FetchResponse) => {
if (res.status == 200) {
log(LogLevel.DEBUG,"twitch.apiRequest: Request returned 200 for " + endpoint);
return res.json();
} else {
log(LogLevel.WARNING,"twitch.apiRequest: Failed API request (pre-refresh):");

View File

@ -5,7 +5,7 @@ import pg from "pg";
import db from "./db";
var versionMajor = 0;
var versionMinor = 7;
var versionMinor = 8;
var versionPatch = 0;
export function getVersion() {