All files / src/file-system-module/operations/remove-file remove-file-operation.function.ts

13.33% Statements 2/15
0% Branches 0/1
0% Functions 0/4
13.33% Lines 2/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45            5x                   5x                                                        
/**
 * Exports remove file operation function.
 *
 * @module
 */
import type { ReleaseLock } from '@agogpixel/pgmmv-resource-support/src/locks/release-lock.type';
import { pollWithBackoff } from '@agogpixel/pgmmv-resource-support/src/time/poll-with-backoff.function';
 
import type { RemoveFileOperationPayload } from './remove-file-operation-payload.interface';
 
/**
 * Remove file operation.
 *
 * @param payload Operation payload.
 * @param releaseLock Release lock callback.
 */
export function removeFileOperation(payload: RemoveFileOperationPayload, releaseLock: ReleaseLock) {
  const path = payload.path;
  const callback = payload.callback;
 
  function conditional() {
    return !jsb.fileUtils.isFileExist(path);
  }
 
  function onProceed() {
    releaseLock();
    callback(true);
  }
 
  function onTimeout(elapsed: number) {
    releaseLock();
    callback(false, `Remove operation of '${path}' timed out after ${elapsed / 1000}s`);
  }
 
  const result = jsb.fileUtils.removeFile(path);
 
  Iif (!result) {
    releaseLock();
    callback(false, `Remove operation of '${path}' failed immediately`);
    return;
  }
 
  pollWithBackoff(conditional, onProceed, onTimeout, 1000, 5);
}