diff --git a/src/service/database/feed.js b/src/service/database/feed.js index 422e7358..882b674b 100644 --- a/src/service/database/feed.js +++ b/src/service/database/feed.js @@ -22,7 +22,7 @@ const feed = { groupName: dbRow[8] }; feedDatabase.push(row); - }, `SELECT * FROM ${dbVars.userPrefix}_feed_gps WHERE created_at >= date('${dateOffset}') ORDER BY id DESC`); + }, `SELECT * FROM ${dbVars.userPrefix}_feed_gps WHERE created_at >= date('${dateOffset}') ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`); await sqliteService.execute((dbRow) => { var row = { rowId: dbRow[0], @@ -36,7 +36,7 @@ const feed = { previousStatusDescription: dbRow[7] }; feedDatabase.push(row); - }, `SELECT * FROM ${dbVars.userPrefix}_feed_status WHERE created_at >= date('${dateOffset}') ORDER BY id DESC`); + }, `SELECT * FROM ${dbVars.userPrefix}_feed_status WHERE created_at >= date('${dateOffset}') ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`); await sqliteService.execute((dbRow) => { var row = { rowId: dbRow[0], @@ -48,7 +48,7 @@ const feed = { previousBio: dbRow[5] }; feedDatabase.push(row); - }, `SELECT * FROM ${dbVars.userPrefix}_feed_bio WHERE created_at >= date('${dateOffset}') ORDER BY id DESC`); + }, `SELECT * FROM ${dbVars.userPrefix}_feed_bio WHERE created_at >= date('${dateOffset}') ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`); await sqliteService.execute((dbRow) => { var row = { rowId: dbRow[0], @@ -64,7 +64,7 @@ const feed = { previousCurrentAvatarThumbnailImageUrl: dbRow[9] }; feedDatabase.push(row); - }, `SELECT * FROM ${dbVars.userPrefix}_feed_avatar WHERE created_at >= date('${dateOffset}') ORDER BY id DESC`); + }, `SELECT * FROM ${dbVars.userPrefix}_feed_avatar WHERE created_at >= date('${dateOffset}') ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`); await sqliteService.execute((dbRow) => { var row = { rowId: dbRow[0], @@ -78,7 +78,7 @@ const feed = { groupName: dbRow[8] }; feedDatabase.push(row); - }, `SELECT * FROM ${dbVars.userPrefix}_feed_online_offline WHERE created_at >= date('${dateOffset}') ORDER BY id DESC`); + }, `SELECT * FROM ${dbVars.userPrefix}_feed_online_offline WHERE created_at >= date('${dateOffset}') ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`); var compareByCreatedAt = function (a, b) { var A = a.created_at; var B = b.created_at; @@ -91,6 +91,9 @@ const feed = { return 0; }; feedDatabase.sort(compareByCreatedAt); + if (feedDatabase.length > dbVars.maxTableSize) { + feedDatabase.splice(0, feedDatabase.length - dbVars.maxTableSize); + } return feedDatabase; }, diff --git a/src/service/database/gameLog.js b/src/service/database/gameLog.js index b6907b1b..4b3dd769 100644 --- a/src/service/database/gameLog.js +++ b/src/service/database/gameLog.js @@ -103,6 +103,12 @@ const gameLog = { return 0; }; gamelogDatabase.sort(compareByCreatedAt); + if (gamelogDatabase.length > dbVars.maxTableSize) { + gamelogDatabase.splice( + 0, + gamelogDatabase.length - dbVars.maxTableSize + ); + } return gamelogDatabase; }, diff --git a/src/stores/feed.js b/src/stores/feed.js index 59dcd0ac..15b0bcc1 100644 --- a/src/stores/feed.js +++ b/src/stores/feed.js @@ -173,9 +173,7 @@ export const useFeedStore = defineStore('Feed', () => { function addFeed(feed) { notificationStore.queueFeedNoty(feed); feedSessionTable.value.push(feed); - if (feedSessionTable.value.length > vrcxStore.maxTableSize + 50) { - feedSessionTable.value.splice(0, 50); - } + sweepFeedSessionTable(); sharedFeedStore.updateSharedFeed(false); if ( feedTable.value.filter.length > 0 && @@ -197,29 +195,48 @@ export const useFeedStore = defineStore('Feed', () => { UiStore.notifyMenu('feed'); } - function sweepFeed() { - let limit; - const { data } = feedTable.value; - const j = data.length; - if (j > vrcxStore.maxTableSize) { - data.splice(0, j - vrcxStore.maxTableSize); + function sweepFeedSessionTable() { + const data = feedSessionTable.value; + const k = data.length; + if (!k) { + return; } + // 24 hour limit const date = new Date(); - date.setDate(date.getDate() - 1); // 24 hour limit - limit = date.toJSON(); - let i = 0; - const k = feedSessionTable.value.length; - while (i < k && feedSessionTable.value[i].created_at < limit) { - ++i; + date.setDate(date.getDate() - 1); + const limit = date.toJSON(); + + if (data[0].created_at < limit) { + let i = 0; + while (i < k && data[i].created_at < limit) { + ++i; + } + if (i === k) { + feedSessionTable.value = []; + return; + } + if (i) { + data.splice(0, i); + } } - if (i === k) { - feedSessionTable.value = []; - } else if (i) { - feedSessionTable.value.splice(0, i); + + const maxLen = Math.floor(vrcxStore.maxTableSize * 1.5); + if (maxLen > 0 && data.length > maxLen + 100) { + data.splice(0, 100); } } + function sweepFeed() { + const { data } = feedTable.value; + const j = data.length; + if (j > vrcxStore.maxTableSize + 50) { + data.splice(0, 50); + } + + sweepFeedSessionTable(); + } + async function initFeedTable() { feedTable.value.loading = true; diff --git a/src/stores/gameLog.js b/src/stores/gameLog.js index 3e109338..3e2eaa79 100644 --- a/src/stores/gameLog.js +++ b/src/stores/gameLog.js @@ -430,7 +430,7 @@ export const useGameLogStore = defineStore('GameLog', () => { const maxLen = Math.floor(vrcxStore.maxTableSize * 1.5); if (maxLen > 0 && data.length > maxLen + 100) { - data.splice(0, data.length - maxLen); + data.splice(0, 100); } } @@ -1369,6 +1369,7 @@ export const useGameLogStore = defineStore('GameLog', () => { async function getGameLogTable() { await database.initTables(); gameLogSessionTable.value = await database.getGamelogDatabase(); + sweepGameLogSessionTable(); const dateTill = await database.getLastDateGameLogDatabase(); updateGameLog(dateTill); }