diff --git a/html/src/app.js b/html/src/app.js index a9d700f1..50d7b99a 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -1237,9 +1237,6 @@ speechSynthesis.getVoices(); if (ref.location !== ref.$location.tag) { ref.$location = this.parseLocation(ref.location); } - if (ref.statusDescription) { - ref.statusDescription = ref.statusDescription.substring(0, 32); - } ref.$isVRCPlus = ref.tags.includes('system_supporter'); this.applyUserTrustLevel(ref); this.applyUserLanguage(ref); @@ -5402,7 +5399,8 @@ speechSynthesis.getVoices(); }); } } else { - if (ctx.state === 'online' && newState === 'active') { + //prevent status flapping + if ((ctx.state === 'online') && ((newState === 'active') || (newState === 'offline'))) { this.updateFriendInProgress.delete(id); await new Promise(resolve => setTimeout(resolve, 50000)); if (this.APILastOnline.has(id)) { @@ -11616,12 +11614,13 @@ speechSynthesis.getVoices(); $app.methods.displayPreviousImages = function (type, command) { this.previousImagesTableFileId = ''; this.previousImagesTable = ''; + var imageUrl = ''; if (type === 'Avatar') { var { imageUrl } = this.avatarDialog.ref; } else if (type === 'World') { var { imageUrl } = this.worldDialog.ref; } else if (type === 'User') { - var imageUrl = this.userDialog.ref.currentAvatarImageUrl; + imageUrl = this.userDialog.ref.currentAvatarImageUrl; } var fileId = extractFileId(imageUrl); if (!fileId) { @@ -11641,7 +11640,7 @@ speechSynthesis.getVoices(); } API.getAvatarImages(params).then((args) => { this.previousImagesTableFileId = args.json.id; - var images = args.json.versions; + var images = args.json.versions.reverse(); this.checkPreviousImageAvailable(images, command); }); } else if (type === 'World') { @@ -11651,13 +11650,13 @@ speechSynthesis.getVoices(); } API.getWorldImages(params).then((args) => { this.previousImagesTableFileId = args.json.id; - var images = args.json.versions; + var images = args.json.versions.reverse(); this.checkPreviousImageAvailable(images, command); }); } else if (type === 'User') { API.getAvatarImages(params).then((args) => { this.previousImagesTableFileId = args.json.id; - var images = args.json.versions; + var images = args.json.versions.reverse(); this.checkPreviousImageAvailable(images, command); }); } @@ -12194,6 +12193,11 @@ speechSynthesis.getVoices(); $app.data.downloadQueue = new Map(); $app.data.downloadCurrent = {}; + var downloadProgressUpdateWrist = function () { + sharedRepository.setInt('downloadProgress', this.downloadProgress); + }; + $app.watch.downloadProgress = downloadProgressUpdateWrist; + $app.methods.downloadVRChatCacheProgress = async function () { var downloadProgress = await AssetBundleCacher.CheckDownloadProgress(); switch (downloadProgress) { diff --git a/html/src/index.pug b/html/src/index.pug index 994416e2..8f344cd0 100644 --- a/html/src/index.pug +++ b/html/src/index.pug @@ -728,7 +728,7 @@ html span.name Dark Mode el-switch(v-model="isDarkMode") div.options-container-item - span.name Profile Picture + span.name Profile Picture Override el-switch(v-model="displayProfilePicOverrideAsAvatar") div.options-container-item span.name VRCPlus Profile Icons @@ -1128,11 +1128,15 @@ html el-input.extra(v-model="userDialog.memo" type="textarea" :rows="2" :autosize="{ minRows: 1, maxRows: 20 }" placeholder="Click to add a note" size="mini" resize="none") .x-friend-item(style="width:100%;cursor:default") .detail - span.name Avatar Name - .extra(@click="userDialogCommand('Show Avatar Author')" style="cursor:pointer;width:fit-content") - span(v-text="userDialog.$avatarInfo.avatarName" style="display:inline-block;margin-right:5px") - span(v-if="userDialog.$avatarInfo.ownerId === userDialog.id" style="display:inline-block;color:#E6A23C" ) (own) - span(v-else-if="userDialog.$avatarInfo.avatarName && userDialog.$avatarInfo.ownerId" style="display:inline-block;color:#67C23A") ‎(public) + span.name Avatar Info + .extra + el-popover(v-if="displayProfilePicOverrideAsAvatar && userDialog.ref.profilePicOverride" placement="right" width="500px" trigger="click" style="display:inline-block;margin-right:5px") + img.x-link(slot="reference" v-lazy="userDialog.ref.currentAvatarThumbnailImageUrl" style="flex:none;width:80px;height:60px;border-radius:4px;object-fit:cover") + img.x-link(v-lazy="userDialog.ref.currentAvatarImageUrl" style="width:500px;height:375px;object-fit:cover" @click="openExternalLink(userDialog.ref.currentAvatarImageUrl)") + div(@click="userDialogCommand('Show Avatar Author')" style="cursor:pointer;width:fit-content;display:inline-block;vertical-align:top") + span(v-text="userDialog.$avatarInfo.avatarName" style="display:inline-block;margin-right:5px") + span(v-if="userDialog.$avatarInfo.ownerId === userDialog.id" style="display:inline-block;color:#E6A23C" ) (own) + span(v-else-if="userDialog.$avatarInfo.avatarName && userDialog.$avatarInfo.ownerId" style="display:inline-block;color:#67C23A") ‎(public) .x-friend-item(style="width:100%;cursor:default") .detail span.name Bio @@ -1967,7 +1971,7 @@ html img.image(v-lazy="image.file.url") //- dialog: Gallery/VRCPlusIcons - el-dialog.x-dialog(ref="galleryDialog" :visible.sync="galleryDialogVisible" title="Gallery and Icons" width="auto" style="margin:15vh") + el-dialog.x-dialog(ref="galleryDialog" :visible.sync="galleryDialogVisible" title="Gallery and Icons" width="100%") el-tabs(type="card") el-tab-pane(v-loading="galleryDialogGalleryLoading") span(slot="label") Gallery diff --git a/html/src/vr.js b/html/src/vr.js index 383d3b22..ac3da033 100644 --- a/html/src/vr.js +++ b/html/src/vr.js @@ -699,6 +699,7 @@ speechSynthesis.getVoices(); config: {}, isGameRunning: false, isGameNoVR: false, + downloadProgress: 0, lastLocation: { date: 0, location: '', @@ -749,6 +750,7 @@ speechSynthesis.getVoices(); this.currentUserStatus = sharedRepository.getString('current_user_status'); this.isGameRunning = sharedRepository.getBool('is_game_running'); this.isGameNoVR = sharedRepository.getBool('is_Game_No_VR'); + this.downloadProgress = sharedRepository.getInt('downloadProgress'); var lastLocation = sharedRepository.getObject('last_location'); if (lastLocation) { this.lastLocation = lastLocation; diff --git a/html/src/vr.pug b/html/src/vr.pug index 7c8c883c..ab433c8b 100644 --- a/html/src/vr.pug +++ b/html/src/vr.pug @@ -301,12 +301,21 @@ html br span {{ device[2] }}% .x-containerbottom - template(v-if="lastLocation.date != 0") - template(v-if="config && config.minimalFeed") + template(v-if="config && config.minimalFeed") + template(v-if="downloadProgress === 100") + span(style="display:inline-block;margin-right:5px") #[i.el-icon-loading] + template(v-else-if="downloadProgress > 0") + span(style="display:inline-block;margin-right:5px") {{ downloadProgress }}% + template(v-if="lastLocation.date != 0") span(style="float:right") {{ lastLocationTimer }} span(style="display:inline-block") {{ lastLocation.playerList.length }} span(style="display:inline-block;font-weight:bold") {{ lastLocation.friendList.length !== 0 ? `‎‎‎‎‎‎‎‎‏‏‎ ‎(${lastLocation.friendList.length})` : ''}} - template(v-else) + template(v-else) + template(v-if="downloadProgress === 100") + span(style="display:inline-block;margin-right:5px") Downloading: #[i.el-icon-loading] + template(v-else-if="downloadProgress > 0") + span(style="display:inline-block;margin-right:5px") Downloading: {{ downloadProgress }}% + template(v-if="lastLocation.date != 0") span(style="float:right") Timer: {{ lastLocationTimer }} span(style="display:inline-block") Players: {{ lastLocation.playerList.length }} span(style="display:inline-block;font-weight:bold") {{ lastLocation.friendList.length !== 0 ? `‎‎‎‎‎‎‎‎‏‏‎ ‎(${lastLocation.friendList.length})` : ''}}