diff --git a/src/api/index.js b/src/api/index.js
index 65646f57..a6b66558 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -3,6 +3,7 @@
* Export all API requests from here
*/
+import { request } from '../service/request';
import userRequest from './user';
import worldRequest from './world';
import instanceRequest from './instance';
@@ -23,6 +24,7 @@ import inventoryRequest from './inventory';
import propRequest from './prop';
window.request = {
+ request,
userRequest,
worldRequest,
instanceRequest,
@@ -44,6 +46,7 @@ window.request = {
};
export {
+ request,
userRequest,
worldRequest,
instanceRequest,
diff --git a/src/localization/en/en.json b/src/localization/en/en.json
index c8635e1d..b0939d1a 100644
--- a/src/localization/en/en.json
+++ b/src/localization/en/en.json
@@ -1555,6 +1555,7 @@
"date": "Date",
"action": "Action",
"auto_backup": "Auto backup every 3 days (deletes after 2 weeks)",
+ "ask_to_restore": "Ask to restore when no VRC registry settings are present",
"restore_prompt": "VRCX has noticed auto backup of VRC registry settings is enabled but this computer doesn't have any, if you'd like to restore from backup you can do so from here."
},
"group_member_moderation": {
diff --git a/src/stores/settings/advanced.js b/src/stores/settings/advanced.js
index ba2cc4f7..1a9d4523 100644
--- a/src/stores/settings/advanced.js
+++ b/src/stores/settings/advanced.js
@@ -42,7 +42,8 @@ export const useAdvancedSettingsStore = defineStore('AdvancedSettings', () => {
folderSelectorDialogVisible: false,
isVRChatConfigDialogVisible: false,
saveInstanceEmoji: false,
- vrcRegistryAutoBackup: true
+ vrcRegistryAutoBackup: true,
+ vrcRegistryAskRestore: true
});
async function initAdvancedSettings() {
@@ -70,7 +71,8 @@ export const useAdvancedSettingsStore = defineStore('AdvancedSettings', () => {
autoDeleteOldPrints,
notificationOpacity,
saveInstanceEmoji,
- vrcRegistryAutoBackup
+ vrcRegistryAutoBackup,
+ vrcRegistryAskRestore
] = await Promise.all([
configRepository.getBool('enablePrimaryPassword', false),
configRepository.getBool('VRCX_relaunchVRChatAfterCrash', false),
@@ -104,7 +106,8 @@ export const useAdvancedSettingsStore = defineStore('AdvancedSettings', () => {
configRepository.getBool('VRCX_autoDeleteOldPrints', false),
configRepository.getFloat('VRCX_notificationOpacity', 100),
configRepository.getBool('VRCX_saveInstanceEmoji', false),
- configRepository.getBool('VRCX_vrcRegistryAutoBackup', true)
+ configRepository.getBool('VRCX_vrcRegistryAutoBackup', true),
+ configRepository.getBool('VRCX_vrcRegistryAskRestore', true)
]);
state.enablePrimaryPassword = enablePrimaryPassword;
@@ -131,6 +134,7 @@ export const useAdvancedSettingsStore = defineStore('AdvancedSettings', () => {
state.notificationOpacity = notificationOpacity;
state.saveInstanceEmoji = saveInstanceEmoji;
state.vrcRegistryAutoBackup = vrcRegistryAutoBackup;
+ state.vrcRegistryAskRestore = vrcRegistryAskRestore;
handleSetAppLauncherSettings();
}
@@ -203,6 +207,7 @@ export const useAdvancedSettingsStore = defineStore('AdvancedSettings', () => {
set: (value) => (state.saveInstanceEmoji = value)
});
const vrcRegistryAutoBackup = computed(() => state.vrcRegistryAutoBackup);
+ const vrcRegistryAskRestore = computed(() => state.vrcRegistryAskRestore);
/**
* @param {boolean} value
@@ -376,6 +381,14 @@ export const useAdvancedSettingsStore = defineStore('AdvancedSettings', () => {
);
}
+ async function setVrcRegistryAskRestore() {
+ state.vrcRegistryAskRestore = !state.vrcRegistryAskRestore;
+ await configRepository.setBool(
+ 'VRCX_vrcRegistryAskRestore',
+ state.vrcRegistryAskRestore
+ );
+ }
+
async function getSqliteTableSizes() {
const [
gps,
@@ -682,6 +695,7 @@ export const useAdvancedSettingsStore = defineStore('AdvancedSettings', () => {
isVRChatConfigDialogVisible,
saveInstanceEmoji,
vrcRegistryAutoBackup,
+ vrcRegistryAskRestore,
setEnablePrimaryPasswordConfigRepository,
setRelaunchVRChatAfterCrash,
@@ -717,6 +731,7 @@ export const useAdvancedSettingsStore = defineStore('AdvancedSettings', () => {
promptAutoClearVRCXCacheFrequency,
setSaveInstanceEmoji,
setVrcRegistryAutoBackup,
+ setVrcRegistryAskRestore,
askDeleteAllScreenshotMetadata
};
});
diff --git a/src/stores/vrcx.js b/src/stores/vrcx.js
index ccfdb9e5..979d38ff 100644
--- a/src/stores/vrcx.js
+++ b/src/stores/vrcx.js
@@ -7,12 +7,7 @@ import { database } from '../service/database';
import { AppGlobal } from '../service/appConfig';
import { failedGetRequests } from '../service/request';
import { watchState } from '../service/watchState';
-import {
- debounce,
- parseLocation,
- refreshCustomCss,
- removeFromArray
-} from '../shared/utils';
+import { debounce, parseLocation, refreshCustomCss } from '../shared/utils';
import { useAvatarStore } from './avatar';
import { useAvatarProviderStore } from './avatarProvider';
import { useFavoriteStore } from './favorite';
@@ -669,7 +664,10 @@ export const useVrcxStore = defineStore('Vrcx', () => {
}
async function checkAutoBackupRestoreVrcRegistry() {
- if (!advancedSettingsStore.vrcRegistryAutoBackup) {
+ if (
+ !advancedSettingsStore.vrcRegistryAutoBackup ||
+ !advancedSettingsStore.vrcRegistryAskRestore
+ ) {
return;
}
diff --git a/src/views/Settings/dialogs/RegistryBackupDialog.vue b/src/views/Settings/dialogs/RegistryBackupDialog.vue
index 7cdf9b1a..3a7669d9 100644
--- a/src/views/Settings/dialogs/RegistryBackupDialog.vue
+++ b/src/views/Settings/dialogs/RegistryBackupDialog.vue
@@ -11,6 +11,17 @@
{{ t('dialog.registry_backup.auto_backup') }}