33import android .content .Context ;
44import android .os .Handler ;
55import android .os .Looper ;
6- import android .util .Log ;
76
87import androidx .annotation .NonNull ;
98import androidx .annotation .Nullable ;
1918import com .facebook .react .jstasks .HeadlessJsTaskConfig ;
2019import com .facebook .react .jstasks .HeadlessJsTaskContext ;
2120import com .facebook .react .jstasks .HeadlessJsTaskEventListener ;
21+ import com .transistorsoft .locationmanager .logger .TSLog ;
2222
2323import java .lang .reflect .Method ;
2424
@@ -119,7 +119,10 @@ public void finishTask(Context context, int taskId) throws TaskNotFoundError, Co
119119 if (reactContext != null ) {
120120 Task task = findTask (taskId );
121121 if (task != null ) {
122- HeadlessJsTaskContext .getInstance (reactContext ).finishTask (task .getReactTaskId ());
122+ HeadlessJsTaskContext headlessJsTaskContext = HeadlessJsTaskContext .getInstance (reactContext );
123+ if (headlessJsTaskContext .isTaskRunning (task .getReactTaskId ())) {
124+ headlessJsTaskContext .finishTask (task .getReactTaskId ());
125+ }
123126 } else {
124127 throw new TaskNotFoundError (taskId );
125128 }
@@ -157,7 +160,7 @@ public void onHeadlessJsTaskFinish(int taskId) {
157160 removeTask (task );
158161 task .onFinish ();
159162
160- Log . d ( TAG , "[onHeadlessJsTaskFinish] taskId: " + taskId );
163+ TSLog . logger . debug ( "[onHeadlessJsTaskFinish] taskId: " + taskId );
161164 }
162165
163166 private ReactNativeHost getReactNativeHost (Context context ) {
@@ -185,7 +188,7 @@ private ReactContext getReactContext(Context context) {
185188 Method getCurrentReactContext = reactHost .getClass ().getMethod ("getCurrentReactContext" );
186189 return (ReactContext ) getCurrentReactContext .invoke (reactHost );
187190 } catch (Exception e ) {
188- Log . e ( TAG , "Reflection error getCurrentReactContext: " + e .getMessage ());
191+ TSLog . logger . error ( TSLog . error ( "Reflection error getCurrentReactContext: " + e .getMessage ()), e );
189192 }
190193 }
191194 final ReactInstanceManager reactInstanceManager = getReactNativeHost (context ).getReactInstanceManager ();
@@ -202,7 +205,7 @@ private void createReactContextAndScheduleTask(Context context) {
202205 return ;
203206 }
204207 if (mIsInitializingReactContext .compareAndSet (false , true )) {
205- Log . d ( TAG , "[createReactContextAndScheduleTask] initialize ReactContext" );
208+ TSLog . logger . debug ( "[createReactContextAndScheduleTask] initialize ReactContext" );
206209 final Object reactHost = getReactHost (context );
207210 if (isBridglessArchitectureEnabled ()) { // NEW arch
208211 ReactInstanceEventListener callback = new ReactInstanceEventListener () {
@@ -214,7 +217,7 @@ public void onReactContextInitialized(@NonNull ReactContext reactContext) {
214217 Method removeReactInstanceEventListener = reactHost .getClass ().getMethod ("removeReactInstanceEventListener" , ReactInstanceEventListener .class );
215218 removeReactInstanceEventListener .invoke (reactHost , this );
216219 } catch (Exception e ) {
217- Log . e ( TAG , "HeadlessTask reflection error removeReactInstanceEventListener: " + e );
220+ TSLog . logger . error ( TSLog . error ( "HeadlessTask reflection error removeReactInstanceEventListener: " ) + e );
218221 }
219222 }
220223 };
@@ -224,7 +227,7 @@ public void onReactContextInitialized(@NonNull ReactContext reactContext) {
224227 Method startReactHost = reactHost .getClass ().getMethod ("start" );
225228 startReactHost .invoke (reactHost );
226229 } catch (Exception e ) {
227- Log . e ( TAG , "HeadlessTask reflection error ReactHost start: " + e .getMessage ());
230+ TSLog . logger . error ( TSLog . error ( "HeadlessTask reflection error ReactHost start: " + e .getMessage ()), e );
228231 }
229232 } else { // OLD arch
230233 final ReactInstanceManager reactInstanceManager = getReactNativeHost (context ).getReactInstanceManager ();
@@ -349,9 +352,11 @@ synchronized static int getNextTaskId() {
349352 mOnErrorCallback = builder .onErrorCallback ;
350353 mTimeout = builder .timeout ;
351354 mParams = builder .params ;
352- mParams .putInt ("taskId" , mId );
355+ // append our custom headless taskId.
356+ mParams .putInt ("_transistorHeadlessTaskId" , mId );
353357 }
354358
359+
355360 boolean invoke (ReactContext reactContext ) throws IllegalStateException {
356361 HeadlessJsTaskContext headlessJsTaskContext = HeadlessJsTaskContext .getInstance (reactContext );
357362 // Provide the RN taskId to our private TaskConfig instance, mapping the RN taskId to our TaskConfig's internal taskId.
0 commit comments