add auto change status description

This commit is contained in:
pa
2026-02-12 14:40:57 +09:00
parent 2d5a8bae7d
commit 8a4cc88e39
4 changed files with 138 additions and 16 deletions

View File

@@ -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",

View File

@@ -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
};

View File

@@ -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) {

View File

@@ -36,6 +36,22 @@
</SelectItem>
</SelectContent>
</Select>
<SimpleSwitch
style="margin-top: 8px"
:label="t('view.settings.general.automation.change_status_description')"
:value="autoStateChangeAloneDescEnabled"
:disabled="!autoStateChangeEnabled"
@change="setAutoStateChangeAloneDescEnabled" />
<Input
v-if="autoStateChangeAloneDescEnabled"
:model-value="autoStateChangeAloneDesc"
:disabled="!autoStateChangeEnabled"
:maxlength="32"
:placeholder="t('view.settings.general.automation.status_description_placeholder')"
style="margin-top: 8px"
size="sm"
@update:modelValue="setAutoStateChangeAloneDesc" />
</div>
<div>
@@ -62,6 +78,22 @@
</SelectItem>
</SelectContent>
</Select>
<SimpleSwitch
style="margin-top: 8px"
:label="t('view.settings.general.automation.change_status_description')"
:value="autoStateChangeCompanyDescEnabled"
:disabled="!autoStateChangeEnabled"
@change="setAutoStateChangeCompanyDescEnabled" />
<Input
v-if="autoStateChangeCompanyDescEnabled"
:model-value="autoStateChangeCompanyDesc"
:disabled="!autoStateChangeEnabled"
:maxlength="32"
:placeholder="t('view.settings.general.automation.status_description_placeholder')"
style="margin-top: 8px"
size="sm"
@update:modelValue="setAutoStateChangeCompanyDesc" />
</div>
<div>
@@ -147,6 +179,7 @@
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
import { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group';
import { Info } from 'lucide-vue-next';
import { Input } from '@/components/ui/input';
import { computed } from 'vue';
import { storeToRefs } from 'pinia';
import { useI18n } from 'vue-i18n';
@@ -172,6 +205,10 @@
autoStateChangeCompanyStatus,
autoStateChangeInstanceTypes,
autoStateChangeNoFriends,
autoStateChangeAloneDescEnabled,
autoStateChangeAloneDesc,
autoStateChangeCompanyDescEnabled,
autoStateChangeCompanyDesc,
autoAcceptInviteRequests
} = storeToRefs(generalSettingsStore);
@@ -181,6 +218,10 @@
setAutoStateChangeCompanyStatus,
setAutoStateChangeInstanceTypes,
setAutoStateChangeNoFriends,
setAutoStateChangeAloneDescEnabled,
setAutoStateChangeAloneDesc,
setAutoStateChangeCompanyDescEnabled,
setAutoStateChangeCompanyDesc,
setAutoAcceptInviteRequests
} = generalSettingsStore;