Add Moderation Logs to shared feed

This commit is contained in:
Natsumi
2021-01-18 06:40:22 +13:00
parent 5c399d5f2f
commit 8cf966dcbc
4 changed files with 166 additions and 11 deletions
+43 -4
View File
@@ -2124,6 +2124,7 @@ speechSynthesis.getVoices();
API.$on('LOGIN', function () { API.$on('LOGIN', function () {
this.cachedPlayerModerations.clear(); this.cachedPlayerModerations.clear();
this.isPlayerModerationsLoading = false; this.isPlayerModerationsLoading = false;
this.refreshPlayerModerations();
}); });
API.$on('PLAYER-MODERATION', function (args) { API.$on('PLAYER-MODERATION', function (args) {
@@ -2229,6 +2230,11 @@ speechSynthesis.getVoices();
this.isPlayerModerationsLoading = false; this.isPlayerModerationsLoading = false;
}).then(() => { }).then(() => {
this.deleteExpiredPlayerModerations(); this.deleteExpiredPlayerModerations();
if (($app.playerModerationTable.data.length !== $app.playerModerationTable.lastRunLength) &&
($app.playerModerationTable.lastRunLength > 0)) {
$app.notifyMenu('moderation');
}
$app.playerModerationTable.lastRunLength = $app.playerModerationTable.data.length;
}); });
}; };
@@ -3411,6 +3417,11 @@ speechSynthesis.getVoices();
API.getCurrentUser().catch((err1) => { API.getCurrentUser().catch((err1) => {
throw err1; throw err1;
}); });
if (this.isGameRunning) {
API.refreshPlayerModerations().catch((err1) => {
throw err1;
});
}
} }
this.checkActiveFriends(); this.checkActiveFriends();
AppApi.CheckGameRunning().then(([isGameRunning, isGameNoVR]) => { AppApi.CheckGameRunning().then(([isGameRunning, isGameNoVR]) => {
@@ -3511,6 +3522,25 @@ speechSynthesis.getVoices();
++j; ++j;
} }
} }
var { data } = this.playerModerationTable;
var i = data.length;
var j = 0;
while (j < 10) {
if (i <= 0) {
break;
}
var ctx = data[--i];
// showAvatar, hideAvatar, block, mute, unmute
if (ctx.sourceUserId !== API.currentUser.id) {
arr.push({
...ctx,
created_at: ctx.created,
isFriend: this.friends.has(ctx.sourceUserId),
isFavorite: API.cachedFavoritesByObjectId.has(ctx.sourceUserId)
});
++j;
}
}
arr.sort(function (a, b) { arr.sort(function (a, b) {
if (a.created_at < b.created_at) { if (a.created_at < b.created_at) {
return 1; return 1;
@@ -4634,12 +4664,10 @@ speechSynthesis.getVoices();
if (API.isLoggedIn === true) { if (API.isLoggedIn === true) {
await this.updateGameLog(); await this.updateGameLog();
this.sweepGameLog(); this.sweepGameLog();
if (this.gameLogTable.data.length !== this.gameLogTable.lastRunLength) {
if (this.gameLogTable.data.length > this.gameLogTable.lastRunLength) {
this.notifyMenu('gameLog'); this.notifyMenu('gameLog');
} }
this.gameLogTable.lastRunLength = this.gameLogTable.data.length; this.gameLogTable.lastRunLength = this.gameLogTable.data.length;
this.updateSharedFeed(); this.updateSharedFeed();
} }
} catch (err) { } catch (err) {
@@ -5475,6 +5503,7 @@ speechSynthesis.getVoices();
$app.data.playerModerationTable = { $app.data.playerModerationTable = {
data: [], data: [],
lastRunLength: 0,
filters: [ filters: [
{ {
prop: 'type', prop: 'type',
@@ -5530,7 +5559,6 @@ speechSynthesis.getVoices();
} }
if (ref.$isDeleted === false) { if (ref.$isDeleted === false) {
$app.playerModerationTable.data.push(ref); $app.playerModerationTable.data.push(ref);
$app.notifyMenu('moderation');
} }
}); });
@@ -5801,6 +5829,11 @@ speechSynthesis.getVoices();
sharedFeedFilters.noty.Unfriend = 'On'; sharedFeedFilters.noty.Unfriend = 'On';
sharedFeedFilters.noty.DisplayName = 'VIP'; sharedFeedFilters.noty.DisplayName = 'VIP';
sharedFeedFilters.noty.TrustLevel = 'VIP'; sharedFeedFilters.noty.TrustLevel = 'VIP';
sharedFeedFilters.noty.showAvatar = 'On';
sharedFeedFilters.noty.hideAvatar = 'On';
sharedFeedFilters.noty.block = 'On';
sharedFeedFilters.noty.mute = 'On';
sharedFeedFilters.noty.unmute = 'On';
sharedFeedFilters.wrist.Location = 'On'; sharedFeedFilters.wrist.Location = 'On';
sharedFeedFilters.wrist.OnPlayerJoined = 'Everyone'; sharedFeedFilters.wrist.OnPlayerJoined = 'Everyone';
sharedFeedFilters.wrist.OnPlayerLeft = 'Everyone'; sharedFeedFilters.wrist.OnPlayerLeft = 'Everyone';
@@ -5816,6 +5849,12 @@ speechSynthesis.getVoices();
sharedFeedFilters.wrist.Unfriend = 'On'; sharedFeedFilters.wrist.Unfriend = 'On';
sharedFeedFilters.wrist.DisplayName = 'Friends'; sharedFeedFilters.wrist.DisplayName = 'Friends';
sharedFeedFilters.wrist.TrustLevel = 'Friends'; sharedFeedFilters.wrist.TrustLevel = 'Friends';
sharedFeedFilters.wrist.showAvatar = 'On';
sharedFeedFilters.wrist.hideAvatar = 'On';
sharedFeedFilters.wrist.block = 'On';
sharedFeedFilters.wrist.mute = 'On';
sharedFeedFilters.wrist.unmute = 'On';
configRepository.setString('sharedFeedFilters', JSON.stringify(sharedFeedFilters)); configRepository.setString('sharedFeedFilters', JSON.stringify(sharedFeedFilters));
} }
$app.data.sharedFeedFilters = JSON.parse(configRepository.getString('sharedFeedFilters')); $app.data.sharedFeedFilters = JSON.parse(configRepository.getString('sharedFeedFilters'));
+30
View File
@@ -1249,6 +1249,21 @@ html
div div
span.toggle-name Trust Level span.toggle-name Trust Level
toggle-switch(:options="toggleSwitchOptionsFriends" group="switchNotyGrouprequestTrustLevel" v-model="sharedFeedFilters.noty.TrustLevel" class="toggle-switch") toggle-switch(:options="toggleSwitchOptionsFriends" group="switchNotyGrouprequestTrustLevel" v-model="sharedFeedFilters.noty.TrustLevel" class="toggle-switch")
div
span.toggle-name Show Avatar
toggle-switch(:options="toggleSwitchOptionsOn" group="switchNotyGrouprequestShowAvatar" v-model="sharedFeedFilters.noty.showAvatar" class="toggle-switch")
div
span.toggle-name Hide Avatar
toggle-switch(:options="toggleSwitchOptionsOn" group="switchNotyGrouprequestHideAvatar" v-model="sharedFeedFilters.noty.hideAvatar" class="toggle-switch")
div
span.toggle-name Block
toggle-switch(:options="toggleSwitchOptionsOn" group="switchNotyGrouprequestblock" v-model="sharedFeedFilters.noty.block" class="toggle-switch")
div
span.toggle-name Mute
toggle-switch(:options="toggleSwitchOptionsOn" group="switchNotyGrouprequestmute" v-model="sharedFeedFilters.noty.mute" class="toggle-switch")
div
span.toggle-name Unmute
toggle-switch(:options="toggleSwitchOptionsOn" group="switchNotyGrouprequestunmute" v-model="sharedFeedFilters.noty.unmute" class="toggle-switch")
template(#footer) template(#footer)
el-button(type="small" @click="cancelSharedFeedFilters") Cancel el-button(type="small" @click="cancelSharedFeedFilters") Cancel
el-button(type="primary" size="small" style="margin-left:10px" @click="saveSharedFeedFilters") Save el-button(type="primary" size="small" style="margin-left:10px" @click="saveSharedFeedFilters") Save
@@ -1301,6 +1316,21 @@ html
div div
span.toggle-name Trust Level span.toggle-name Trust Level
toggle-switch(:options="toggleSwitchOptionsFriends" group="switchWristGrouprequestTrustLevel" v-model="sharedFeedFilters.wrist.TrustLevel" class="toggle-switch") toggle-switch(:options="toggleSwitchOptionsFriends" group="switchWristGrouprequestTrustLevel" v-model="sharedFeedFilters.wrist.TrustLevel" class="toggle-switch")
div
span.toggle-name Show Avatar
toggle-switch(:options="toggleSwitchOptionsOn" group="switchWristGrouprequestShowAvatar" v-model="sharedFeedFilters.wrist.showAvatar" class="toggle-switch")
div
span.toggle-name Hide Avatar
toggle-switch(:options="toggleSwitchOptionsOn" group="switchWristGrouprequestHideAvatar" v-model="sharedFeedFilters.wrist.hideAvatar" class="toggle-switch")
div
span.toggle-name Block
toggle-switch(:options="toggleSwitchOptionsOn" group="switchWristGrouprequestblock" v-model="sharedFeedFilters.wrist.block" class="toggle-switch")
div
span.toggle-name Mute
toggle-switch(:options="toggleSwitchOptionsOn" group="switchWristGrouprequestmute" v-model="sharedFeedFilters.wrist.mute" class="toggle-switch")
div
span.toggle-name Unmute
toggle-switch(:options="toggleSwitchOptionsOn" group="switchWristGrouprequestunmute" v-model="sharedFeedFilters.wrist.unmute" class="toggle-switch")
template(#footer) template(#footer)
el-button(type="small" @click="cancelSharedFeedFilters") Cancel el-button(type="small" @click="cancelSharedFeedFilters") Cancel
el-button(type="primary" size="small" @click="saveSharedFeedFilters") Save el-button(type="primary" size="small" @click="saveSharedFeedFilters") Save
+39 -3
View File
@@ -769,12 +769,16 @@ speechSynthesis.getVoices();
((filter[feed.type] === 'Friends') && (feed.isFriend)) || ((filter[feed.type] === 'Friends') && (feed.isFriend)) ||
((filter[feed.type] === 'VIP') && (feed.isFavorite)))) { ((filter[feed.type] === 'VIP') && (feed.isFavorite)))) {
var displayName = ''; var displayName = '';
if (feed.data) { if (feed.displayName) {
displayName = feed.data;
} else if (feed.displayName) {
displayName = feed.displayName; displayName = feed.displayName;
} else if (feed.senderUsername) { } else if (feed.senderUsername) {
displayName = feed.senderUsername; displayName = feed.senderUsername;
} else if (feed.sourceDisplayName) {
displayName = feed.sourceDisplayName;
} else if (feed.data) {
displayName = feed.data;
} else {
console.error('missing displayName');
} }
if ((displayName) && (!this.notyMap[displayName]) || if ((displayName) && (!this.notyMap[displayName]) ||
(this.notyMap[displayName] < feed.created_at)) { (this.notyMap[displayName] < feed.created_at)) {
@@ -943,6 +947,8 @@ speechSynthesis.getVoices();
displayName = feed.displayName; displayName = feed.displayName;
} else if (feed.senderUsername) { } else if (feed.senderUsername) {
displayName = feed.senderUsername; displayName = feed.senderUsername;
} else if (feed.sourceDisplayName) {
displayName = feed.sourceDisplayName;
} else if (feed.data) { } else if (feed.data) {
displayName = feed.data; displayName = feed.data;
} else { } else {
@@ -1011,6 +1017,21 @@ speechSynthesis.getVoices();
case 'DisplayName': case 'DisplayName':
text = `<strong>${noty.previousDisplayName}</strong> changed their name to ${noty.displayName}`; text = `<strong>${noty.previousDisplayName}</strong> changed their name to ${noty.displayName}`;
break; break;
case 'showAvatar':
text = `<strong>${noty.sourceDisplayName}</strong> has shown your avatar`;
break;
case 'hideAvatar':
text = `<strong>${noty.sourceDisplayName}</strong> has hidden your avatar`;
break;
case 'block':
text = `<strong>${noty.sourceDisplayName}</strong> has blocked you`;
break;
case 'mute':
text = `<strong>${noty.sourceDisplayName}</strong> has muted you`;
break;
case 'unmute':
text = `<strong>${noty.sourceDisplayName}</strong> has unmuted you`;
break;
} }
if (text) { if (text) {
new Noty({ new Noty({
@@ -1066,6 +1087,21 @@ speechSynthesis.getVoices();
case 'DisplayName': case 'DisplayName':
this.speak(`${noty.previousDisplayName} changed their name to ${noty.displayName}`); this.speak(`${noty.previousDisplayName} changed their name to ${noty.displayName}`);
break; break;
case 'showAvatar':
this.speak(`${noty.sourceDisplayName} has shown your avatar`);
break;
case 'hideAvatar':
this.speak(`${noty.sourceDisplayName} has hidden your avatar`);
break;
case 'block':
this.speak(`${noty.sourceDisplayName} has blocked you`);
break;
case 'mute':
this.speak(`${noty.sourceDisplayName} has muted you`);
break;
case 'unmute':
this.speak(`${noty.sourceDisplayName} has unmuted you`);
break;
} }
} }
if ((this.desktopToastToggle) && (this.isGameNoVR)) { if ((this.desktopToastToggle) && (this.isGameNoVR)) {
+50
View File
@@ -93,6 +93,31 @@ html
span.extra span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }} span.time {{ feed.created_at | formatDate('HH:MI') }}
| 🤝 #[span.name(v-text="feed.displayName")] {{ feed.previousTrustLevel }} #[i.el-icon-right] {{ feed.trustLevel }} | 🤝 #[span.name(v-text="feed.displayName")] {{ feed.previousTrustLevel }} #[i.el-icon-right] {{ feed.trustLevel }}
div(v-else-if="feed.type === 'showAvatar'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
.detail
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
| 👀 #[span.name(v-text="feed.sourceDisplayName")]
div(v-else-if="feed.type === 'hideAvatar'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
.detail
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
| 🙈 #[span.name(v-text="feed.sourceDisplayName")]
div(v-else-if="feed.type === 'block'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
.detail
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
| 🛑 #[span.name(v-text="feed.sourceDisplayName")] has blocked you
div(v-else-if="feed.type === 'mute'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
.detail
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
| 🔇 #[span.name(v-text="feed.sourceDisplayName")] has muted you
div(v-else-if="feed.type === 'unmute'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
.detail
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
| 🎤 #[span.name(v-text="feed.sourceDisplayName")] has unmuted you
template(v-else) template(v-else)
template(v-for="feed in wristFeed") template(v-for="feed in wristFeed")
.x-friend-item(v-if="feed.type === 'GPS'" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }") .x-friend-item(v-if="feed.type === 'GPS'" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
@@ -170,6 +195,31 @@ html
span.extra span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }} span.time {{ feed.created_at | formatDate('HH:MI') }}
| #[span.name(v-text="feed.displayName")] trust level is now {{ feed.trustLevel }} | #[span.name(v-text="feed.displayName")] trust level is now {{ feed.trustLevel }}
div(v-else-if="feed.type === 'showAvatar'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
.detail
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
| #[span.name(v-text="feed.sourceDisplayName")] has shown your avatar
div(v-else-if="feed.type === 'hideAvatar'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
.detail
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
| #[span.name(v-text="feed.sourceDisplayName")] has hidden your avatar
div(v-else-if="feed.type === 'block'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
.detail
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
| #[span.name(v-text="feed.sourceDisplayName")] has blocked you
div(v-else-if="feed.type === 'mute'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
.detail
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
| #[span.name(v-text="feed.sourceDisplayName")] has muted you
div(v-else-if="feed.type === 'unmute'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
.detail
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
| #[span.name(v-text="feed.sourceDisplayName")] has unmuted you
.x-container .x-container
div(style="display:flex;flex-direction:row") div(style="display:flex;flex-direction:row")
template(v-if="devices.length") template(v-if="devices.length")