Browse Source

fix overwork bug, attempt to fix cache file deletion exception

Mike L 1 year ago
parent
commit
f6a11cc2ad
4 changed files with 13 additions and 10 deletions
  1. 3 2
      dist/json.js
  2. 4 3
      dist/twitter.js
  3. 2 2
      src/json.ts
  4. 4 3
      src/twitter.ts

+ 3 - 2
dist/json.js

@@ -20,11 +20,12 @@ const writeFile = (path, obj) => new Promise((resolve, reject) => {
         backupPath = renameSync(path, `${path}.bak`);
     }
     json.stringifyStream(obj)
-        .on('error', err => { logger.error(err); if (backupPath)
+        .on('error', err => { logger.error(err); if (fs.existsSync(backupPath))
         renameSync(backupPath, path); resolve(false); })
         .pipe(fs.createWriteStream(path))
         .on('error', err => { reject(err); })
-        .on('finish', () => { fs.unlinkSync(`${path}.bak`); resolve(true); });
+        .on('finish', () => { if (fs.existsSync(backupPath))
+        fs.unlinkSync(`${path}.bak`); resolve(true); });
 });
 exports.writeFile = writeFile;
 const readFile = (path) => new Promise((resolve, reject) => {

+ 4 - 3
dist/twitter.js

@@ -303,6 +303,9 @@ class default_1 {
                         }
                     })));
                 }), (lp1, lp2) => () => lp1().then(() => (0, util_1.promisify)(setTimeout)(timeout).then(lp2)));
+            })
+                .then(() => {
+                setTimeout(this.workForAll, this.workInterval * 1000);
             })
                 .catch((error) => {
                 if (error instanceof instagram_private_api_1.IgNetworkError) {
@@ -318,10 +321,8 @@ class default_1 {
                 }
                 else {
                     logger.error(`unhandled error on fetching media for all: ${error}`);
+                    setTimeout(this.workForAll, this.workInterval * 1000);
                 }
-            })
-                .then(() => {
-                setTimeout(this.workForAll, this.workInterval * 1000);
             });
         };
         this.work = () => {

+ 2 - 2
src/json.ts

@@ -20,10 +20,10 @@ const writeFile = (path: fs.PathLike, obj: object) => new Promise<boolean>((reso
     backupPath = renameSync(path, `${path}.bak`);
   }
   json.stringifyStream(obj)
-    .on('error', err => { logger.error(err); if (backupPath) renameSync(backupPath, path); resolve(false); })
+    .on('error', err => { logger.error(err); if (fs.existsSync(backupPath)) renameSync(backupPath, path); resolve(false); })
     .pipe(fs.createWriteStream(path))
     .on('error', err => { reject(err); })
-    .on('finish', () => { fs.unlinkSync(`${path}.bak`); resolve(true); });
+    .on('finish', () => { if (fs.existsSync(backupPath)) fs.unlinkSync(`${path}.bak`); resolve(true); });
 });
 
 const readFile = (path: fs.PathLike) => new Promise<any>((resolve, reject) => {

+ 4 - 3
src/twitter.ts

@@ -539,6 +539,9 @@ export default class {
             lp1().then(() => promisify(setTimeout)(timeout).then(lp2))
         );
       })
+      .then(() => {
+        setTimeout(this.workForAll, this.workInterval * 1000);
+      })
       .catch((error: IgClientError & Partial<RequestError>) => {
         if (error instanceof IgNetworkError) {
           if ((error.cause as Error).message === "Unexpected '<'") {
@@ -551,10 +554,8 @@ export default class {
           this.session.login().then(this.workForAll);
         } else {
           logger.error(`unhandled error on fetching media for all: ${error}`);
+          setTimeout(this.workForAll, this.workInterval * 1000);
         }
-      })
-      .then(() => {
-        setTimeout(this.workForAll, this.workInterval * 1000);
       });
   };