diff --git a/html/src/app.js b/html/src/app.js index 0853e2f5..e68ae281 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -4350,6 +4350,7 @@ speechSynthesis.getVoices(); AppApi.GetVersion().then((version) => { this.appVersion = version; this.comapreAppVersion(); + this.setBranch(); }); API.$on('SHOW_WORLD_DIALOG', (tag) => this.showWorldDialog(tag)); API.$on('SHOW_LAUNCH_DIALOG', (tag) => this.showLaunchDialog(tag)); @@ -4424,6 +4425,18 @@ speechSynthesis.getVoices(); } }; + $app.methods.setBranch = function () { + if (!this.appVersion) { + return; + } + if (this.appVersion.includes('VRCX Nightly')) { + this.branch = 'Nightly'; + } else { + this.branch = 'Stable'; + } + configRepository.setString('VRCX_branch', this.branch); + }; + $app.methods.openChangeLog = function () { this.$confirm('Open Change Log?', 'VRCX has updated', { confirmButtonText: 'Open', @@ -8924,6 +8937,9 @@ speechSynthesis.getVoices(); dtNow > bias2 || this.lastLocation.playerList.size <= 1 ) { + if (this.photonLobbyTimeout.length > 0) { + AppApi.ExecuteVrOverlayFunction('updateHudTimeout', '[]'); + } this.photonLobbyTimeout = []; workerTimers.setTimeout(() => this.photonLobbyWatcher(), 500); return; @@ -9578,7 +9594,8 @@ speechSynthesis.getVoices(); ); return args; }) - .catch(() => { + .catch((err) => { + console.log('PortalSpawn', err); this.parsePhotonPortalSpawn( datetime, '', @@ -13152,10 +13169,10 @@ speechSynthesis.getVoices(); if (!input) { return false; } - var testUrl = input.substring(0, 15); - if (this.directAccessWorld(input)) { + if (this.directAccessWorld(input.trim())) { return true; } + var testUrl = input.substring(0, 15); if (testUrl === 'https://vrchat.') { var url = new URL(input); var urlPath = url.pathname; diff --git a/html/src/index.pug b/html/src/index.pug index b39ec00f..e23d2d91 100644 --- a/html/src/index.pug +++ b/html/src/index.pug @@ -128,62 +128,6 @@ html .detail span.name Created span.extra {{ currentInstanceWorld.ref.created_at | formatDate('long') }} - div.current-instance-table - data-tables(v-bind="currentInstanceUserList" @row-click="selectCurrentInstanceRow" style="margin-top:10px;cursor:pointer") - el-table-column(label="Avatar" width="70" prop="photo") - template(v-once #default="scope") - template(v-if="userImage(scope.row.ref)") - el-popover(placement="right" height="500px" trigger="hover") - img.friends-list-avatar(slot="reference" v-lazy="userImage(scope.row.ref)") - img.friends-list-avatar(v-lazy="userImageFull(scope.row.ref)" style="height:500px;cursor:pointer" @click="openExternalLink(userImageFull(scope.row.ref))") - el-table-column(label="Timer" width="90" prop="timer" sortable) - template(v-once #default="scope") - timer(:epoch="scope.row.timer") - el-table-column(v-if="photonLoggingEnabled" label="Photon Id" width="110" prop="photonId" sortable) - template(v-once #default="scope") - span(v-text="scope.row.photonId") - el-table-column(label="Icons" prop="isMaster" width="100") - template(v-once #default="scope") - el-tooltip(v-if="scope.row.isMaster" placement="left" content="Instance Master") - span 👑 - el-tooltip(v-if="scope.row.isFriend" placement="left" content="Friend") - span 💚 - el-tooltip(v-if="scope.row.timeoutTime" placement="left" content="Timeout") - span(style="color:red") 🔴{{ scope.row.timeoutTime }}s - el-table-column(label="Platform" prop="inVrMode" width="80") - template(v-once #default="scope") - template(v-if="scope.row.ref.last_platform") - span(v-if="scope.row.ref.last_platform === 'standalonewindows'" style="color:#409eff") PC - span(v-else-if="scope.row.ref.last_platform === 'android'" style="color:#67c23a") Q - span(v-else) {{ scope.row.ref.last_platform }} - template(v-if="scope.row.inVrMode !== undefined") - span(v-if="scope.row.inVrMode") VR - span(v-else) D - el-table-column(label="Display Name" min-width="140" prop="ref.displayName") - template(v-once #default="scope") - span(v-if="randomUserColours" v-text="scope.row.ref.displayName" :style="{'color':scope.row.ref.$userColour}") - span(v-else v-text="scope.row.ref.displayName") - el-table-column(label="Status" min-width="180" prop="ref.status") - template(v-once #default="scope") - template(v-if="scope.row.ref.status") - i.x-user-status(:class="statusClass(scope.row.ref.status)") - span ‎ - span(v-text="scope.row.ref.statusDescription") - el-table-column(label="Rank" width="110" prop="$trustSortNum" sortable="custom") - template(v-once #default="scope") - span.name(v-text="scope.row.ref.$trustLevel" :class="scope.row.ref.$trustClass") - el-table-column(label="Language" width="100" prop="ref.$languages") - template(v-once #default="scope") - el-tooltip(v-for="item in scope.row.ref.$languages" :key="item.key" placement="top") - template(#content) - span {{ item.value }} ({{ item.key }}) - span.flags(:class="languageClass(item.key)" style="display:inline-block;margin-left:5px") - el-table-column(label="Bio Links" width="100" prop="ref.bioLinks") - template(v-once #default="scope") - el-tooltip(v-if="link" v-for="(link, index) in scope.row.ref.bioLinks" :key="index") - template(#content) - span(v-text="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(style="position:absolute;margin-left:195px;z-index:1") el-select(v-model="photonEventTableTypeFilter" @change="photonEventTableFilterChange" multiple clearable collapse-tags style="flex:1" placeholder="Filter") @@ -301,6 +245,62 @@ html 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 v-text="scope.row.text") + div.current-instance-table + data-tables(v-bind="currentInstanceUserList" @row-click="selectCurrentInstanceRow" style="margin-top:10px;cursor:pointer") + el-table-column(label="Avatar" width="70" prop="photo") + template(v-once #default="scope") + template(v-if="userImage(scope.row.ref)") + el-popover(placement="right" height="500px" trigger="hover") + img.friends-list-avatar(slot="reference" v-lazy="userImage(scope.row.ref)") + img.friends-list-avatar(v-lazy="userImageFull(scope.row.ref)" style="height:500px;cursor:pointer" @click="openExternalLink(userImageFull(scope.row.ref))") + el-table-column(label="Timer" width="90" prop="timer" sortable) + template(v-once #default="scope") + timer(:epoch="scope.row.timer") + el-table-column(v-if="photonLoggingEnabled" label="Photon Id" width="110" prop="photonId" sortable) + template(v-once #default="scope") + span(v-text="scope.row.photonId") + el-table-column(label="Icons" prop="isMaster" width="100") + template(v-once #default="scope") + el-tooltip(v-if="scope.row.isMaster" placement="left" content="Instance Master") + span 👑 + el-tooltip(v-if="scope.row.isFriend" placement="left" content="Friend") + span 💚 + el-tooltip(v-if="scope.row.timeoutTime" placement="left" content="Timeout") + span(style="color:red") 🔴{{ scope.row.timeoutTime }}s + el-table-column(label="Platform" prop="inVrMode" width="80") + template(v-once #default="scope") + template(v-if="scope.row.ref.last_platform") + span(v-if="scope.row.ref.last_platform === 'standalonewindows'" style="color:#409eff") PC + span(v-else-if="scope.row.ref.last_platform === 'android'" style="color:#67c23a") Q + span(v-else) {{ scope.row.ref.last_platform }} + template(v-if="scope.row.inVrMode !== undefined") + span(v-if="scope.row.inVrMode") VR + span(v-else) D + el-table-column(label="Display Name" min-width="140" prop="ref.displayName") + template(v-once #default="scope") + span(v-if="randomUserColours" v-text="scope.row.ref.displayName" :style="{'color':scope.row.ref.$userColour}") + span(v-else v-text="scope.row.ref.displayName") + el-table-column(label="Status" min-width="180" prop="ref.status") + template(v-once #default="scope") + template(v-if="scope.row.ref.status") + i.x-user-status(:class="statusClass(scope.row.ref.status)") + span ‎ + span(v-text="scope.row.ref.statusDescription") + el-table-column(label="Rank" width="110" prop="$trustSortNum" sortable="custom") + template(v-once #default="scope") + span.name(v-text="scope.row.ref.$trustLevel" :class="scope.row.ref.$trustClass") + el-table-column(label="Language" width="100" prop="ref.$languages") + template(v-once #default="scope") + el-tooltip(v-for="item in scope.row.ref.$languages" :key="item.key" placement="top") + template(#content) + span {{ item.value }} ({{ item.key }}) + span.flags(:class="languageClass(item.key)" style="display:inline-block;margin-left:5px") + el-table-column(label="Bio Links" width="100" prop="ref.bioLinks") + template(v-once #default="scope") + el-tooltip(v-if="link" v-for="(link, index) in scope.row.ref.bioLinks" :key="index") + template(#content) + span(v-text="link") + img(:src="getFaviconUrl(link)" style="width:16px;height:16px;vertical-align:middle;margin-right:5px;cursor:pointer" @click.stop="openExternalLink(link)") //- feed .x-container(v-show="$refs.menu && $refs.menu.activeIndex === 'feed'")