That fuck shit the fascists are using
at master 67 lines 2.1 kB view raw
1package org.tm.archive.gcm; 2 3import android.app.job.JobInfo; 4import android.app.job.JobParameters; 5import android.app.job.JobService; 6import android.content.ComponentName; 7import android.content.Context; 8 9import androidx.annotation.NonNull; 10import androidx.annotation.RequiresApi; 11 12import org.signal.core.util.concurrent.SignalExecutors; 13import org.signal.core.util.logging.Log; 14import org.tm.archive.dependencies.ApplicationDependencies; 15import org.tm.archive.messages.WebSocketDrainer; 16import org.tm.archive.util.ServiceUtil; 17 18/** 19 * Pulls down messages. Used when we fail to pull down messages in {@link FcmReceiveService}. 20 */ 21@RequiresApi(26) 22public class FcmJobService extends JobService { 23 24 private static final String TAG = Log.tag(FcmJobService.class); 25 26 private static final int ID = 1337; 27 28 @RequiresApi(26) 29 public static void schedule(@NonNull Context context) { 30 JobInfo.Builder jobInfoBuilder = new JobInfo.Builder(ID, new ComponentName(context, FcmJobService.class)) 31 .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) 32 .setBackoffCriteria(0, JobInfo.BACKOFF_POLICY_LINEAR) 33 .setPersisted(true); 34 35 ServiceUtil.getJobScheduler(context).schedule(jobInfoBuilder.build()); 36 } 37 38 @Override 39 public boolean onStartJob(JobParameters params) { 40 Log.d(TAG, "onStartJob()"); 41 42 if (ApplicationDependencies.getAppForegroundObserver().isForegrounded()) { 43 Log.i(TAG, "App is foregrounded. No need to run."); 44 return false; 45 } 46 47 SignalExecutors.UNBOUNDED.execute(() -> { 48 boolean success = WebSocketDrainer.blockUntilDrainedAndProcessed(); 49 50 if (success) { 51 Log.i(TAG, "Successfully retrieved messages."); 52 jobFinished(params, false); 53 } else { 54 Log.w(TAG, "Failed to retrieve messages. Scheduling a retry."); 55 jobFinished(params, true); 56 } 57 }); 58 59 return true; 60 } 61 62 @Override 63 public boolean onStopJob(JobParameters params) { 64 Log.d(TAG, "onStopJob()"); 65 return true; 66 } 67}