This commit is contained in:
Natsumi
2022-05-05 20:39:17 +12:00
parent 2e33db0e6e
commit 958f52fcbe

View File

@@ -912,37 +912,37 @@ html
.x-friend-list(style="margin-top:10px") .x-friend-list(style="margin-top:10px")
.x-friend-item(style="cursor:default") .x-friend-item(style="cursor:default")
.detail .detail
span.name Version span.name Version
span.extra(v-text="appVersion") span.extra(v-text="appVersion")
.x-friend-item(@click="checkForVRCXUpdate") .x-friend-item(@click="checkForVRCXUpdate")
.detail .detail
span.name Latest Version span.name Latest Version
span.extra(v-if="latestAppVersion" v-text="latestAppVersion") span.extra(v-if="latestAppVersion" v-text="latestAppVersion")
span.extra(v-else) Click to refresh span.extra(v-else) Click to refresh
.x-friend-item(@click="openExternalLink('https://github.com/pypy-vrc/VRCX')") .x-friend-item(@click="openExternalLink('https://github.com/pypy-vrc/VRCX')")
.detail .detail
span.name Repository URL span.name Repository URL
span.extra https://github.com/pypy-vrc/VRCX span.extra https://github.com/pypy-vrc/VRCX
.x-friend-item(@click="openExternalLink('https://vrcx.pypy.moe/discord')") .x-friend-item(@click="openExternalLink('https://vrcx.pypy.moe/discord')")
.detail .detail
span.name Support span.name Support
span.extra https://vrcx.pypy.moe/discord span.extra https://vrcx.pypy.moe/discord
div.options-container div.options-container
span.header VRCX Updater span.header VRCX Updater
div.options-container-item div.options-container-item
el-button(size="small" icon="el-icon-upload" @click="showVRCXUpdateDialog()") Check for update el-button(size="small" icon="el-icon-upload" @click="showVRCXUpdateDialog()") Check for update
div.options-container-item div.options-container-item
span.name Auto update: span.name Auto update:
br br
el-radio-group(v-model="autoUpdateVRCX" @change="saveAutoUpdateVRCX" size="mini") el-radio-group(v-model="autoUpdateVRCX" @change="saveAutoUpdateVRCX" size="mini")
el-radio-button(label="Off") el-radio-button(label="Off")
el-radio-button(label="Notify") el-radio-button(label="Notify")
el-radio-button(label="Auto Download") el-radio-button(label="Auto Download")
el-radio-button(label="Auto Install") el-radio-button(label="Auto Install")
div.options-container(style="margin-top:45px;border-top:1px solid #eee;padding-top:30px") div.options-container(style="margin-top:45px;border-top:1px solid #eee;padding-top:30px")
span.header Legal Notice span.header Legal Notice
div.options-container-item div.options-container-item
p © 2019-2021 #[a(href="https://github.com/pypy-vrc" target="_blank") pypy] (mina#5656) p © 2019-2022 #[a(href="https://github.com/pypy-vrc" target="_blank") pypy] (mina#5656)
p VRCX is an assistant application for provide information about manage friendship. this application uses unofficial VRChat API (VRCSDK). p VRCX is an assistant application for provide information about manage friendship. this application uses unofficial VRChat API (VRCSDK).
p VRCX isn't endorsed by VRChat and doesn't reflect the views or opinions of VRChat or anyone officially involved in producing or managing VRChat. VRChat is trademark of VRChat Inc. VRChat © VRChat Inc. p VRCX isn't endorsed by VRChat and doesn't reflect the views or opinions of VRChat or anyone officially involved in producing or managing VRChat. VRChat is trademark of VRChat Inc. VRChat © VRChat Inc.
p pypy is not responsible for any problems caused by VRCX. Use at your own risk! p pypy is not responsible for any problems caused by VRCX. Use at your own risk!
@@ -953,70 +953,70 @@ html
span.header Appearance span.header Appearance
div.options-container-item div.options-container-item
span.name Theme mode span.name Theme mode
el-radio-group(v-model="themeMode" size="mini") el-radio-group(v-model="themeMode" size="mini")
el-radio-button(label="system") System el-radio-button(label="system") System
el-radio-button(label="light") Light el-radio-button(label="light") Light
el-radio-button(label="dark") Dark el-radio-button(label="dark") Dark
div.options-container-item div.options-container-item
span.name VRCPlus Profile Icons span.name VRCPlus Profile Icons
el-switch(v-model="displayVRCPlusIconsAsAvatar" @change="saveOpenVROption") el-switch(v-model="displayVRCPlusIconsAsAvatar" @change="saveOpenVROption")
div.options-container-item div.options-container-item
span.name Disable Tooltips span.name Disable Tooltips
el-switch(v-model="hideTooltips" @change="saveOpenVROption") el-switch(v-model="hideTooltips" @change="saveOpenVROption")
div.options-container-item div.options-container-item
span.name Sort Favorites By span.name Sort Favorites By
el-switch(v-model="sortFavorites" inactive-text="name" active-text="date" @change="saveOpenVROption") el-switch(v-model="sortFavorites" inactive-text="name" active-text="date" @change="saveOpenVROption")
div.options-container-item div.options-container-item
el-button(size="small" icon="el-icon-notebook-1" @click="promptMaxTableSizeDialog") Table Max Size el-button(size="small" icon="el-icon-notebook-1" @click="promptMaxTableSizeDialog") Table Max Size
div.options-container-item div.options-container-item
el-dropdown(@click.native.stop trigger="click" size="small") el-dropdown(@click.native.stop trigger="click" size="small")
el-button(size="mini") el-button(size="mini")
span Page Size: {{ tablePageSize }} #[i.el-icon-arrow-down.el-icon--right] span Page Size: {{ tablePageSize }} #[i.el-icon-arrow-down.el-icon--right]
el-dropdown-menu(#default="dropdown") el-dropdown-menu(#default="dropdown")
el-dropdown-item(v-for="(number) in [10, 15, 25, 50, 100]" v-text="number" @click.native="setTablePageSize(number)") el-dropdown-item(v-for="(number) in [10, 15, 25, 50, 100]" v-text="number" @click.native="setTablePageSize(number)")
div.options-container div.options-container
span.header Side Panel span.header Side Panel
br br
span.sub-header Sorting span.sub-header Sorting
div.options-container-item div.options-container-item
span.name Sort Private to bottom span.name Sort Private to bottom
el-switch(v-model="orderFriendsGroupPrivate" @change="saveOrderFriendGroup") el-switch(v-model="orderFriendsGroupPrivate" @change="saveOrderFriendGroup")
div.options-container-item div.options-container-item
span.name Sort by status span.name Sort by status
el-switch(v-model="orderFriendsGroupStatus" @change="saveOrderFriendGroup") el-switch(v-model="orderFriendsGroupStatus" @change="saveOrderFriendGroup")
div.options-container-item div.options-container-item
span.name Sort GPS to top span.name Sort GPS to top
el-switch(v-model="orderFriendsGroupGPS" @change="saveOrderFriendGroup") el-switch(v-model="orderFriendsGroupGPS" @change="saveOrderFriendGroup")
span.name(style="margin-left:5px") (online for only) span.name(style="margin-left:5px") (online for only)
div.options-container-item div.options-container-item
span.name VIP span.name VIP
el-switch(v-model="orderFriendsGroup0" inactive-text="alphabetical" active-text="online for" @change="saveOrderFriendGroup") el-switch(v-model="orderFriendsGroup0" inactive-text="alphabetical" active-text="online for" @change="saveOrderFriendGroup")
div.options-container-item div.options-container-item
span.name Online span.name Online
el-switch(v-model="orderFriendsGroup1" inactive-text="alphabetical" active-text="online for" @change="saveOrderFriendGroup") el-switch(v-model="orderFriendsGroup1" inactive-text="alphabetical" active-text="online for" @change="saveOrderFriendGroup")
div.options-container-item div.options-container-item
span.name Active span.name Active
el-switch(v-model="orderFriendsGroup2" inactive-text="alphabetical" active-text="online for" @change="saveOrderFriendGroup") el-switch(v-model="orderFriendsGroup2" inactive-text="alphabetical" active-text="online for" @change="saveOrderFriendGroup")
div.options-container-item div.options-container-item
span.name Offline span.name Offline
el-switch(v-model="orderFriendsGroup3" inactive-text="alphabetical" active-text="online for" @change="saveOrderFriendGroup") el-switch(v-model="orderFriendsGroup3" inactive-text="alphabetical" active-text="online for" @change="saveOrderFriendGroup")
br br
span.sub-header Width span.sub-header Width
div.options-container-item div.options-container-item
el-slider(v-model="asideWidth" @input="setAsideWidth" :show-tooltip="false" :marks="{236: ''}" :min="141" :max="500" style="width:300px") el-slider(v-model="asideWidth" @input="setAsideWidth" :show-tooltip="false" :marks="{236: ''}" :min="141" :max="500" style="width:300px")
div.options-container div.options-container
span.header User Colors span.header User Colors
div.options-container-item div.options-container-item
div div
el-color-picker(v-model="trustColor.untrusted" @change="updatetrustColor" size="mini" :predefine="['#CCCCCC']") el-color-picker(v-model="trustColor.untrusted" @change="updatetrustColor" size="mini" :predefine="['#CCCCCC']")
span.color-picker(slot="trigger" class="x-tag-untrusted") Visitor span.color-picker(slot="trigger" class="x-tag-untrusted") Visitor
div div
el-color-picker(v-model="trustColor.basic" @change="updatetrustColor" size="mini" :predefine="['#1778ff']") el-color-picker(v-model="trustColor.basic" @change="updatetrustColor" size="mini" :predefine="['#1778ff']")
span.color-picker(slot="trigger" class="x-tag-basic") New User span.color-picker(slot="trigger" class="x-tag-basic") New User
div div
el-color-picker(v-model="trustColor.known" @change="updatetrustColor" size="mini" :predefine="['#2bcf5c']") el-color-picker(v-model="trustColor.known" @change="updatetrustColor" size="mini" :predefine="['#2bcf5c']")
span.color-picker(slot="trigger" class="x-tag-known") User span.color-picker(slot="trigger" class="x-tag-known") User
div div
el-color-picker(v-model="trustColor.trusted" @change="updatetrustColor" size="mini" :predefine="['#ff7b42']") el-color-picker(v-model="trustColor.trusted" @change="updatetrustColor" size="mini" :predefine="['#ff7b42']")
span.color-picker(slot="trigger" class="x-tag-trusted") Known User span.color-picker(slot="trigger" class="x-tag-trusted") Known User
div div
@@ -1086,37 +1086,37 @@ html
span * It runs automatically when VRChat is running. span * It runs automatically when VRChat is running.
br br
br br
span Grip: Vive or Other Controllers Grab, Oculus X/A Buttons span Grip: Vive or Other Controllers Grab, Oculus X/A Buttons
br br
span Menu: Vive Menu, Index B, Oculus Y/B Buttons span Menu: Vive Menu, Index B, Oculus Y/B Buttons
br br
div.options-container-item div.options-container-item
span.name Enable span.name Enable
el-switch(v-model="openVR" @change="saveOpenVROption") el-switch(v-model="openVR" @change="saveOpenVROption")
div.options-container-item(style="min-width:118px") div.options-container-item(style="min-width:118px")
span.name Start overlay with span.name Start overlay with
el-switch(v-model="openVRAlways" @change="saveOpenVROption" inactive-text="VRChat" active-text="SteamVR" :disabled="!openVR") el-switch(v-model="openVRAlways" @change="saveOpenVROption" inactive-text="VRChat" active-text="SteamVR" :disabled="!openVR")
div.options-container-item div.options-container-item
span.name Hide Private Worlds span.name Hide Private Worlds
el-switch(v-model="hidePrivateFromFeed" @change="saveOpenVROption") el-switch(v-model="hidePrivateFromFeed" @change="saveOpenVROption")
br br
span.sub-header Wrist Feed span.sub-header Wrist Feed
div.options-container-item div.options-container-item
span.name Wrist Feed Overlay span.name Wrist Feed Overlay
el-switch(v-model="overlayWrist" @change="saveOpenVROption" :disabled="!openVR") el-switch(v-model="overlayWrist" @change="saveOpenVROption" :disabled="!openVR")
div.options-container-item div.options-container-item
span.name(style="min-width:137px") Overlay Button span.name(style="min-width:137px") Overlay Button
el-switch(v-model="overlaybutton" @change="saveOpenVROption" inactive-text="Grip" active-text="Menu" :disabled="!openVR || !overlayWrist") el-switch(v-model="overlaybutton" @change="saveOpenVROption" inactive-text="Grip" active-text="Menu" :disabled="!openVR || !overlayWrist")
div.options-container-item div.options-container-item
span.name Background Color span.name Background Color
el-switch(v-model="vrBackgroundEnabled" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist") el-switch(v-model="vrBackgroundEnabled" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
div.options-container-item div.options-container-item
span.name Minimal Feed Icons span.name Minimal Feed Icons
el-switch(v-model="minimalFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist") el-switch(v-model="minimalFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
div.options-container-item div.options-container-item
span.name Hide VR Devices span.name Hide VR Devices
el-switch(v-model="hideDevicesFromFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist") el-switch(v-model="hideDevicesFromFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
div.options-container-item div.options-container-item
span.name Hide CPU Usage span.name Hide CPU Usage
el-switch(v-model="hideCpuUsageFromFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist") el-switch(v-model="hideCpuUsageFromFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
div.options-container-item div.options-container-item
@@ -1156,17 +1156,17 @@ html
div.options-container div.options-container
span.header Application span.header Application
div.options-container-item div.options-container-item
span.name(style="min-width:236px") Encrypt password (disables auto login) span.name(style="min-width:236px") Encrypt password (disables auto login)
el-switch(v-model="enablePrimaryPassword" @change="enablePrimaryPasswordChange" :disabled="!loginForm.savedCredentials[API.currentUser.username]") el-switch(v-model="enablePrimaryPassword" @change="enablePrimaryPasswordChange" :disabled="!loginForm.savedCredentials[API.currentUser.username]")
div.options-container-item div.options-container-item
span.name Start at Windows startup span.name Start at Windows startup
el-switch(v-model="isStartAtWindowsStartup") el-switch(v-model="isStartAtWindowsStartup")
div.options-container-item div.options-container-item
span.name Start as minimized state span.name Start as minimized state
el-switch(v-model="isStartAsMinimizedState") el-switch(v-model="isStartAsMinimizedState")
div.options-container-item div.options-container-item
span.name Close to tray span.name Close to tray
el-switch(v-model="isCloseToTray") el-switch(v-model="isCloseToTray")
div.options-container-item div.options-container-item
span.name Time Format span.name Time Format
el-switch(v-model="dtHour12" @change="setDatetimeFormat" inactive-text="24 Hour" active-text="12 Hour") el-switch(v-model="dtHour12" @change="setDatetimeFormat" inactive-text="24 Hour" active-text="12 Hour")
@@ -1178,52 +1178,52 @@ html
div.options-container div.options-container
span.header Remote Avatar Database span.header Remote Avatar Database
div.options-container-item div.options-container-item
span.name Enable span.name Enable
el-switch(v-model="avatarRemoteDatabase" @change="saveOpenVROption") el-switch(v-model="avatarRemoteDatabase" @change="saveOpenVROption")
div.options-container-item div.options-container-item
el-button(size="small" icon="el-icon-user-solid" @click="promptSetAvatarRemoteDatabase" :disabled="!avatarRemoteDatabase") Avatar Database Provider el-button(size="small" icon="el-icon-user-solid" @click="promptSetAvatarRemoteDatabase" :disabled="!avatarRemoteDatabase") Avatar Database Provider
div.options-container div.options-container
span.header YouTube API span.header YouTube API
div.options-container-item div.options-container-item
span.name Enabled span.name Enabled
el-switch(v-model="youTubeApi" @change="changeYouTubeApi") el-switch(v-model="youTubeApi" @change="changeYouTubeApi")
div.options-container-item div.options-container-item
el-button(size="small" icon="el-icon-caret-right" @click="showYouTubeApiDialog") YouTube API Key el-button(size="small" icon="el-icon-caret-right" @click="showYouTubeApiDialog") YouTube API Key
span.header Progress pie overlay for videos span.header Progress pie overlay for videos
div.options-container-item div.options-container-item
span.name Enable span.name Enable
el-switch(v-model="progressPie" @change="changeYouTubeApi" :disabled="!openVR") el-switch(v-model="progressPie" @change="changeYouTubeApi" :disabled="!openVR")
div.options-container-item div.options-container-item
span.name Dance worlds only span.name Dance worlds only
el-switch(v-model="progressPieFilter" @change="changeYouTubeApi" :disabled="!openVR") el-switch(v-model="progressPieFilter" @change="changeYouTubeApi" :disabled="!openVR")
div.options-container(v-if="photonLoggingEnabled") div.options-container(v-if="photonLoggingEnabled")
span.header Photon Logging Overlay span.header Photon Logging Overlay
div.options-container-item div.options-container-item
span.sub-header Photon Event HUD span.sub-header Photon Event HUD
div.options-container-item div.options-container-item
span.name Enable span.name Enable
el-switch(v-model="photonEventOverlay" @change="saveEventOverlay" :disabled="!openVR") el-switch(v-model="photonEventOverlay" @change="saveEventOverlay" :disabled="!openVR")
div.options-container-item div.options-container-item
span.name Show Join/Leave span.name Show Join/Leave
el-switch(v-model="photonEventOverlayJoinLeave" @change="saveEventOverlay" :disabled="!openVR") el-switch(v-model="photonEventOverlayJoinLeave" @change="saveEventOverlay" :disabled="!openVR")
div.options-container-item div.options-container-item
span.name Filter span.name Filter
el-radio-group(v-model="photonEventOverlayFilter" @change="saveEventOverlay" size="mini" :disabled="!openVR || !photonEventOverlay") el-radio-group(v-model="photonEventOverlayFilter" @change="saveEventOverlay" size="mini" :disabled="!openVR || !photonEventOverlay")
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")
span.sub-header User timeout HUD span.sub-header User timeout HUD
div.options-container-item div.options-container-item
span.name Enable span.name Enable
el-switch(v-model="timeoutHudOverlay" @change="saveEventOverlay" :disabled="!openVR") el-switch(v-model="timeoutHudOverlay" @change="saveEventOverlay" :disabled="!openVR")
div.options-container-item div.options-container-item
span.name Filter span.name Filter
el-radio-group(v-model="timeoutHudOverlayFilter" @change="saveEventOverlay" size="mini" :disabled="!openVR || !timeoutHudOverlay") el-radio-group(v-model="timeoutHudOverlayFilter" @change="saveEventOverlay" size="mini" :disabled="!openVR || !timeoutHudOverlay")
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")
div.options-container-item div.options-container-item
el-button(size="small" icon="el-icon-time" @click="promptPhotonLobbyTimeoutThreshold" :disabled="!openVR") Timeout Threshold el-button(size="small" icon="el-icon-time" @click="promptPhotonLobbyTimeoutThreshold" :disabled="!openVR") Timeout Threshold
div.options-container div.options-container
span.header VRCX Instance Cache/Debug span.header VRCX Instance Cache/Debug
div.options-container-item div.options-container-item
@@ -1234,39 +1234,39 @@ html
span.name User cache: #[span(v-text="API.cachedUsers.size")] span.name User cache: #[span(v-text="API.cachedUsers.size")]
div.options-container-item div.options-container-item
span.name World cache: #[span(v-text="API.cachedWorlds.size")] span.name World cache: #[span(v-text="API.cachedWorlds.size")]
div.options-container-item div.options-container-item
span.name Avatar cache: #[span(v-text="API.cachedAvatars.size")] span.name Avatar cache: #[span(v-text="API.cachedAvatars.size")]
div.options-container-item div.options-container-item
span.name Avatar Name cache: #[span(v-text="API.cachedAvatarNames.size")] span.name Avatar Name cache: #[span(v-text="API.cachedAvatarNames.size")]
div.options-container-item div.options-container-item
el-button(size="small" icon="el-icon-delete-solid" @click="clearVRCXCache") Clear Cache el-button(size="small" icon="el-icon-delete-solid" @click="clearVRCXCache") Clear Cache
el-button(size="small" icon="el-icon-time" @click="promptAutoClearVRCXCacheFrequency") Auto Clear Cache el-button(size="small" icon="el-icon-time" @click="promptAutoClearVRCXCacheFrequency") Auto Clear Cache
div.options-container-item div.options-container-item
el-button(size="small" icon="el-icon-download" @click="showDownloadDialog") Download History el-button(size="small" icon="el-icon-download" @click="showDownloadDialog") Download History
el-button(size="small" icon="el-icon-tickets" @click="showConsole") Show Console el-button(size="small" icon="el-icon-tickets" @click="showConsole") Show Console
div.options-container div.options-container
span.sub-header SQLite Table Size span.sub-header SQLite Table Size
div.options-container-item div.options-container-item
el-button(size="small" icon="el-icon-refresh" @click="getSqliteTableSizes") Refresh el-button(size="small" icon="el-icon-refresh" @click="getSqliteTableSizes") Refresh
div.options-container-item div.options-container-item
span.name GPS: #[span(v-text="sqliteTableSizes.gps")] span.name GPS: #[span(v-text="sqliteTableSizes.gps")]
div.options-container-item div.options-container-item
span.name Status: #[span(v-text="sqliteTableSizes.status")] span.name Status: #[span(v-text="sqliteTableSizes.status")]
div.options-container-item div.options-container-item
span.name Avatar: #[span(v-text="sqliteTableSizes.avatar")] span.name Avatar: #[span(v-text="sqliteTableSizes.avatar")]
div.options-container-item div.options-container-item
span.name Online/Offline: #[span(v-text="sqliteTableSizes.onlineOffline")] span.name Online/Offline: #[span(v-text="sqliteTableSizes.onlineOffline")]
div.options-container-item div.options-container-item
span.name Friend Log History: #[span(v-text="sqliteTableSizes.friendLogHistory")] span.name Friend Log History: #[span(v-text="sqliteTableSizes.friendLogHistory")]
div.options-container-item div.options-container-item
span.name Notifications: #[span(v-text="sqliteTableSizes.notification")] span.name Notifications: #[span(v-text="sqliteTableSizes.notification")]
div.options-container-item div.options-container-item
span.name Location: #[span(v-text="sqliteTableSizes.location")] span.name Location: #[span(v-text="sqliteTableSizes.location")]
div.options-container-item div.options-container-item
span.name Join/Leave: #[span(v-text="sqliteTableSizes.joinLeave")] span.name Join/Leave: #[span(v-text="sqliteTableSizes.joinLeave")]
div.options-container-item div.options-container-item
span.name Portal Spawn: #[span(v-text="sqliteTableSizes.portalSpawn")] span.name Portal Spawn: #[span(v-text="sqliteTableSizes.portalSpawn")]
div.options-container-item div.options-container-item
span.name Video Play: #[span(v-text="sqliteTableSizes.videoPlay")] span.name Video Play: #[span(v-text="sqliteTableSizes.videoPlay")]
div.options-container-item div.options-container-item
span.name Event: #[span(v-text="sqliteTableSizes.event")] span.name Event: #[span(v-text="sqliteTableSizes.event")]
@@ -1581,12 +1581,12 @@ html
i.x-user-status(style="margin-left:5px" :class="userFavoriteWorldsStatus(list[1])") i.x-user-status(style="margin-left:5px" :class="userFavoriteWorldsStatus(list[1])")
span(style="color:#909399;font-size:12px;margin-left:5px") {{ list[2].length }}/64 span(style="color:#909399;font-size:12px;margin-left:5px") {{ list[2].length }}/64
.x-friend-list(style="margin-top:10px;margin-bottom:15px;min-height:60px") .x-friend-list(style="margin-top:10px;margin-bottom:15px;min-height:60px")
.x-friend-item(v-for="world in list[2]" :key="world.id" @click="showWorldDialog(world.id)" class="x-friend-item-border") .x-friend-item(v-for="world in list[2]" :key="world.id" @click="showWorldDialog(world.id)" class="x-friend-item-border")
.avatar .avatar
img(v-lazy="world.thumbnailImageUrl") img(v-lazy="world.thumbnailImageUrl")
.detail .detail
span.name(v-text="world.name") span.name(v-text="world.name")
span.extra(v-if="world.occupants") ({{ world.occupants }}) span.extra(v-if="world.occupants") ({{ world.occupants }})
el-tab-pane(label="Avatars") el-tab-pane(label="Avatars")
template(v-if="userDialog.ref.id === API.currentUser.id") template(v-if="userDialog.ref.id === API.currentUser.id")
el-button(type="default" :loading="userDialog.isAvatarsLoading" @click="refreshUserDialogAvatars()" size="mini" icon="el-icon-refresh" circle) el-button(type="default" :loading="userDialog.isAvatarsLoading" @click="refreshUserDialogAvatars()" size="mini" icon="el-icon-refresh" circle)