3
3
import android .content .Context ;
4
4
import android .os .Handler ;
5
5
import android .os .Looper ;
6
- import android .util .Log ;
7
6
8
7
import androidx .annotation .NonNull ;
9
8
import androidx .annotation .Nullable ;
19
18
import com .facebook .react .jstasks .HeadlessJsTaskConfig ;
20
19
import com .facebook .react .jstasks .HeadlessJsTaskContext ;
21
20
import com .facebook .react .jstasks .HeadlessJsTaskEventListener ;
21
+ import com .transistorsoft .locationmanager .logger .TSLog ;
22
22
23
23
import java .lang .reflect .Method ;
24
24
@@ -119,7 +119,10 @@ public void finishTask(Context context, int taskId) throws TaskNotFoundError, Co
119
119
if (reactContext != null ) {
120
120
Task task = findTask (taskId );
121
121
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
+ }
123
126
} else {
124
127
throw new TaskNotFoundError (taskId );
125
128
}
@@ -157,7 +160,7 @@ public void onHeadlessJsTaskFinish(int taskId) {
157
160
removeTask (task );
158
161
task .onFinish ();
159
162
160
- Log . d ( TAG , "[onHeadlessJsTaskFinish] taskId: " + taskId );
163
+ TSLog . logger . debug ( "[onHeadlessJsTaskFinish] taskId: " + taskId );
161
164
}
162
165
163
166
private ReactNativeHost getReactNativeHost (Context context ) {
@@ -185,7 +188,7 @@ private ReactContext getReactContext(Context context) {
185
188
Method getCurrentReactContext = reactHost .getClass ().getMethod ("getCurrentReactContext" );
186
189
return (ReactContext ) getCurrentReactContext .invoke (reactHost );
187
190
} catch (Exception e ) {
188
- Log . e ( TAG , "Reflection error getCurrentReactContext: " + e .getMessage ());
191
+ TSLog . logger . error ( TSLog . error ( "Reflection error getCurrentReactContext: " + e .getMessage ()), e );
189
192
}
190
193
}
191
194
final ReactInstanceManager reactInstanceManager = getReactNativeHost (context ).getReactInstanceManager ();
@@ -202,7 +205,7 @@ private void createReactContextAndScheduleTask(Context context) {
202
205
return ;
203
206
}
204
207
if (mIsInitializingReactContext .compareAndSet (false , true )) {
205
- Log . d ( TAG , "[createReactContextAndScheduleTask] initialize ReactContext" );
208
+ TSLog . logger . debug ( "[createReactContextAndScheduleTask] initialize ReactContext" );
206
209
final Object reactHost = getReactHost (context );
207
210
if (isBridglessArchitectureEnabled ()) { // NEW arch
208
211
ReactInstanceEventListener callback = new ReactInstanceEventListener () {
@@ -214,7 +217,7 @@ public void onReactContextInitialized(@NonNull ReactContext reactContext) {
214
217
Method removeReactInstanceEventListener = reactHost .getClass ().getMethod ("removeReactInstanceEventListener" , ReactInstanceEventListener .class );
215
218
removeReactInstanceEventListener .invoke (reactHost , this );
216
219
} catch (Exception e ) {
217
- Log . e ( TAG , "HeadlessTask reflection error removeReactInstanceEventListener: " + e );
220
+ TSLog . logger . error ( TSLog . error ( "HeadlessTask reflection error removeReactInstanceEventListener: " ) + e );
218
221
}
219
222
}
220
223
};
@@ -224,7 +227,7 @@ public void onReactContextInitialized(@NonNull ReactContext reactContext) {
224
227
Method startReactHost = reactHost .getClass ().getMethod ("start" );
225
228
startReactHost .invoke (reactHost );
226
229
} 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 );
228
231
}
229
232
} else { // OLD arch
230
233
final ReactInstanceManager reactInstanceManager = getReactNativeHost (context ).getReactInstanceManager ();
@@ -349,9 +352,11 @@ synchronized static int getNextTaskId() {
349
352
mOnErrorCallback = builder .onErrorCallback ;
350
353
mTimeout = builder .timeout ;
351
354
mParams = builder .params ;
352
- mParams .putInt ("taskId" , mId );
355
+ // append our custom headless taskId.
356
+ mParams .putInt ("_transistorHeadlessTaskId" , mId );
353
357
}
354
358
359
+
355
360
boolean invoke (ReactContext reactContext ) throws IllegalStateException {
356
361
HeadlessJsTaskContext headlessJsTaskContext = HeadlessJsTaskContext .getInstance (reactContext );
357
362
// Provide the RN taskId to our private TaskConfig instance, mapping the RN taskId to our TaskConfig's internal taskId.
0 commit comments