mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-20 23:33:50 +02:00
Invite fix, shortName fixes and other fixes
This commit is contained in:
676
html/src/app.js
676
html/src/app.js
@@ -5237,13 +5237,27 @@ speechSynthesis.getVoices();
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case 'PortalSpawn':
|
case 'PortalSpawn':
|
||||||
this.speak('User has spawned a portal');
|
if (noty.displayName) {
|
||||||
|
this.speak(
|
||||||
|
`${
|
||||||
|
noty.displayName
|
||||||
|
} has spawned a portal to ${this.displayLocation(
|
||||||
|
noty.instanceId,
|
||||||
|
noty.worldName
|
||||||
|
)}`
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
this.speak('User has spawned a portal');
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'AvatarChange':
|
case 'AvatarChange':
|
||||||
this.speak(
|
this.speak(
|
||||||
`${noty.displayName} changed into avatar ${noty.name}`
|
`${noty.displayName} changed into avatar ${noty.name}`
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
case 'ChatBoxMessage':
|
||||||
|
this.speak(`${noty.displayName} said ${noty.text}`);
|
||||||
|
break;
|
||||||
case 'Event':
|
case 'Event':
|
||||||
this.speak(noty.data);
|
this.speak(noty.data);
|
||||||
break;
|
break;
|
||||||
@@ -5424,12 +5438,26 @@ speechSynthesis.getVoices();
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case 'PortalSpawn':
|
case 'PortalSpawn':
|
||||||
AppApi.XSNotification(
|
if (noty.displayName) {
|
||||||
'VRCX',
|
AppApi.XSNotification(
|
||||||
'User has spawned a portal',
|
'VRCX',
|
||||||
timeout,
|
`${
|
||||||
image
|
noty.displayName
|
||||||
);
|
} has spawned a portal to ${this.displayLocation(
|
||||||
|
noty.instanceId,
|
||||||
|
noty.worldName
|
||||||
|
)}`,
|
||||||
|
timeout,
|
||||||
|
image
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
AppApi.XSNotification(
|
||||||
|
'VRCX',
|
||||||
|
'User has spawned a portal',
|
||||||
|
timeout,
|
||||||
|
image
|
||||||
|
);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'AvatarChange':
|
case 'AvatarChange':
|
||||||
AppApi.XSNotification(
|
AppApi.XSNotification(
|
||||||
@@ -5439,6 +5467,14 @@ speechSynthesis.getVoices();
|
|||||||
image
|
image
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
case 'ChatBoxMessage':
|
||||||
|
AppApi.XSNotification(
|
||||||
|
'VRCX',
|
||||||
|
`${noty.displayName} said ${noty.text}`,
|
||||||
|
timeout,
|
||||||
|
image
|
||||||
|
);
|
||||||
|
break;
|
||||||
case 'Event':
|
case 'Event':
|
||||||
AppApi.XSNotification('VRCX', noty.data, timeout, image);
|
AppApi.XSNotification('VRCX', noty.data, timeout, image);
|
||||||
break;
|
break;
|
||||||
@@ -5641,11 +5677,22 @@ speechSynthesis.getVoices();
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case 'PortalSpawn':
|
case 'PortalSpawn':
|
||||||
AppApi.DesktopNotification(
|
if (noty.displayName) {
|
||||||
noty.displayName,
|
AppApi.DesktopNotification(
|
||||||
'User has spawned a portal',
|
noty.displayName,
|
||||||
image
|
`has spawned a portal to ${this.displayLocation(
|
||||||
);
|
noty.instanceId,
|
||||||
|
noty.worldName
|
||||||
|
)}`,
|
||||||
|
image
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
AppApi.DesktopNotification(
|
||||||
|
'',
|
||||||
|
'User has spawned a portal',
|
||||||
|
image
|
||||||
|
);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'AvatarChange':
|
case 'AvatarChange':
|
||||||
AppApi.DesktopNotification(
|
AppApi.DesktopNotification(
|
||||||
@@ -5654,6 +5701,13 @@ speechSynthesis.getVoices();
|
|||||||
image
|
image
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
case 'ChatBoxMessage':
|
||||||
|
AppApi.DesktopNotification(
|
||||||
|
noty.displayName,
|
||||||
|
`said ${noty.text}`,
|
||||||
|
image
|
||||||
|
);
|
||||||
|
break;
|
||||||
case 'Event':
|
case 'Event':
|
||||||
AppApi.DesktopNotification('Event', noty.data, image);
|
AppApi.DesktopNotification('Event', noty.data, image);
|
||||||
break;
|
break;
|
||||||
@@ -8131,6 +8185,7 @@ speechSynthesis.getVoices();
|
|||||||
if (
|
if (
|
||||||
entry.type === 'LocationDestination' ||
|
entry.type === 'LocationDestination' ||
|
||||||
entry.type === 'AvatarChange' ||
|
entry.type === 'AvatarChange' ||
|
||||||
|
entry.type === 'ChatBoxMessage' ||
|
||||||
(entry.userId === API.currentUser.id &&
|
(entry.userId === API.currentUser.id &&
|
||||||
(entry.type === 'OnPlayerJoined' ||
|
(entry.type === 'OnPlayerJoined' ||
|
||||||
entry.type === 'OnPlayerLeft'))
|
entry.type === 'OnPlayerLeft'))
|
||||||
@@ -8788,11 +8843,22 @@ speechSynthesis.getVoices();
|
|||||||
};
|
};
|
||||||
|
|
||||||
$app.data.photonEventTableFilter = '';
|
$app.data.photonEventTableFilter = '';
|
||||||
|
$app.data.photonEventTableTypeFilter = [];
|
||||||
|
|
||||||
$app.methods.photonEventTableFilterChange = function () {
|
$app.methods.photonEventTableFilterChange = function () {
|
||||||
this.photonEventTable.filters[0].value = this.photonEventTableFilter;
|
this.photonEventTable.filters[0].value = this.photonEventTableFilter;
|
||||||
|
this.photonEventTable.filters[1].value =
|
||||||
|
this.photonEventTableTypeFilter;
|
||||||
|
|
||||||
this.photonEventTablePrevious.filters[0].value =
|
this.photonEventTablePrevious.filters[0].value =
|
||||||
this.photonEventTableFilter;
|
this.photonEventTableFilter;
|
||||||
|
this.photonEventTablePrevious.filters[1].value =
|
||||||
|
this.photonEventTableTypeFilter;
|
||||||
|
|
||||||
|
configRepository.setString(
|
||||||
|
'VRCX_photonEventTypeFilter',
|
||||||
|
JSON.stringify(this.photonEventTableTypeFilter)
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
$app.data.photonEventTable = {
|
$app.data.photonEventTable = {
|
||||||
@@ -8801,6 +8867,12 @@ speechSynthesis.getVoices();
|
|||||||
{
|
{
|
||||||
prop: ['displayName', 'text'],
|
prop: ['displayName', 'text'],
|
||||||
value: ''
|
value: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'type',
|
||||||
|
value: [],
|
||||||
|
filterFn: (row, filter) =>
|
||||||
|
filter.value.some((v) => v === row.type)
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
tableProps: {
|
tableProps: {
|
||||||
@@ -8821,6 +8893,12 @@ speechSynthesis.getVoices();
|
|||||||
{
|
{
|
||||||
prop: ['displayName', 'text'],
|
prop: ['displayName', 'text'],
|
||||||
value: ''
|
value: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'type',
|
||||||
|
value: [],
|
||||||
|
filterFn: (row, filter) =>
|
||||||
|
filter.value.some((v) => v === row.type)
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
tableProps: {
|
tableProps: {
|
||||||
@@ -8847,6 +8925,12 @@ speechSynthesis.getVoices();
|
|||||||
...input
|
...input
|
||||||
};
|
};
|
||||||
this.photonEventTable.data.unshift(feed);
|
this.photonEventTable.data.unshift(feed);
|
||||||
|
if (
|
||||||
|
this.photonEventTableTypeFilter.length > 0 &&
|
||||||
|
!this.photonEventTableTypeFilter.includes(feed.type)
|
||||||
|
) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (this.photonEventOverlay) {
|
if (this.photonEventOverlay) {
|
||||||
if (
|
if (
|
||||||
this.photonEventOverlayFilter === 'VIP' ||
|
this.photonEventOverlayFilter === 'VIP' ||
|
||||||
@@ -8945,221 +9029,256 @@ speechSynthesis.getVoices();
|
|||||||
};
|
};
|
||||||
|
|
||||||
$app.methods.parsePhotonEvent = function (data, gameLogDate) {
|
$app.methods.parsePhotonEvent = function (data, gameLogDate) {
|
||||||
if (data.Code === 253) {
|
switch (data.Code) {
|
||||||
// SetUserProperties
|
case 253:
|
||||||
if (data.Parameters[253] === -1) {
|
// SetUserProperties
|
||||||
for (var i in data.Parameters[251]) {
|
if (data.Parameters[253] === -1) {
|
||||||
var id = parseInt(i, 10);
|
for (var i in data.Parameters[251]) {
|
||||||
var user = data.Parameters[251][i];
|
var id = parseInt(i, 10);
|
||||||
this.parsePhotonUser(id, user.user, gameLogDate);
|
var user = data.Parameters[251][i];
|
||||||
this.parsePhotonAvatarChange(
|
this.parsePhotonUser(id, user.user, gameLogDate);
|
||||||
id,
|
this.parsePhotonAvatarChange(
|
||||||
user.user,
|
id,
|
||||||
user.avatarDict,
|
user.user,
|
||||||
gameLogDate
|
user.avatarDict,
|
||||||
);
|
|
||||||
this.parsePhotonAvatar(user.avatarDict);
|
|
||||||
this.parsePhotonAvatar(user.favatarDict);
|
|
||||||
if (typeof user.inVRMode !== 'undefined') {
|
|
||||||
this.photonLobbyInVrMode.set(id, user.inVRMode);
|
|
||||||
}
|
|
||||||
this.photonLobbyJointime.set(id, {
|
|
||||||
joinTime: Date.parse(gameLogDate),
|
|
||||||
hasInstantiated: false,
|
|
||||||
inVRMode: user.inVRMode,
|
|
||||||
avatarEyeHeight: user.avatarEyeHeight
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.parsePhotonUser(
|
|
||||||
data.Parameters[253],
|
|
||||||
data.Parameters[251].user,
|
|
||||||
gameLogDate
|
|
||||||
);
|
|
||||||
this.parsePhotonAvatarChange(
|
|
||||||
data.Parameters[253],
|
|
||||||
data.Parameters[251].user,
|
|
||||||
data.Parameters[251].avatarDict,
|
|
||||||
gameLogDate
|
|
||||||
);
|
|
||||||
this.parsePhotonAvatar(data.Parameters[251].avatarDict);
|
|
||||||
this.parsePhotonAvatar(data.Parameters[251].favatarDict);
|
|
||||||
if (typeof data.Parameters[251].inVRMode !== 'undefined') {
|
|
||||||
this.photonLobbyInVrMode.set(
|
|
||||||
data.Parameters[253],
|
|
||||||
data.Parameters[251].inVRMode
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (data.Code === 42) {
|
|
||||||
// SetUserProperties
|
|
||||||
this.parsePhotonUser(
|
|
||||||
data.Parameters[254],
|
|
||||||
data.Parameters[245].user,
|
|
||||||
gameLogDate
|
|
||||||
);
|
|
||||||
this.parsePhotonAvatarChange(
|
|
||||||
data.Parameters[254],
|
|
||||||
data.Parameters[245].user,
|
|
||||||
data.Parameters[245].avatarDict,
|
|
||||||
gameLogDate
|
|
||||||
);
|
|
||||||
this.parsePhotonAvatar(data.Parameters[245].avatarDict);
|
|
||||||
this.parsePhotonAvatar(data.Parameters[245].favatarDict);
|
|
||||||
if (typeof data.Parameters[245].inVRMode !== 'undefined') {
|
|
||||||
this.photonLobbyInVrMode.set(
|
|
||||||
data.Parameters[254],
|
|
||||||
data.Parameters[245].inVRMode
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else if (data.Code === 255) {
|
|
||||||
// Join
|
|
||||||
if (typeof data.Parameters[249] !== 'undefined') {
|
|
||||||
this.parsePhotonUser(
|
|
||||||
data.Parameters[254],
|
|
||||||
data.Parameters[249].user,
|
|
||||||
gameLogDate
|
|
||||||
);
|
|
||||||
this.parsePhotonAvatarChange(
|
|
||||||
data.Parameters[254],
|
|
||||||
data.Parameters[249].user,
|
|
||||||
data.Parameters[249].avatarDict,
|
|
||||||
gameLogDate
|
|
||||||
);
|
|
||||||
this.parsePhotonAvatar(data.Parameters[249].avatarDict);
|
|
||||||
this.parsePhotonAvatar(data.Parameters[249].favatarDict);
|
|
||||||
}
|
|
||||||
if (typeof data.Parameters[249].inVRMode !== 'undefined') {
|
|
||||||
this.photonLobbyInVrMode.set(
|
|
||||||
data.Parameters[254],
|
|
||||||
data.Parameters[249].inVRMode
|
|
||||||
);
|
|
||||||
}
|
|
||||||
this.parsePhotonLobbyIds(data.Parameters[252]);
|
|
||||||
var hasInstantiated = false;
|
|
||||||
if (this.photonLobbyCurrentUser === data.Parameters[254]) {
|
|
||||||
hasInstantiated = true;
|
|
||||||
}
|
|
||||||
this.photonLobbyJointime.set(data.Parameters[254], {
|
|
||||||
joinTime: Date.parse(gameLogDate),
|
|
||||||
hasInstantiated,
|
|
||||||
inVRMode: data.Parameters[249].inVRMode,
|
|
||||||
avatarEyeHeight: data.Parameters[249].avatarEyeHeight
|
|
||||||
});
|
|
||||||
var ref = this.photonLobbyCurrent.get(data.Parameters[254]);
|
|
||||||
this.photonUserJoin(data.Parameters[254], ref, gameLogDate);
|
|
||||||
this.checkPhotonBotJoin(
|
|
||||||
data.Parameters[254],
|
|
||||||
data.Parameters[249],
|
|
||||||
gameLogDate
|
|
||||||
);
|
|
||||||
this.startLobbyWatcherLoop();
|
|
||||||
} else if (data.Code === 254) {
|
|
||||||
// Leave
|
|
||||||
this.checkPhotonBotLeave(data.Parameters[254], gameLogDate);
|
|
||||||
this.photonUserLeave(data.Parameters[254], gameLogDate);
|
|
||||||
this.photonLobbyCurrent.delete(data.Parameters[254]);
|
|
||||||
this.photonLobbyJointime.delete(data.Parameters[254]);
|
|
||||||
this.photonLobbyInVrMode.delete(data.Parameters[254]);
|
|
||||||
this.photonEvent7List.delete(data.Parameters[254]);
|
|
||||||
this.parsePhotonLobbyIds(data.Parameters[252]);
|
|
||||||
if (typeof data.Parameters[203] !== 'undefined') {
|
|
||||||
this.setPhotonLobbyMaster(data.Parameters[203], gameLogDate);
|
|
||||||
}
|
|
||||||
} else if (data.Code === 4) {
|
|
||||||
// Sync
|
|
||||||
this.setPhotonLobbyMaster(data.Parameters[254], gameLogDate);
|
|
||||||
} else if (data.Code === 33) {
|
|
||||||
// Moderation
|
|
||||||
if (data.Parameters[245]['0'] === 21) {
|
|
||||||
if (data.Parameters[245]['1']) {
|
|
||||||
var photonId = data.Parameters[245]['1'];
|
|
||||||
var block = data.Parameters[245]['10'];
|
|
||||||
var mute = data.Parameters[245]['11'];
|
|
||||||
var ref = this.photonLobby.get(photonId);
|
|
||||||
if (
|
|
||||||
typeof ref !== 'undefined' &&
|
|
||||||
typeof ref.id !== 'undefined'
|
|
||||||
) {
|
|
||||||
this.photonModerationUpdate(
|
|
||||||
ref,
|
|
||||||
photonId,
|
|
||||||
block,
|
|
||||||
mute,
|
|
||||||
gameLogDate
|
gameLogDate
|
||||||
);
|
);
|
||||||
} else {
|
this.parsePhotonAvatar(user.avatarDict);
|
||||||
this.moderationEventQueue.set(photonId, {
|
this.parsePhotonAvatar(user.favatarDict);
|
||||||
block,
|
if (typeof user.inVRMode !== 'undefined') {
|
||||||
mute,
|
this.photonLobbyInVrMode.set(id, user.inVRMode);
|
||||||
gameLogDate
|
}
|
||||||
|
this.photonLobbyJointime.set(id, {
|
||||||
|
joinTime: Date.parse(gameLogDate),
|
||||||
|
hasInstantiated: false,
|
||||||
|
inVRMode: user.inVRMode,
|
||||||
|
avatarEyeHeight: user.avatarEyeHeight
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
var blockArray = data.Parameters[245]['10'];
|
this.parsePhotonUser(
|
||||||
var muteArray = data.Parameters[245]['11'];
|
data.Parameters[253],
|
||||||
var idList = new Map();
|
data.Parameters[251].user,
|
||||||
blockArray.forEach((photonId1) => {
|
gameLogDate
|
||||||
if (muteArray.includes(photonId1)) {
|
);
|
||||||
idList.set(photonId1, {
|
this.parsePhotonAvatarChange(
|
||||||
isMute: true,
|
data.Parameters[253],
|
||||||
isBlock: true
|
data.Parameters[251].user,
|
||||||
});
|
data.Parameters[251].avatarDict,
|
||||||
} else {
|
gameLogDate
|
||||||
idList.set(photonId1, {
|
);
|
||||||
isMute: false,
|
this.parsePhotonAvatar(data.Parameters[251].avatarDict);
|
||||||
isBlock: true
|
this.parsePhotonAvatar(data.Parameters[251].favatarDict);
|
||||||
});
|
if (typeof data.Parameters[251].inVRMode !== 'undefined') {
|
||||||
}
|
this.photonLobbyInVrMode.set(
|
||||||
});
|
data.Parameters[253],
|
||||||
muteArray.forEach((photonId2) => {
|
data.Parameters[251].inVRMode
|
||||||
if (!idList.has(photonId2)) {
|
);
|
||||||
idList.set(photonId2, {
|
}
|
||||||
isMute: true,
|
}
|
||||||
isBlock: false
|
break;
|
||||||
});
|
case 42:
|
||||||
}
|
// SetUserProperties
|
||||||
});
|
this.parsePhotonUser(
|
||||||
idList.forEach(({isMute, isBlock}, photonId3) => {
|
data.Parameters[254],
|
||||||
var ref1 = this.photonLobby.get(photonId3);
|
data.Parameters[245].user,
|
||||||
|
gameLogDate
|
||||||
|
);
|
||||||
|
this.parsePhotonAvatarChange(
|
||||||
|
data.Parameters[254],
|
||||||
|
data.Parameters[245].user,
|
||||||
|
data.Parameters[245].avatarDict,
|
||||||
|
gameLogDate
|
||||||
|
);
|
||||||
|
this.parsePhotonAvatar(data.Parameters[245].avatarDict);
|
||||||
|
this.parsePhotonAvatar(data.Parameters[245].favatarDict);
|
||||||
|
if (typeof data.Parameters[245].inVRMode !== 'undefined') {
|
||||||
|
this.photonLobbyInVrMode.set(
|
||||||
|
data.Parameters[254],
|
||||||
|
data.Parameters[245].inVRMode
|
||||||
|
);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 255:
|
||||||
|
// Join
|
||||||
|
if (typeof data.Parameters[249] !== 'undefined') {
|
||||||
|
this.parsePhotonUser(
|
||||||
|
data.Parameters[254],
|
||||||
|
data.Parameters[249].user,
|
||||||
|
gameLogDate
|
||||||
|
);
|
||||||
|
this.parsePhotonAvatarChange(
|
||||||
|
data.Parameters[254],
|
||||||
|
data.Parameters[249].user,
|
||||||
|
data.Parameters[249].avatarDict,
|
||||||
|
gameLogDate
|
||||||
|
);
|
||||||
|
this.parsePhotonAvatar(data.Parameters[249].avatarDict);
|
||||||
|
this.parsePhotonAvatar(data.Parameters[249].favatarDict);
|
||||||
|
}
|
||||||
|
if (typeof data.Parameters[249].inVRMode !== 'undefined') {
|
||||||
|
this.photonLobbyInVrMode.set(
|
||||||
|
data.Parameters[254],
|
||||||
|
data.Parameters[249].inVRMode
|
||||||
|
);
|
||||||
|
}
|
||||||
|
this.parsePhotonLobbyIds(data.Parameters[252]);
|
||||||
|
var hasInstantiated = false;
|
||||||
|
if (this.photonLobbyCurrentUser === data.Parameters[254]) {
|
||||||
|
hasInstantiated = true;
|
||||||
|
}
|
||||||
|
this.photonLobbyJointime.set(data.Parameters[254], {
|
||||||
|
joinTime: Date.parse(gameLogDate),
|
||||||
|
hasInstantiated,
|
||||||
|
inVRMode: data.Parameters[249].inVRMode,
|
||||||
|
avatarEyeHeight: data.Parameters[249].avatarEyeHeight
|
||||||
|
});
|
||||||
|
var ref = this.photonLobbyCurrent.get(data.Parameters[254]);
|
||||||
|
this.photonUserJoin(
|
||||||
|
data.Parameters[254],
|
||||||
|
data.Parameters[249].avatarDict,
|
||||||
|
gameLogDate
|
||||||
|
);
|
||||||
|
this.checkPhotonBotJoin(
|
||||||
|
data.Parameters[254],
|
||||||
|
data.Parameters[249],
|
||||||
|
gameLogDate
|
||||||
|
);
|
||||||
|
this.startLobbyWatcherLoop();
|
||||||
|
break;
|
||||||
|
case 254:
|
||||||
|
// Leave
|
||||||
|
this.checkPhotonBotLeave(data.Parameters[254], gameLogDate);
|
||||||
|
this.photonUserLeave(data.Parameters[254], gameLogDate);
|
||||||
|
this.photonLobbyCurrent.delete(data.Parameters[254]);
|
||||||
|
this.photonLobbyJointime.delete(data.Parameters[254]);
|
||||||
|
this.photonLobbyInVrMode.delete(data.Parameters[254]);
|
||||||
|
this.photonEvent7List.delete(data.Parameters[254]);
|
||||||
|
this.parsePhotonLobbyIds(data.Parameters[252]);
|
||||||
|
if (typeof data.Parameters[203] !== 'undefined') {
|
||||||
|
this.setPhotonLobbyMaster(
|
||||||
|
data.Parameters[203],
|
||||||
|
gameLogDate
|
||||||
|
);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
// Sync
|
||||||
|
this.setPhotonLobbyMaster(data.Parameters[254], gameLogDate);
|
||||||
|
break;
|
||||||
|
case 33:
|
||||||
|
// Moderation
|
||||||
|
if (data.Parameters[245]['0'] === 21) {
|
||||||
|
if (data.Parameters[245]['1']) {
|
||||||
|
var photonId = data.Parameters[245]['1'];
|
||||||
|
var block = data.Parameters[245]['10'];
|
||||||
|
var mute = data.Parameters[245]['11'];
|
||||||
|
var ref = this.photonLobby.get(photonId);
|
||||||
if (
|
if (
|
||||||
typeof ref1 !== 'undefined' &&
|
typeof ref !== 'undefined' &&
|
||||||
typeof ref1.id !== 'undefined'
|
typeof ref.id !== 'undefined'
|
||||||
) {
|
) {
|
||||||
this.photonModerationUpdate(
|
this.photonModerationUpdate(
|
||||||
ref1,
|
ref,
|
||||||
photonId3,
|
photonId,
|
||||||
isBlock,
|
block,
|
||||||
isMute,
|
mute,
|
||||||
gameLogDate
|
gameLogDate
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
this.moderationEventQueue.set(photonId3, {
|
this.moderationEventQueue.set(photonId, {
|
||||||
block: isBlock,
|
block,
|
||||||
mute: isMute,
|
mute,
|
||||||
gameLogDate
|
gameLogDate
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
var blockArray = data.Parameters[245]['10'];
|
||||||
|
var muteArray = data.Parameters[245]['11'];
|
||||||
|
var idList = new Map();
|
||||||
|
blockArray.forEach((photonId1) => {
|
||||||
|
if (muteArray.includes(photonId1)) {
|
||||||
|
idList.set(photonId1, {
|
||||||
|
isMute: true,
|
||||||
|
isBlock: true
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
idList.set(photonId1, {
|
||||||
|
isMute: false,
|
||||||
|
isBlock: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
muteArray.forEach((photonId2) => {
|
||||||
|
if (!idList.has(photonId2)) {
|
||||||
|
idList.set(photonId2, {
|
||||||
|
isMute: true,
|
||||||
|
isBlock: false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
idList.forEach(({isMute, isBlock}, photonId3) => {
|
||||||
|
var ref1 = this.photonLobby.get(photonId3);
|
||||||
|
if (
|
||||||
|
typeof ref1 !== 'undefined' &&
|
||||||
|
typeof ref1.id !== 'undefined'
|
||||||
|
) {
|
||||||
|
this.photonModerationUpdate(
|
||||||
|
ref1,
|
||||||
|
photonId3,
|
||||||
|
isBlock,
|
||||||
|
isMute,
|
||||||
|
gameLogDate
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
this.moderationEventQueue.set(photonId3, {
|
||||||
|
block: isBlock,
|
||||||
|
mute: isMute,
|
||||||
|
gameLogDate
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 202:
|
||||||
|
// Instantiate
|
||||||
|
if (!this.photonLobby.has(data.Parameters[254])) {
|
||||||
|
this.photonLobby.set(data.Parameters[254]);
|
||||||
|
}
|
||||||
|
if (!this.photonLobbyCurrent.has(data.Parameters[254])) {
|
||||||
|
this.photonLobbyCurrent.set(data.Parameters[254]);
|
||||||
|
}
|
||||||
|
var lobbyJointime = this.photonLobbyJointime.get(
|
||||||
|
data.Parameters[254]
|
||||||
|
);
|
||||||
|
if (typeof lobbyJointime !== 'undefined') {
|
||||||
|
this.photonLobbyJointime.set(data.Parameters[254], {
|
||||||
|
...lobbyJointime,
|
||||||
|
hasInstantiated: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
} else if (data.Code === 202) {
|
case 43:
|
||||||
// Instantiate
|
// Chatbox Message
|
||||||
if (!this.photonLobby.has(data.Parameters[254])) {
|
var photonId = data.Parameters[254];
|
||||||
this.photonLobby.set(data.Parameters[254]);
|
var text = data.Parameters[245];
|
||||||
}
|
this.addEntryPhotonEvent({
|
||||||
if (!this.photonLobbyCurrent.has(data.Parameters[254])) {
|
photonId,
|
||||||
this.photonLobbyCurrent.set(data.Parameters[254]);
|
text,
|
||||||
}
|
type: 'ChatBoxMessage',
|
||||||
var lobbyJointime = this.photonLobbyJointime.get(
|
created_at: gameLogDate
|
||||||
data.Parameters[254]
|
|
||||||
);
|
|
||||||
if (typeof lobbyJointime !== 'undefined') {
|
|
||||||
this.photonLobbyJointime.set(data.Parameters[254], {
|
|
||||||
...lobbyJointime,
|
|
||||||
hasInstantiated: true
|
|
||||||
});
|
});
|
||||||
}
|
var entry = {
|
||||||
|
userId: this.getUserIdFromPhotonId(photonId),
|
||||||
|
displayName: this.getDisplayNameFromPhotonId(photonId),
|
||||||
|
created_at: gameLogDate,
|
||||||
|
type: 'ChatBoxMessage',
|
||||||
|
text
|
||||||
|
};
|
||||||
|
this.queueGameLogNoty(entry);
|
||||||
|
this.addGameLog(entry);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -9196,23 +9315,23 @@ speechSynthesis.getVoices();
|
|||||||
var displayName = this.getDisplayNameFromPhotonId(senderId);
|
var displayName = this.getDisplayNameFromPhotonId(senderId);
|
||||||
API.getInstanceFromShortName({shortName}).then((args) => {
|
API.getInstanceFromShortName({shortName}).then((args) => {
|
||||||
var location = args.json.location;
|
var location = args.json.location;
|
||||||
|
var newShortName = args.json.shortName;
|
||||||
var ref = {
|
var ref = {
|
||||||
id: this.getUserIdFromPhotonId(senderId),
|
id: this.getUserIdFromPhotonId(senderId),
|
||||||
displayName
|
displayName
|
||||||
};
|
};
|
||||||
this.parsePhotonPortalSpawn(datetime, location, ref);
|
|
||||||
var portalType = 'Secure';
|
var portalType = 'Secure';
|
||||||
if (shortName === args.json.shortName) {
|
if (shortName === newShortName) {
|
||||||
portalType = 'Unlocked';
|
portalType = 'Unlocked';
|
||||||
}
|
}
|
||||||
this.addEntryPhotonEvent({
|
this.parsePhotonPortalSpawn(
|
||||||
photonId: senderId,
|
datetime,
|
||||||
text: `${portalType} PortalSpawn`,
|
|
||||||
type: 'PortalSpawn',
|
|
||||||
shortName,
|
|
||||||
location,
|
location,
|
||||||
created_at: datetime
|
ref,
|
||||||
});
|
portalType,
|
||||||
|
newShortName,
|
||||||
|
senderId
|
||||||
|
);
|
||||||
return args;
|
return args;
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
@@ -9276,7 +9395,10 @@ speechSynthesis.getVoices();
|
|||||||
$app.methods.parsePhotonPortalSpawn = async function (
|
$app.methods.parsePhotonPortalSpawn = async function (
|
||||||
created_at,
|
created_at,
|
||||||
instanceId,
|
instanceId,
|
||||||
ref
|
ref,
|
||||||
|
portalType,
|
||||||
|
shortName,
|
||||||
|
photonId
|
||||||
) {
|
) {
|
||||||
var L = API.parseLocation(instanceId);
|
var L = API.parseLocation(instanceId);
|
||||||
var name = instanceId;
|
var name = instanceId;
|
||||||
@@ -9286,6 +9408,15 @@ speechSynthesis.getVoices();
|
|||||||
});
|
});
|
||||||
name = args.ref.name;
|
name = args.ref.name;
|
||||||
} catch (err) {}
|
} catch (err) {}
|
||||||
|
this.addEntryPhotonEvent({
|
||||||
|
photonId,
|
||||||
|
text: `${portalType} PortalSpawn to ${name}`,
|
||||||
|
type: 'PortalSpawn',
|
||||||
|
shortName,
|
||||||
|
location: instanceId,
|
||||||
|
worldName: name,
|
||||||
|
created_at
|
||||||
|
});
|
||||||
this.addPhotonEventToGameLog({
|
this.addPhotonEventToGameLog({
|
||||||
created_at,
|
created_at,
|
||||||
type: 'PortalSpawn',
|
type: 'PortalSpawn',
|
||||||
@@ -9526,7 +9657,7 @@ speechSynthesis.getVoices();
|
|||||||
this.photonLobbyUserData.set(photonId, photonUser);
|
this.photonLobbyUserData.set(photonId, photonUser);
|
||||||
};
|
};
|
||||||
|
|
||||||
$app.methods.photonUserJoin = function (photonId, ref, gameLogDate) {
|
$app.methods.photonUserJoin = function (photonId, avatar, gameLogDate) {
|
||||||
if (
|
if (
|
||||||
photonId === this.photonLobbyCurrentUser ||
|
photonId === this.photonLobbyCurrentUser ||
|
||||||
!this.photonEventOverlayJoinLeave
|
!this.photonEventOverlayJoinLeave
|
||||||
@@ -9537,7 +9668,8 @@ speechSynthesis.getVoices();
|
|||||||
photonId,
|
photonId,
|
||||||
text: 'has joined',
|
text: 'has joined',
|
||||||
type: 'OnPlayerJoined',
|
type: 'OnPlayerJoined',
|
||||||
created_at: gameLogDate
|
created_at: gameLogDate,
|
||||||
|
avatar
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -9677,9 +9809,13 @@ speechSynthesis.getVoices();
|
|||||||
|
|
||||||
$app.methods.parsePhotonAvatar = function (avatar) {
|
$app.methods.parsePhotonAvatar = function (avatar) {
|
||||||
var tags = [];
|
var tags = [];
|
||||||
|
var unityPackages = [];
|
||||||
if (typeof avatar.tags !== 'undefined') {
|
if (typeof avatar.tags !== 'undefined') {
|
||||||
tags = avatar.tags;
|
tags = avatar.tags;
|
||||||
}
|
}
|
||||||
|
if (typeof avatar.unityPackages !== 'undefined') {
|
||||||
|
unityPackages = avatar.unityPackages;
|
||||||
|
}
|
||||||
API.applyAvatar({
|
API.applyAvatar({
|
||||||
id: avatar.id,
|
id: avatar.id,
|
||||||
authorId: avatar.authorId,
|
authorId: avatar.authorId,
|
||||||
@@ -9692,7 +9828,8 @@ speechSynthesis.getVoices();
|
|||||||
name: avatar.name,
|
name: avatar.name,
|
||||||
releaseStatus: avatar.releaseStatus,
|
releaseStatus: avatar.releaseStatus,
|
||||||
version: avatar.version,
|
version: avatar.version,
|
||||||
tags
|
tags,
|
||||||
|
unityPackages
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -11620,6 +11757,15 @@ speechSynthesis.getVoices();
|
|||||||
configRepository.getString('VRCX_notificationTableFilters')
|
configRepository.getString('VRCX_notificationTableFilters')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
if (configRepository.getString('VRCX_photonEventTypeFilter')) {
|
||||||
|
$app.data.photonEventTableTypeFilter = JSON.parse(
|
||||||
|
configRepository.getString('VRCX_photonEventTypeFilter')
|
||||||
|
);
|
||||||
|
$app.data.photonEventTable.filters[1].value =
|
||||||
|
$app.data.photonEventTableTypeFilter;
|
||||||
|
$app.data.photonEventTablePrevious.filters[1].value =
|
||||||
|
$app.data.photonEventTableTypeFilter;
|
||||||
|
}
|
||||||
|
|
||||||
// App: Profile + Settings
|
// App: Profile + Settings
|
||||||
|
|
||||||
@@ -11999,9 +12145,6 @@ speechSynthesis.getVoices();
|
|||||||
'VRCX_PhotonEventOverlayJoinLeave'
|
'VRCX_PhotonEventOverlayJoinLeave'
|
||||||
);
|
);
|
||||||
$app.data.photonLoggingEnabled = false;
|
$app.data.photonLoggingEnabled = false;
|
||||||
// $app.data.photonLoggingEnabled = configRepository.getBool(
|
|
||||||
// 'VRCX_photonLoggingEnabled'
|
|
||||||
// );
|
|
||||||
$app.data.gameLogDisabled = configRepository.getBool(
|
$app.data.gameLogDisabled = configRepository.getBool(
|
||||||
'VRCX_gameLogDisabled'
|
'VRCX_gameLogDisabled'
|
||||||
);
|
);
|
||||||
@@ -12171,6 +12314,7 @@ speechSynthesis.getVoices();
|
|||||||
MutedOnPlayerJoined: 'Off',
|
MutedOnPlayerJoined: 'Off',
|
||||||
MutedOnPlayerLeft: 'Off',
|
MutedOnPlayerLeft: 'Off',
|
||||||
AvatarChange: 'Off',
|
AvatarChange: 'Off',
|
||||||
|
ChatBoxMessage: 'Off',
|
||||||
Blocked: 'Off',
|
Blocked: 'Off',
|
||||||
Unblocked: 'Off',
|
Unblocked: 'Off',
|
||||||
Muted: 'Off',
|
Muted: 'Off',
|
||||||
@@ -12202,6 +12346,7 @@ speechSynthesis.getVoices();
|
|||||||
MutedOnPlayerJoined: 'Off',
|
MutedOnPlayerJoined: 'Off',
|
||||||
MutedOnPlayerLeft: 'Off',
|
MutedOnPlayerLeft: 'Off',
|
||||||
AvatarChange: 'Everyone',
|
AvatarChange: 'Everyone',
|
||||||
|
ChatBoxMessage: 'Off',
|
||||||
Blocked: 'On',
|
Blocked: 'On',
|
||||||
Unblocked: 'On',
|
Unblocked: 'On',
|
||||||
Muted: 'On',
|
Muted: 'On',
|
||||||
@@ -12662,13 +12807,11 @@ speechSynthesis.getVoices();
|
|||||||
if (input.startsWith('/home/')) {
|
if (input.startsWith('/home/')) {
|
||||||
input = `https://vrchat.com${input}`;
|
input = `https://vrchat.com${input}`;
|
||||||
}
|
}
|
||||||
if (input.startsWith('https://vrch.at/')) {
|
if (input.length === 8) {
|
||||||
|
return this.verifyShortName('', input);
|
||||||
|
} else if (input.startsWith('https://vrch.at/')) {
|
||||||
var shortName = input.substring(16, 24);
|
var shortName = input.substring(16, 24);
|
||||||
return API.getInstanceFromShortName({shortName}).then((args) => {
|
return this.verifyShortName('', shortName);
|
||||||
var location = args.json.location;
|
|
||||||
this.directAccessWorld(location);
|
|
||||||
return args;
|
|
||||||
});
|
|
||||||
} else if (
|
} else if (
|
||||||
input.startsWith('https://vrchat.') ||
|
input.startsWith('https://vrchat.') ||
|
||||||
input.startsWith('/home/')
|
input.startsWith('/home/')
|
||||||
@@ -12686,8 +12829,7 @@ speechSynthesis.getVoices();
|
|||||||
if (instanceId) {
|
if (instanceId) {
|
||||||
var shortName = urlParams.get('shortName');
|
var shortName = urlParams.get('shortName');
|
||||||
var location = `${worldId}:${instanceId}`;
|
var location = `${worldId}:${instanceId}`;
|
||||||
this.showWorldDialog(location, shortName);
|
return this.verifyShortName(location, shortName);
|
||||||
return true;
|
|
||||||
} else if (worldId) {
|
} else if (worldId) {
|
||||||
this.showWorldDialog(worldId);
|
this.showWorldDialog(worldId);
|
||||||
return true;
|
return true;
|
||||||
@@ -12705,7 +12847,25 @@ speechSynthesis.getVoices();
|
|||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$app.methods.verifyShortName = function (location, shortName) {
|
||||||
|
return API.getInstanceFromShortName({shortName}).then((args) => {
|
||||||
|
var newLocation = args.json.location;
|
||||||
|
var newShortName = args.json.shortName;
|
||||||
|
if (newShortName) {
|
||||||
|
this.showWorldDialog(newLocation, newShortName);
|
||||||
|
} else if (newLocation) {
|
||||||
|
this.showWorldDialog(newLocation);
|
||||||
|
} else {
|
||||||
|
this.showWorldDialog(location);
|
||||||
|
}
|
||||||
|
return args;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
$app.methods.directAccessParse = function (input) {
|
$app.methods.directAccessParse = function (input) {
|
||||||
|
if (!input) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
var testUrl = input.substring(0, 15);
|
var testUrl = input.substring(0, 15);
|
||||||
if (this.directAccessWorld(input)) {
|
if (this.directAccessWorld(input)) {
|
||||||
return true;
|
return true;
|
||||||
@@ -15537,7 +15697,8 @@ speechSynthesis.getVoices();
|
|||||||
strict: false,
|
strict: false,
|
||||||
location: '',
|
location: '',
|
||||||
shortName: '',
|
shortName: '',
|
||||||
url: ''
|
url: '',
|
||||||
|
secureOrShortName: ''
|
||||||
};
|
};
|
||||||
|
|
||||||
API.$on('LOGOUT', function () {
|
API.$on('LOGOUT', function () {
|
||||||
@@ -15618,7 +15779,7 @@ speechSynthesis.getVoices();
|
|||||||
};
|
};
|
||||||
|
|
||||||
$app.methods.updateNewInstanceDialog = function (noChanges) {
|
$app.methods.updateNewInstanceDialog = function (noChanges) {
|
||||||
var D = $app.newInstanceDialog;
|
var D = this.newInstanceDialog;
|
||||||
if (D.instanceId) {
|
if (D.instanceId) {
|
||||||
D.location = `${D.worldId}:${D.instanceId}`;
|
D.location = `${D.worldId}:${D.instanceId}`;
|
||||||
} else {
|
} else {
|
||||||
@@ -15864,7 +16025,8 @@ speechSynthesis.getVoices();
|
|||||||
location: '',
|
location: '',
|
||||||
url: '',
|
url: '',
|
||||||
shortName: '',
|
shortName: '',
|
||||||
shortUrl: ''
|
shortUrl: '',
|
||||||
|
secureOrShortName: ''
|
||||||
};
|
};
|
||||||
|
|
||||||
$app.watch['launchDialog.desktop'] = function () {
|
$app.watch['launchDialog.desktop'] = function () {
|
||||||
@@ -15880,23 +16042,24 @@ speechSynthesis.getVoices();
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var shortName = args.json.shortName;
|
var shortName = args.json.shortName;
|
||||||
var location = `${args.instance.worldId}:${args.instance.instanceId}`;
|
var secureOrShortName = shortName;
|
||||||
var L = this.parseLocation(location);
|
|
||||||
if (!shortName) {
|
if (!shortName) {
|
||||||
if (location === $app.launchDialog.tag && args.json.secureName) {
|
secureOrShortName = args.json.secureName;
|
||||||
$app.launchDialog.location = `${L.worldId}:${L.instanceId}&shortName=${args.json.secureName}`;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
var location = `${args.instance.worldId}:${args.instance.instanceId}`;
|
||||||
if (location === $app.launchDialog.tag) {
|
if (location === $app.launchDialog.tag) {
|
||||||
|
var L = this.parseLocation(location);
|
||||||
L.shortName = shortName;
|
L.shortName = shortName;
|
||||||
$app.launchDialog.shortName = shortName;
|
$app.launchDialog.shortName = shortName;
|
||||||
$app.launchDialog.shortUrl = `https://vrch.at/${shortName}`;
|
$app.launchDialog.secureOrShortName = secureOrShortName;
|
||||||
|
if (shortName) {
|
||||||
|
$app.launchDialog.shortUrl = `https://vrch.at/${shortName}`;
|
||||||
|
}
|
||||||
$app.launchDialog.url = $app.getLaunchURL(L);
|
$app.launchDialog.url = $app.getLaunchURL(L);
|
||||||
$app.launchDialog.location = `${L.worldId}:${L.instanceId}&shortName=${shortName}`;
|
|
||||||
}
|
}
|
||||||
if (location === $app.newInstanceDialog.location) {
|
if (location === $app.newInstanceDialog.location) {
|
||||||
$app.newInstanceDialog.shortName = shortName;
|
$app.newInstanceDialog.shortName = shortName;
|
||||||
|
$app.newInstanceDialog.secureOrShortName = secureOrShortName;
|
||||||
$app.updateNewInstanceDialog(true);
|
$app.updateNewInstanceDialog(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -15916,27 +16079,25 @@ speechSynthesis.getVoices();
|
|||||||
this.$nextTick(() => adjustDialogZ(this.$refs.launchDialog.$el));
|
this.$nextTick(() => adjustDialogZ(this.$refs.launchDialog.$el));
|
||||||
var D = this.launchDialog;
|
var D = this.launchDialog;
|
||||||
D.tag = tag;
|
D.tag = tag;
|
||||||
|
D.secureOrShortName = shortName;
|
||||||
D.shortUrl = '';
|
D.shortUrl = '';
|
||||||
D.shortName = '';
|
D.shortName = shortName;
|
||||||
var L = API.parseLocation(tag);
|
var L = API.parseLocation(tag);
|
||||||
L.shortName = shortName;
|
L.shortName = shortName;
|
||||||
if (L.isOffline || L.isPrivate || L.isTraveling || L.worldId === '') {
|
if (L.isOffline || L.isPrivate || L.isTraveling || L.worldId === '') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (shortName) {
|
if (shortName) {
|
||||||
D.shortName = shortName;
|
|
||||||
D.shortUrl = `https://vrch.at/${shortName}`;
|
D.shortUrl = `https://vrch.at/${shortName}`;
|
||||||
}
|
}
|
||||||
if (shortName && L.instanceId) {
|
if (L.instanceId) {
|
||||||
D.location = `${L.worldId}:${L.instanceId}&shortName=${shortName}`;
|
|
||||||
} else if (L.instanceId) {
|
|
||||||
D.location = `${L.worldId}:${L.instanceId}`;
|
D.location = `${L.worldId}:${L.instanceId}`;
|
||||||
} else {
|
} else {
|
||||||
D.location = L.worldId;
|
D.location = L.worldId;
|
||||||
}
|
}
|
||||||
D.url = this.getLaunchURL(L);
|
D.url = this.getLaunchURL(L);
|
||||||
D.visible = true;
|
D.visible = true;
|
||||||
if (L.userId && !shortName) {
|
if (!shortName) {
|
||||||
API.getInstanceShortName({
|
API.getInstanceShortName({
|
||||||
worldId: L.worldId,
|
worldId: L.worldId,
|
||||||
instanceId: L.instanceId
|
instanceId: L.instanceId
|
||||||
@@ -15963,12 +16124,14 @@ speechSynthesis.getVoices();
|
|||||||
)}`;
|
)}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
$app.methods.locationToLaunchArg = function (location) {
|
$app.methods.launchGame = function (location, shortName) {
|
||||||
return `vrchat://launch?id=${location}`;
|
|
||||||
};
|
|
||||||
|
|
||||||
$app.methods.launchGame = function (...args) {
|
|
||||||
var D = this.launchDialog;
|
var D = this.launchDialog;
|
||||||
|
var args = '';
|
||||||
|
if (shortName) {
|
||||||
|
args = `vrchat://launch?id=${location}&shortName=${shortName}`;
|
||||||
|
} else {
|
||||||
|
args = `vrchat://launch?id=${location}`;
|
||||||
|
}
|
||||||
var {launchArguments, vrcLaunchPathOverride} = this.launchOptionsDialog;
|
var {launchArguments, vrcLaunchPathOverride} = this.launchOptionsDialog;
|
||||||
if (launchArguments) {
|
if (launchArguments) {
|
||||||
args.push(launchArguments);
|
args.push(launchArguments);
|
||||||
@@ -19522,6 +19685,7 @@ speechSynthesis.getVoices();
|
|||||||
if (typeof data.Parameters[252] !== 'undefined') {
|
if (typeof data.Parameters[252] !== 'undefined') {
|
||||||
this.parsePhotonLobbyIds(data.Parameters[252]);
|
this.parsePhotonLobbyIds(data.Parameters[252]);
|
||||||
}
|
}
|
||||||
|
this.photonEvent7List = new Map();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -186,7 +186,9 @@ html
|
|||||||
img(:src="getFaviconUrl(link)" style="width:16px;height:16px;vertical-align:middle;margin-right:5px;cursor:pointer" @click.stop="openExternalLink(link)")
|
img(:src="getFaviconUrl(link)" style="width:16px;height:16px;vertical-align:middle;margin-right:5px;cursor:pointer" @click.stop="openExternalLink(link)")
|
||||||
div.photon-event-table(v-if="photonLoggingEnabled")
|
div.photon-event-table(v-if="photonLoggingEnabled")
|
||||||
div(style="position:absolute;margin-left:195px;z-index:1")
|
div(style="position:absolute;margin-left:195px;z-index:1")
|
||||||
el-input(v-model="photonEventTableFilter" @input="photonEventTableFilterChange" placeholder="Search" clearable style="width:150px")
|
el-select(v-model="photonEventTableTypeFilter" @change="photonEventTableFilterChange" multiple clearable collapse-tags style="flex:1" placeholder="Filter")
|
||||||
|
el-option(v-once v-for="type in ['AvatarChange', 'ChangeStatus', 'PortalSpawn', 'DeletedPortal', 'ChatBoxMessage', 'Event', 'PhotonMasterMigrate', 'PhotonBot', 'OnPlayerJoined', 'OnPlayerLeft', 'Moderation']" :key="type" :label="type" :value="type")
|
||||||
|
el-input(v-model="photonEventTableFilter" @input="photonEventTableFilterChange" placeholder="Search" clearable style="width:150px;margin-left:10px")
|
||||||
el-tooltip(placement="bottom" content="VRCX Companion Status" :disabled="hideTooltips")
|
el-tooltip(placement="bottom" content="VRCX Companion Status" :disabled="hideTooltips")
|
||||||
div(style="display:inline-block;margin-left:15px;font-size:14px;vertical-align:text-top;margin-top:1px")
|
div(style="display:inline-block;margin-left:15px;font-size:14px;vertical-align:text-top;margin-top:1px")
|
||||||
span(v-if="ipcEnabled && !photonEventIcon") 🟢
|
span(v-if="ipcEnabled && !photonEventIcon") 🟢
|
||||||
@@ -206,7 +208,7 @@ html
|
|||||||
span.x-link(v-text="scope.row.displayName" @click="showUserFromPhotonId(scope.row.photonId)" style="padding-right:10px")
|
span.x-link(v-text="scope.row.displayName" @click="showUserFromPhotonId(scope.row.photonId)" style="padding-right:10px")
|
||||||
el-table-column(label="Event" prop="text")
|
el-table-column(label="Event" prop="text")
|
||||||
template(v-once #default="scope")
|
template(v-once #default="scope")
|
||||||
span(v-if="scope.row.type === 'AvatarChange'")
|
template(v-if="scope.row.type === 'AvatarChange'")
|
||||||
span ChangeAvatar
|
span ChangeAvatar
|
||||||
span.x-link(v-text="scope.row.avatar.name" @click="showAvatarDialog(scope.row.avatar.id)")
|
span.x-link(v-text="scope.row.avatar.name" @click="showAvatarDialog(scope.row.avatar.id)")
|
||||||
|
|
|
|
||||||
@@ -236,8 +238,15 @@ html
|
|||||||
span(v-else) Offline
|
span(v-else) Offline
|
||||||
i.x-user-status(:class="statusClass(scope.row.status)")
|
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-if="scope.row.statusDescription !== scope.row.previousStatusDescription" v-text="scope.row.statusDescription" style="margin-left:10px")
|
||||||
|
span.x-link(v-else-if="scope.row.type === 'PortalSpawn'" @click="showWorldDialog(scope.row.location, scope.row.shortName)")
|
||||||
|
| PortalSpawn #[location(:location="scope.row.location" :hint="scope.row.worldName" :link="false")]
|
||||||
|
span(v-else-if="scope.row.type === 'ChatBoxMessage'")
|
||||||
|
| ChatBox #[span(v-text="scope.row.text")]
|
||||||
|
span(v-else-if="scope.row.type === 'OnPlayerJoined'")
|
||||||
|
| has joined - #[span.x-link(v-text="scope.row.avatar.name" @click="showAvatarDialog(scope.row.avatar.id)")]
|
||||||
|
span.avatar-info-public(v-if="scope.row.avatar.releaseStatus === 'public'") (Public)
|
||||||
|
span.avatar-info-own(v-else-if="scope.row.avatar.releaseStatus === 'private'") (Private)
|
||||||
span(v-else-if="scope.row.color === 'yellow'" v-text="scope.row.text" style="color:yellow")
|
span(v-else-if="scope.row.color === 'yellow'" v-text="scope.row.text" style="color:yellow")
|
||||||
span.x-link(v-else-if="scope.row.type === 'PortalSpawn'" v-text="scope.row.text" @click="showWorldDialog(scope.row.location, scope.row.shortName)")
|
|
||||||
span(v-else v-text="scope.row.text")
|
span(v-else v-text="scope.row.text")
|
||||||
el-tab-pane(label="Previous")
|
el-tab-pane(label="Previous")
|
||||||
data-tables(v-bind="photonEventTablePrevious" style="margin-bottom:10px")
|
data-tables(v-bind="photonEventTablePrevious" style="margin-bottom:10px")
|
||||||
@@ -282,6 +291,14 @@ html
|
|||||||
span(v-else) Offline
|
span(v-else) Offline
|
||||||
i.x-user-status(:class="statusClass(scope.row.status)")
|
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-if="scope.row.statusDescription !== scope.row.previousStatusDescription" v-text="scope.row.statusDescription" style="margin-left:10px")
|
||||||
|
span.x-link(v-else-if="scope.row.type === 'PortalSpawn'" @click="showWorldDialog(scope.row.location, scope.row.shortName)")
|
||||||
|
| PortalSpawn #[location(:location="scope.row.location" :hint="scope.row.worldName" :link="false")]
|
||||||
|
span(v-else-if="scope.row.type === 'ChatBoxMessage'")
|
||||||
|
| ChatBox #[span(v-text="scope.row.text")]
|
||||||
|
span(v-else-if="scope.row.type === 'OnPlayerJoined'")
|
||||||
|
| has joined - #[span.x-link(v-text="scope.row.avatar.name" @click="showAvatarDialog(scope.row.avatar.id)")]
|
||||||
|
span.avatar-info-public(v-if="scope.row.avatar.releaseStatus === 'public'") (Public)
|
||||||
|
span.avatar-info-own(v-else-if="scope.row.avatar.releaseStatus === 'private'") (Private)
|
||||||
span(v-else-if="scope.row.color === 'yellow'" v-text="scope.row.text" style="color:yellow")
|
span(v-else-if="scope.row.color === 'yellow'" v-text="scope.row.text" style="color:yellow")
|
||||||
span(v-else v-text="scope.row.text")
|
span(v-else v-text="scope.row.text")
|
||||||
|
|
||||||
@@ -1121,6 +1138,9 @@ html
|
|||||||
el-tab-pane(label="Notifications")
|
el-tab-pane(label="Notifications")
|
||||||
div.options-container(style="margin-top:0")
|
div.options-container(style="margin-top:0")
|
||||||
span.header Notifications
|
span.header Notifications
|
||||||
|
div.options-container-item
|
||||||
|
el-button(size="small" icon="el-icon-chat-square" @click="showNotyFeedFiltersDialog") Notification Filters
|
||||||
|
span.sub-header SteamVR Notifications
|
||||||
div.options-container-item
|
div.options-container-item
|
||||||
span.name SteamVR Overlay
|
span.name SteamVR Overlay
|
||||||
el-switch(v-model="openVR" @change="saveOpenVROption")
|
el-switch(v-model="openVR" @change="saveOpenVROption")
|
||||||
@@ -1149,8 +1169,6 @@ html
|
|||||||
el-radio-button(label="Game Closed")
|
el-radio-button(label="Game Closed")
|
||||||
el-radio-button(label="Game Running")
|
el-radio-button(label="Game Running")
|
||||||
el-radio-button(label="Always")
|
el-radio-button(label="Always")
|
||||||
div.options-container-item
|
|
||||||
el-button(size="small" icon="el-icon-chat-square" @click="showNotyFeedFiltersDialog") Notification Filters
|
|
||||||
br
|
br
|
||||||
span.sub-header Text-To-Speech Options
|
span.sub-header Text-To-Speech Options
|
||||||
div.options-container-item
|
div.options-container-item
|
||||||
@@ -1810,6 +1828,7 @@ html
|
|||||||
div(v-for="room in worldDialog.rooms" :key="room.id")
|
div(v-for="room in worldDialog.rooms" :key="room.id")
|
||||||
div(style="margin:5px 0")
|
div(style="margin:5px 0")
|
||||||
span.x-link(@click="showLaunchDialog(room.$location.tag, room.$location.shortName)")
|
span.x-link(@click="showLaunchDialog(room.$location.tag, room.$location.shortName)")
|
||||||
|
i.el-icon-unlock(v-if="(room.$location.shortName && worldDialog.$location.shortName === room.$location.shortName) || API.currentUser.id === room.$location.userId" style="display:inline-block;margin-right:5px")
|
||||||
span \#{{ room.$location.instanceName }} {{ room.$location.accessType }}
|
span \#{{ room.$location.instanceName }} {{ room.$location.accessType }}
|
||||||
span.flags(v-if="room.$location.region" :class="room.$location.region" style="display:inline-block;margin-left:5px")
|
span.flags(v-if="room.$location.region" :class="room.$location.region" style="display:inline-block;margin-left:5px")
|
||||||
span.flags(v-else class="us" style="display:inline-block;margin-left:5px")
|
span.flags(v-else class="us" style="display:inline-block;margin-left:5px")
|
||||||
@@ -2174,7 +2193,7 @@ html
|
|||||||
el-button(size="small" @click="copyInstanceUrl(newInstanceDialog.location)") Copy URL
|
el-button(size="small" @click="copyInstanceUrl(newInstanceDialog.location)") Copy URL
|
||||||
el-button(size="small" @click="selfInvite(newInstanceDialog.location)") Self Invite
|
el-button(size="small" @click="selfInvite(newInstanceDialog.location)") Self Invite
|
||||||
el-button(size="small" @click="showInviteDialog(newInstanceDialog.location)" :disabled="(newInstanceDialog.accessType === 'friends' || newInstanceDialog.accessType === 'invite') && newInstanceDialog.userId !== API.currentUser.id") Invite
|
el-button(size="small" @click="showInviteDialog(newInstanceDialog.location)" :disabled="(newInstanceDialog.accessType === 'friends' || newInstanceDialog.accessType === 'invite') && newInstanceDialog.userId !== API.currentUser.id") Invite
|
||||||
el-button(type="primary" size="small" @click="showLaunchDialog(newInstanceDialog.location)") Launch
|
el-button(type="primary" size="small" @click="showLaunchDialog(newInstanceDialog.location, newInstanceDialog.secureOrShortName)") Launch
|
||||||
|
|
||||||
//- dialog: launch options
|
//- dialog: launch options
|
||||||
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="launchOptionsDialog" :visible.sync="launchOptionsDialog.visible" title="Launch Options" width="500px")
|
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="launchOptionsDialog" :visible.sync="launchOptionsDialog.visible" title="Launch Options" width="500px")
|
||||||
@@ -2325,7 +2344,7 @@ html
|
|||||||
el-checkbox(v-model="launchDialog.desktop" style="float:left;margin-top:5px") Start as Desktop (No VR)
|
el-checkbox(v-model="launchDialog.desktop" style="float:left;margin-top:5px") Start as Desktop (No VR)
|
||||||
el-button(size="small" @click="showPreviousInstanceInfoDialog(launchDialog.location)") Info
|
el-button(size="small" @click="showPreviousInstanceInfoDialog(launchDialog.location)") Info
|
||||||
el-button(size="small" @click="showInviteDialog(launchDialog.location)" :disabled="!checkCanInvite(launchDialog.location)") Invite
|
el-button(size="small" @click="showInviteDialog(launchDialog.location)" :disabled="!checkCanInvite(launchDialog.location)") Invite
|
||||||
el-button(type="primary" size="small" @click="launchGame(locationToLaunchArg(launchDialog.location))") Launch
|
el-button(type="primary" size="small" @click="launchGame(launchDialog.location, launchDialog.secureOrShortName)" :disabled="!launchDialog.secureOrShortName") Launch
|
||||||
|
|
||||||
//- dialog: export friends list
|
//- dialog: export friends list
|
||||||
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" :visible.sync="exportFriendsListDialog" title="Export Friends List" width="650px")
|
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" :visible.sync="exportFriendsListDialog" title="Export Friends List" width="650px")
|
||||||
@@ -2520,6 +2539,13 @@ html
|
|||||||
el-radio-button(label="VIP")
|
el-radio-button(label="VIP")
|
||||||
el-radio-button(label="Friends")
|
el-radio-button(label="Friends")
|
||||||
el-radio-button(label="Everyone")
|
el-radio-button(label="Everyone")
|
||||||
|
.toggle-item
|
||||||
|
span.toggle-name Lobby ChatBox Message
|
||||||
|
el-radio-group(v-model="sharedFeedFilters.noty.ChatBoxMessage" size="mini")
|
||||||
|
el-radio-button(label="Off")
|
||||||
|
el-radio-button(label="VIP")
|
||||||
|
el-radio-button(label="Friends")
|
||||||
|
el-radio-button(label="Everyone")
|
||||||
.toggle-item
|
.toggle-item
|
||||||
span.toggle-name Blocked
|
span.toggle-name Blocked
|
||||||
el-radio-group(v-model="sharedFeedFilters.noty.Blocked" size="mini")
|
el-radio-group(v-model="sharedFeedFilters.noty.Blocked" size="mini")
|
||||||
@@ -2707,6 +2733,13 @@ html
|
|||||||
el-radio-button(label="VIP")
|
el-radio-button(label="VIP")
|
||||||
el-radio-button(label="Friends")
|
el-radio-button(label="Friends")
|
||||||
el-radio-button(label="Everyone")
|
el-radio-button(label="Everyone")
|
||||||
|
.toggle-item
|
||||||
|
span.toggle-name Lobby ChatBox Message
|
||||||
|
el-radio-group(v-model="sharedFeedFilters.wrist.ChatBoxMessage" size="mini")
|
||||||
|
el-radio-button(label="Off")
|
||||||
|
el-radio-button(label="VIP")
|
||||||
|
el-radio-button(label="Friends")
|
||||||
|
el-radio-button(label="Everyone")
|
||||||
.toggle-item
|
.toggle-item
|
||||||
span.toggle-name Blocked
|
span.toggle-name Blocked
|
||||||
el-radio-group(v-model="sharedFeedFilters.wrist.Blocked" size="mini")
|
el-radio-group(v-model="sharedFeedFilters.wrist.Blocked" size="mini")
|
||||||
|
|||||||
@@ -449,11 +449,23 @@ Vue.component('marquee-text', MarqueeText);
|
|||||||
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 'PortalSpawn':
|
case 'PortalSpawn':
|
||||||
text = 'User has spawned a portal';
|
if (noty.displayName) {
|
||||||
|
text = `<strong>${
|
||||||
|
noty.displayName
|
||||||
|
}</strong> has spawned a portal to ${this.displayLocation(
|
||||||
|
noty.instanceId,
|
||||||
|
noty.worldName
|
||||||
|
)}`;
|
||||||
|
} else {
|
||||||
|
text = 'User has spawned a portal';
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'AvatarChange':
|
case 'AvatarChange':
|
||||||
text = `<strong>${noty.displayName}</strong> changed into avatar ${noty.name}`;
|
text = `<strong>${noty.displayName}</strong> changed into avatar ${noty.name}`;
|
||||||
break;
|
break;
|
||||||
|
case 'ChatBoxMessage':
|
||||||
|
text = `<strong>${noty.displayName}</strong> said ${noty.text}`;
|
||||||
|
break;
|
||||||
case 'Event':
|
case 'Event':
|
||||||
text = noty.data;
|
text = noty.data;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -123,7 +123,11 @@ html
|
|||||||
.detail
|
.detail
|
||||||
span.extra
|
span.extra
|
||||||
span.time {{ feed.created_at | formatDate }}
|
span.time {{ feed.created_at | formatDate }}
|
||||||
| ✨ User has spawned a portal
|
template(v-if="feed.displayName")
|
||||||
|
| ✨ #[span.name(v-text="feed.displayName")]
|
||||||
|
| #[location(:location="feed.instanceId" :hint="feed.worldName")]
|
||||||
|
template(v-else)
|
||||||
|
| ✨ User has spawned a portal
|
||||||
div(v-else-if="feed.type === 'AvatarChange'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
div(v-else-if="feed.type === 'AvatarChange'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
.detail
|
.detail
|
||||||
span.extra
|
span.extra
|
||||||
@@ -136,6 +140,11 @@ html
|
|||||||
| {{ feed.name }}
|
| {{ feed.name }}
|
||||||
template(v-if="feed.description && feed.description !== feed.name")
|
template(v-if="feed.description && feed.description !== feed.name")
|
||||||
| - {{ feed.description }}
|
| - {{ feed.description }}
|
||||||
|
div(v-else-if="feed.type === 'ChatBoxMessage'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
|
.detail
|
||||||
|
span.extra
|
||||||
|
span.time {{ feed.created_at | formatDate }}
|
||||||
|
| 💬 #[span.name(v-text="feed.displayName")] #[span(v-text="feed.text")]
|
||||||
div(v-else-if="feed.type === 'Event'" class="x-friend-item")
|
div(v-else-if="feed.type === 'Event'" class="x-friend-item")
|
||||||
.detail
|
.detail
|
||||||
span.extra
|
span.extra
|
||||||
@@ -292,7 +301,11 @@ html
|
|||||||
.detail
|
.detail
|
||||||
span.extra
|
span.extra
|
||||||
span.time {{ feed.created_at | formatDate }}
|
span.time {{ feed.created_at | formatDate }}
|
||||||
| User has spawned a portal
|
template(v-if="feed.displayName")
|
||||||
|
| #[span.name(v-text="feed.displayName")] has spawned a portal to
|
||||||
|
| #[location(:location="feed.instanceId" :hint="feed.worldName")]
|
||||||
|
template(v-else)
|
||||||
|
| User has spawned a portal
|
||||||
div(v-else-if="feed.type === 'AvatarChange'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
div(v-else-if="feed.type === 'AvatarChange'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
.detail
|
.detail
|
||||||
span.extra
|
span.extra
|
||||||
@@ -305,6 +318,11 @@ html
|
|||||||
| {{ feed.name }}
|
| {{ feed.name }}
|
||||||
template(v-if="feed.description && feed.description !== feed.name")
|
template(v-if="feed.description && feed.description !== feed.name")
|
||||||
| - {{ feed.description }}
|
| - {{ feed.description }}
|
||||||
|
div(v-else-if="feed.type === 'ChatBoxMessage'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
|
.detail
|
||||||
|
span.extra
|
||||||
|
span.time {{ feed.created_at | formatDate }}
|
||||||
|
| #[span.name(v-text="feed.displayName")] said #[span(v-text="feed.text")]
|
||||||
div(v-else-if="feed.type === 'Event'" class="x-friend-item")
|
div(v-else-if="feed.type === 'Event'" class="x-friend-item")
|
||||||
.detail
|
.detail
|
||||||
span.extra
|
span.extra
|
||||||
@@ -424,7 +442,7 @@ html
|
|||||||
.hud-feed
|
.hud-feed
|
||||||
div(v-for="feed in hudFeed")
|
div(v-for="feed in hudFeed")
|
||||||
.item #[span(v-if="feed.isMaster") 👑]<strong>{{ feed.displayName }}</strong>
|
.item #[span(v-if="feed.isMaster") 👑]<strong>{{ feed.displayName }}</strong>
|
||||||
span(v-if="feed.type === 'AvatarChange'")
|
template(v-if="feed.type === 'AvatarChange'")
|
||||||
span(style="margin-left:10px") ChangeAvatar
|
span(style="margin-left:10px") ChangeAvatar
|
||||||
span(v-if="!feed.inCache" style="color:#aaa;margin-left:10px") #[i.el-icon-download]
|
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-text="feed.avatar.name" style="margin-left:10px")
|
||||||
@@ -438,6 +456,17 @@ html
|
|||||||
i.el-icon-right
|
i.el-icon-right
|
||||||
i.x-user-status(:class="statusClass(feed.status)" style="width:20px;height:20px")
|
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-if="feed.statusDescription !== feed.previousStatusDescription" v-text="feed.statusDescription" style="margin-left:10px")
|
||||||
|
template(v-else-if="feed.type === 'ChatBoxMessage'")
|
||||||
|
span(style="margin-left:10px") ChatBox
|
||||||
|
span(v-text="feed.text" style="margin-left:10px;white-space:normal")
|
||||||
|
template(v-else-if="feed.type === 'PortalSpawn'")
|
||||||
|
span(style="margin-left:10px") PortalSpawn
|
||||||
|
location(:location="feed.location" :hint="feed.worldName" :link="false" style="margin-left:10px")
|
||||||
|
template(v-else-if="feed.type === 'OnPlayerJoined'")
|
||||||
|
span(style="margin-left:10px") has joined -
|
||||||
|
span(v-text="feed.avatar.name" style="margin-left:10px")
|
||||||
|
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)
|
||||||
span(v-else-if="feed.color === 'yellow'" v-text="feed.text" style="color:yellow;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")
|
span(v-else style="margin-left:10px" v-text="feed.text")
|
||||||
template(v-if="feed.combo > 1")
|
template(v-if="feed.combo > 1")
|
||||||
|
|||||||
Reference in New Issue
Block a user