package com.levinencrypteduploader import android.content.Context import android.util.Log import com.facebook.react.bridge.Arguments import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.WritableMap import com.facebook.react.modules.core.DeviceEventManagerModule class GlobalRequestObserverDelegate(private val reactContext: ReactApplicationContext) { private val TAG = "GlobalRequestObserverDelegate" fun onProgress(uploadId: String, progress: Int) { try { val params = Arguments.createMap().apply { putString("uploadId", uploadId) putInt("progress", progress) } sendEvent("uploadProgress", params) } catch (e: Exception) { Log.e(TAG, "Error sending progress event", e) } } fun onCompleted(uploadId: String) { try { val params = Arguments.createMap().apply { putString("uploadId", uploadId) } sendEvent("uploadCompleted", params) } catch (e: Exception) { Log.e(TAG, "Error sending completed event", e) } } fun onError(uploadId: String, error: String) { try { val params = Arguments.createMap().apply { putString("uploadId", uploadId) putString("error", error) } sendEvent("uploadError", params) } catch (e: Exception) { Log.e(TAG, "Error sending error event", e) } } fun onSuccess(uploadId: String, response: String) { try { val params = Arguments.createMap().apply { putString("uploadId", uploadId) putString("response", response) } sendEvent("uploadSuccess", params) } catch (e: Exception) { Log.e(TAG, "Error sending success event", e) } } fun onCancelled(uploadId: String) { try { val params = Arguments.createMap().apply { putString("uploadId", uploadId) } sendEvent("uploadCancelled", params) } catch (e: Exception) { Log.e(TAG, "Error sending cancelled event", e) } } private fun sendEvent(eventName: String, params: WritableMap) { reactContext .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java) .emit("levin-encrypted-uploader-$eventName", params) } } // Data classes data class DownloadInfo( val downloadId: String, val destinationPath: String, val progressPercent: Int )