diff --git a/Dotnet/StartupArgs.cs b/Dotnet/StartupArgs.cs index 25a561f5..3b67cf46 100644 --- a/Dotnet/StartupArgs.cs +++ b/Dotnet/StartupArgs.cs @@ -37,13 +37,10 @@ namespace VRCX Program.LaunchDebug = true; } - if (processList.Length > 1 && string.IsNullOrEmpty(LaunchCommand)) - { - var result = MessageBox.Show("VRCX is already running, start another instance?", "VRCX", MessageBoxButtons.YesNo, MessageBoxIcon.Question); - if (result == DialogResult.Yes) - return; - } + if (processList.Length > 1 && !string.IsNullOrEmpty(LaunchCommand)) + return; // if we're launching with a parameter, allow it + // if we're launching a second instance, focus the first instance then exit if (processList.Length > 1) { IPCToMain(); diff --git a/html/src/app.js b/html/src/app.js index ecffdd3c..2c7aaac3 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -643,8 +643,8 @@ speechSynthesis.getVoices(); options.N > 0 ? options.N > options.params.offset : options.N < 0 - ? args.json.length - : options.params.n === args.json.length) + ? args.json.length + : options.params.n === args.json.length) ) { this.bulk(options); } else if ('done' in options) { @@ -7444,10 +7444,12 @@ speechSynthesis.getVoices(); }; API.$on('USER:2FA', function () { + AppApi.FocusWindow(); $app.promptTOTP(); }); API.$on('USER:EMAILOTP', function () { + AppApi.FocusWindow(); $app.promptEmailOTP(); }); @@ -15092,19 +15094,15 @@ speechSynthesis.getVoices(); }; await $app.methods.updatetrustColorClasses(); - $app.methods.saveSharedFeedFilters = async function () { - this.notyFeedFiltersDialog.visible = false; - this.wristFeedFiltersDialog.visible = false; - await configRepository.setString( + $app.methods.saveSharedFeedFilters = function () { + configRepository.setString( 'sharedFeedFilters', JSON.stringify(this.sharedFeedFilters) ); this.updateSharedFeed(true); }; - $app.methods.cancelSharedFeedFilters = async function () { - this.notyFeedFiltersDialog.visible = false; - this.wristFeedFiltersDialog.visible = false; + $app.methods.resetSharedFeedFilters = async function () { if (await configRepository.getString('sharedFeedFilters')) { this.sharedFeedFilters = JSON.parse( await configRepository.getString( @@ -29809,6 +29807,30 @@ speechSynthesis.getVoices(); // #endregion + // #region | V-Bucks + + API.$on('VBUCKS', function (args) { + this.currentUser.$vbucks = args.json?.balance; + }); + + API.getVbucks = function () { + return this.call(`user/${this.currentUser.id}/balance`, { + method: 'GET' + }).then((json) => { + var args = { + json + }; + this.$emit('VBUCKS', args); + return args; + }); + }; + + $app.methods.getVbucks = function () { + API.getVbucks(); + }; + + // #endregion + $app = new Vue($app); window.$app = $app; })(); diff --git a/html/src/index.pug b/html/src/index.pug index 91f9ea13..60d42cc0 100644 --- a/html/src/index.pug +++ b/html/src/index.pug @@ -1739,127 +1739,127 @@ html .toggle-list .toggle-item span.toggle-name OnPlayerJoining - el-radio-group(v-model="sharedFeedFilters.noty.OnPlayerJoining" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.OnPlayerJoining" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name OnPlayerJoined - el-radio-group(v-model="sharedFeedFilters.noty.OnPlayerJoined" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.OnPlayerJoined" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} el-radio-button(label="Everyone") {{ $t('dialog.shared_feed_filters.everyone') }} .toggle-item span.toggle-name OnPlayerLeft - el-radio-group(v-model="sharedFeedFilters.noty.OnPlayerLeft" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.OnPlayerLeft" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} el-radio-button(label="Everyone") {{ $t('dialog.shared_feed_filters.everyone') }} .toggle-item span.toggle-name Online - el-radio-group(v-model="sharedFeedFilters.noty.Online" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.Online" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Offline - el-radio-group(v-model="sharedFeedFilters.noty.Offline" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.Offline" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name GPS - el-radio-group(v-model="sharedFeedFilters.noty.GPS" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.GPS" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Status - el-radio-group(v-model="sharedFeedFilters.noty.Status" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.Status" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Invite - el-radio-group(v-model="sharedFeedFilters.noty.invite" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.invite" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Request Invite - el-radio-group(v-model="sharedFeedFilters.noty.requestInvite" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.requestInvite" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Invite Response - el-radio-group(v-model="sharedFeedFilters.noty.inviteResponse" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.inviteResponse" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Request Invite Response - el-radio-group(v-model="sharedFeedFilters.noty.requestInviteResponse" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.requestInviteResponse" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Friend Request - el-radio-group(v-model="sharedFeedFilters.noty.friendRequest" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.friendRequest" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name New Friend - el-radio-group(v-model="sharedFeedFilters.noty.Friend" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.Friend" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Unfriend - el-radio-group(v-model="sharedFeedFilters.noty.Unfriend" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.Unfriend" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Display Name - el-radio-group(v-model="sharedFeedFilters.noty.DisplayName" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.DisplayName" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Trust Level - el-radio-group(v-model="sharedFeedFilters.noty.TrustLevel" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.TrustLevel" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Group Announcement - el-radio-group(v-model="sharedFeedFilters.noty['group.announcement']" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty['group.announcement']" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Group Join/Leave - el-radio-group(v-model="sharedFeedFilters.noty['group.informative']" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty['group.informative']" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Group Invite - el-radio-group(v-model="sharedFeedFilters.noty['group.invite']" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty['group.invite']" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Group Join Request - el-radio-group(v-model="sharedFeedFilters.noty['group.joinRequest']" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty['group.joinRequest']" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Instance Queue Ready - el-radio-group(v-model="sharedFeedFilters.noty['group.queueReady']" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty['group.queueReady']" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Portal Spawn - el-radio-group(v-model="sharedFeedFilters.noty.PortalSpawn" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.PortalSpawn" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} @@ -1868,50 +1868,50 @@ html span.toggle-name Video Play el-tooltip(placement="top" style="margin-left:5px" content="Requires VRCX YouTube API option enabled") i.el-icon-warning - el-radio-group(v-model="sharedFeedFilters.noty.VideoPlay" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.VideoPlay" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Events - el-radio-group(v-model="sharedFeedFilters.noty.Event" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.Event" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name External - el-radio-group(v-model="sharedFeedFilters.noty.External" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.External" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Blocked Player Joins - el-radio-group(v-model="sharedFeedFilters.noty.BlockedOnPlayerJoined" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.BlockedOnPlayerJoined" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} el-radio-button(label="Everyone") {{ $t('dialog.shared_feed_filters.everyone') }} .toggle-item span.toggle-name Blocked Player Leaves - el-radio-group(v-model="sharedFeedFilters.noty.BlockedOnPlayerLeft" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.BlockedOnPlayerLeft" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} el-radio-button(label="Everyone") {{ $t('dialog.shared_feed_filters.everyone') }} .toggle-item span.toggle-name Muted Player Joins - el-radio-group(v-model="sharedFeedFilters.noty.MutedOnPlayerJoined" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.MutedOnPlayerJoined" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} el-radio-button(label="Everyone") {{ $t('dialog.shared_feed_filters.everyone') }} .toggle-item span.toggle-name Muted Player Leaves - el-radio-group(v-model="sharedFeedFilters.noty.MutedOnPlayerLeft" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.MutedOnPlayerLeft" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} el-radio-button(label="Everyone") {{ $t('dialog.shared_feed_filters.everyone') }} .toggle-item span.toggle-name Lobby Avatar Change - el-radio-group(v-model="sharedFeedFilters.noty.AvatarChange" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.AvatarChange" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} @@ -1922,166 +1922,166 @@ html span.toggle-name Photon Event Logging .toggle-item span.toggle-name Lobby ChatBox Message - el-radio-group(v-model="sharedFeedFilters.noty.ChatBoxMessage" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.ChatBoxMessage" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} el-radio-button(label="Everyone") {{ $t('dialog.shared_feed_filters.everyone') }} .toggle-item span.toggle-name Blocked - el-radio-group(v-model="sharedFeedFilters.noty.Blocked" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.Blocked" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Unblocked - el-radio-group(v-model="sharedFeedFilters.noty.Unblocked" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.Unblocked" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Muted - el-radio-group(v-model="sharedFeedFilters.noty.Muted" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.Muted" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Unmuted - el-radio-group(v-model="sharedFeedFilters.noty.Unmuted" size="mini") + el-radio-group(v-model="sharedFeedFilters.noty.Unmuted" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} template(#footer) - el-button(type="small" @click="cancelSharedFeedFilters") {{ $t('dialog.shared_feed_filters.cancel') }} - el-button(type="primary" size="small" style="margin-left:10px" @click="saveSharedFeedFilters") {{ $t('dialog.shared_feed_filters.save') }} + el-button(type="small" @click="resetSharedFeedFilters") {{ $t('dialog.shared_feed_filters.reset') }} + el-button(type="primary" size="small" style="margin-left:10px" @click="notyFeedFiltersDialog.visible = false") {{ $t('dialog.shared_feed_filters.close') }} //- dialog: wrist feed filters el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="wristFeedFiltersDialog" :visible.sync="wristFeedFiltersDialog.visible" :title="$t('dialog.shared_feed_filters.wrist')" width="550px") .toggle-list .toggle-item span.toggle-name Self Location - el-radio-group(v-model="sharedFeedFilters.wrist.Location" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.Location" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name OnPlayerJoining - el-radio-group(v-model="sharedFeedFilters.wrist.OnPlayerJoining" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.OnPlayerJoining" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name OnPlayerJoined - el-radio-group(v-model="sharedFeedFilters.wrist.OnPlayerJoined" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.OnPlayerJoined" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} el-radio-button(label="Everyone") {{ $t('dialog.shared_feed_filters.everyone') }} .toggle-item span.toggle-name OnPlayerLeft - el-radio-group(v-model="sharedFeedFilters.wrist.OnPlayerLeft" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.OnPlayerLeft" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} el-radio-button(label="Everyone") {{ $t('dialog.shared_feed_filters.everyone') }} .toggle-item span.toggle-name Online - el-radio-group(v-model="sharedFeedFilters.wrist.Online" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.Online" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Offline - el-radio-group(v-model="sharedFeedFilters.wrist.Offline" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.Offline" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name GPS - el-radio-group(v-model="sharedFeedFilters.wrist.GPS" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.GPS" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Status - el-radio-group(v-model="sharedFeedFilters.wrist.Status" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.Status" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Invite - el-radio-group(v-model="sharedFeedFilters.wrist.invite" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.invite" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Request Invite - el-radio-group(v-model="sharedFeedFilters.wrist.requestInvite" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.requestInvite" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Invite Response - el-radio-group(v-model="sharedFeedFilters.wrist.inviteResponse" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.inviteResponse" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Request Invite Response - el-radio-group(v-model="sharedFeedFilters.wrist.requestInviteResponse" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.requestInviteResponse" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Friend Request - el-radio-group(v-model="sharedFeedFilters.wrist.friendRequest" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.friendRequest" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name New Friend - el-radio-group(v-model="sharedFeedFilters.wrist.Friend" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.Friend" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Unfriend - el-radio-group(v-model="sharedFeedFilters.wrist.Unfriend" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.Unfriend" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Display Name - el-radio-group(v-model="sharedFeedFilters.wrist.DisplayName" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.DisplayName" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Trust Level - el-radio-group(v-model="sharedFeedFilters.wrist.TrustLevel" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.TrustLevel" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} .toggle-item span.toggle-name Group Announcement - el-radio-group(v-model="sharedFeedFilters.wrist['group.announcement']" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist['group.announcement']" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Group Join/Leave - el-radio-group(v-model="sharedFeedFilters.wrist['group.informative']" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist['group.informative']" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Group Invite - el-radio-group(v-model="sharedFeedFilters.wrist['group.invite']" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist['group.invite']" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Group Join Request - el-radio-group(v-model="sharedFeedFilters.wrist['group.joinRequest']" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist['group.joinRequest']" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Instance Queue Ready - el-radio-group(v-model="sharedFeedFilters.wrist['group.queueReady']" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist['group.queueReady']" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Portal Spawn - el-radio-group(v-model="sharedFeedFilters.wrist.PortalSpawn" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.PortalSpawn" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} @@ -2090,50 +2090,50 @@ html span.toggle-name Video Play el-tooltip(placement="top" style="margin-left:5px" content="Requires VRCX YouTube API option enabled") i.el-icon-warning - el-radio-group(v-model="sharedFeedFilters.wrist.VideoPlay" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.VideoPlay" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Events - el-radio-group(v-model="sharedFeedFilters.wrist.Event" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.Event" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name External - el-radio-group(v-model="sharedFeedFilters.wrist.External" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.External" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Blocked Player Joins - el-radio-group(v-model="sharedFeedFilters.wrist.BlockedOnPlayerJoined" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.BlockedOnPlayerJoined" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} el-radio-button(label="Everyone") {{ $t('dialog.shared_feed_filters.everyone') }} .toggle-item span.toggle-name Blocked Player Leaves - el-radio-group(v-model="sharedFeedFilters.wrist.BlockedOnPlayerLeft" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.BlockedOnPlayerLeft" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} el-radio-button(label="Everyone") {{ $t('dialog.shared_feed_filters.everyone') }} .toggle-item span.toggle-name Muted Player Joins - el-radio-group(v-model="sharedFeedFilters.wrist.MutedOnPlayerJoined" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.MutedOnPlayerJoined" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} el-radio-button(label="Everyone") {{ $t('dialog.shared_feed_filters.everyone') }} .toggle-item span.toggle-name Muted Player Leaves - el-radio-group(v-model="sharedFeedFilters.wrist.MutedOnPlayerLeft" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.MutedOnPlayerLeft" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} el-radio-button(label="Everyone") {{ $t('dialog.shared_feed_filters.everyone') }} .toggle-item span.toggle-name Lobby Avatar Change - el-radio-group(v-model="sharedFeedFilters.wrist.AvatarChange" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.AvatarChange" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} @@ -2144,34 +2144,34 @@ html span.toggle-name Photon Event Logging .toggle-item span.toggle-name Lobby ChatBox Message - el-radio-group(v-model="sharedFeedFilters.wrist.ChatBoxMessage" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.ChatBoxMessage" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="VIP") {{ $t('dialog.shared_feed_filters.favorite') }} el-radio-button(label="Friends") {{ $t('dialog.shared_feed_filters.friends') }} el-radio-button(label="Everyone") {{ $t('dialog.shared_feed_filters.everyone') }} .toggle-item span.toggle-name Blocked - el-radio-group(v-model="sharedFeedFilters.wrist.Blocked" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.Blocked" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Unblocked - el-radio-group(v-model="sharedFeedFilters.wrist.Unblocked" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.Unblocked" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Muted - el-radio-group(v-model="sharedFeedFilters.wrist.Muted" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.Muted" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} .toggle-item span.toggle-name Unmuted - el-radio-group(v-model="sharedFeedFilters.wrist.Unmuted" size="mini") + el-radio-group(v-model="sharedFeedFilters.wrist.Unmuted" size="mini" @change="saveSharedFeedFilters") el-radio-button(label="Off") {{ $t('dialog.shared_feed_filters.off') }} el-radio-button(label="On") {{ $t('dialog.shared_feed_filters.on') }} template(#footer) - el-button(type="small" @click="cancelSharedFeedFilters") {{ $t('dialog.shared_feed_filters.cancel') }} - el-button(type="primary" size="small" @click="saveSharedFeedFilters") {{ $t('dialog.shared_feed_filters.save') }} + el-button(type="small" @click="resetSharedFeedFilters") {{ $t('dialog.shared_feed_filters.reset') }} + el-button(type="primary" size="small" @click="wristFeedFiltersDialog.visible = false") {{ $t('dialog.shared_feed_filters.close') }} //- dialog: Edit Invite Message el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="editInviteMessageDialog" :visible.sync="editInviteMessageDialog.visible" :title="$t('dialog.edit_invite_message.header')" width="400px") diff --git a/html/src/localization/en/en.json b/html/src/localization/en/en.json index cf321fd4..69122a3b 100644 --- a/html/src/localization/en/en.json +++ b/html/src/localization/en/en.json @@ -141,6 +141,8 @@ "two_factor": "Two-Factor Auth (2FA)", "two_factor_enabled": "Enabled", "two_factor_disabled": "Disabled", + "v_bucks": "V-Bucks", + "refresh": "Click to refresh", "logout": "Logout", "manage_gallery_icon": "Manage Photos/Icons/Emojis", "export_friend_list": "Export Friends List", @@ -206,7 +208,7 @@ }, "application": { "header": "Application", - "startup": "Start as Windows startup", + "startup": "Start at Windows startup", "minimized": "Start as minimized state", "tray": "Close to tray" }, @@ -1058,8 +1060,8 @@ "favorite": "Favorites", "friends": "Friends", "everyone": "Everyone", - "cancel": "Cancel", - "save": "Save" + "reset": "Reset", + "close": "Close" }, "world_export": { "header": "World Favorites Export" diff --git a/html/src/mixins/tabs/profile.pug b/html/src/mixins/tabs/profile.pug index 0426d95e..d57fedbc 100644 --- a/html/src/mixins/tabs/profile.pug +++ b/html/src/mixins/tabs/profile.pug @@ -17,6 +17,10 @@ mixin profileTab() .detail span.name {{ $t('view.profile.profile.two_factor') }} span.extra {{ API.currentUser.twoFactorAuthEnabled ? $t('view.profile.profile.two_factor_enabled') : $t('view.profile.profile.two_factor_disabled') }} + .x-friend-item(@click="getVbucks()") + .detail + span.name {{ $t('view.profile.profile.v_bucks') }} + span.extra {{ API.currentUser.$vbucks ?? $t('view.profile.profile.refresh') }} div el-button(size="small" icon="el-icon-switch-button" @click="logout()" style="margin-left:0;margin-right:5px;margin-top:10px") {{ $t('view.profile.profile.logout') }} el-button(size="small" icon="el-icon-picture-outline" @click="showGalleryDialog()" style="margin-left:0;margin-right:5px;margin-top:10px") {{ $t('view.profile.profile.manage_gallery_icon') }} diff --git a/html/src/theme.material3.scss b/html/src/theme.material3.scss index 1e263022..05b7400e 100644 --- a/html/src/theme.material3.scss +++ b/html/src/theme.material3.scss @@ -1335,7 +1335,9 @@ img.x-link.el-popover__reference { // this is awful never do this *:not(.x-user-dialog, .x-world-dialog, .x-avatar-dialog, .x-group-dialog) - > .el-dialog:not([aria-label*='Notification Position']) { + > .el-dialog:not([aria-label*='Notification Position']):not( + [aria-label*='Launch'] + ):not([aria-label*='VRCX Updater']) { max-width: 1125px !important; width: 1125px !important; }