diff --git a/html/src/app.js b/html/src/app.js
index 4ff1c20a..3bf35ada 100644
--- a/html/src/app.js
+++ b/html/src/app.js
@@ -4856,6 +4856,12 @@ speechSynthesis.getVoices();
notificationId: content.id
}
});
+ this.$emit('PIPELINE:NOTIFICATION', {
+ json: content,
+ params: {
+ notificationId: content.id
+ }
+ });
break;
case 'notification-v2':
@@ -5483,6 +5489,7 @@ speechSynthesis.getVoices();
nextClearVRCXCacheCheck: 0,
nextDiscordUpdate: 0,
nextAutoStateChange: 0,
+ autoAcceptInviteRequests: 'Off',
isDiscordActive: false,
isGameRunning: false,
isGameNoVR: true,
@@ -14791,6 +14798,61 @@ speechSynthesis.getVoices();
$app.notificationTable.data = [];
});
+ API.$on('PIPELINE:NOTIFICATION', function (args) {
+ var ref = args.json;
+ if (ref.type !== 'requestInvite' || $app.autoAcceptInviteRequests === 'Off')
+ return;
+ var currentLocation = $app.lastLocation.location;
+ if ($app.lastLocation.location === 'traveling') {
+ currentLocation = $app.lastLocationDestination;
+ }
+ if (!currentLocation)
+ return;
+ var L = this.parseLocation(currentLocation);
+ switch ($app.autoAcceptInviteRequests) {
+ case 'All Favorites':
+ if (!$app.favoriteFriends.some(x => x.id === ref.senderUserId))
+ break;
+ this.getCachedWorld({
+ worldId: L.worldId
+ }).then((args) => {
+ this.sendInvite(
+ {
+ instanceId: L.tag,
+ worldId: L.tag,
+ worldName: args.ref.name,
+ rsvp: true
+ },
+ ref.senderUserId
+ ).then((_args) => {
+ $app.$message('Auto Invite sent to ' + ref.senderUsername);
+ return _args;
+ });
+ });
+ break;
+ case 'Selected Favorites':
+ if (!$app.localFavoriteFriends.has(ref.senderUserId))
+ break;
+ this.getCachedWorld({
+ worldId: L.worldId
+ }).then((args) => {
+ this.sendInvite(
+ {
+ instanceId: L.tag,
+ worldId: L.tag,
+ worldName: args.ref.name,
+ rsvp: true
+ },
+ ref.senderUserId
+ ).then((_args) => {
+ $app.$message('Auto Invite sent to ' + ref.senderUsername);
+ return _args;
+ });
+ });
+ break;
+ }
+ });
+
$app.data.unseenNotifications = [];
API.$on('NOTIFICATION', function (args) {
@@ -15625,11 +15687,19 @@ speechSynthesis.getVoices();
'VRCX_autoStateChange',
'Off'
);
+ $app.data.autoAcceptInviteRequests = await configRepository.getString(
+ 'VRCX_autoAcceptInviteRequests',
+ 'Off'
+ );
$app.methods.saveAutomationOptions = async function () {
await configRepository.setString(
'VRCX_autoStateChange',
this.autoStateChange
);
+ await configRepository.setString(
+ 'VRCX_autoAcceptInviteRequests',
+ this.autoAcceptInviteRequests
+ );
};
$app.data.vrcRegistryAutoBackup = await configRepository.getBool(
'VRCX_vrcRegistryAutoBackup',
diff --git a/html/src/localization/en/en.json b/html/src/localization/en/en.json
index 3b0fb775..f8ffcabc 100644
--- a/html/src/localization/en/en.json
+++ b/html/src/localization/en/en.json
@@ -231,7 +231,12 @@
"auto_state_change_active_or_busy": "Active / Busy",
"auto_state_change_join_me_or_ask_me": "Join Me / Ask Me",
"auto_state_change_join_me_or_busy": "Join Me / Busy",
- "auto_state_change_ask_me_or_busy": "Ask Me / Busy"
+ "auto_state_change_ask_me_or_busy": "Ask Me / Busy",
+ "auto_invite_request_accept": "Auto Invite Request Accept",
+ "auto_invite_request_accept_tooltip": "Automatically accept Invite Requests from Favorite friends",
+ "auto_invite_request_accept_off": "Off",
+ "auto_invite_request_accept_favs": "All Favorites",
+ "auto_invite_request_accept_selected_favs": "Selected Favorites"
},
"legal_notice": {
"header": "Legal Notice",
diff --git a/html/src/mixins/tabs/settings.pug b/html/src/mixins/tabs/settings.pug
index 676955bf..48fc5d8d 100644
--- a/html/src/mixins/tabs/settings.pug
+++ b/html/src/mixins/tabs/settings.pug
@@ -111,6 +111,11 @@ mixin settingsTab()
{ label: "Join Me or Busy", translationKey: "view.settings.general.automation.auto_state_change_join_me_or_busy" },
{ label: "Ask Me or Busy", translationKey: "view.settings.general.automation.auto_state_change_ask_me_or_busy" },
], "saveAutomationOptions")
+ +simpleRadioGroupWithTooltip("view.settings.general.automation.auto_invite_request_accept", "$t('view.settings.general.automation.auto_invite_request_accept_tooltip')", "autoAcceptInviteRequests", [
+ { label: "Off", translationKey: "view.settings.general.automation.auto_invite_request_accept_off" },
+ { label: "All Favorites", translationKey: "view.settings.general.automation.auto_invite_request_accept_favs" },
+ { label: "Selected Favorites", translationKey: "view.settings.general.automation.auto_invite_request_accept_selected_favs" },
+ ], "saveAutomationOptions")
//- General | Contributors
div.options-container
span.header {{ $t("view.settings.general.contributors.header" )}}