mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-29 11:43:48 +02:00
Rewrite shared feed
This commit is contained in:
@@ -177,7 +177,12 @@ const feed = {
|
||||
);
|
||||
},
|
||||
|
||||
async lookupFeedDatabase(search, filters, vipList) {
|
||||
async lookupFeedDatabase(
|
||||
search,
|
||||
filters,
|
||||
vipList,
|
||||
maxEntries = dbVars.maxTableSize
|
||||
) {
|
||||
search = search.replaceAll("'", "''");
|
||||
if (search.startsWith('wrld_') || search.startsWith('grp_')) {
|
||||
return this.getFeedByInstanceId(search, filters, vipList);
|
||||
@@ -247,7 +252,7 @@ const feed = {
|
||||
groupName: dbRow[8]
|
||||
};
|
||||
feedDatabase.push(row);
|
||||
}, `SELECT * FROM ${dbVars.userPrefix}_feed_gps WHERE (display_name LIKE '%${search}%' OR world_name LIKE '%${search}%' OR group_name LIKE '%${search}%') ${vipQuery} ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
|
||||
}, `SELECT * FROM ${dbVars.userPrefix}_feed_gps WHERE (display_name LIKE '%${search}%' OR world_name LIKE '%${search}%' OR group_name LIKE '%${search}%') ${vipQuery} ORDER BY id DESC LIMIT ${maxEntries}`);
|
||||
}
|
||||
if (status) {
|
||||
await sqliteService.execute((dbRow) => {
|
||||
@@ -263,7 +268,7 @@ const feed = {
|
||||
previousStatusDescription: dbRow[7]
|
||||
};
|
||||
feedDatabase.push(row);
|
||||
}, `SELECT * FROM ${dbVars.userPrefix}_feed_status WHERE (display_name LIKE '%${search}%' OR status LIKE '%${search}%' OR status_description LIKE '%${search}%') ${vipQuery} ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
|
||||
}, `SELECT * FROM ${dbVars.userPrefix}_feed_status WHERE (display_name LIKE '%${search}%' OR status LIKE '%${search}%' OR status_description LIKE '%${search}%') ${vipQuery} ORDER BY id DESC LIMIT ${maxEntries}`);
|
||||
}
|
||||
if (bio) {
|
||||
await sqliteService.execute((dbRow) => {
|
||||
@@ -277,7 +282,7 @@ const feed = {
|
||||
previousBio: dbRow[5]
|
||||
};
|
||||
feedDatabase.push(row);
|
||||
}, `SELECT * FROM ${dbVars.userPrefix}_feed_bio WHERE (display_name LIKE '%${search}%' OR bio LIKE '%${search}%') ${vipQuery} ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
|
||||
}, `SELECT * FROM ${dbVars.userPrefix}_feed_bio WHERE (display_name LIKE '%${search}%' OR bio LIKE '%${search}%') ${vipQuery} ORDER BY id DESC LIMIT ${maxEntries}`);
|
||||
}
|
||||
if (avatar) {
|
||||
var avatarQuery = '';
|
||||
@@ -301,7 +306,7 @@ const feed = {
|
||||
previousCurrentAvatarThumbnailImageUrl: dbRow[9]
|
||||
};
|
||||
feedDatabase.push(row);
|
||||
}, `SELECT * FROM ${dbVars.userPrefix}_feed_avatar WHERE ((display_name LIKE '%${search}%' OR avatar_name LIKE '%${search}%') ${avatarQuery}) ${vipQuery} ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
|
||||
}, `SELECT * FROM ${dbVars.userPrefix}_feed_avatar WHERE ((display_name LIKE '%${search}%' OR avatar_name LIKE '%${search}%') ${avatarQuery}) ${vipQuery} ORDER BY id DESC LIMIT ${maxEntries}`);
|
||||
}
|
||||
if (online || offline) {
|
||||
var query = '';
|
||||
@@ -325,7 +330,7 @@ const feed = {
|
||||
groupName: dbRow[8]
|
||||
};
|
||||
feedDatabase.push(row);
|
||||
}, `SELECT * FROM ${dbVars.userPrefix}_feed_online_offline WHERE ((display_name LIKE '%${search}%' OR world_name LIKE '%${search}%' OR group_name LIKE '%${search}%') ${query}) ${vipQuery} ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
|
||||
}, `SELECT * FROM ${dbVars.userPrefix}_feed_online_offline WHERE ((display_name LIKE '%${search}%' OR world_name LIKE '%${search}%' OR group_name LIKE '%${search}%') ${query}) ${vipQuery} ORDER BY id DESC LIMIT ${maxEntries}`);
|
||||
}
|
||||
var compareByCreatedAt = function (a, b) {
|
||||
var A = a.created_at;
|
||||
@@ -339,8 +344,8 @@ const feed = {
|
||||
return 0;
|
||||
};
|
||||
feedDatabase.sort(compareByCreatedAt);
|
||||
if (feedDatabase.length > dbVars.maxTableSize) {
|
||||
feedDatabase.splice(0, feedDatabase.length - dbVars.maxTableSize);
|
||||
if (feedDatabase.length > maxEntries) {
|
||||
feedDatabase.splice(0, feedDatabase.length - maxEntries);
|
||||
}
|
||||
return feedDatabase;
|
||||
},
|
||||
|
||||
@@ -671,7 +671,12 @@ const gameLog = {
|
||||
* @returns {Promise<any[]>} The game log data
|
||||
*/
|
||||
|
||||
async lookupGameLogDatabase(search, filters, vipList = []) {
|
||||
async lookupGameLogDatabase(
|
||||
search,
|
||||
filters,
|
||||
vipList,
|
||||
maxEntries = dbVars.maxTableSize
|
||||
) {
|
||||
search = search.replaceAll("'", "''");
|
||||
if (search.startsWith('wrld_') || search.startsWith('grp_')) {
|
||||
return this.getGameLogByLocation(search, filters);
|
||||
@@ -752,7 +757,7 @@ const gameLog = {
|
||||
groupName: dbRow[6]
|
||||
};
|
||||
gamelogDatabase.push(row);
|
||||
}, `SELECT * FROM gamelog_location WHERE world_name LIKE '%${search}%' OR group_name LIKE '%${search}%' ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
|
||||
}, `SELECT * FROM gamelog_location WHERE world_name LIKE '%${search}%' OR group_name LIKE '%${search}%' ORDER BY id DESC LIMIT ${maxEntries}`);
|
||||
}
|
||||
if (onplayerjoined || onplayerleft) {
|
||||
var query = '';
|
||||
@@ -774,7 +779,7 @@ const gameLog = {
|
||||
time: dbRow[6]
|
||||
};
|
||||
gamelogDatabase.push(row);
|
||||
}, `SELECT * FROM gamelog_join_leave WHERE (display_name LIKE '%${search}%' AND user_id != '${dbVars.userId}') ${vipQuery} ${query} ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
|
||||
}, `SELECT * FROM gamelog_join_leave WHERE (display_name LIKE '%${search}%' AND user_id != '${dbVars.userId}') ${vipQuery} ${query} ORDER BY id DESC LIMIT ${maxEntries}`);
|
||||
}
|
||||
if (portalspawn) {
|
||||
await sqliteService.execute((dbRow) => {
|
||||
@@ -789,7 +794,7 @@ const gameLog = {
|
||||
worldName: dbRow[6]
|
||||
};
|
||||
gamelogDatabase.push(row);
|
||||
}, `SELECT * FROM gamelog_portal_spawn WHERE (display_name LIKE '%${search}%' OR world_name LIKE '%${search}%') ${vipQuery} ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
|
||||
}, `SELECT * FROM gamelog_portal_spawn WHERE (display_name LIKE '%${search}%' OR world_name LIKE '%${search}%') ${vipQuery} ORDER BY id DESC LIMIT ${maxEntries}`);
|
||||
}
|
||||
if (msgevent) {
|
||||
await sqliteService.execute((dbRow) => {
|
||||
@@ -800,7 +805,7 @@ const gameLog = {
|
||||
data: dbRow[2]
|
||||
};
|
||||
gamelogDatabase.push(row);
|
||||
}, `SELECT * FROM gamelog_event WHERE data LIKE '%${search}%' ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
|
||||
}, `SELECT * FROM gamelog_event WHERE data LIKE '%${search}%' ORDER BY id DESC LIMIT ${maxEntries}`);
|
||||
}
|
||||
if (external) {
|
||||
await sqliteService.execute((dbRow) => {
|
||||
@@ -814,7 +819,7 @@ const gameLog = {
|
||||
location: dbRow[5]
|
||||
};
|
||||
gamelogDatabase.push(row);
|
||||
}, `SELECT * FROM gamelog_external WHERE (display_name LIKE '%${search}%' OR message LIKE '%${search}%') ${vipQuery} ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
|
||||
}, `SELECT * FROM gamelog_external WHERE (display_name LIKE '%${search}%' OR message LIKE '%${search}%') ${vipQuery} ORDER BY id DESC LIMIT ${maxEntries}`);
|
||||
}
|
||||
if (videoplay) {
|
||||
await sqliteService.execute((dbRow) => {
|
||||
@@ -830,7 +835,7 @@ const gameLog = {
|
||||
userId: dbRow[7]
|
||||
};
|
||||
gamelogDatabase.push(row);
|
||||
}, `SELECT * FROM gamelog_video_play WHERE (video_url LIKE '%${search}%' OR video_name LIKE '%${search}%' OR display_name LIKE '%${search}%') ${vipQuery} ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
|
||||
}, `SELECT * FROM gamelog_video_play WHERE (video_url LIKE '%${search}%' OR video_name LIKE '%${search}%' OR display_name LIKE '%${search}%') ${vipQuery} ORDER BY id DESC LIMIT ${maxEntries}`);
|
||||
}
|
||||
if (resourceload_string || resourceload_image) {
|
||||
var checkString = '';
|
||||
@@ -850,7 +855,7 @@ const gameLog = {
|
||||
location: dbRow[4]
|
||||
};
|
||||
gamelogDatabase.push(row);
|
||||
}, `SELECT * FROM gamelog_resource_load WHERE resource_url LIKE '%${search}%' ${checkString} ${checkImage} ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
|
||||
}, `SELECT * FROM gamelog_resource_load WHERE resource_url LIKE '%${search}%' ${checkString} ${checkImage} ORDER BY id DESC LIMIT ${maxEntries}`);
|
||||
}
|
||||
var compareByCreatedAt = function (a, b) {
|
||||
var A = a.created_at;
|
||||
@@ -864,7 +869,9 @@ const gameLog = {
|
||||
return 0;
|
||||
};
|
||||
gamelogDatabase.sort(compareByCreatedAt);
|
||||
gamelogDatabase.splice(0, gamelogDatabase.length - dbVars.maxTableSize);
|
||||
if (gamelogDatabase.length > maxEntries) {
|
||||
gamelogDatabase.splice(0, gamelogDatabase.length - maxEntries);
|
||||
}
|
||||
return gamelogDatabase;
|
||||
},
|
||||
|
||||
|
||||
@@ -21,17 +21,63 @@ const notifications = {
|
||||
inviteMessage: dbRow[10],
|
||||
requestMessage: dbRow[11],
|
||||
responseMessage: dbRow[12]
|
||||
}
|
||||
},
|
||||
$isExpired: dbRow[13] === 1
|
||||
};
|
||||
row.$isExpired = false;
|
||||
if (dbRow[13] === 1) {
|
||||
row.$isExpired = true;
|
||||
}
|
||||
notifications.unshift(row);
|
||||
}, `SELECT * FROM ${dbVars.userPrefix}_notifications ORDER BY created_at DESC LIMIT ${dbVars.maxTableSize}`);
|
||||
return notifications;
|
||||
},
|
||||
|
||||
async lookupNotificationDatabase(
|
||||
search,
|
||||
filters,
|
||||
vipList,
|
||||
maxEntries = dbVars.maxTableSize
|
||||
) {
|
||||
search = search.replaceAll("'", "''");
|
||||
let notifications = [];
|
||||
|
||||
let vipQuery = '';
|
||||
if (vipList.length > 0) {
|
||||
const vipIds = vipList.map(
|
||||
(userId) => `'${userId.replaceAll("'", "''")}'`
|
||||
);
|
||||
vipQuery = `AND sender_user_id IN (${vipIds.join(',')})`;
|
||||
}
|
||||
|
||||
let filterQuery = '';
|
||||
if (filters.length > 0) {
|
||||
const filterTypes = filters.map(
|
||||
(type) => `'${type.replaceAll("'", "''")}'`
|
||||
);
|
||||
filterQuery = `AND type IN (${filterTypes.join(',')})`;
|
||||
}
|
||||
|
||||
await sqliteService.execute((dbRow) => {
|
||||
let row = {
|
||||
id: dbRow[0],
|
||||
created_at: dbRow[1],
|
||||
type: dbRow[2],
|
||||
senderUserId: dbRow[3],
|
||||
senderUsername: dbRow[4],
|
||||
receiverUserId: dbRow[5],
|
||||
message: dbRow[6],
|
||||
details: {
|
||||
worldId: dbRow[7],
|
||||
worldName: dbRow[8],
|
||||
imageUrl: dbRow[9],
|
||||
inviteMessage: dbRow[10],
|
||||
requestMessage: dbRow[11],
|
||||
responseMessage: dbRow[12]
|
||||
},
|
||||
$isExpired: dbRow[13] === 1
|
||||
};
|
||||
notifications.unshift(row);
|
||||
}, `SELECT * FROM ${dbVars.userPrefix}_notifications WHERE (sender_username LIKE '%${search}%' OR message LIKE '%${search}%' OR world_name LIKE '%${search}%') ${vipQuery} ${filterQuery} ORDER BY created_at DESC LIMIT ${maxEntries}`);
|
||||
return notifications;
|
||||
},
|
||||
|
||||
addNotificationToDatabase(row) {
|
||||
var entry = {
|
||||
id: '',
|
||||
|
||||
@@ -573,7 +573,7 @@ function handlePipeline(args) {
|
||||
}
|
||||
notificationStore.queueNotificationNoty(noty);
|
||||
notificationStore.notificationTable.data.push(noty);
|
||||
sharedFeedStore.updateSharedFeed(true);
|
||||
sharedFeedStore.addEntry(noty);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user