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

View File

@@ -2124,6 +2124,7 @@ speechSynthesis.getVoices();
API.$on('LOGIN', function () {
this.cachedPlayerModerations.clear();
this.isPlayerModerationsLoading = false;
this.refreshPlayerModerations();
});
API.$on('PLAYER-MODERATION', function (args) {
@@ -2229,6 +2230,11 @@ speechSynthesis.getVoices();
this.isPlayerModerationsLoading = false;
}).then(() => {
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) => {
throw err1;
});
if (this.isGameRunning) {
API.refreshPlayerModerations().catch((err1) => {
throw err1;
});
}
}
this.checkActiveFriends();
AppApi.CheckGameRunning().then(([isGameRunning, isGameNoVR]) => {
@@ -3511,6 +3522,25 @@ speechSynthesis.getVoices();
++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) {
if (a.created_at < b.created_at) {
return 1;
@@ -4634,12 +4664,10 @@ speechSynthesis.getVoices();
if (API.isLoggedIn === true) {
await this.updateGameLog();
this.sweepGameLog();
if (this.gameLogTable.data.length > this.gameLogTable.lastRunLength) {
if (this.gameLogTable.data.length !== this.gameLogTable.lastRunLength) {
this.notifyMenu('gameLog');
}
this.gameLogTable.lastRunLength = this.gameLogTable.data.length;
this.updateSharedFeed();
}
} catch (err) {
@@ -5475,6 +5503,7 @@ speechSynthesis.getVoices();
$app.data.playerModerationTable = {
data: [],
lastRunLength: 0,
filters: [
{
prop: 'type',
@@ -5530,7 +5559,6 @@ speechSynthesis.getVoices();
}
if (ref.$isDeleted === false) {
$app.playerModerationTable.data.push(ref);
$app.notifyMenu('moderation');
}
});
@@ -5801,6 +5829,11 @@ speechSynthesis.getVoices();
sharedFeedFilters.noty.Unfriend = 'On';
sharedFeedFilters.noty.DisplayName = '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.OnPlayerJoined = 'Everyone';
sharedFeedFilters.wrist.OnPlayerLeft = 'Everyone';
@@ -5816,6 +5849,12 @@ speechSynthesis.getVoices();
sharedFeedFilters.wrist.Unfriend = 'On';
sharedFeedFilters.wrist.DisplayName = '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));
}
$app.data.sharedFeedFilters = JSON.parse(configRepository.getString('sharedFeedFilters'));

View File

@@ -1244,11 +1244,26 @@ html
span.toggle-name Unfriend
toggle-switch(:options="toggleSwitchOptionsOn" group="switchNotyGrouprequestUnfriend" v-model="sharedFeedFilters.noty.Unfriend" class="toggle-switch")
div
span.toggle-name DisplayName
span.toggle-name Display Name
toggle-switch(:options="toggleSwitchOptionsFriends" group="switchNotyGrouprequestDisplayName" v-model="sharedFeedFilters.noty.DisplayName" class="toggle-switch")
div
span.toggle-name TrustLevel
span.toggle-name Trust Level
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)
el-button(type="small" @click="cancelSharedFeedFilters") Cancel
el-button(type="primary" size="small" style="margin-left:10px" @click="saveSharedFeedFilters") Save
@@ -1296,11 +1311,26 @@ html
span.toggle-name Unfriend
toggle-switch(:options="toggleSwitchOptionsOn" group="switchWristGrouprequestUnfriend" v-model="sharedFeedFilters.wrist.Unfriend" class="toggle-switch")
div
span.toggle-name DisplayName
span.toggle-name Display Name
toggle-switch(:options="toggleSwitchOptionsFriends" group="switchWristGrouprequestDisplayName" v-model="sharedFeedFilters.wrist.DisplayName" class="toggle-switch")
div
span.toggle-name TrustLevel
span.toggle-name Trust Level
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)
el-button(type="small" @click="cancelSharedFeedFilters") Cancel
el-button(type="primary" size="small" @click="saveSharedFeedFilters") Save

View File

@@ -769,12 +769,16 @@ speechSynthesis.getVoices();
((filter[feed.type] === 'Friends') && (feed.isFriend)) ||
((filter[feed.type] === 'VIP') && (feed.isFavorite)))) {
var displayName = '';
if (feed.data) {
displayName = feed.data;
} else if (feed.displayName) {
if (feed.displayName) {
displayName = feed.displayName;
} else if (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]) ||
(this.notyMap[displayName] < feed.created_at)) {
@@ -943,6 +947,8 @@ speechSynthesis.getVoices();
displayName = feed.displayName;
} else if (feed.senderUsername) {
displayName = feed.senderUsername;
} else if (feed.sourceDisplayName) {
displayName = feed.sourceDisplayName;
} else if (feed.data) {
displayName = feed.data;
} else {
@@ -1011,6 +1017,21 @@ speechSynthesis.getVoices();
case 'DisplayName':
text = `<strong>${noty.previousDisplayName}</strong> changed their name to ${noty.displayName}`;
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) {
new Noty({
@@ -1066,6 +1087,21 @@ speechSynthesis.getVoices();
case 'DisplayName':
this.speak(`${noty.previousDisplayName} changed their name to ${noty.displayName}`);
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)) {

View File

@@ -93,6 +93,31 @@ html
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
| 🤝 #[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-for="feed in wristFeed")
.x-friend-item(v-if="feed.type === 'GPS'" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
@@ -170,6 +195,31 @@ html
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
| #[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
div(style="display:flex;flex-direction:row")
template(v-if="devices.length")