import { shouldSkipHook } from "./validationHelper"; import { requestToSkipHook } from "./networkService"; import { log_debug, log_error } from "./logger"; /** * Headless pre-hook for the General Content Screen. `configuration` is the * Hook object with the screen merged in; skip-hook fields live under `rules`. */ export const runInBackground = async ( item, callback, configuration, presentUI ) => { try { const skipHookIfKeysExist = configuration?.rules?.skip_hook_storage_key; if (skipHookIfKeysExist) { const shouldSkip = await shouldSkipHook(skipHookIfKeysExist); if (shouldSkip) { log_debug( `runInBackground: Storage key found: ${skipHookIfKeysExist}. Skipping hook.` ); return callback({ success: true, error: null, payload: item }); } } const skipHookEndpoint = configuration?.rules?.skip_hook_endpoint; if (skipHookEndpoint?.source) { const success = await requestToSkipHook(skipHookEndpoint, item); if (success) { log_debug( "runInBackground: Network call forced to finish hook. Skipping hook." ); return callback({ success: true, error: null, payload: item }); } } } catch (error) { log_error(`runInBackground: Error: ${error.message}`); } return presentUI(); };