diff --git a/LogWatcher.cs b/LogWatcher.cs index ddfeb89b..d81300ac 100644 --- a/LogWatcher.cs +++ b/LogWatcher.cs @@ -253,7 +253,8 @@ namespace VRCX ParseLogSDK2VideoPlay(fileInfo, logContext, line, offset) || ParseApplicationQuit(fileInfo, logContext, line, offset) || ParseOpenVRInit(fileInfo, logContext, line, offset) || - ParseDesktopMode(fileInfo, logContext, line, offset)) + ParseDesktopMode(fileInfo, logContext, line, offset) || + ParseOscFailedToStart(fileInfo, logContext, line, offset)) { } } @@ -1097,7 +1098,24 @@ namespace VRCX fileInfo.Name, ConvertLogTimeToISO8601(line), "event", - line.Substring(offset + 36) + line.Substring(offset + 12) + }); + return true; + } + + private bool ParseOscFailedToStart(FileInfo fileInfo, LogContext logContext, string line, int offset) + { + // 2023.09.26 04:12:57 Warning - Could not Start OSC: Address already in use + + if (string.Compare(line, offset, "Could not Start OSC: ", 0, 21, StringComparison.Ordinal) != 0) + return false; + + AppendLog(new[] + { + fileInfo.Name, + ConvertLogTimeToISO8601(line), + "event", + line.Substring(offset) }); return true; } diff --git a/html/src/app.js b/html/src/app.js index 96778af1..eb201891 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -5472,7 +5472,7 @@ speechSynthesis.getVoices(); 60000 ); this.nextDiscordUpdate = 0; - console.log('isGameRunning:', isGameRunning); + console.log(new Date(), 'isGameRunning', isGameRunning); } if (isSteamVRRunning !== this.isSteamVRRunning) { this.isSteamVRRunning = isSteamVRRunning; @@ -7754,7 +7754,7 @@ speechSynthesis.getVoices(); this.loginForm .saveCredentials, cipher: pwd - }).finally(() => { + }).then(() => { this.loginForm.username = ''; this.loginForm.password = @@ -7778,11 +7778,16 @@ speechSynthesis.getVoices(); endpoint: this.loginForm.endpoint, websocket: this.loginForm.websocket, saveCredentials: this.loginForm.saveCredentials - }).finally(() => { - this.loginForm.username = ''; - this.loginForm.password = ''; - this.loginForm.loading = false; - }); + }) + .then(() => { + this.loginForm.username = ''; + this.loginForm.password = ''; + this.loginForm.endpoint = ''; + this.loginForm.websocket = ''; + }) + .finally(() => { + this.loginForm.loading = false; + }); return args; }); } @@ -10464,7 +10469,10 @@ speechSynthesis.getVoices(); var hudTimeout = []; this.photonEvent7List.forEach((dt, id) => { var timeSinceLastEvent = dtNow - Date.parse(dt); - if (timeSinceLastEvent > this.photonLobbyTimeoutThreshold) { + if ( + timeSinceLastEvent > this.photonLobbyTimeoutThreshold && + id !== this.photonLobbyCurrentUser + ) { if (this.photonLobbyJointime.has(id)) { var { joinTime } = this.photonLobbyJointime.get(id); } @@ -11696,6 +11704,9 @@ speechSynthesis.getVoices(); avatar, gameLogDate ) { + if (typeof avatar === 'undefined') { + return; + } if (typeof user === 'undefined') { console.error('PhotonAvatarChange: user is undefined', photonId); return; @@ -12641,7 +12652,7 @@ speechSynthesis.getVoices(); } } this.searchText = ref.displayName; - await this.searchUser(); + await this.searchUserByDisplayName(ref.displayName); for (var ctx of this.searchUserResults) { if (ctx.displayName === ref.displayName) { this.searchText = ''; @@ -12726,6 +12737,16 @@ speechSynthesis.getVoices(); } }; + $app.methods.searchUserByDisplayName = async function (displayName) { + this.searchUserParams = { + n: 10, + offset: 0, + fuzzy: false, + search: this.replaceBioSymbols(displayName) + }; + await this.moreSearchUser(); + }; + $app.methods.searchUser = async function () { this.searchUserParams = { n: 10, @@ -26473,11 +26494,13 @@ speechSynthesis.getVoices(); $worldName: '', location: instanceId, position: 0, - queueSize: 0 + queueSize: 0, + updatedAt: 0 }; } ref.position = position; ref.queueSize = queueSize; + ref.updatedAt = Date.now(); if (!ref.$msgBox || ref.$msgBox.closed) { ref.$msgBox = this.$message({ message: '', @@ -26500,6 +26523,18 @@ speechSynthesis.getVoices(); ); ref.$msgBox.message = `You are in position ${ref.position} of ${ref.queueSize} in the queue for ${displayLocation} `; API.queuedInstances.set(instanceId, ref); + workerTimers.setTimeout(this.instanceQueueTimeout, 900000); // 15mins + }; + + $app.methods.instanceQueueTimeout = function () { + // remove instance from queue after 15mins of inactivity + API.queuedInstances.forEach((ref) => { + // 14mins + if (Date.now() - ref.updatedAt > 840000) { + ref.$msgBox.close(); + API.queuedInstances.delete(ref.location); + } + }); }; /* diff --git a/html/src/index.pug b/html/src/index.pug index 6635d824..9a84cd7a 100644 --- a/html/src/index.pug +++ b/html/src/index.pug @@ -726,6 +726,10 @@ html .x-friend-item(v-if="worldDialog.ref.publicationDate !== 'none'" style="cursor:default") .detail span.name {{ $t('dialog.world.info.publication_date') }} + el-tooltip(v-if="worldDialog.ref.publicationDate && worldDialog.ref.publicationDate !== 'none' && worldDialog.ref.labsPublicationDate && worldDialog.ref.labsPublicationDate !== 'none'" placement="top" style="margin-left:5px") + template(#content) + span {{ $t('dialog.world.info.time_in_labs') }} {{ new Date(worldDialog.ref.publicationDate) - new Date(worldDialog.ref.labsPublicationDate) | timeToText }} + i.el-icon-arrow-down span.extra {{ worldDialog.ref.publicationDate | formatDate('long') }} .x-friend-item(style="cursor:default") .detail diff --git a/html/src/localization/en/en.json b/html/src/localization/en/en.json index ecf81081..9b797b24 100644 --- a/html/src/localization/en/en.json +++ b/html/src/localization/en/en.json @@ -703,6 +703,7 @@ "last_updated": "Last Updated", "publication_date": "Publication Date", "labs_publication_date": "Labs Publication Date", + "time_in_labs": "Time In Labs:", "version": "Version", "platform": "Platform", "last_visited": "Last Visited",