diff --git a/LogWatcher.cs b/LogWatcher.cs index d916c472..aaa679a2 100644 --- a/LogWatcher.cs +++ b/LogWatcher.cs @@ -338,7 +338,7 @@ namespace VRCX return true; } - if (line.Contains("] Joining wrld_")) + if (line.Contains("] Joining ")) { var lineOffset = line.LastIndexOf("] Joining "); if (lineOffset < 0) diff --git a/html/src/app.js b/html/src/app.js index a2ce229c..d32bb6d4 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -893,7 +893,7 @@ speechSynthesis.getVoices(); Vue.component('avatar-info', { template: - '
{{ avatarName }}{{ avatarType }}
', + '
{{ avatarName }}{{ avatarType }}
', props: { imageurl: String, userid: String, @@ -1196,7 +1196,7 @@ speechSynthesis.getVoices(); ref.$trustColor = 'x-tag-troll'; ref.$trustSortNum += 0.1; } - if (ref.$isLegend) { + if ($app.legendColorOverride && ref.$isLegend) { ref.$trustColor = 'x-tag-legendary'; ref.$trustSortNum += 0.2; } @@ -6236,7 +6236,7 @@ speechSynthesis.getVoices(); $app.data.orderFriendsGroupGPS = configRepository.getBool( 'orderFriendGroupGPS' ); - var saveOrderFriendGroup = function () { + $app.methods.saveOrderFriendGroup = function () { configRepository.setBool('orderFriendGroup0', this.orderFriendsGroup0); configRepository.setBool('orderFriendGroup1', this.orderFriendsGroup1); configRepository.setBool('orderFriendGroup2', this.orderFriendsGroup2); @@ -6256,13 +6256,6 @@ speechSynthesis.getVoices(); this.sortFriendsGroup0 = true; this.sortFriendsGroup1 = true; }; - $app.watch.orderFriendsGroup0 = saveOrderFriendGroup; - $app.watch.orderFriendsGroup1 = saveOrderFriendGroup; - $app.watch.orderFriendsGroup2 = saveOrderFriendGroup; - $app.watch.orderFriendsGroup3 = saveOrderFriendGroup; - $app.watch.orderFriendsGroupPrivate = saveOrderFriendGroup; - $app.watch.orderFriendsGroupStatus = saveOrderFriendGroup; - $app.watch.orderFriendsGroupGPS = saveOrderFriendGroup; $app.methods.fetchActiveFriend = function (userId) { this.pendingActiveFriends.add(userId); @@ -8039,6 +8032,8 @@ speechSynthesis.getVoices(); } }; + $app.data.recommendedSteamParams = + '--enable-sdk-log-levels --log-debug-levels=API;NetworkData'; $app.data.lastPortalId = ''; $app.data.lastPortalList = new Map(); $app.data.portalQueue = ''; @@ -8775,14 +8770,15 @@ speechSynthesis.getVoices(); type = 'Muted'; } if (row.userId) { - if (block === row.block && mute === row.mute) { - return; - } if (!block && row.block) { type = 'Unblocked'; } else if (!mute && row.mute) { type = 'Unmuted'; } + if (block === row.block && mute === row.mute) { + // no change + type = ''; + } } if (type) { var noty = { @@ -10577,6 +10573,9 @@ speechSynthesis.getVoices(); $app.data.vrBackgroundEnabled = configRepository.getBool( 'VRCX_vrBackgroundEnabled' ); + $app.data.legendColorOverride = configRepository.getBool( + 'VRCX_legendColorOverride' + ); $app.data.asideWidth = configRepository.getInt('VRCX_asidewidth'); $app.data.autoUpdateVRCX = configRepository.getString( 'VRCX_autoUpdateVRCX' @@ -10644,6 +10643,15 @@ speechSynthesis.getVoices(); this.updateVRConfigVars(); AppApi.ExecuteVrOverlayFunction('notyClear', ''); }; + $app.methods.saveLegendColorOverride = function () { + configRepository.setBool( + 'VRCX_legendColorOverride', + this.legendColorOverride + ); + API.cachedUsers.forEach((ref, id) => { + API.applyUserTrustLevel(ref); + }); + }; $app.data.TTSvoices = speechSynthesis.getVoices(); $app.methods.saveNotificationTTS = function () { speechSynthesis.cancel(); @@ -10797,6 +10805,13 @@ speechSynthesis.getVoices(); $app.data.vrBackgroundEnabled ); } + if (!configRepository.getBool('VRCX_legendColorOverride')) { + $app.data.legendColorOverride = false; + configRepository.setBool( + 'VRCX_legendColorOverride', + $app.data.legendColorOverride + ); + } if (!configRepository.getInt('VRCX_asidewidth')) { $app.data.asideWidth = 236; configRepository.setInt('VRCX_asidewidth', $app.data.asideWidth); @@ -11681,7 +11696,7 @@ speechSynthesis.getVoices(); $app.methods.promptPhotonLobbyTimeoutThreshold = function () { this.$prompt( 'Enter amount of seconds (default: 3)', - 'Photon Lobby Timeout Threshold', + 'User Timeout Threshold', { distinguishCancelAndClose: true, confirmButtonText: 'OK', @@ -14200,6 +14215,14 @@ speechSynthesis.getVoices(); this.copyToClipboard(url); }; + $app.methods.copyText = function (text) { + this.$message({ + message: 'Text copied to clipboard', + type: 'success' + }); + this.copyToClipboard(text); + }; + // App: VRCPlus Icons API.$on('LOGIN', function () { @@ -17704,29 +17727,29 @@ speechSynthesis.getVoices(); }; $app.methods.clearVRCXCache = function () { - API.cachedUsers.forEach((value, key) => { + API.cachedUsers.forEach((ref, id) => { if ( - !this.friends.has(key) && - !this.lastLocation.playerList.has(value.displayName) && - key !== API.currentUser.id + !this.friends.has(id) && + !this.lastLocation.playerList.has(ref.displayName) && + id !== API.currentUser.id ) { - API.cachedUsers.delete(key); + API.cachedUsers.delete(id); } }); - API.cachedWorlds.forEach((value, key) => { + API.cachedWorlds.forEach((ref, id) => { if ( - !API.cachedFavoritesByObjectId.has(key) && - value.authorId !== API.currentUser.id + !API.cachedFavoritesByObjectId.has(id) && + ref.authorId !== API.currentUser.id ) { - API.cachedWorlds.delete(key); + API.cachedWorlds.delete(id); } }); - API.cachedAvatars.forEach((value, key) => { + API.cachedAvatars.forEach((ref, id) => { if ( - !API.cachedFavoritesByObjectId.has(key) && - value.authorId !== API.currentUser.id + !API.cachedFavoritesByObjectId.has(id) && + ref.authorId !== API.currentUser.id ) { - API.cachedAvatars.delete(key); + API.cachedAvatars.delete(id); } }); diff --git a/html/src/app.scss b/html/src/app.scss index af9930f9..df40883b 100644 --- a/html/src/app.scss +++ b/html/src/app.scss @@ -90,6 +90,17 @@ padding: 5px 0; } +.el-table .cell { + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; +} + +.el-table__row:hover .el-table__cell .cell { + -webkit-box-orient: unset; + -webkit-line-clamp: unset; +} + .el-dialog__body { padding: 20px; } @@ -597,7 +608,6 @@ i.x-user-status.busy { .avatar-info { cursor: pointer; width: fit-content; - display: inline-block; vertical-align: top; } diff --git a/html/src/index.pug b/html/src/index.pug index cc90e47b..6937e123 100644 --- a/html/src/index.pug +++ b/html/src/index.pug @@ -852,35 +852,35 @@ html span.sub-header Sorting div.options-container-item span.name Sort Private to bottom - el-switch(v-model="orderFriendsGroupPrivate") + el-switch(v-model="orderFriendsGroupPrivate" @change="saveOrderFriendGroup") div.options-container-item span.name Sort by status - el-switch(v-model="orderFriendsGroupStatus") + el-switch(v-model="orderFriendsGroupStatus" @change="saveOrderFriendGroup") div.options-container-item span.name Sort GPS to top - el-switch(v-model="orderFriendsGroupGPS") + el-switch(v-model="orderFriendsGroupGPS" @change="saveOrderFriendGroup") span.name(style="margin-left:5px") (online for only) div.options-container-item span.name VIP - el-switch(v-model="orderFriendsGroup0" inactive-text="alphabetical" active-text="online for") + el-switch(v-model="orderFriendsGroup0" inactive-text="alphabetical" active-text="online for" @change="saveOrderFriendGroup") div.options-container-item span.name Online - el-switch(v-model="orderFriendsGroup1" inactive-text="alphabetical" active-text="online for") + el-switch(v-model="orderFriendsGroup1" inactive-text="alphabetical" active-text="online for" @change="saveOrderFriendGroup") div.options-container-item span.name Active - el-switch(v-model="orderFriendsGroup2" inactive-text="alphabetical" active-text="online for") + el-switch(v-model="orderFriendsGroup2" inactive-text="alphabetical" active-text="online for" @change="saveOrderFriendGroup") div.options-container-item span.name Offline - el-switch(v-model="orderFriendsGroup3" inactive-text="alphabetical" active-text="online for") + el-switch(v-model="orderFriendsGroup3" inactive-text="alphabetical" active-text="online for" @change="saveOrderFriendGroup") br span.sub-header Width div.options-container-item el-slider(v-model="asideWidth" @input="setAsideWidth" :show-tooltip="false" :marks="{236: ''}" :min="141" :max="500" style="width:300px") div.options-container - span.header Trust Rank Colors + span.header User Colors div.options-container-item - div - v-swatches(v-model="trustColor.untrusted" show-fallback fallback-input-type="color" popover-x="right" :swatches="trustColorSwatches" class="x-tag-untrusted") + div + v-swatches(v-model="trustColor.untrusted" show-fallback fallback-input-type="color" popover-x="right" :swatches="trustColorSwatches" class="x-tag-untrusted") span.color-picker(slot="trigger") #[i.el-icon-s-open] Visitor div v-swatches(v-model="trustColor.basic" show-fallback fallback-input-type="color" popover-x="right" :swatches="trustColorSwatches" class="x-tag-basic") @@ -895,17 +895,18 @@ html v-swatches(v-model="trustColor.veteran" show-fallback fallback-input-type="color" popover-x="right" :swatches="trustColorSwatches" class="x-tag-veteran") span.color-picker(slot="trigger") #[i.el-icon-s-open] Trusted User div - v-swatches(v-model="trustColor.legend" show-fallback fallback-input-type="color" popover-x="right" :swatches="trustColorSwatches" class="x-tag-legend") - span.color-picker(slot="trigger") #[i.el-icon-s-open] Veteran User - div - v-swatches(v-model="trustColor.legendary" show-fallback fallback-input-type="color" popover-x="right" :swatches="trustColorSwatches" class="x-tag-legendary") - span.color-picker(slot="trigger") #[i.el-icon-s-open] Legend - div - v-swatches(v-model="trustColor.vip" show-fallback fallback-input-type="color" popover-x="right" :swatches="trustColorSwatches" class="x-tag-vip") - span.color-picker(slot="trigger") #[i.el-icon-s-open] VRChat Team - div - v-swatches(v-model="trustColor.troll" show-fallback fallback-input-type="color" popover-x="right" :swatches="trustColorSwatches" class="x-tag-troll") - span.color-picker(slot="trigger") #[i.el-icon-s-open] Nuisance + v-swatches(v-model="trustColor.legend" show-fallback fallback-input-type="color" popover-x="right" :swatches="trustColorSwatches" class="x-tag-legend") + span.color-picker(slot="trigger") #[i.el-icon-s-open] Veteran User + div + v-swatches(v-model="trustColor.vip" show-fallback fallback-input-type="color" popover-x="right" :swatches="trustColorSwatches" class="x-tag-vip") + span.color-picker(slot="trigger") #[i.el-icon-s-open] VRChat Team + div + v-swatches(v-model="trustColor.troll" show-fallback fallback-input-type="color" popover-x="right" :swatches="trustColorSwatches" class="x-tag-troll") + span.color-picker(slot="trigger") #[i.el-icon-s-open] Nuisance + div + v-swatches(v-model="trustColor.legendary" show-fallback fallback-input-type="color" popover-x="right" :swatches="trustColorSwatches" class="x-tag-legendary") + span.color-picker(slot="trigger") #[i.el-icon-s-open] Legend + el-switch(v-model="legendColorOverride" style="padding-bottom:5px;padding-left:3px" @change="saveLegendColorOverride") div.options-container span.header Discord Presence div.options-container-item @@ -913,7 +914,7 @@ html div.options-container-item span.name Enable el-tooltip(placement="top" style="margin-left:5px" content="Recommended to disable Rich Presence in VRChat config.json below to stop it from conflicting") - i.el-icon-warning + i.el-icon-warning(style="cursor:pointer" @click="showVRChatConfig") el-switch(v-model="discordActive" @change="saveDiscordOption") div.options-container-item span.name Instance type/player count @@ -1072,8 +1073,8 @@ html el-switch(v-model="progressPieFilter" @change="changeYouTubeApi" :disabled="!openVR") div.options-container span.header Photon Logging Overlay - el-tooltip(placement="top" style="margin-left:5px" content="Requires '--log-debug-levels=API;NetworkData' steam launch option") - i.el-icon-warning + el-tooltip(placement="top" style="margin-left:5px" content="Requires '--log-debug-levels=API;NetworkData' steam launch option (click to copy)") + i.el-icon-warning(style="cursor:pointer" @click="copyText(recommendedSteamParams)") div.options-container-item span.sub-header Photon Event HUD div.options-container-item @@ -2162,7 +2163,7 @@ html .toggle-item span.toggle-name Portal Spawn el-tooltip(placement="top" style="margin-left:5px" content="Requires '--enable-sdk-log-levels' steam launch option") - i.el-icon-warning + i.el-icon-warning(style="cursor:pointer" @click="copyText(recommendedSteamParams)") el-radio-group(v-model="sharedFeedFilters.noty.PortalSpawn" size="mini") el-radio-button(label="Off") el-radio-button(label="VIP") @@ -2211,8 +2212,8 @@ html br .toggle-item span.toggle-name Photon Event Logging - el-tooltip(placement="top" style="margin-left:5px" content="Requires '--log-debug-levels=API;NetworkData' steam launch option") - i.el-icon-warning + el-tooltip(placement="top" style="margin-left:5px" content="Requires '--log-debug-levels=API;NetworkData' steam launch option (click to copy)") + i.el-icon-warning(style="cursor:pointer" @click="copyText(recommendedSteamParams)") .toggle-item span.toggle-name Lobby Avatar Change el-radio-group(v-model="sharedFeedFilters.noty.AvatarChange" size="mini") @@ -2350,7 +2351,7 @@ html .toggle-item span.toggle-name Portal Spawn el-tooltip(placement="top" style="margin-left:5px" content="Requires '--enable-sdk-log-levels' steam launch option") - i.el-icon-warning + i.el-icon-warning(style="cursor:pointer" @click="copyText(recommendedSteamParams)") el-radio-group(v-model="sharedFeedFilters.wrist.PortalSpawn" size="mini") el-radio-button(label="Off") el-radio-button(label="VIP") @@ -2399,8 +2400,8 @@ html br .toggle-item span.toggle-name Photon Event Logging - el-tooltip(placement="top" style="margin-left:5px" content="Requires '--log-debug-levels=API;NetworkData' steam launch option") - i.el-icon-warning + el-tooltip(placement="top" style="margin-left:5px" content="Requires '--log-debug-levels=API;NetworkData' steam launch option (click to copy)") + i.el-icon-warning(style="cursor:pointer" @click="copyText(recommendedSteamParams)") .toggle-item span.toggle-name Lobby Avatar Change el-radio-group(v-model="sharedFeedFilters.wrist.AvatarChange" size="mini") diff --git a/html/src/vr.scss b/html/src/vr.scss index 1a1d4375..21d0627e 100644 --- a/html/src/vr.scss +++ b/html/src/vr.scss @@ -198,6 +198,7 @@ button { .background { background: #1f1f1f; + text-shadow: none; } .x-container {