/* ### Electron Specific JavaScript ### */ // import crypto from 'crypto'; // import {fs} from 'fs'; // import path from 'path'; // const crypto = require('crypto'); // const fs = require('fs'); // const fs_promises = require('node:fs/promises'); // const path = require('path'); // const { ipcRenderer } = require('electron'); // function sleep(milliseconds) { // const date = Date.now(); // let currentDate = null; // do { // currentDate = Date.now(); // } while (currentDate - date < milliseconds); // } // // exports.check_hash_file_cache should no longer be needed with this. // // Updated 2022-10-11 // export let check_hash_file_cache_v2 = async function check_hash_file_cache_v2({local_file_cache_path, hash, check_hash=false}) { // console.log('*** check_hash_file_cache_v2() ***'); // console.log(`Host File Cache Path: ${local_file_cache_path}; Hash: ${hash}`); // let hash_filename = `${hash}.file`; // let subdirectory = hash_filename.substring(0,2); // let subdirectory_path = path.join(local_file_cache_path, subdirectory); // if (fs.existsSync(subdirectory_path)) { // } else { // console.log(`Hashed file subdirectory not found in cache: ${subdirectory_path}`); // return null; // } // let hash_file_cache_path = path.join(subdirectory_path, hash_filename); // if (fs.existsSync(hash_file_cache_path)) { // console.log(`Hashed file exists in cache: ${hash_file_cache_path}`); // if (check_hash) { // const file_buffer = fs.readFileSync(hash_file_cache_path); // const file_hash_sha256 = crypto.createHash('sha256'); // file_hash_sha256.update(file_buffer); // const file_hash_sha256_check = file_hash_sha256.digest('hex'); // if (file_hash_sha256_check == hash) { // console.log('File hash match', file_hash_sha256_check); // } else { // console.log('File hash does not match', file_hash_sha256_check); // return false; // } // } // return true; // } else { // console.log(`Hashed file not found in cache: ${hash_file_cache_path}`); // return null; // } // } // Updated 2022-05-07 export let kill_processes = async function kill_processes({process_name_li=[]}) { console.log('*** kill_processes() ***'); console.log(`Process Name List: ${process_name_li}`); let fail_flag = null; if (process_name_li) { for (let i = 0; i < process_name_li.length; i++) { // separate the keys and the values let process_name = process_name_li[i]; let signal = null; if (process_name == 'osit_aperture_wrapper') { signal = 'INT'; // INT (interrupt) correctly stops the wrapper } let kill_processes_result = await native_app.kill_processes({process_name: process_name, signal: signal}); console.log(kill_processes_result); if (kill_processes_result) { console.log('Killed process.'); // return kill_processes_result; } else { console.log('Did not kill process. Something went wrong.'); fail_flag = true; // return false; } } } return fail_flag; // let kill_processes_result = await native_app.kill_processes({process_name: process_name}); // console.log(kill_processes_result); // if (kill_processes_result) { // console.log('Killed process.'); // return kill_processes_result; // } else { // console.log('Did not kill process. Something went wrong.'); // return false; // } } // Updated 2022-05-06 export let open_local_file = async function open_local_file({file_path, filename}) { console.log('*** open_local_file() ***'); console.log(`File Path: ${file_path}; Filename: ${filename}`); console.log('Process: Check local hash file cache, Download hash file to cache, and Open cached hash file after copying to temp directory'); // let check_local_file_result = await native_app.check_local_file({local_file_path: file_path, filename: filename}); // console.log(check_local_file_result); // if (check_local_file_result) { // console.log('Local file found.'); // } else { // console.log('Local file not found. Will not attempt to open.'); // return false; // } // console.log('Local file file found and ready to be opened.'); let open_local_file_result = await native_app.open_local_file({local_file_path: file_path, filename: filename}); console.log(open_local_file_result); if (open_local_file_result) { console.log('Local file was opened.'); return open_local_file_result; } else { console.log('Local file was not opened. Something went wrong.'); return false; } } // exports.open_local_file should no longer be needed with this. // Updated 2022-10-11 export let open_local_file_v2 = async function open_local_file_v2({file_path, filename}) { console.log('*** open_local_file_v2() ***'); console.log(`Local File Path: ${file_path}; Filename: ${filename}`); console.log('Process: Check local hash file cache, Download hash file to cache, and Open cached hash file after copying to temp directory'); let open_local_file_result = await ipcRenderer.invoke('open_local_file', file_path, filename).then((result) => { console.log('IPC open local file finished'); if (result) { console.log('Local file was opened.'); return result; } else { console.log('Local file was not opened. Something went wrong.'); console.log(result); return false; } console.log(result); return true; }) return open_local_file_result; } // // Updated 2022-05-06 // export let open_hash_file_to_temp = async function open_hash_file_to_temp({local_file_cache_path, hash, host_file_temp_path, filename}) { // console.log('*** open_hash_file_to_temp() ***'); // console.log(`Host File Cache Path: ${local_file_cache_path}; Hash: ${hash}; Host File Temp Path: ${host_file_temp_path}; Filename: ${filename}`); // console.log('Process: Check local hash file cache, Download hash file to cache, and Open cached hash file after copying to temp directory'); // let open_hash_file_to_temp_result = await native_app.open_hash_file_to_temp({local_file_cache_path: local_file_cache_path, hash: hash, host_file_temp_path: host_file_temp_path, filename: filename}); // console.log(open_hash_file_to_temp_result); // if (open_hash_file_to_temp_result) { // console.log('Local hash file was opened from temp directory.'); // return open_hash_file_to_temp_result; // } else { // console.log('Local hash file was not opened from the temp directory. Something went wrong.'); // return false; // } // } // // exports.open_hash_file_to_temp should no longer be needed with this. // // Updated 2022-10-11 // export let open_hash_file_to_temp_v2 = async function open_hash_file_to_temp_v2({local_file_cache_path, hash, host_file_temp_path, filename}) { // console.log('*** open_hash_file_to_temp_v2() ***'); // console.log(`Host File Cache Path: ${local_file_cache_path}; Hash: ${hash}; Host File Temp Path: ${host_file_temp_path}; Filename: ${filename}`); // console.log('Process: Check local hash file cache, Download hash file to cache, and Open cached hash file after copying to temp directory'); // let subdirectory = hash.substring(0,2); // let subdirectory_path = path.join(local_file_cache_path, subdirectory); // if (fs.existsSync(subdirectory_path)) { // } else { // console.log(`Hashed file subdirectory not found in cache: ${subdirectory_path}`); // return null; // } // let hash_filename = hash+'.file'; // let full_cache_file_path = path.join(subdirectory_path, hash_filename); // console.log(full_cache_file_path); // const file_buffer = fs.readFileSync(full_cache_file_path); // const file_hash_sha256 = crypto.createHash('sha256'); // file_hash_sha256.update(file_buffer); // const file_hash_sha256_check = file_hash_sha256.digest('hex'); // if (file_hash_sha256_check == hash) { // console.log('File hash match', file_hash_sha256_check); // } else { // console.log('File hash does not match', file_hash_sha256_check); // // await setTimeout(async () => {console.log('Done waiting????'); open_file_clicked = false;}, 5000); // // sleep(6000); // // console.log('???????? WAITED X SECONDS ????????'); // return false; // } // let open_hash_file_to_temp_result = await ipcRenderer.invoke('open_hash_file_to_temp', subdirectory_path, hash, host_file_temp_path, filename).then((result) => { // console.log('IPC open hash file to temp finished'); // if (result) { // console.log('Local hash file was opened from temp directory.'); // return result; // } else { // console.log('Local hash file was not opened from the temp directory. Something went wrong.'); // console.log(result); // return false; // } // }) // return open_hash_file_to_temp_result; // } // Updated 2022-05-07 export let run_cmd = async function run_cmd({cmd=null, return_stdout=null}) { console.log('*** run_cmd() ***'); let run_cmd_result = await native_app.run_cmd({cmd: cmd, return_stdout: return_stdout}) .then(function (result) { if (result) { console.log('Command ran'); } else { console.log('Command did not run. Something went wrong.'); return false; } if (return_stdout) { return result; } else { return true; } }); console.log('Run Command Result:', run_cmd_result); return run_cmd_result; } // Updated 2022-10-27 export let run_cmd_sync = function run_cmd_sync({cmd=null, return_stdout=null}) { console.log('*** run_cmd_sync() ***'); let run_cmd_result = native_app.run_cmd_sync({cmd: cmd, return_stdout: return_stdout}); // if (run_cmd_result) { // console.log('Command ran'); // } else { // console.log('Command did not run. Something went wrong.'); // // return false; // } // if (return_stdout) { // return run_cmd_result; // } else { // return true; // } console.log('Run Command Result:', run_cmd_result); return run_cmd_result; } // Updated 2022-05-07 export let run_osascript = async function run_osascript({cmd=null, interactive=false, language=null, flags='h', program_file=null}) { console.log('*** run_osascript() ***'); let run_osascript_result = await native_app.run_osascript({cmd: cmd, interactive: interactive, language: language, flags: flags, program_file: program_file}); console.log(run_osascript_result); if (run_osascript_result) { console.log('Apple Script ran'); } else { console.log('Apple Script did not run. Something went wrong.'); } return run_osascript_result; } // Updated 2022-05-07 export let get_device_info = async function get_device_info({event_device_id}) { console.log('*** get_device_info() ***'); console.log(event_device_id); let get_device_info_result = await native_app.get_device_info(); console.log(get_device_info_result); if (get_device_info_result) { console.log('Success'); } else { console.log('Failed? Something went wrong.'); } return get_device_info_result; }