diff --git a/src/services/database/friendLogHistory.js b/src/services/database/friendLogHistory.js index bdcf868c..766c6945 100644 --- a/src/services/database/friendLogHistory.js +++ b/src/services/database/friendLogHistory.js @@ -116,13 +116,27 @@ const friendLogHistory = { return friendLogHistory; }, - deleteFriendLogHistory(rowId) { - sqliteService.executeNonQuery( - `DELETE FROM ${dbVars.userPrefix}_friend_log_history WHERE id = @row_id`, - { - '@row_id': rowId - } - ); + // https://github.com/vrcx-team/VRCX/issues/1262 + deleteFriendLogHistory(entry) { + if (entry.rowId != null) { + sqliteService.executeNonQuery( + `DELETE FROM ${dbVars.userPrefix}_friend_log_history WHERE id = @row_id`, + { + '@row_id': entry.rowId + } + ); + } else { + // Entries created in-session don't have a rowId yet; + // fall back to composite key so the DB row is still removed. + sqliteService.executeNonQuery( + `DELETE FROM ${dbVars.userPrefix}_friend_log_history WHERE created_at = @created_at AND type = @type AND user_id = @user_id`, + { + '@created_at': entry.created_at, + '@type': entry.type, + '@user_id': entry.userId + } + ); + } } }; diff --git a/src/views/FriendLog/FriendLog.vue b/src/views/FriendLog/FriendLog.vue index dd0c2752..baa8b668 100644 --- a/src/views/FriendLog/FriendLog.vue +++ b/src/views/FriendLog/FriendLog.vue @@ -161,7 +161,7 @@ */ function deleteFriendLog(row) { removeFromArray(friendLogTable.value.data, row); - database.deleteFriendLogHistory(row.rowId); + database.deleteFriendLogHistory(row); } const columns = createColumns({ diff --git a/src/views/FriendLog/__tests__/FriendLog.test.js b/src/views/FriendLog/__tests__/FriendLog.test.js index b87013eb..f892a4e1 100644 --- a/src/views/FriendLog/__tests__/FriendLog.test.js +++ b/src/views/FriendLog/__tests__/FriendLog.test.js @@ -206,7 +206,7 @@ describe('FriendLog.vue', () => { mocks.friendLogTable.value.data, row ); - expect(mocks.deleteFriendLogHistory).toHaveBeenCalledWith(55); + expect(mocks.deleteFriendLogHistory).toHaveBeenCalledWith(row); }); test('resets page index when page size changes', async () => {