mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-17 22:03:50 +02:00
Lint
This commit is contained in:
@@ -532,20 +532,20 @@ html
|
||||
div(style="display:inline-block;width:300px;margin-right:15px" v-for="favorite in favoriteWorlds" v-if="favorite.groupKey === group.key" :key="favorite.id" @click="showWorldDialog(favorite.id)")
|
||||
.x-friend-item
|
||||
template(v-if="favorite.ref")
|
||||
.avatar
|
||||
img(v-lazy="favorite.ref.thumbnailImageUrl")
|
||||
.detail
|
||||
span.name(v-text="favorite.ref.name")
|
||||
span.extra(v-if="favorite.ref.occupants") {{ favorite.ref.authorName }} ({{ favorite.ref.occupants }})
|
||||
span.extra(v-else v-text="favorite.ref.authorName")
|
||||
el-tooltip(placement="left" content="Move" :disabled="hideTooltips")
|
||||
el-dropdown(trigger="click" @click.native.stop size="mini" style="margin-left:5px")
|
||||
el-button(type="default" icon="el-icon-back" size="mini" circle)
|
||||
el-dropdown-menu(#default="dropdown")
|
||||
template(v-if="groupAPI.name !== group.name" v-for="groupAPI in API.favoriteWorldGroups" :key="groupAPI.name")
|
||||
el-dropdown-item(style="display:block;margin:10px 0" @click.native="moveFavorite(favorite.ref, groupAPI, 'world')" :disabled="groupAPI.count >= groupAPI.capacity") {{ groupAPI.displayName }} ({{ groupAPI.count }} / {{ groupAPI.capacity }})
|
||||
el-tooltip(placement="right" content="Unfavorite" :disabled="hideTooltips")
|
||||
el-button(@click.stop="deleteFavorite(favorite.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
|
||||
.avatar
|
||||
img(v-lazy="favorite.ref.thumbnailImageUrl")
|
||||
.detail
|
||||
span.name(v-text="favorite.ref.name")
|
||||
span.extra(v-if="favorite.ref.occupants") {{ favorite.ref.authorName }} ({{ favorite.ref.occupants }})
|
||||
span.extra(v-else v-text="favorite.ref.authorName")
|
||||
el-tooltip(placement="left" content="Move" :disabled="hideTooltips")
|
||||
el-dropdown(trigger="click" @click.native.stop size="mini" style="margin-left:5px")
|
||||
el-button(type="default" icon="el-icon-back" size="mini" circle)
|
||||
el-dropdown-menu(#default="dropdown")
|
||||
template(v-if="groupAPI.name !== group.name" v-for="groupAPI in API.favoriteWorldGroups" :key="groupAPI.name")
|
||||
el-dropdown-item(style="display:block;margin:10px 0" @click.native="moveFavorite(favorite.ref, groupAPI, 'world')" :disabled="groupAPI.count >= groupAPI.capacity") {{ groupAPI.displayName }} ({{ groupAPI.count }} / {{ groupAPI.capacity }})
|
||||
el-tooltip(placement="right" content="Unfavorite" :disabled="hideTooltips")
|
||||
el-button(@click.stop="deleteFavorite(favorite.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
|
||||
template(v-else)
|
||||
span(v-text="favorite.name || favorite.id")
|
||||
el-button(type="text" icon="el-icon-close" size="mini" @click.stop="deleteFavorite(favorite.id)" style="margin-left:5px")
|
||||
@@ -905,364 +905,371 @@ html
|
||||
.x-container(v-show="$refs.menu && $refs.menu.activeIndex === 'settings'")
|
||||
div.options-container(style="margin-top:0")
|
||||
span.header Settings
|
||||
.x-friend-list(style="margin-top:10px")
|
||||
.x-friend-item(style="cursor:default")
|
||||
.detail
|
||||
span.name Version
|
||||
span.extra(v-text="appVersion")
|
||||
.x-friend-item(@click="checkForVRCXUpdate")
|
||||
.detail
|
||||
span.name Latest Version
|
||||
span.extra(v-if="latestAppVersion" v-text="latestAppVersion")
|
||||
span.extra(v-else) Click to refresh
|
||||
.x-friend-item(@click="openExternalLink('https://github.com/pypy-vrc/VRCX')")
|
||||
.detail
|
||||
span.name Repository URL
|
||||
span.extra https://github.com/pypy-vrc/VRCX
|
||||
.x-friend-item(@click="openExternalLink('https://vrcx.pypy.moe/discord')")
|
||||
.detail
|
||||
span.name Support
|
||||
span.extra https://vrcx.pypy.moe/discord
|
||||
div.options-container
|
||||
span.header VRCX Updater
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-upload" @click="showVRCXUpdateDialog()") Check for update
|
||||
div.options-container-item
|
||||
span.name Auto update:
|
||||
br
|
||||
el-radio-group(v-model="autoUpdateVRCX" @change="saveAutoUpdateVRCX" size="mini")
|
||||
el-radio-button(label="Off")
|
||||
el-radio-button(label="Notify")
|
||||
el-radio-button(label="Auto Download")
|
||||
el-radio-button(label="Auto Install")
|
||||
div.options-container
|
||||
span.header Appearance
|
||||
div.options-container-item
|
||||
span.name Theme mode
|
||||
el-radio-group(v-model="themeMode" size="mini")
|
||||
el-radio-button(label="system") System
|
||||
el-radio-button(label="light") Light
|
||||
el-radio-button(label="dark") Dark
|
||||
div.options-container-item
|
||||
span.name VRCPlus Profile Icons
|
||||
el-switch(v-model="displayVRCPlusIconsAsAvatar" @change="saveOpenVROption")
|
||||
div.options-container-item
|
||||
span.name Disable Tooltips
|
||||
el-switch(v-model="hideTooltips" @change="saveOpenVROption")
|
||||
div.options-container-item
|
||||
span.name Sort Favorites By
|
||||
el-switch(v-model="sortFavorites" inactive-text="name" active-text="date" @change="saveOpenVROption")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-notebook-1" @click="promptMaxTableSizeDialog") Table Max Size
|
||||
div.options-container-item
|
||||
el-dropdown(@click.native.stop trigger="click" size="small")
|
||||
el-button(size="mini")
|
||||
span Page Size: {{ tablePageSize }} #[i.el-icon-arrow-down.el-icon--right]
|
||||
el-dropdown-menu(#default="dropdown")
|
||||
el-dropdown-item(v-for="(number) in [10, 15, 25, 50, 100]" v-text="number" @click.native="setTablePageSize(number)")
|
||||
div.options-container
|
||||
span.header Side Panel
|
||||
br
|
||||
span.sub-header Sorting
|
||||
div.options-container-item
|
||||
span.name Sort Private to bottom
|
||||
el-switch(v-model="orderFriendsGroupPrivate" @change="saveOrderFriendGroup")
|
||||
div.options-container-item
|
||||
span.name Sort by status
|
||||
el-switch(v-model="orderFriendsGroupStatus" @change="saveOrderFriendGroup")
|
||||
div.options-container-item
|
||||
span.name Sort GPS to top
|
||||
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" @change="saveOrderFriendGroup")
|
||||
div.options-container-item
|
||||
span.name Online
|
||||
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" @change="saveOrderFriendGroup")
|
||||
div.options-container-item
|
||||
span.name Offline
|
||||
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 User Colors
|
||||
div.options-container-item
|
||||
div
|
||||
el-color-picker(v-model="trustColor.untrusted" @change="updatetrustColor" size="mini" :predefine="['#CCCCCC']")
|
||||
span.color-picker(slot="trigger" class="x-tag-untrusted") Visitor
|
||||
div
|
||||
el-color-picker(v-model="trustColor.basic" @change="updatetrustColor" size="mini" :predefine="['#1778ff']")
|
||||
span.color-picker(slot="trigger" class="x-tag-basic") New User
|
||||
div
|
||||
el-color-picker(v-model="trustColor.known" @change="updatetrustColor" size="mini" :predefine="['#2bcf5c']")
|
||||
span.color-picker(slot="trigger" class="x-tag-known") User
|
||||
div
|
||||
el-color-picker(v-model="trustColor.trusted" @change="updatetrustColor" size="mini" :predefine="['#ff7b42']")
|
||||
span.color-picker(slot="trigger" class="x-tag-trusted") Known User
|
||||
div
|
||||
el-color-picker(v-model="trustColor.veteran" @change="updatetrustColor" size="mini" :predefine="['#b18fff', '#8143e6']")
|
||||
span.color-picker(slot="trigger" class="x-tag-veteran") Trusted User
|
||||
div
|
||||
el-color-picker(v-model="trustColor.legend" @change="updatetrustColor" size="mini" :predefine="['#ffd000', '#abcdef']")
|
||||
span.color-picker(slot="trigger" class="x-tag-legend") Veteran User
|
||||
div
|
||||
el-color-picker(v-model="trustColor.vip" @change="updatetrustColor" size="mini" :predefine="['#ff2626']")
|
||||
span.color-picker(slot="trigger" class="x-tag-vip") VRChat Team
|
||||
div
|
||||
el-color-picker(v-model="trustColor.troll" @change="updatetrustColor" size="mini" :predefine="['#782f2f']")
|
||||
span.color-picker(slot="trigger" class="x-tag-troll") Nuisance
|
||||
div
|
||||
el-color-picker(v-model="trustColor.legendary" @change="updatetrustColor" size="mini" :predefine="['#ff69b4', '#b52626']")
|
||||
span.color-picker(slot="trigger" class="x-tag-legendary") Legend
|
||||
el-switch(v-model="legendColorOverride" style="padding-bottom:21px;padding-left:6px" @change="saveLegendColorOverride")
|
||||
div.options-container
|
||||
span.header Discord Presence
|
||||
div.options-container-item
|
||||
span * Only works when VRChat is running.
|
||||
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(style="cursor:pointer" @click="showVRChatConfig")
|
||||
el-switch(v-model="discordActive" @change="saveDiscordOption")
|
||||
div.options-container-item
|
||||
span.name Instance type/player count
|
||||
el-switch(v-model="discordInstance" @change="saveDiscordOption" :disabled="!discordActive")
|
||||
div.options-container-item
|
||||
span.name Join button (public only)
|
||||
el-switch(v-model="discordJoinButton" @change="saveDiscordOption" :disabled="!discordActive")
|
||||
div.options-container-item
|
||||
span.name Hide world details in private
|
||||
el-switch(v-model="discordHideInvite" @change="saveDiscordOption" :disabled="!discordActive")
|
||||
div.options-container
|
||||
span.header SteamVR Overlay
|
||||
div.options-container-item
|
||||
span * It runs automatically when VRChat is running.
|
||||
br
|
||||
br
|
||||
span Grip: Vive or Other Controllers Grab, Oculus X/A Buttons
|
||||
br
|
||||
span Menu: Vive Menu, Index B, Oculus Y/B Buttons
|
||||
br
|
||||
div.options-container-item
|
||||
span.name Enable
|
||||
el-switch(v-model="openVR" @change="saveOpenVROption")
|
||||
div.options-container-item(style="min-width:118px")
|
||||
span.name Start overlay with
|
||||
el-switch(v-model="openVRAlways" @change="saveOpenVROption" inactive-text="VRChat" active-text="SteamVR" :disabled="!openVR")
|
||||
div.options-container-item
|
||||
span.name Hide Private Worlds
|
||||
el-switch(v-model="hidePrivateFromFeed" @change="saveOpenVROption")
|
||||
br
|
||||
span.sub-header Wrist Feed
|
||||
div.options-container-item
|
||||
span.name Wrist Feed Overlay
|
||||
el-switch(v-model="overlayWrist" @change="saveOpenVROption" :disabled="!openVR")
|
||||
div.options-container-item
|
||||
span.name(style="min-width:137px") Overlay Button
|
||||
el-switch(v-model="overlaybutton" @change="saveOpenVROption" inactive-text="Grip" active-text="Menu" :disabled="!openVR || !overlayWrist")
|
||||
div.options-container-item
|
||||
span.name Background Color
|
||||
el-switch(v-model="vrBackgroundEnabled" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
|
||||
div.options-container-item
|
||||
span.name Minimal Feed Icons
|
||||
el-switch(v-model="minimalFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
|
||||
div.options-container-item
|
||||
span.name Hide VR Devices
|
||||
el-switch(v-model="hideDevicesFromFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
|
||||
div.options-container-item
|
||||
span.name Hide CPU Usage
|
||||
el-switch(v-model="hideCpuUsageFromFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
|
||||
div.options-container-item
|
||||
span.name Hide Uptime
|
||||
el-switch(v-model="hideUptimeFromFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
|
||||
div.options-container-item
|
||||
span.name Show PC Uptime
|
||||
el-switch(v-model="pcUptimeOnFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-notebook-2" @click="showWristFeedFiltersDialog" :disabled="!openVR || !overlayWrist") Wrist Feed Filters
|
||||
br
|
||||
span.sub-header Notifications
|
||||
div.options-container-item
|
||||
span.name Overlay Notifications
|
||||
el-switch(v-model="overlayNotifications" @change="saveOpenVROption" :disabled="!openVR")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-rank" @click="showNotificationPositionDialog" :disabled="!overlayNotifications || !openVR") Notification Position
|
||||
div.options-container-item
|
||||
span.name XSOverlay Notifications
|
||||
el-switch(v-model="xsNotifications" @change="saveOpenVROption")
|
||||
div.options-container-item
|
||||
span.name User images (slower)
|
||||
el-switch(v-model="imageNotifications" @change="saveOpenVROption")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-time" @click="promptNotificationTimeout" :disabled="(!overlayNotifications || !openVR) && !xsNotifications") Notification Timeout
|
||||
div.options-container-item
|
||||
span.name Desktop Notifications, When to display:
|
||||
br
|
||||
el-radio-group(v-model="desktopToast" @change="saveOpenVROption" size="mini")
|
||||
el-radio-button(label="Never")
|
||||
el-radio-button(label="Desktop Mode")
|
||||
el-radio-button(label="Inside VR")
|
||||
el-radio-button(label="Outside VR")
|
||||
el-radio-button(label="Game Closed")
|
||||
el-radio-button(label="Game Running")
|
||||
el-radio-button(label="Always")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-chat-square" @click="showNotyFeedFiltersDialog") Notification Filters
|
||||
br
|
||||
span.sub-header Text-To-Speech Options
|
||||
div.options-container-item
|
||||
span.name Notification TTS, When to play:
|
||||
br
|
||||
el-radio-group(v-model="notificationTTS" @change="saveNotificationTTS" size="mini")
|
||||
el-radio-button(label="Never")
|
||||
el-radio-button(label="Inside VR")
|
||||
el-radio-button(label="Game Closed")
|
||||
el-radio-button(label="Game Running")
|
||||
el-radio-button(label="Always")
|
||||
div.options-container-item
|
||||
span.name TTS Voice
|
||||
el-dropdown(@command="(voice) => changeTTSVoice(voice)" trigger="click" size="small")
|
||||
el-button(size="mini" :disabled="notificationTTS === 'Never'")
|
||||
span {{ getTTSVoiceName() }} #[i.el-icon-arrow-down.el-icon--right]
|
||||
el-dropdown-menu(#default="dropdown")
|
||||
el-dropdown-item(v-if="voice" v-for="(voice, index) in TTSvoices" :key="index" v-text="voice.name" :command="index")
|
||||
div.options-container
|
||||
span.header VRChat Cache Management
|
||||
span.sub-header Automatically Manage Cache When Closing VRChat
|
||||
div.options-container-item
|
||||
span.name(style="min-width:300px") Auto delete old versions from cache
|
||||
el-switch(v-model="autoSweepVRChatCache" @change="saveOpenVROption")
|
||||
div.options-container
|
||||
span.header Application
|
||||
div.options-container-item
|
||||
span.name(style="min-width:236px") Encrypt password (disables auto login)
|
||||
el-switch(v-model="enablePrimaryPassword" @change="enablePrimaryPasswordChange" :disabled="!loginForm.savedCredentials[API.currentUser.username]")
|
||||
div.options-container-item
|
||||
span.name Start at Windows startup
|
||||
el-switch(v-model="isStartAtWindowsStartup")
|
||||
div.options-container-item
|
||||
span.name Start as minimized state
|
||||
el-switch(v-model="isStartAsMinimizedState")
|
||||
div.options-container-item
|
||||
span.name Close to tray
|
||||
el-switch(v-model="isCloseToTray")
|
||||
div.options-container-item
|
||||
span.name Time Format
|
||||
el-switch(v-model="dtHour12" @change="setDatetimeFormat" inactive-text="24 Hour" active-text="12 Hour")
|
||||
div.options-container-item
|
||||
el-button-group
|
||||
el-button(size="small" icon="el-icon-s-operation" @click="showLaunchOptions()") Launch Options
|
||||
el-button(size="small" icon="el-icon-s-operation" @click="showVRChatConfig()") VRChat config.json
|
||||
div.options-container
|
||||
span.header Remote Avatar Database
|
||||
div.options-container-item
|
||||
span.name Enable
|
||||
el-switch(v-model="avatarRemoteDatabase" @change="saveOpenVROption")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-user-solid" @click="promptSetAvatarRemoteDatabase" :disabled="!avatarRemoteDatabase") Avatar Database Provider
|
||||
div.options-container
|
||||
span.header YouTube API
|
||||
div.options-container-item
|
||||
span.name Enabled
|
||||
el-switch(v-model="youTubeApi" @change="changeYouTubeApi")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-caret-right" @click="showYouTubeApiDialog") YouTube API Key
|
||||
span.header Progress pie overlay for videos
|
||||
div.options-container-item
|
||||
span.name Enable
|
||||
el-switch(v-model="progressPie" @change="changeYouTubeApi" :disabled="!openVR")
|
||||
div.options-container-item
|
||||
span.name Dance worlds only
|
||||
el-switch(v-model="progressPieFilter" @change="changeYouTubeApi" :disabled="!openVR")
|
||||
div.options-container(v-if="photonLoggingEnabled")
|
||||
span.header Photon Logging Overlay
|
||||
div.options-container-item
|
||||
span.sub-header Photon Event HUD
|
||||
div.options-container-item
|
||||
span.name Enable
|
||||
el-switch(v-model="photonEventOverlay" @change="saveEventOverlay" :disabled="!openVR")
|
||||
div.options-container-item
|
||||
span.name Show Join/Leave
|
||||
el-switch(v-model="photonEventOverlayJoinLeave" @change="saveEventOverlay" :disabled="!openVR")
|
||||
div.options-container-item
|
||||
span.name Filter
|
||||
el-radio-group(v-model="photonEventOverlayFilter" @change="saveEventOverlay" size="mini" :disabled="!openVR || !photonEventOverlay")
|
||||
el-radio-button(label="VIP")
|
||||
el-radio-button(label="Friends")
|
||||
el-radio-button(label="Everyone")
|
||||
span.sub-header User timeout HUD
|
||||
div.options-container-item
|
||||
span.name Enable
|
||||
el-switch(v-model="timeoutHudOverlay" @change="saveEventOverlay" :disabled="!openVR")
|
||||
div.options-container-item
|
||||
span.name Filter
|
||||
el-radio-group(v-model="timeoutHudOverlayFilter" @change="saveEventOverlay" size="mini" :disabled="!openVR || !timeoutHudOverlay")
|
||||
el-radio-button(label="VIP")
|
||||
el-radio-button(label="Friends")
|
||||
el-radio-button(label="Everyone")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-time" @click="promptPhotonLobbyTimeoutThreshold" :disabled="!openVR") Timeout Threshold
|
||||
div.options-container
|
||||
span.header VRCX Instance Cache/Debug
|
||||
div.options-container-item
|
||||
span.name User cache: #[span(v-text="API.cachedUsers.size")]
|
||||
div.options-container-item
|
||||
span.name World cache: #[span(v-text="API.cachedWorlds.size")]
|
||||
div.options-container-item
|
||||
span.name Avatar cache: #[span(v-text="API.cachedAvatars.size")]
|
||||
div.options-container-item
|
||||
span.name Avatar Name cache: #[span(v-text="API.cachedAvatarNames.size")]
|
||||
div.options-container-item
|
||||
span.name Disable GameLog
|
||||
el-switch(v-model="gameLogDisabled" @change="disableGameLogDialog")
|
||||
span.name(style="margin-left:15px") (will likely break things)
|
||||
div.options-container-item
|
||||
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
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-download" @click="showDownloadDialog") Download History
|
||||
el-button(size="small" icon="el-icon-tickets" @click="showConsole") Show Console
|
||||
div.options-container
|
||||
span.sub-header SQLite Table Size
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-refresh" @click="getSqliteTableSizes") Refresh
|
||||
div.options-container-item
|
||||
span.name GPS: #[span(v-text="sqliteTableSizes.gps")]
|
||||
div.options-container-item
|
||||
span.name Status: #[span(v-text="sqliteTableSizes.status")]
|
||||
div.options-container-item
|
||||
span.name Avatar: #[span(v-text="sqliteTableSizes.avatar")]
|
||||
div.options-container-item
|
||||
span.name Online/Offline: #[span(v-text="sqliteTableSizes.onlineOffline")]
|
||||
div.options-container-item
|
||||
span.name Friend Log History: #[span(v-text="sqliteTableSizes.friendLogHistory")]
|
||||
div.options-container-item
|
||||
span.name Notifications: #[span(v-text="sqliteTableSizes.notification")]
|
||||
div.options-container-item
|
||||
span.name Location: #[span(v-text="sqliteTableSizes.location")]
|
||||
div.options-container-item
|
||||
span.name Join/Leave: #[span(v-text="sqliteTableSizes.joinLeave")]
|
||||
div.options-container-item
|
||||
span.name Portal Spawn: #[span(v-text="sqliteTableSizes.portalSpawn")]
|
||||
div.options-container-item
|
||||
span.name Video Play: #[span(v-text="sqliteTableSizes.videoPlay")]
|
||||
div.options-container-item
|
||||
span.name Event: #[span(v-text="sqliteTableSizes.event")]
|
||||
div.options-container(style="margin-top:45px;border-top:1px solid #eee;padding-top:30px")
|
||||
span.header Legal Notice
|
||||
div.options-container-item
|
||||
p © 2019-2021 #[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 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!
|
||||
div.options-container-item
|
||||
el-button(@click="ossDialog = true" size="small") Open Source Software Notice
|
||||
el-tabs(type="card" style="margin-top:10px")
|
||||
el-tab-pane(label="General")
|
||||
div.options-container(style="margin-top:0")
|
||||
span.header General
|
||||
.x-friend-list(style="margin-top:10px")
|
||||
.x-friend-item(style="cursor:default")
|
||||
.detail
|
||||
span.name Version
|
||||
span.extra(v-text="appVersion")
|
||||
.x-friend-item(@click="checkForVRCXUpdate")
|
||||
.detail
|
||||
span.name Latest Version
|
||||
span.extra(v-if="latestAppVersion" v-text="latestAppVersion")
|
||||
span.extra(v-else) Click to refresh
|
||||
.x-friend-item(@click="openExternalLink('https://github.com/pypy-vrc/VRCX')")
|
||||
.detail
|
||||
span.name Repository URL
|
||||
span.extra https://github.com/pypy-vrc/VRCX
|
||||
.x-friend-item(@click="openExternalLink('https://vrcx.pypy.moe/discord')")
|
||||
.detail
|
||||
span.name Support
|
||||
span.extra https://vrcx.pypy.moe/discord
|
||||
div.options-container
|
||||
span.header VRCX Updater
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-upload" @click="showVRCXUpdateDialog()") Check for update
|
||||
div.options-container-item
|
||||
span.name Auto update:
|
||||
br
|
||||
el-radio-group(v-model="autoUpdateVRCX" @change="saveAutoUpdateVRCX" size="mini")
|
||||
el-radio-button(label="Off")
|
||||
el-radio-button(label="Notify")
|
||||
el-radio-button(label="Auto Download")
|
||||
el-radio-button(label="Auto Install")
|
||||
div.options-container(style="margin-top:45px;border-top:1px solid #eee;padding-top:30px")
|
||||
span.header Legal Notice
|
||||
div.options-container-item
|
||||
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 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!
|
||||
div.options-container-item
|
||||
el-button(@click="ossDialog = true" size="small") Open Source Software Notice
|
||||
el-tab-pane(label="Appearance")
|
||||
div.options-container(style="margin-top:0")
|
||||
span.header Appearance
|
||||
div.options-container-item
|
||||
span.name Theme mode
|
||||
el-radio-group(v-model="themeMode" size="mini")
|
||||
el-radio-button(label="system") System
|
||||
el-radio-button(label="light") Light
|
||||
el-radio-button(label="dark") Dark
|
||||
div.options-container-item
|
||||
span.name VRCPlus Profile Icons
|
||||
el-switch(v-model="displayVRCPlusIconsAsAvatar" @change="saveOpenVROption")
|
||||
div.options-container-item
|
||||
span.name Disable Tooltips
|
||||
el-switch(v-model="hideTooltips" @change="saveOpenVROption")
|
||||
div.options-container-item
|
||||
span.name Sort Favorites By
|
||||
el-switch(v-model="sortFavorites" inactive-text="name" active-text="date" @change="saveOpenVROption")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-notebook-1" @click="promptMaxTableSizeDialog") Table Max Size
|
||||
div.options-container-item
|
||||
el-dropdown(@click.native.stop trigger="click" size="small")
|
||||
el-button(size="mini")
|
||||
span Page Size: {{ tablePageSize }} #[i.el-icon-arrow-down.el-icon--right]
|
||||
el-dropdown-menu(#default="dropdown")
|
||||
el-dropdown-item(v-for="(number) in [10, 15, 25, 50, 100]" v-text="number" @click.native="setTablePageSize(number)")
|
||||
div.options-container
|
||||
span.header Side Panel
|
||||
br
|
||||
span.sub-header Sorting
|
||||
div.options-container-item
|
||||
span.name Sort Private to bottom
|
||||
el-switch(v-model="orderFriendsGroupPrivate" @change="saveOrderFriendGroup")
|
||||
div.options-container-item
|
||||
span.name Sort by status
|
||||
el-switch(v-model="orderFriendsGroupStatus" @change="saveOrderFriendGroup")
|
||||
div.options-container-item
|
||||
span.name Sort GPS to top
|
||||
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" @change="saveOrderFriendGroup")
|
||||
div.options-container-item
|
||||
span.name Online
|
||||
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" @change="saveOrderFriendGroup")
|
||||
div.options-container-item
|
||||
span.name Offline
|
||||
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 User Colors
|
||||
div.options-container-item
|
||||
div
|
||||
el-color-picker(v-model="trustColor.untrusted" @change="updatetrustColor" size="mini" :predefine="['#CCCCCC']")
|
||||
span.color-picker(slot="trigger" class="x-tag-untrusted") Visitor
|
||||
div
|
||||
el-color-picker(v-model="trustColor.basic" @change="updatetrustColor" size="mini" :predefine="['#1778ff']")
|
||||
span.color-picker(slot="trigger" class="x-tag-basic") New User
|
||||
div
|
||||
el-color-picker(v-model="trustColor.known" @change="updatetrustColor" size="mini" :predefine="['#2bcf5c']")
|
||||
span.color-picker(slot="trigger" class="x-tag-known") User
|
||||
div
|
||||
el-color-picker(v-model="trustColor.trusted" @change="updatetrustColor" size="mini" :predefine="['#ff7b42']")
|
||||
span.color-picker(slot="trigger" class="x-tag-trusted") Known User
|
||||
div
|
||||
el-color-picker(v-model="trustColor.veteran" @change="updatetrustColor" size="mini" :predefine="['#b18fff', '#8143e6', '#ff69b4', '#b52626', '#ffd000', '#abcdef']")
|
||||
span.color-picker(slot="trigger" class="x-tag-veteran") Trusted User
|
||||
div
|
||||
el-color-picker(v-model="trustColor.vip" @change="updatetrustColor" size="mini" :predefine="['#ff2626']")
|
||||
span.color-picker(slot="trigger" class="x-tag-vip") VRChat Team
|
||||
div
|
||||
el-color-picker(v-model="trustColor.troll" @change="updatetrustColor" size="mini" :predefine="['#782f2f']")
|
||||
span.color-picker(slot="trigger" class="x-tag-troll") Nuisance
|
||||
el-tab-pane(label="Notifications")
|
||||
div.options-container(style="margin-top:0")
|
||||
span.header Notifications
|
||||
div.options-container-item
|
||||
span.name SteamVR Overlay
|
||||
el-switch(v-model="openVR" @change="saveOpenVROption")
|
||||
div.options-container-item
|
||||
span.name Overlay Notifications
|
||||
el-switch(v-model="overlayNotifications" @change="saveOpenVROption" :disabled="!openVR")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-rank" @click="showNotificationPositionDialog" :disabled="!overlayNotifications || !openVR") Notification Position
|
||||
div.options-container-item
|
||||
span.name XSOverlay Notifications
|
||||
el-switch(v-model="xsNotifications" @change="saveOpenVROption")
|
||||
div.options-container-item
|
||||
span.name User images (slower)
|
||||
el-switch(v-model="imageNotifications" @change="saveOpenVROption")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-time" @click="promptNotificationTimeout" :disabled="(!overlayNotifications || !openVR) && !xsNotifications") Notification Timeout
|
||||
span.sub-header Desktop Notifications
|
||||
div.options-container-item
|
||||
span.name When to display:
|
||||
br
|
||||
el-radio-group(v-model="desktopToast" @change="saveOpenVROption" size="mini")
|
||||
el-radio-button(label="Never")
|
||||
el-radio-button(label="Desktop Mode")
|
||||
el-radio-button(label="Inside VR")
|
||||
el-radio-button(label="Outside VR")
|
||||
el-radio-button(label="Game Closed")
|
||||
el-radio-button(label="Game Running")
|
||||
el-radio-button(label="Always")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-chat-square" @click="showNotyFeedFiltersDialog") Notification Filters
|
||||
br
|
||||
span.sub-header Text-To-Speech Options
|
||||
div.options-container-item
|
||||
span.name Notification TTS, When to play:
|
||||
br
|
||||
el-radio-group(v-model="notificationTTS" @change="saveNotificationTTS" size="mini")
|
||||
el-radio-button(label="Never")
|
||||
el-radio-button(label="Inside VR")
|
||||
el-radio-button(label="Game Closed")
|
||||
el-radio-button(label="Game Running")
|
||||
el-radio-button(label="Always")
|
||||
div.options-container-item
|
||||
span.name TTS Voice
|
||||
el-dropdown(@command="(voice) => changeTTSVoice(voice)" trigger="click" size="small")
|
||||
el-button(size="mini" :disabled="notificationTTS === 'Never'")
|
||||
span {{ getTTSVoiceName() }} #[i.el-icon-arrow-down.el-icon--right]
|
||||
el-dropdown-menu(#default="dropdown")
|
||||
el-dropdown-item(v-if="voice" v-for="(voice, index) in TTSvoices" :key="index" v-text="voice.name" :command="index")
|
||||
el-tab-pane(label="Wrist Overlay")
|
||||
div.options-container(style="margin-top:0")
|
||||
span.header SteamVR Wrist Overlay
|
||||
div.options-container-item
|
||||
span * It runs automatically when VRChat is running.
|
||||
br
|
||||
br
|
||||
span Grip: Vive or Other Controllers Grab, Oculus X/A Buttons
|
||||
br
|
||||
span Menu: Vive Menu, Index B, Oculus Y/B Buttons
|
||||
br
|
||||
div.options-container-item
|
||||
span.name Enable
|
||||
el-switch(v-model="openVR" @change="saveOpenVROption")
|
||||
div.options-container-item(style="min-width:118px")
|
||||
span.name Start overlay with
|
||||
el-switch(v-model="openVRAlways" @change="saveOpenVROption" inactive-text="VRChat" active-text="SteamVR" :disabled="!openVR")
|
||||
div.options-container-item
|
||||
span.name Hide Private Worlds
|
||||
el-switch(v-model="hidePrivateFromFeed" @change="saveOpenVROption")
|
||||
br
|
||||
span.sub-header Wrist Feed
|
||||
div.options-container-item
|
||||
span.name Wrist Feed Overlay
|
||||
el-switch(v-model="overlayWrist" @change="saveOpenVROption" :disabled="!openVR")
|
||||
div.options-container-item
|
||||
span.name(style="min-width:137px") Overlay Button
|
||||
el-switch(v-model="overlaybutton" @change="saveOpenVROption" inactive-text="Grip" active-text="Menu" :disabled="!openVR || !overlayWrist")
|
||||
div.options-container-item
|
||||
span.name Background Color
|
||||
el-switch(v-model="vrBackgroundEnabled" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
|
||||
div.options-container-item
|
||||
span.name Minimal Feed Icons
|
||||
el-switch(v-model="minimalFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
|
||||
div.options-container-item
|
||||
span.name Hide VR Devices
|
||||
el-switch(v-model="hideDevicesFromFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
|
||||
div.options-container-item
|
||||
span.name Hide CPU Usage
|
||||
el-switch(v-model="hideCpuUsageFromFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
|
||||
div.options-container-item
|
||||
span.name Hide Game Uptime
|
||||
el-switch(v-model="hideUptimeFromFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
|
||||
div.options-container-item
|
||||
span.name Show PC Uptime
|
||||
el-switch(v-model="pcUptimeOnFeed" @change="saveOpenVROption" :disabled="!openVR || !overlayWrist")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-notebook-2" @click="showWristFeedFiltersDialog" :disabled="!openVR || !overlayWrist") Wrist Feed Filters
|
||||
el-tab-pane(label="Discord Presence")
|
||||
div.options-container(style="margin-top:0")
|
||||
span.header Discord Presence
|
||||
div.options-container-item
|
||||
span * Only works when VRChat is running.
|
||||
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(style="cursor:pointer" @click="showVRChatConfig")
|
||||
el-switch(v-model="discordActive" @change="saveDiscordOption")
|
||||
div.options-container-item
|
||||
span.name Instance type/player count
|
||||
el-switch(v-model="discordInstance" @change="saveDiscordOption" :disabled="!discordActive")
|
||||
div.options-container-item
|
||||
span.name Join button (public only)
|
||||
el-switch(v-model="discordJoinButton" @change="saveDiscordOption" :disabled="!discordActive")
|
||||
div.options-container-item
|
||||
span.name Hide world details in private
|
||||
el-switch(v-model="discordHideInvite" @change="saveDiscordOption" :disabled="!discordActive")
|
||||
el-tab-pane(label="Advanced")
|
||||
div.options-container(style="margin-top:0")
|
||||
span.header Advanced
|
||||
div.options-container-item
|
||||
el-button-group
|
||||
el-button(size="small" icon="el-icon-s-operation" @click="showVRChatConfig()") VRChat config.json
|
||||
el-button(size="small" icon="el-icon-s-operation" @click="showLaunchOptions()") Launch Options
|
||||
div.options-container
|
||||
span.header Application
|
||||
div.options-container-item
|
||||
span.name(style="min-width:236px") Encrypt password (disables auto login)
|
||||
el-switch(v-model="enablePrimaryPassword" @change="enablePrimaryPasswordChange" :disabled="!loginForm.savedCredentials[API.currentUser.username]")
|
||||
div.options-container-item
|
||||
span.name Start at Windows startup
|
||||
el-switch(v-model="isStartAtWindowsStartup")
|
||||
div.options-container-item
|
||||
span.name Start as minimized state
|
||||
el-switch(v-model="isStartAsMinimizedState")
|
||||
div.options-container-item
|
||||
span.name Close to tray
|
||||
el-switch(v-model="isCloseToTray")
|
||||
div.options-container-item
|
||||
span.name Time Format
|
||||
el-switch(v-model="dtHour12" @change="setDatetimeFormat" inactive-text="24 Hour" active-text="12 Hour")
|
||||
div.options-container
|
||||
span.sub-header Automatically Manage Cache When Closing VRChat
|
||||
div.options-container-item
|
||||
span.name(style="min-width:300px") Auto delete old versions from cache
|
||||
el-switch(v-model="autoSweepVRChatCache" @change="saveOpenVROption")
|
||||
div.options-container
|
||||
span.header Remote Avatar Database
|
||||
div.options-container-item
|
||||
span.name Enable
|
||||
el-switch(v-model="avatarRemoteDatabase" @change="saveOpenVROption")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-user-solid" @click="promptSetAvatarRemoteDatabase" :disabled="!avatarRemoteDatabase") Avatar Database Provider
|
||||
div.options-container
|
||||
span.header YouTube API
|
||||
div.options-container-item
|
||||
span.name Enabled
|
||||
el-switch(v-model="youTubeApi" @change="changeYouTubeApi")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-caret-right" @click="showYouTubeApiDialog") YouTube API Key
|
||||
span.header Progress pie overlay for videos
|
||||
div.options-container-item
|
||||
span.name Enable
|
||||
el-switch(v-model="progressPie" @change="changeYouTubeApi" :disabled="!openVR")
|
||||
div.options-container-item
|
||||
span.name Dance worlds only
|
||||
el-switch(v-model="progressPieFilter" @change="changeYouTubeApi" :disabled="!openVR")
|
||||
div.options-container(v-if="photonLoggingEnabled")
|
||||
span.header Photon Logging Overlay
|
||||
div.options-container-item
|
||||
span.sub-header Photon Event HUD
|
||||
div.options-container-item
|
||||
span.name Enable
|
||||
el-switch(v-model="photonEventOverlay" @change="saveEventOverlay" :disabled="!openVR")
|
||||
div.options-container-item
|
||||
span.name Show Join/Leave
|
||||
el-switch(v-model="photonEventOverlayJoinLeave" @change="saveEventOverlay" :disabled="!openVR")
|
||||
div.options-container-item
|
||||
span.name Filter
|
||||
el-radio-group(v-model="photonEventOverlayFilter" @change="saveEventOverlay" size="mini" :disabled="!openVR || !photonEventOverlay")
|
||||
el-radio-button(label="VIP")
|
||||
el-radio-button(label="Friends")
|
||||
el-radio-button(label="Everyone")
|
||||
span.sub-header User timeout HUD
|
||||
div.options-container-item
|
||||
span.name Enable
|
||||
el-switch(v-model="timeoutHudOverlay" @change="saveEventOverlay" :disabled="!openVR")
|
||||
div.options-container-item
|
||||
span.name Filter
|
||||
el-radio-group(v-model="timeoutHudOverlayFilter" @change="saveEventOverlay" size="mini" :disabled="!openVR || !timeoutHudOverlay")
|
||||
el-radio-button(label="VIP")
|
||||
el-radio-button(label="Friends")
|
||||
el-radio-button(label="Everyone")
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-time" @click="promptPhotonLobbyTimeoutThreshold" :disabled="!openVR") Timeout Threshold
|
||||
div.options-container
|
||||
span.header VRCX Instance Cache/Debug
|
||||
div.options-container-item
|
||||
span.name Disable GameLog
|
||||
el-switch(v-model="gameLogDisabled" @change="disableGameLogDialog")
|
||||
span.name(style="margin-left:15px") (will likely break things)
|
||||
div.options-container-item
|
||||
span.name User cache: #[span(v-text="API.cachedUsers.size")]
|
||||
div.options-container-item
|
||||
span.name World cache: #[span(v-text="API.cachedWorlds.size")]
|
||||
div.options-container-item
|
||||
span.name Avatar cache: #[span(v-text="API.cachedAvatars.size")]
|
||||
div.options-container-item
|
||||
span.name Avatar Name cache: #[span(v-text="API.cachedAvatarNames.size")]
|
||||
div.options-container-item
|
||||
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
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-download" @click="showDownloadDialog") Download History
|
||||
el-button(size="small" icon="el-icon-tickets" @click="showConsole") Show Console
|
||||
div.options-container
|
||||
span.sub-header SQLite Table Size
|
||||
div.options-container-item
|
||||
el-button(size="small" icon="el-icon-refresh" @click="getSqliteTableSizes") Refresh
|
||||
div.options-container-item
|
||||
span.name GPS: #[span(v-text="sqliteTableSizes.gps")]
|
||||
div.options-container-item
|
||||
span.name Status: #[span(v-text="sqliteTableSizes.status")]
|
||||
div.options-container-item
|
||||
span.name Avatar: #[span(v-text="sqliteTableSizes.avatar")]
|
||||
div.options-container-item
|
||||
span.name Online/Offline: #[span(v-text="sqliteTableSizes.onlineOffline")]
|
||||
div.options-container-item
|
||||
span.name Friend Log History: #[span(v-text="sqliteTableSizes.friendLogHistory")]
|
||||
div.options-container-item
|
||||
span.name Notifications: #[span(v-text="sqliteTableSizes.notification")]
|
||||
div.options-container-item
|
||||
span.name Location: #[span(v-text="sqliteTableSizes.location")]
|
||||
div.options-container-item
|
||||
span.name Join/Leave: #[span(v-text="sqliteTableSizes.joinLeave")]
|
||||
div.options-container-item
|
||||
span.name Portal Spawn: #[span(v-text="sqliteTableSizes.portalSpawn")]
|
||||
div.options-container-item
|
||||
span.name Video Play: #[span(v-text="sqliteTableSizes.videoPlay")]
|
||||
div.options-container-item
|
||||
span.name Event: #[span(v-text="sqliteTableSizes.event")]
|
||||
|
||||
//- friends
|
||||
.x-aside-container(v-show="$refs.menu && $refs.menu.activeIndex !== 'friendsList'" id="aside")
|
||||
@@ -1569,16 +1576,18 @@ html
|
||||
el-button(type="default" :loading="userDialog.isFavoriteWorldsLoading" @click="getUserFavoriteWorlds(userDialog.id)" size="mini" icon="el-icon-refresh" circle)
|
||||
div(v-loading="userDialog.isFavoriteWorldsLoading" style="min-height:60px")
|
||||
template(v-for="(list, index) in userFavoriteWorlds" v-if="list")
|
||||
span(style="font-weight:bold;font-size:16px") {{ list[0] }}
|
||||
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
|
||||
.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")
|
||||
.avatar
|
||||
img(v-lazy="world.thumbnailImageUrl")
|
||||
.detail
|
||||
span.name(v-text="world.name")
|
||||
span.extra(v-if="world.occupants") ({{ world.occupants }})
|
||||
el-tab-pane
|
||||
span(slot="label")
|
||||
span(v-text="list[0]" style="font-weight:bold;font-size:16px")
|
||||
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
|
||||
.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")
|
||||
.avatar
|
||||
img(v-lazy="world.thumbnailImageUrl")
|
||||
.detail
|
||||
span.name(v-text="world.name")
|
||||
span.extra(v-if="world.occupants") ({{ world.occupants }})
|
||||
el-tab-pane(label="Avatars")
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user