mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-06 22:46:06 +02:00
Notify on block/muted users joining/leaving
This commit is contained in:
+93
-5
@@ -3698,6 +3698,9 @@ speechSynthesis.getVoices();
|
|||||||
if (--this.nextFriendsRefresh <= 0) {
|
if (--this.nextFriendsRefresh <= 0) {
|
||||||
this.nextFriendsRefresh = 7200; // 1hour
|
this.nextFriendsRefresh = 7200; // 1hour
|
||||||
API.refreshFriends();
|
API.refreshFriends();
|
||||||
|
if (this.isGameRunning) {
|
||||||
|
API.refreshPlayerModerations();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
AppApi.CheckGameRunning().then(([isGameRunning, isGameNoVR]) => {
|
AppApi.CheckGameRunning().then(([isGameRunning, isGameNoVR]) => {
|
||||||
if (isGameRunning !== this.isGameRunning) {
|
if (isGameRunning !== this.isGameRunning) {
|
||||||
@@ -3948,6 +3951,49 @@ speechSynthesis.getVoices();
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ((ctx.type === 'OnPlayerJoined') ||
|
||||||
|
(ctx.type === 'OnPlayerLeft')) {
|
||||||
|
for (var ref of this.playerModerationTable.data) {
|
||||||
|
if (ref.targetDisplayName === ctx.data) {
|
||||||
|
if (ref.type === 'block') {
|
||||||
|
var type = `Blocked${ctx.type}`;
|
||||||
|
} else if (ref.type === 'mute') {
|
||||||
|
var type = `Muted${ctx.type}`;
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var displayName = ref.targetDisplayName;
|
||||||
|
var userId = ref.targetUserId;
|
||||||
|
var created_at = ctx.created_at;
|
||||||
|
if ((wristFilter[type]) &&
|
||||||
|
((wristFilter[type] === 'Everyone') ||
|
||||||
|
((wristFilter[type] === 'Friends') && (isFriend)) ||
|
||||||
|
((wristFilter[type] === 'VIP') && (isFavorite)))) {
|
||||||
|
wristArr.unshift({
|
||||||
|
created_at,
|
||||||
|
type,
|
||||||
|
displayName,
|
||||||
|
userId,
|
||||||
|
isFriend,
|
||||||
|
isFavorite
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if ((notyFilter[type]) &&
|
||||||
|
((notyFilter[type] === 'Everyone') ||
|
||||||
|
((notyFilter[type] === 'Friends') && (isFriend)) ||
|
||||||
|
((notyFilter[type] === 'VIP') && (isFavorite)))) {
|
||||||
|
notyArr.unshift({
|
||||||
|
created_at,
|
||||||
|
type,
|
||||||
|
displayName,
|
||||||
|
userId,
|
||||||
|
isFriend,
|
||||||
|
isFavorite
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if ((w < 20) && (wristFilter[ctx.type]) &&
|
if ((w < 20) && (wristFilter[ctx.type]) &&
|
||||||
((wristFilter[ctx.type] === 'On') ||
|
((wristFilter[ctx.type] === 'On') ||
|
||||||
(wristFilter[ctx.type] === 'Everyone') ||
|
(wristFilter[ctx.type] === 'Everyone') ||
|
||||||
@@ -4288,7 +4334,7 @@ speechSynthesis.getVoices();
|
|||||||
imageURL = noty.details.imageUrl;
|
imageURL = noty.details.imageUrl;
|
||||||
} else if (userId) {
|
} else if (userId) {
|
||||||
imageURL = await API.getCachedUser({
|
imageURL = await API.getCachedUser({
|
||||||
userId: userId
|
userId
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
return false;
|
return false;
|
||||||
@@ -4387,6 +4433,18 @@ speechSynthesis.getVoices();
|
|||||||
case 'VideoPlay':
|
case 'VideoPlay':
|
||||||
this.speak(`Now playing: ${noty.data}`);
|
this.speak(`Now playing: ${noty.data}`);
|
||||||
break;
|
break;
|
||||||
|
case 'BlockedOnPlayerJoined':
|
||||||
|
this.speak(`Blocked user ${noty.displayName} has joined`);
|
||||||
|
break;
|
||||||
|
case 'BlockedOnPlayerLeft':
|
||||||
|
this.speak(`Blocked user ${noty.displayName} has left`);
|
||||||
|
break;
|
||||||
|
case 'MutedOnPlayerJoined':
|
||||||
|
this.speak(`Muted user ${noty.displayName} has joined`);
|
||||||
|
break;
|
||||||
|
case 'MutedOnPlayerLeft':
|
||||||
|
this.speak(`Muted user ${noty.displayName} has left`);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -4452,6 +4510,18 @@ speechSynthesis.getVoices();
|
|||||||
case 'VideoPlay':
|
case 'VideoPlay':
|
||||||
AppApi.XSNotification('VRCX', `Now playing: ${noty.data}`, timeout, image);
|
AppApi.XSNotification('VRCX', `Now playing: ${noty.data}`, timeout, image);
|
||||||
break;
|
break;
|
||||||
|
case 'BlockedOnPlayerJoined':
|
||||||
|
AppApi.XSNotification('VRCX', `Blocked user ${noty.displayName} has joined`, timeout, image);
|
||||||
|
break;
|
||||||
|
case 'BlockedOnPlayerLeft':
|
||||||
|
AppApi.XSNotification('VRCX', `Blocked user ${noty.displayName} has left`, timeout, image);
|
||||||
|
break;
|
||||||
|
case 'MutedOnPlayerJoined':
|
||||||
|
AppApi.XSNotification('VRCX', `Muted user ${noty.displayName} has joined`, timeout, image);
|
||||||
|
break;
|
||||||
|
case 'MutedOnPlayerLeft':
|
||||||
|
AppApi.XSNotification('VRCX', `Muted user ${noty.displayName} has left`, timeout, image);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -4516,6 +4586,18 @@ speechSynthesis.getVoices();
|
|||||||
case 'VideoPlay':
|
case 'VideoPlay':
|
||||||
AppApi.DesktopNotification('Now playing', noty.data, image);
|
AppApi.DesktopNotification('Now playing', noty.data, image);
|
||||||
break;
|
break;
|
||||||
|
case 'BlockedOnPlayerJoined':
|
||||||
|
AppApi.DesktopNotification(noty.displayName, 'blocked user has joined', image);
|
||||||
|
break;
|
||||||
|
case 'BlockedOnPlayerLeft':
|
||||||
|
AppApi.DesktopNotification(noty.displayName, 'blocked user has left', image);
|
||||||
|
break;
|
||||||
|
case 'MutedOnPlayerJoined':
|
||||||
|
AppApi.DesktopNotification(noty.displayName, 'muted user has joined', image);
|
||||||
|
break;
|
||||||
|
case 'MutedOnPlayerLeft':
|
||||||
|
AppApi.DesktopNotification(noty.displayName, 'muted user has left', image);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -7063,9 +7145,12 @@ speechSynthesis.getVoices();
|
|||||||
DisplayName: 'VIP',
|
DisplayName: 'VIP',
|
||||||
TrustLevel: 'VIP',
|
TrustLevel: 'VIP',
|
||||||
PortalSpawn: 'Everyone',
|
PortalSpawn: 'Everyone',
|
||||||
ItemDestroy: 'Off',
|
|
||||||
Event: 'On',
|
Event: 'On',
|
||||||
VideoPlay: 'On'
|
VideoPlay: 'On',
|
||||||
|
BlockedOnPlayerJoined: 'Off',
|
||||||
|
BlockedOnPlayerLeft: 'Off',
|
||||||
|
MutedOnPlayerJoined: 'Off',
|
||||||
|
MutedOnPlayerLeft: 'Off'
|
||||||
},
|
},
|
||||||
wrist: {
|
wrist: {
|
||||||
Location: 'On',
|
Location: 'On',
|
||||||
@@ -7086,9 +7171,12 @@ speechSynthesis.getVoices();
|
|||||||
DisplayName: 'Friends',
|
DisplayName: 'Friends',
|
||||||
TrustLevel: 'Friends',
|
TrustLevel: 'Friends',
|
||||||
PortalSpawn: 'Everyone',
|
PortalSpawn: 'Everyone',
|
||||||
ItemDestroy: 'Everyone',
|
|
||||||
Event: 'On',
|
Event: 'On',
|
||||||
VideoPlay: 'On'
|
VideoPlay: 'On',
|
||||||
|
BlockedOnPlayerJoined: 'Off',
|
||||||
|
BlockedOnPlayerLeft: 'Off',
|
||||||
|
MutedOnPlayerJoined: 'Off',
|
||||||
|
MutedOnPlayerLeft: 'Off'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
configRepository.setString('sharedFeedFilters', JSON.stringify(sharedFeedFilters));
|
configRepository.setString('sharedFeedFilters', JSON.stringify(sharedFeedFilters));
|
||||||
|
|||||||
@@ -1669,6 +1669,18 @@ html
|
|||||||
div
|
div
|
||||||
span.toggle-name Video Play
|
span.toggle-name Video Play
|
||||||
toggle-switch(:options="toggleSwitchOptionsOn" group="switchNotyGrouprequestVideoPlay" v-model="sharedFeedFilters.noty.VideoPlay" class="toggle-switch")
|
toggle-switch(:options="toggleSwitchOptionsOn" group="switchNotyGrouprequestVideoPlay" v-model="sharedFeedFilters.noty.VideoPlay" class="toggle-switch")
|
||||||
|
div
|
||||||
|
span.toggle-name Blocked Player Joins
|
||||||
|
toggle-switch(:options="toggleSwitchOptionsEveryone" group="switchNotyGrouprequestBlockedOnPlayerJoined" v-model="sharedFeedFilters.noty.BlockedOnPlayerJoined" class="toggle-switch")
|
||||||
|
div
|
||||||
|
span.toggle-name Blocked Player Leaves
|
||||||
|
toggle-switch(:options="toggleSwitchOptionsEveryone" group="switchNotyGrouprequestBlockedOnPlayerLeft" v-model="sharedFeedFilters.noty.BlockedOnPlayerLeft" class="toggle-switch")
|
||||||
|
div
|
||||||
|
span.toggle-name Muted Player Joins
|
||||||
|
toggle-switch(:options="toggleSwitchOptionsEveryone" group="switchNotyGrouprequestMutedOnPlayerJoined" v-model="sharedFeedFilters.noty.MutedOnPlayerJoined" class="toggle-switch")
|
||||||
|
div
|
||||||
|
span.toggle-name Muted Player Leaves
|
||||||
|
toggle-switch(:options="toggleSwitchOptionsEveryone" group="switchNotyGrouprequestMutedOnPlayerLeft" v-model="sharedFeedFilters.noty.MutedOnPlayerLeft" 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
|
||||||
@@ -1736,6 +1748,18 @@ html
|
|||||||
div
|
div
|
||||||
span.toggle-name Video Play
|
span.toggle-name Video Play
|
||||||
toggle-switch(:options="toggleSwitchOptionsOn" group="switchWristGrouprequestVideoPlay" v-model="sharedFeedFilters.wrist.VideoPlay" class="toggle-switch")
|
toggle-switch(:options="toggleSwitchOptionsOn" group="switchWristGrouprequestVideoPlay" v-model="sharedFeedFilters.wrist.VideoPlay" class="toggle-switch")
|
||||||
|
div
|
||||||
|
span.toggle-name Blocked Player Joins
|
||||||
|
toggle-switch(:options="toggleSwitchOptionsEveryone" group="switchWristGrouprequestBlockedOnPlayerJoined" v-model="sharedFeedFilters.wrist.BlockedOnPlayerJoined" class="toggle-switch")
|
||||||
|
div
|
||||||
|
span.toggle-name Blocked Player Leaves
|
||||||
|
toggle-switch(:options="toggleSwitchOptionsEveryone" group="switchWristGrouprequestBlockedOnPlayerLeft" v-model="sharedFeedFilters.wrist.BlockedOnPlayerLeft" class="toggle-switch")
|
||||||
|
div
|
||||||
|
span.toggle-name Muted Player Joins
|
||||||
|
toggle-switch(:options="toggleSwitchOptionsEveryone" group="switchWristGrouprequestMutedOnPlayerJoined" v-model="sharedFeedFilters.wrist.MutedOnPlayerJoined" class="toggle-switch")
|
||||||
|
div
|
||||||
|
span.toggle-name Muted Player Leaves
|
||||||
|
toggle-switch(:options="toggleSwitchOptionsEveryone" group="switchWristGrouprequestMutedOnPlayerLeft" v-model="sharedFeedFilters.wrist.MutedOnPlayerLeft" 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
|
||||||
|
|||||||
@@ -946,6 +946,18 @@ speechSynthesis.getVoices();
|
|||||||
case 'VideoPlay':
|
case 'VideoPlay':
|
||||||
text = `<strong>Now playing:</strong> ${noty.data}`;
|
text = `<strong>Now playing:</strong> ${noty.data}`;
|
||||||
break;
|
break;
|
||||||
|
case 'BlockedOnPlayerJoined':
|
||||||
|
text = `Blocked user <strong>${noty.displayName}</strong> has joined`;
|
||||||
|
break;
|
||||||
|
case 'BlockedOnPlayerLeft':
|
||||||
|
text = `Blocked user <strong>${noty.displayName}</strong> has left`;
|
||||||
|
break;
|
||||||
|
case 'MutedOnPlayerJoined':
|
||||||
|
text = `Muted user <strong>${noty.displayName}</strong> has joined`;
|
||||||
|
break;
|
||||||
|
case 'MutedOnPlayerLeft':
|
||||||
|
text = `Muted user <strong>${noty.displayName}</strong> has left`;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -118,6 +118,26 @@ 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.data")]
|
| 🎵 #[span.name(v-text="feed.data")]
|
||||||
|
div(v-else-if="feed.type === 'BlockedOnPlayerJoined'" 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.displayName")]
|
||||||
|
div(v-else-if="feed.type === 'BlockedOnPlayerLeft'" 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.displayName")]
|
||||||
|
div(v-else-if="feed.type === 'MutedOnPlayerJoined'" 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.displayName")]
|
||||||
|
div(v-else-if="feed.type === 'MutedOnPlayerLeft'" 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.displayName")]
|
||||||
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 }")
|
||||||
@@ -220,6 +240,26 @@ html
|
|||||||
span.extra
|
span.extra
|
||||||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||||||
| Now playing: #[span.name(v-text="feed.data")]
|
| Now playing: #[span.name(v-text="feed.data")]
|
||||||
|
div(v-else-if="feed.type === 'BlockedOnPlayerJoined'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
|
.detail
|
||||||
|
span.extra
|
||||||
|
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||||||
|
| Blocked user #[span.name(v-text="feed.displayName")] has joined
|
||||||
|
div(v-else-if="feed.type === 'BlockedOnPlayerLeft'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
|
.detail
|
||||||
|
span.extra
|
||||||
|
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||||||
|
| Blocked user #[span.name(v-text="feed.displayName")] has left
|
||||||
|
div(v-else-if="feed.type === 'MutedOnPlayerJoined'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
|
.detail
|
||||||
|
span.extra
|
||||||
|
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||||||
|
| Muted user #[span.name(v-text="feed.displayName")] has joined
|
||||||
|
div(v-else-if="feed.type === 'MutedOnPlayerLeft'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
|
.detail
|
||||||
|
span.extra
|
||||||
|
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||||||
|
| Muted user #[span.name(v-text="feed.displayName")] has left
|
||||||
.x-containerbottom
|
.x-containerbottom
|
||||||
div(style="display:flex;flex-direction:row")
|
div(style="display:flex;flex-direction:row")
|
||||||
template(v-if="devices.length")
|
template(v-if="devices.length")
|
||||||
|
|||||||
Reference in New Issue
Block a user