diff --git a/html/src/app.js b/html/src/app.js index 05308471..92638af6 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -5098,7 +5098,8 @@ speechSynthesis.getVoices(); json: { location: content.location, travelingToLocation: content.travelingToLocation, - ...content.user + ...content.user, + state: 'online' }, params: { userId: content.userId @@ -5118,7 +5119,10 @@ speechSynthesis.getVoices(); case 'friend-active': if (content?.user?.id) { this.$emit('USER', { - json: content.user, + json: { + ...content.user, + state: 'active' + }, params: { userId: content.userId } @@ -5175,7 +5179,8 @@ speechSynthesis.getVoices(); json: { location: content.location, travelingToLocation: content.travelingToLocation, - ...content.user + ...content.user, + state: 'online' }, params: { userId: content.userId @@ -9464,7 +9469,7 @@ speechSynthesis.getVoices(); this.sortOfflineFriends = true; } } - // FIXME: 도배 가능성 있음 + // from getCurrentUser only, fetch user if offline in an instance if ( origin && ctx.state !== 'online' && @@ -9544,21 +9549,11 @@ speechSynthesis.getVoices(); ) { if (this.debugFriendState) { console.log( - ctx.name, - new Date().toJSON(), - 'falsePositiveOffline', - stateInput, - ctx.ref.state + `falsePositiveOffline ${ctx.name} currentState:${ctx.ref.state} expectedState:${stateInput}` ); } return; } - var isVIP = this.localFavoriteFriends.has(id); - var newState = stateInput; - var args = await API.getUser({ - userId: id - }); - newState = args.ref.state; if (this.debugFriendState) { console.log( ctx.name, @@ -9568,7 +9563,9 @@ speechSynthesis.getVoices(); ctx.ref.state ); } - var newRef = args.ref; + var isVIP = this.localFavoriteFriends.has(id); + var newState = stateInput; + var ref = ctx.ref; if (ctx.state !== newState && typeof ctx.ref !== 'undefined') { if ( (newState === 'offline' || newState === 'active') && @@ -9587,8 +9584,8 @@ speechSynthesis.getVoices(); var feed = { created_at: new Date().toJSON(), type: 'Offline', - userId: newRef.id, - displayName: newRef.displayName, + userId: ref.id, + displayName: ref.displayName, location, worldName, groupName, @@ -9606,14 +9603,14 @@ speechSynthesis.getVoices(); ctx.ref.$online_for = Date.now(); ctx.ref.$offline_for = ''; ctx.ref.$active_for = ''; - var worldName = await this.getWorldName(newRef.location); + var worldName = await this.getWorldName(ref.location); var groupName = await this.getGroupName(location); var feed = { created_at: new Date().toJSON(), type: 'Online', userId: id, displayName: ctx.name, - location: newRef.location, + location: ref.location, worldName, groupName, time: '' @@ -9655,7 +9652,7 @@ speechSynthesis.getVoices(); this.updateOnlineFriendCoutner(); } ctx.state = newState; - ctx.name = newRef.displayName; + ctx.name = ref.displayName; ctx.isVIP = isVIP; }; @@ -10590,9 +10587,6 @@ speechSynthesis.getVoices(); ref.$previousLocation = ''; ref.$travelingToTime = Date.now(); } - if (friend.state !== 'online') { - API.getUser({ userId: ref.id }); - } } if ( props.location && @@ -15738,10 +15732,7 @@ speechSynthesis.getVoices(); '[ "https://avtr.just-h.party/vrcx_search.php" ]' ) ); - $app.data.pendingOfflineDelay = await configRepository.getInt( - 'VRCX_pendingOfflineDelay', - 110000 - ); + $app.data.pendingOfflineDelay = 110000; if (await configRepository.getString('VRCX_avatarRemoteDatabaseProvider')) { // move existing provider to new list var avatarRemoteDatabaseProvider = await configRepository.getString( @@ -29309,41 +29300,6 @@ speechSynthesis.getVoices(); } }; - // #endregion - // #region | App: pending offline timer - - $app.methods.promptSetPendingOffline = function () { - this.$prompt( - $t('prompt.pending_offline_delay.description'), - $t('prompt.pending_offline_delay.header'), - { - distinguishCancelAndClose: true, - confirmButtonText: $t('prompt.pending_offline_delay.save'), - cancelButtonText: $t('prompt.pending_offline_delay.cancel'), - inputValue: this.pendingOfflineDelay / 1000, - inputPattern: /\d+$/, - inputErrorMessage: $t( - 'prompt.pending_offline_delay.input_error' - ), - callback: async (action, instance) => { - if ( - action === 'confirm' && - instance.inputValue && - !isNaN(instance.inputValue) - ) { - this.pendingOfflineDelay = Math.trunc( - Number(instance.inputValue) * 1000 - ); - await configRepository.setInt( - 'VRCX_pendingOfflineDelay', - this.pendingOfflineDelay - ); - } - } - } - ); - }; - // #endregion // #region | App: ChatBox Blacklist $app.data.chatboxBlacklist = [ diff --git a/html/src/localization/en/en.json b/html/src/localization/en/en.json index 0d9d3030..60d63856 100644 --- a/html/src/localization/en/en.json +++ b/html/src/localization/en/en.json @@ -405,11 +405,6 @@ "screenshot_metadata": "Screenshot Metadata", "vrc_registry_backup": "VRC Registry Backup", "common_folders": "Common Folders", - "pending_offline": { - "header": "Pending Offline", - "description": "Delay before marking user as offline (fixes false positives)", - "set_delay": "Set Delay" - }, "primary_password": { "header": "Primary Password", "description": "Encrypt password (disables auto login)" diff --git a/html/src/localization/es/en.json b/html/src/localization/es/en.json index 35a3c05d..22b8d51c 100644 --- a/html/src/localization/es/en.json +++ b/html/src/localization/es/en.json @@ -405,11 +405,6 @@ "screenshot_metadata": "Metadatos de las Capturas de Pantalla", "vrc_registry_backup": "Copia de seguridad del registro de VRC", "common_folders": "Carpetas Comunes", - "pending_offline": { - "header": "Pendiente de Desconexión", - "description": "Retraso antes de marcar al usuario como desconectado (corrige los falsos positivos)", - "set_delay": "Establecer retraso" - }, "primary_password": { "header": "Contraseña Principal", "description": "Cifrar contraseña (deshabilita el inicio de sesión automático)" @@ -1743,4 +1738,4 @@ "online": "En línea:" } } -} \ No newline at end of file +} diff --git a/html/src/localization/fr/en.json b/html/src/localization/fr/en.json index 0cff440a..4cb6fac8 100644 --- a/html/src/localization/fr/en.json +++ b/html/src/localization/fr/en.json @@ -413,11 +413,6 @@ "screenshot_metadata": "Métadonnées d'une capture d'écran", "vrc_registry_backup": "Sauvegarde du registre VRC", "common_folders": "Dossiers communs", - "pending_offline": { - "header": "En attendant l'hors ligne", - "description": "Délai avant de marquer un utilisateur comme étant hors ligne (corrige les faux positifs)", - "set_delay": "Réglage du délai" - }, "primary_password": { "header": "Mot de passe principal", "description": "Encodage du mot de passe (désactive la connexion automatique)" diff --git a/html/src/localization/hu/en.json b/html/src/localization/hu/en.json index 95462e07..9cad4b55 100644 --- a/html/src/localization/hu/en.json +++ b/html/src/localization/hu/en.json @@ -413,11 +413,6 @@ "screenshot_metadata": "Screenshot Metadata", "vrc_registry_backup": "VRC Registry Backup", "common_folders": "Common Folders", - "pending_offline": { - "header": "Pending Offline", - "description": "Delay before marking user as offline (fixes false positives)", - "set_delay": "Set Delay" - }, "primary_password": { "header": "Primary Password", "description": "Encrypt password (disables auto login)" diff --git a/html/src/localization/ja/en.json b/html/src/localization/ja/en.json index 5eaf7c91..a5140f23 100644 --- a/html/src/localization/ja/en.json +++ b/html/src/localization/ja/en.json @@ -405,11 +405,6 @@ "screenshot_metadata": "スクリーンショットのメタデータ", "vrc_registry_backup": "VRChatのレジストリをバックアップ", "common_folders": "共通フォルダ", - "pending_offline": { - "header": "オフラインの保留", - "description": "オフラインと判定されるまでの時間 (誤検知対策)", - "set_delay": "遅延時間を設定" - }, "primary_password": { "header": "プライマリーパスワード", "description": "パスワードを暗号化 (自動ログイン無効化)" diff --git a/html/src/localization/ko/en.json b/html/src/localization/ko/en.json index 776fa27c..accd68c0 100644 --- a/html/src/localization/ko/en.json +++ b/html/src/localization/ko/en.json @@ -413,11 +413,6 @@ "screenshot_metadata": "스크린샷 메타데이터", "vrc_registry_backup": "VRC Registry Backup", "common_folders": "Common Folders", - "pending_offline": { - "header": "오프라인 대기", - "description": "유저의 오프라인 상태 전환을 유예합니다. (버그 해결)", - "set_delay": "대기 시간 설정" - }, "primary_password": { "header": "잠금 비밀번호", "description": "비밀번호 암호화 사용 (자동 로그인 불가)" diff --git a/html/src/localization/pl/en.json b/html/src/localization/pl/en.json index ef0c6af9..d27df949 100644 --- a/html/src/localization/pl/en.json +++ b/html/src/localization/pl/en.json @@ -413,11 +413,6 @@ "screenshot_metadata": "Metadane zrzutu ekranu", "vrc_registry_backup": "Kopia zapasowa rejestru VRC", "common_folders": "Foldery", - "pending_offline": { - "header": "Oczekujące offline", - "description": "Odczekaj przed oznaczeniem użytkownika jako offline (unika fałszywych alarmów)", - "set_delay": "Ustaw opóźnienie" - }, "primary_password": { "header": "Hasło główne", "description": "Szyfruj hasło (wyłącza automatyczne logowanie)" diff --git a/html/src/localization/pt/en.json b/html/src/localization/pt/en.json index 808529b2..831280df 100644 --- a/html/src/localization/pt/en.json +++ b/html/src/localization/pt/en.json @@ -413,11 +413,6 @@ "screenshot_metadata": "Screenshot Metadata", "vrc_registry_backup": "Backup do Registro VRC", "common_folders": "Pastas Comuns", - "pending_offline": { - "header": "Pendências Offline", - "description": "Atraso antes de marcar o usuário como offline (corrige falsos positivos)", - "set_delay": "Definir Atraso" - }, "primary_password": { "header": "Senha Primaria", "description": "Criptografar senha (desativa o login automático)" diff --git a/html/src/localization/ru/en.json b/html/src/localization/ru/en.json index b4a8ddf3..b8de59f8 100644 --- a/html/src/localization/ru/en.json +++ b/html/src/localization/ru/en.json @@ -405,11 +405,6 @@ "screenshot_metadata": "Метаданные скриншота", "vrc_registry_backup": "Резервное копирование реестра VRC", "common_folders": "Общие папки", - "pending_offline": { - "header": "Ожидание отключения", - "description": "Задержка перед отметкой пользователя как офлайн (исправляет ложные срабатывания)", - "set_delay": "Установить задержку" - }, "primary_password": { "header": "Основной пароль", "description": "Шифровать пароль (отключает автоматический вход)" diff --git a/html/src/localization/vi/en.json b/html/src/localization/vi/en.json index 370642d4..9217c065 100644 --- a/html/src/localization/vi/en.json +++ b/html/src/localization/vi/en.json @@ -413,11 +413,6 @@ "screenshot_metadata": "Screenshot Metadata", "vrc_registry_backup": "VRC Registry Backup", "common_folders": "Thư mục chung", - "pending_offline": { - "header": "Đang chờ Offline", - "description": "Trì trệ trước khi đánh dấu người chơi đang offline (sửa lỗi hiển thị sai)", - "set_delay": "Đặt trì trệ" - }, "primary_password": { "header": "Mật khẩu chính", "description": "Mã hóa mật khẩu (sẽ tắt đăng nhập tự động)" diff --git a/html/src/localization/zh-CN/en.json b/html/src/localization/zh-CN/en.json index dd39f458..99218880 100644 --- a/html/src/localization/zh-CN/en.json +++ b/html/src/localization/zh-CN/en.json @@ -405,11 +405,6 @@ "screenshot_metadata": "截图元数据查看器", "vrc_registry_backup": "VRC 设置数据备份工具", "common_folders": "常用文件夹", - "pending_offline": { - "header": "离线标记延迟", - "description": "将好友标记为离线之前的延迟(防止误判)", - "set_delay": "设置延迟" - }, "primary_password": { "header": "独立密码", "description": "使用独立密码加密 VRCX 数据(将停用自动登录)" diff --git a/html/src/localization/zh-TW/en.json b/html/src/localization/zh-TW/en.json index d25ba1a1..f8442628 100644 --- a/html/src/localization/zh-TW/en.json +++ b/html/src/localization/zh-TW/en.json @@ -413,11 +413,6 @@ "screenshot_metadata": "螢幕截圖詳細資訊", "vrc_registry_backup": "VRC Registry Backup", "common_folders": "遊戲資料夾", - "pending_offline": { - "header": "待確認離線", - "description": "將玩家標記為離線之前延遲(防止誤判)", - "set_delay": "設定延遲" - }, "primary_password": { "header": "主密碼", "description": "密碼加密(將停用自動登入)" diff --git a/html/src/mixins/tabs/settings.pug b/html/src/mixins/tabs/settings.pug index 556f3f1f..e16f4d1a 100644 --- a/html/src/mixins/tabs/settings.pug +++ b/html/src/mixins/tabs/settings.pug @@ -563,11 +563,6 @@ mixin settingsTab() div.options-container span.header {{ $t('view.settings.advanced.advanced.cache_debug.header') }} br - span.sub-header {{ $t('view.settings.advanced.advanced.pending_offline.header') }} - div.options-container-item - span.name {{ $t('view.settings.advanced.advanced.pending_offline.description') }} - el-button-group(style="display:block") - el-button(size="small" icon="el-icon-s-operation" @click="promptSetPendingOffline") {{ $t('view.settings.advanced.advanced.pending_offline.set_delay') }} +simpleSwitch("view.settings.advanced.advanced.cache_debug.udon_exception_logging", "udonExceptionLogging", "saveOpenVROption") div.options-container-item span.name {{ $t('view.settings.advanced.advanced.cache_debug.disable_gamelog') }}