mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-14 12:23:52 +02:00
Lobby status change event, fix moderation in player list
This commit is contained in:
137
html/src/app.js
137
html/src/app.js
@@ -5976,17 +5976,16 @@ speechSynthesis.getVoices();
|
||||
} else {
|
||||
API.endpointDomain = API.endpointDomainVrchat;
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
if (this.enablePrimaryPassword) {
|
||||
API.logout();
|
||||
} else {
|
||||
API.getConfig()
|
||||
.catch((err) => {
|
||||
this.loginForm.loading = false;
|
||||
reject(err);
|
||||
})
|
||||
.then(() => {
|
||||
API.login({
|
||||
if (this.enablePrimaryPassword) {
|
||||
API.logout();
|
||||
} else {
|
||||
API.getConfig()
|
||||
.catch((err) => {
|
||||
this.loginForm.loading = false;
|
||||
throw err;
|
||||
})
|
||||
.then(() => {
|
||||
API.login({
|
||||
username: loginParmas.username,
|
||||
password: loginParmas.password,
|
||||
endpoint: loginParmas.endpoint
|
||||
@@ -5997,10 +5996,9 @@ speechSynthesis.getVoices();
|
||||
})
|
||||
.then(() => {
|
||||
this.loginForm.loading = false;
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$app.methods.deleteSavedLogin = function (username) {
|
||||
@@ -7599,6 +7597,7 @@ speechSynthesis.getVoices();
|
||||
this.photonLobbyCurrent = new Map();
|
||||
this.photonLobbyMaster = 0;
|
||||
this.photonLobbyCurrentUser = 0;
|
||||
this.photonLobbyUserData = new Map();
|
||||
this.photonLobbyInVrMode = new Map();
|
||||
this.photonLobbyWatcherLoopStop();
|
||||
this.photonLobbyAvatars = new Map();
|
||||
@@ -8102,6 +8101,7 @@ speechSynthesis.getVoices();
|
||||
$app.data.photonLobby = new Map();
|
||||
$app.data.photonLobbyMaster = 0;
|
||||
$app.data.photonLobbyCurrentUser = 0;
|
||||
$app.data.photonLobbyUserData = new Map();
|
||||
$app.data.photonLobbyInVrMode = new Map();
|
||||
$app.data.photonLobbyCurrent = new Map();
|
||||
$app.data.photonLobbyAvatars = new Map();
|
||||
@@ -8326,13 +8326,14 @@ speechSynthesis.getVoices();
|
||||
this.addEntryPhotonEvent({
|
||||
photonId: id,
|
||||
text,
|
||||
type: 'PhotonBot',
|
||||
color: 'yellow',
|
||||
created_at: new Date().toJSON()
|
||||
});
|
||||
var entry = {
|
||||
created_at: new Date().toJSON(),
|
||||
type: 'Event',
|
||||
data: `${text} - ${this.getDisplayNameFromPhotonId(
|
||||
data: `${text} ${this.getDisplayNameFromPhotonId(
|
||||
id
|
||||
)} (${this.getUserIdFromPhotonId(id)})`
|
||||
};
|
||||
@@ -8607,6 +8608,7 @@ speechSynthesis.getVoices();
|
||||
) {
|
||||
this.photonModerationUpdate(
|
||||
ref,
|
||||
photonId,
|
||||
block,
|
||||
mute,
|
||||
gameLogDate
|
||||
@@ -8617,14 +8619,6 @@ speechSynthesis.getVoices();
|
||||
mute,
|
||||
gameLogDate
|
||||
});
|
||||
if (block || mute) {
|
||||
this.addEntryPhotonEvent({
|
||||
photonId,
|
||||
text: `mute:${mute} block:${block}`,
|
||||
color: 'yellow',
|
||||
created_at: gameLogDate
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
var blockArray = data.Parameters[245]['10'];
|
||||
@@ -8632,14 +8626,23 @@ speechSynthesis.getVoices();
|
||||
var idList = new Map();
|
||||
blockArray.forEach((photonId1) => {
|
||||
if (muteArray.includes(photonId1)) {
|
||||
idList.set(photonId1, {mute: true, block: true});
|
||||
idList.set(photonId1, {
|
||||
isMute: true,
|
||||
isBlock: true
|
||||
});
|
||||
} else {
|
||||
idList.set(photonId1, {mute: false, block: true});
|
||||
idList.set(photonId1, {
|
||||
isMute: false,
|
||||
isBlock: true
|
||||
});
|
||||
}
|
||||
});
|
||||
muteArray.forEach((photonId2) => {
|
||||
if (!idList.has(photonId2)) {
|
||||
idList.set(photonId2, {mute: true, block: false});
|
||||
idList.set(photonId2, {
|
||||
isMute: true,
|
||||
isBlock: false
|
||||
});
|
||||
}
|
||||
});
|
||||
idList.forEach(({isMute, isBlock}, photonId3) => {
|
||||
@@ -8650,6 +8653,7 @@ speechSynthesis.getVoices();
|
||||
) {
|
||||
this.photonModerationUpdate(
|
||||
ref1,
|
||||
photonId3,
|
||||
isBlock,
|
||||
isMute,
|
||||
gameLogDate
|
||||
@@ -8732,6 +8736,7 @@ speechSynthesis.getVoices();
|
||||
this.addEntryPhotonEvent({
|
||||
photonId: senderId,
|
||||
text: `DeletedPortal ${time}`,
|
||||
type: 'DeletedPortal',
|
||||
created_at: gameLogDate
|
||||
});
|
||||
return;
|
||||
@@ -8800,6 +8805,7 @@ speechSynthesis.getVoices();
|
||||
this.addEntryPhotonEvent({
|
||||
photonId: senderId,
|
||||
text,
|
||||
type: 'Event',
|
||||
created_at: gameLogDate
|
||||
});
|
||||
} else {
|
||||
@@ -8875,6 +8881,7 @@ speechSynthesis.getVoices();
|
||||
this.addEntryPhotonEvent({
|
||||
photonId,
|
||||
text: `Photon Master Migrate`,
|
||||
type: 'PhotonMasterMigrate',
|
||||
created_at: gameLogDate
|
||||
});
|
||||
}
|
||||
@@ -8905,6 +8912,7 @@ speechSynthesis.getVoices();
|
||||
this.addEntryPhotonEvent({
|
||||
photonId,
|
||||
text,
|
||||
type: 'PhotonBot',
|
||||
color: 'yellow',
|
||||
created_at: gameLogDate
|
||||
});
|
||||
@@ -8941,6 +8949,7 @@ speechSynthesis.getVoices();
|
||||
this.addEntryPhotonEvent({
|
||||
photonId,
|
||||
text,
|
||||
type: 'PhotonBot',
|
||||
color: 'yellow',
|
||||
created_at: gameLogDate
|
||||
});
|
||||
@@ -8975,6 +8984,7 @@ speechSynthesis.getVoices();
|
||||
};
|
||||
this.photonLobby.set(photonId, photonUser);
|
||||
this.photonLobbyCurrent.set(photonId, photonUser);
|
||||
this.photonLobbyUserDataUpdate(photonId, photonUser, gameLogDate);
|
||||
|
||||
var bias = Date.parse(gameLogDate) + 60 * 1000; // 1min
|
||||
if (bias > Date.now()) {
|
||||
@@ -8987,6 +8997,7 @@ speechSynthesis.getVoices();
|
||||
this.addEntryPhotonEvent({
|
||||
photonId,
|
||||
text: `API/Photon platform mismatch ${ref.last_platform}/${photonUser.last_platform}`,
|
||||
type: 'PhotonBot',
|
||||
color: 'yellow',
|
||||
created_at: Date.parse(gameLogDate)
|
||||
});
|
||||
@@ -9024,14 +9035,44 @@ speechSynthesis.getVoices();
|
||||
var {block, mute, gameLogDate} =
|
||||
this.moderationEventQueue.get(photonId);
|
||||
this.moderationEventQueue.delete(photonId);
|
||||
this.photonModerationUpdate(ref, block, mute, gameLogDate);
|
||||
this.photonModerationUpdate(
|
||||
ref,
|
||||
photonId,
|
||||
block,
|
||||
mute,
|
||||
gameLogDate
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$app.methods.photonLobbyUserDataUpdate = function (
|
||||
photonId,
|
||||
photonUser,
|
||||
gameLogDate
|
||||
) {
|
||||
var ref = this.photonLobbyUserData.get(photonId);
|
||||
if (
|
||||
typeof ref !== 'undefined' &&
|
||||
(photonUser.status !== ref.status ||
|
||||
photonUser.statusDescription !== ref.statusDescription)
|
||||
) {
|
||||
this.addEntryPhotonEvent({
|
||||
photonId,
|
||||
type: 'ChangeStatus',
|
||||
status: photonUser.status,
|
||||
previousStatus: ref.status,
|
||||
statusDescription: photonUser.statusDescription,
|
||||
previousStatusDescription: ref.statusDescription,
|
||||
created_at: Date.parse(gameLogDate)
|
||||
});
|
||||
}
|
||||
this.photonLobbyUserData.set(photonId, photonUser);
|
||||
};
|
||||
|
||||
$app.methods.photonUserJoin = function (photonId, ref, gameLogDate) {
|
||||
if (
|
||||
photonId !== this.photonLobbyCurrentUser &&
|
||||
photonId === this.photonLobbyCurrentUser ||
|
||||
!this.photonEventOverlayJoinLeave
|
||||
) {
|
||||
return;
|
||||
@@ -9039,6 +9080,7 @@ speechSynthesis.getVoices();
|
||||
this.addEntryPhotonEvent({
|
||||
photonId,
|
||||
text: 'has joined',
|
||||
type: 'OnPlayerJoined',
|
||||
created_at: gameLogDate
|
||||
});
|
||||
};
|
||||
@@ -9050,34 +9092,50 @@ speechSynthesis.getVoices();
|
||||
this.addEntryPhotonEvent({
|
||||
photonId,
|
||||
text: 'has left',
|
||||
type: 'OnPlayerLeft',
|
||||
created_at: gameLogDate
|
||||
});
|
||||
};
|
||||
|
||||
$app.methods.photonModerationUpdate = function (
|
||||
ref,
|
||||
photonId,
|
||||
block,
|
||||
mute,
|
||||
gameLogDate
|
||||
) {
|
||||
database.getModeration(ref.id).then((row) => {
|
||||
var type = '';
|
||||
var text = '';
|
||||
if (block) {
|
||||
type = 'Blocked';
|
||||
text = 'Blocked';
|
||||
} else if (mute) {
|
||||
type = 'Muted';
|
||||
text = 'Muted';
|
||||
}
|
||||
if (row.userId) {
|
||||
if (!block && row.block) {
|
||||
type = 'Unblocked';
|
||||
text = 'Unblocked';
|
||||
} else if (!mute && row.mute) {
|
||||
type = 'Unmuted';
|
||||
text = 'Unmuted';
|
||||
}
|
||||
if (block === row.block && mute === row.mute) {
|
||||
// no change
|
||||
type = '';
|
||||
}
|
||||
}
|
||||
if (text) {
|
||||
this.addEntryPhotonEvent({
|
||||
photonId,
|
||||
text: `Moderation ${text}`,
|
||||
type: 'Moderation',
|
||||
color: 'yellow',
|
||||
created_at: gameLogDate
|
||||
});
|
||||
}
|
||||
if (type) {
|
||||
var noty = {
|
||||
created_at: new Date().toJSON(),
|
||||
@@ -9124,7 +9182,7 @@ speechSynthesis.getVoices();
|
||||
if (
|
||||
oldAvatarId &&
|
||||
oldAvatarId !== avatar.id &&
|
||||
user.id !== API.currentUser.id
|
||||
photonId !== this.photonLobbyCurrentUser
|
||||
) {
|
||||
this.checkVRChatCache(avatar).then((cacheInfo) => {
|
||||
var inCache = false;
|
||||
@@ -9151,6 +9209,7 @@ speechSynthesis.getVoices();
|
||||
displayName: user.displayName,
|
||||
userId: user.id,
|
||||
text: `ChangeAvatar ${avatar.name}`,
|
||||
type: 'AvatarChange',
|
||||
created_at: gameLogDate,
|
||||
avatar,
|
||||
inCache
|
||||
@@ -18757,6 +18816,15 @@ speechSynthesis.getVoices();
|
||||
$app.methods.parseOperationResponse = function (data, dateTime) {
|
||||
switch (data.OperationCode) {
|
||||
case 226:
|
||||
if (
|
||||
typeof data.Parameters[248] !== 'undefined' &&
|
||||
typeof data.Parameters[248][248] !== 'undefined'
|
||||
) {
|
||||
this.setPhotonLobbyMaster(data.Parameters[248][248]);
|
||||
}
|
||||
if (typeof data.Parameters[254] !== 'undefined') {
|
||||
this.photonLobbyCurrentUser = data.Parameters[254];
|
||||
}
|
||||
if (typeof data.Parameters[249] !== 'undefined') {
|
||||
for (var i in data.Parameters[249]) {
|
||||
var id = parseInt(i, 10);
|
||||
@@ -18784,15 +18852,6 @@ speechSynthesis.getVoices();
|
||||
if (typeof data.Parameters[252] !== 'undefined') {
|
||||
this.parsePhotonLobbyIds(data.Parameters[252]);
|
||||
}
|
||||
if (
|
||||
typeof data.Parameters[248] !== 'undefined' &&
|
||||
typeof data.Parameters[248][248] !== 'undefined'
|
||||
) {
|
||||
this.setPhotonLobbyMaster(data.Parameters[248][248]);
|
||||
}
|
||||
if (typeof data.Parameters[254] !== 'undefined') {
|
||||
this.photonLobbyCurrentUser = data.Parameters[254];
|
||||
}
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -200,7 +200,7 @@ html
|
||||
span.x-link(v-text="scope.row.displayName" @click="showUserFromPhotonId(scope.row.photonId)" style="padding-right:10px")
|
||||
el-table-column(label="Event" prop="text")
|
||||
template(v-once #default="scope")
|
||||
span(v-if="scope.row.avatar")
|
||||
span(v-if="scope.row.type === 'AvatarChange'")
|
||||
span ChangeAvatar
|
||||
span.x-link(v-text="scope.row.avatar.name" @click="showAvatarDialog(scope.row.avatar.id)")
|
||||
|
|
||||
@@ -208,6 +208,29 @@ html
|
||||
span.avatar-info-own(v-else-if="scope.row.avatar.releaseStatus === 'private'") (Private)
|
||||
template(v-if="scope.row.avatar.description && scope.row.avatar.name !== scope.row.avatar.description")
|
||||
| - {{ scope.row.avatar.description }}
|
||||
template(v-else-if="scope.row.type === 'ChangeStatus'")
|
||||
span ChangeStatus
|
||||
template(v-if="scope.row.status !== scope.row.previousStatus")
|
||||
el-tooltip(placement="top")
|
||||
template(#content)
|
||||
span(v-if="scope.row.previousStatus === 'active'") Active
|
||||
span(v-else-if="scope.row.previousStatus === 'join me'") Join Me
|
||||
span(v-else-if="scope.row.previousStatus === 'ask me'") Ask Me
|
||||
span(v-else-if="scope.row.previousStatus === 'busy'") Do Not Disturb
|
||||
span(v-else) Offline
|
||||
i.x-user-status(:class="statusClass(scope.row.previousStatus)" style="margin-left:10px")
|
||||
span
|
||||
i.el-icon-right
|
||||
el-tooltip(placement="top")
|
||||
template(#content)
|
||||
span(v-if="scope.row.status === 'active'") Active
|
||||
span(v-else-if="scope.row.status === 'join me'") Join Me
|
||||
span(v-else-if="scope.row.status === 'ask me'") Ask Me
|
||||
span(v-else-if="scope.row.status === 'busy'") Do Not Disturb
|
||||
span(v-else) Offline
|
||||
i.x-user-status(:class="statusClass(scope.row.status)")
|
||||
span(v-if="scope.row.statusDescription !== scope.row.previousStatusDescription" v-text="scope.row.statusDescription" style="margin-left:10px")
|
||||
span(v-else-if="scope.row.color === 'yellow'" v-text="scope.row.text" style="color:yellow")
|
||||
span(v-else v-text="scope.row.text")
|
||||
el-tab-pane(label="Previous")
|
||||
data-tables(v-bind="photonEventTablePrevious" style="margin-bottom:10px")
|
||||
|
||||
@@ -573,22 +573,21 @@ Vue.component('marquee-text', MarqueeText);
|
||||
};
|
||||
|
||||
$app.methods.addEntryHudFeed = function (json) {
|
||||
var {displayName, text, color, avatar, inCache} = JSON.parse(json);
|
||||
var data = JSON.parse(json);
|
||||
var combo = 1;
|
||||
this.hudFeed.forEach((item) => {
|
||||
if (item.displayName === displayName && item.text === text) {
|
||||
if (
|
||||
item.displayName === data.displayName &&
|
||||
item.text === data.text
|
||||
) {
|
||||
combo = item.combo + 1;
|
||||
removeFromArray(this.hudFeed, item);
|
||||
}
|
||||
});
|
||||
this.hudFeed.unshift({
|
||||
time: Date.now(),
|
||||
displayName,
|
||||
text,
|
||||
combo,
|
||||
color,
|
||||
avatar,
|
||||
inCache
|
||||
...data
|
||||
});
|
||||
this.cleanHudFeed();
|
||||
};
|
||||
|
||||
@@ -428,12 +428,22 @@ html
|
||||
.hud-feed
|
||||
div(v-for="feed in hudFeed")
|
||||
.item #[span(v-if="feed.isMaster") 👑]<strong>{{ feed.displayName }}</strong>
|
||||
span(v-if="feed.avatar")
|
||||
span(v-if="feed.type === 'AvatarChange'")
|
||||
span(style="margin-left:10px") ChangeAvatar
|
||||
span(v-if="!feed.inCache" style="color:#aaa;margin-left:10px") #[i.el-icon-download]
|
||||
span(v-text="feed.avatar.name" style="margin-left:10px")
|
||||
span(v-else-if="feed.color === 'yellow'" style="color:yellow;margin-left:10px") {{ feed.text }}
|
||||
span(v-else style="margin-left:10px") {{ feed.text }}
|
||||
span(v-if="feed.avatar.releaseStatus === 'public'" style="margin-left:10px;color:#67c23a") (Public)
|
||||
span(v-else-if="feed.avatar.releaseStatus === 'private'" style="margin-left:10px;color:#e6a23c") (Private)
|
||||
template(v-else-if="feed.type === 'ChangeStatus'")
|
||||
span(style="margin-left:10px") ChangeStatus
|
||||
template(v-if="feed.status !== feed.previousStatus")
|
||||
i.x-user-status(:class="statusClass(feed.previousStatus)" style="margin-left:10px;width:20px;height:20px")
|
||||
span
|
||||
i.el-icon-right
|
||||
i.x-user-status(:class="statusClass(feed.status)" style="width:20px;height:20px")
|
||||
span(v-if="feed.statusDescription !== feed.previousStatusDescription" v-text="feed.statusDescription" style="margin-left:10px")
|
||||
span(v-else-if="feed.color === 'yellow'" v-text="feed.text" style="color:yellow;margin-left:10px")
|
||||
span(v-else style="margin-left:10px" v-text="feed.text")
|
||||
template(v-if="feed.combo > 1")
|
||||
span.combo(style="margin-left:10px") x{{ feed.combo }}
|
||||
.hud-timeout(v-if="hudTimeout.length > 0")
|
||||
|
||||
Reference in New Issue
Block a user