diff --git a/src/localization/en.json b/src/localization/en.json
index 79c2cc99..34e28c39 100644
--- a/src/localization/en.json
+++ b/src/localization/en.json
@@ -546,7 +546,9 @@
"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": "VRCX Favorites"
+ "auto_invite_request_accept_selected_favs": "VRCX Favorites",
+ "change_status_description": "Override status description",
+ "status_description_placeholder": "Status description (max 32 characters)"
},
"legal_notice": {
"header": "Legal Notice",
diff --git a/src/stores/settings/general.js b/src/stores/settings/general.js
index 4a15f427..54c14e1b 100644
--- a/src/stores/settings/general.js
+++ b/src/stores/settings/general.js
@@ -35,6 +35,10 @@ export const useGeneralSettingsStore = defineStore('GeneralSettings', () => {
const autoStateChangeCompanyStatus = ref('busy');
const autoStateChangeInstanceTypes = ref([]);
const autoStateChangeNoFriends = ref(false);
+ const autoStateChangeAloneDescEnabled = ref(false);
+ const autoStateChangeAloneDesc = ref('');
+ const autoStateChangeCompanyDescEnabled = ref(false);
+ const autoStateChangeCompanyDesc = ref('');
const autoAcceptInviteRequests = ref('Off');
async function initGeneralSettings() {
@@ -56,6 +60,10 @@ export const useGeneralSettingsStore = defineStore('GeneralSettings', () => {
autoStateChangeCompanyStatusConfig,
autoStateChangeInstanceTypesStrConfig,
autoStateChangeNoFriendsConfig,
+ autoStateChangeAloneDescEnabledConfig,
+ autoStateChangeAloneDescConfig,
+ autoStateChangeCompanyDescEnabledConfig,
+ autoStateChangeCompanyDescConfig,
autoAcceptInviteRequestsConfig
] = await Promise.all([
configRepository.getBool('VRCX_StartAtWindowsStartup', false),
@@ -84,6 +92,16 @@ export const useGeneralSettingsStore = defineStore('GeneralSettings', () => {
'[]'
),
configRepository.getBool('VRCX_autoStateChangeNoFriends', false),
+ configRepository.getBool(
+ 'VRCX_autoStateChangeAloneDescEnabled',
+ false
+ ),
+ configRepository.getString('VRCX_autoStateChangeAloneDesc', ''),
+ configRepository.getBool(
+ 'VRCX_autoStateChangeCompanyDescEnabled',
+ false
+ ),
+ configRepository.getString('VRCX_autoStateChangeCompanyDesc', ''),
configRepository.getString('VRCX_autoAcceptInviteRequests', 'Off')
]);
@@ -122,6 +140,12 @@ export const useGeneralSettingsStore = defineStore('GeneralSettings', () => {
autoStateChangeInstanceTypesStrConfig
);
autoStateChangeNoFriends.value = autoStateChangeNoFriendsConfig;
+ autoStateChangeAloneDescEnabled.value =
+ autoStateChangeAloneDescEnabledConfig;
+ autoStateChangeAloneDesc.value = autoStateChangeAloneDescConfig;
+ autoStateChangeCompanyDescEnabled.value =
+ autoStateChangeCompanyDescEnabledConfig;
+ autoStateChangeCompanyDesc.value = autoStateChangeCompanyDescConfig;
autoAcceptInviteRequests.value = autoAcceptInviteRequestsConfig;
}
@@ -262,6 +286,42 @@ export const useGeneralSettingsStore = defineStore('GeneralSettings', () => {
autoStateChangeNoFriends.value
);
}
+ function setAutoStateChangeAloneDescEnabled() {
+ autoStateChangeAloneDescEnabled.value =
+ !autoStateChangeAloneDescEnabled.value;
+ configRepository.setBool(
+ 'VRCX_autoStateChangeAloneDescEnabled',
+ autoStateChangeAloneDescEnabled.value
+ );
+ }
+ /**
+ * @param {string} value
+ */
+ function setAutoStateChangeAloneDesc(value) {
+ autoStateChangeAloneDesc.value = value;
+ configRepository.setString(
+ 'VRCX_autoStateChangeAloneDesc',
+ autoStateChangeAloneDesc.value
+ );
+ }
+ function setAutoStateChangeCompanyDescEnabled() {
+ autoStateChangeCompanyDescEnabled.value =
+ !autoStateChangeCompanyDescEnabled.value;
+ configRepository.setBool(
+ 'VRCX_autoStateChangeCompanyDescEnabled',
+ autoStateChangeCompanyDescEnabled.value
+ );
+ }
+ /**
+ * @param {string} value
+ */
+ function setAutoStateChangeCompanyDesc(value) {
+ autoStateChangeCompanyDesc.value = value;
+ configRepository.setString(
+ 'VRCX_autoStateChangeCompanyDesc',
+ autoStateChangeCompanyDesc.value
+ );
+ }
/**
* @param {string} value
*/
@@ -334,6 +394,10 @@ export const useGeneralSettingsStore = defineStore('GeneralSettings', () => {
autoStateChangeCompanyStatus,
autoStateChangeInstanceTypes,
autoStateChangeNoFriends,
+ autoStateChangeAloneDescEnabled,
+ autoStateChangeAloneDesc,
+ autoStateChangeCompanyDescEnabled,
+ autoStateChangeCompanyDesc,
autoAcceptInviteRequests,
setIsStartAtWindowsStartup,
@@ -352,6 +416,10 @@ export const useGeneralSettingsStore = defineStore('GeneralSettings', () => {
setAutoStateChangeCompanyStatus,
setAutoStateChangeInstanceTypes,
setAutoStateChangeNoFriends,
+ setAutoStateChangeAloneDescEnabled,
+ setAutoStateChangeAloneDesc,
+ setAutoStateChangeCompanyDescEnabled,
+ setAutoStateChangeCompanyDesc,
setAutoAcceptInviteRequests,
promptProxySettings
};
diff --git a/src/stores/user.js b/src/stores/user.js
index 9ea2ef0d..b4fcdda0 100644
--- a/src/stores/user.js
+++ b/src/stores/user.js
@@ -1628,22 +1628,33 @@ export const useUserStore = defineStore('User', () => {
return;
}
- userRequest
- .saveCurrentUser({
- status: newStatus
- })
- .then(() => {
- const text = `Status automatically changed to ${newStatus}`;
- if (AppDebug.errorNoty) {
- AppDebug.errorNoty.close();
- }
- AppDebug.errorNoty = new Noty({
- type: 'info',
- text
- });
- AppDebug.errorNoty.show();
- console.log(text);
+ const params = { status: newStatus };
+ if (
+ withCompany &&
+ generalSettingsStore.autoStateChangeCompanyDescEnabled
+ ) {
+ params.statusDescription =
+ generalSettingsStore.autoStateChangeCompanyDesc;
+ } else if (
+ !withCompany &&
+ generalSettingsStore.autoStateChangeAloneDescEnabled
+ ) {
+ params.statusDescription =
+ generalSettingsStore.autoStateChangeAloneDesc;
+ }
+
+ userRequest.saveCurrentUser(params).then(() => {
+ const text = `Status automatically changed to ${newStatus}`;
+ if (AppDebug.errorNoty) {
+ AppDebug.errorNoty.close();
+ }
+ AppDebug.errorNoty = new Noty({
+ type: 'info',
+ text
});
+ AppDebug.errorNoty.show();
+ console.log(text);
+ });
}
function addCustomTag(data) {
diff --git a/src/views/Tools/dialogs/AutoChangeStatusDialog.vue b/src/views/Tools/dialogs/AutoChangeStatusDialog.vue
index 4c3d17e7..00288d19 100644
--- a/src/views/Tools/dialogs/AutoChangeStatusDialog.vue
+++ b/src/views/Tools/dialogs/AutoChangeStatusDialog.vue
@@ -36,6 +36,22 @@
+
+