Browse Source

fix duplicate watch exec

Michael Wang 3 years ago
parent
commit
c31539cab3

+ 6 - 2
src/features/UserLogin/useRemoteAppChecker.ts

@@ -89,8 +89,12 @@ export function useRemoteAppChecker() {
 
   const QECSConfig = $computed(() => store.QECSConfig);
   watch(
-    () => QECSConfig,
-    async () => {
+    () => QECSConfig.PREVENT_CHEATING_CONFIG,
+    async (val, oldVal) => {
+      // 由于在刷新时,会重新从sessionStorage里面获取值并设置QECSConfig,
+      // 同时,还通过网络获取,所以此时的监听会发生两次,两次可能导致 remoteApplication.txt 被删除后读取不到
+      // 所以此时发现值一样就不要进行后续
+      if (JSON.stringify(val) === JSON.stringify(oldVal)) return;
       if (import.meta.env.DEV) {
         disableLoginBtnBecauseRemoteApp = false;
         return;

+ 7 - 2
src/features/UserLogin/useVCamChecker.ts

@@ -61,8 +61,13 @@ export function useVCamChecker() {
 
   const QECSConfig = $computed(() => store.QECSConfig);
   watch(
-    () => QECSConfig,
-    async () => {
+    () => QECSConfig.PREVENT_CHEATING_CONFIG,
+    async (val, oldVal) => {
+      // 由于在刷新时,会重新从sessionStorage里面获取值并设置QECSConfig,
+      // 同时,还通过网络获取,所以此时的监听会发生两次,两次可能导致 CameraInfo.txt 被删除后读取不到
+      // 所以此时发现值一样就不要进行后续
+      if (JSON.stringify(val) === JSON.stringify(oldVal)) return;
+
       if (
         !QECSConfig.PREVENT_CHEATING_CONFIG?.includes("DISABLE_VIRTUAL_CAMERA")
       ) {