[android] Migrated MwmJobIntentService.java to MwmWork (#4691)

* [android] Code refactored for OsmUploadWork

Signed-off-by: suman <suman.arun@anywhere.co>
This commit is contained in:
Suman Mondal 2023-04-11 07:46:43 +05:30 committed by GitHub
parent 9ab1dc340e
commit 3e37178b03
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 63 additions and 108 deletions

View file

@ -719,10 +719,6 @@
<activity
android:name="app.organicmaps.settings.DrivingOptionsActivity"
android:label="@string/driving_options_title"/>
<service
android:name="app.organicmaps.background.OsmUploadService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="false"/>
<!-- Catches app upgraded intent -->
<receiver

View file

@ -1,39 +0,0 @@
package app.organicmaps;
import android.content.Intent;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.core.app.JobIntentService;
import app.organicmaps.util.CrashlyticsUtils;
import app.organicmaps.util.log.Logger;
@SuppressWarnings("deprecation") // https://github.com/organicmaps/organicmaps/issues/4531
public abstract class MwmJobIntentService extends JobIntentService
{
private static final String TAG = MwmJobIntentService.class.getSimpleName();
@NonNull
protected String getTag()
{
return getClass().getSimpleName();
}
protected abstract void onHandleWorkInitialized(@NonNull Intent intent);
@Override
protected void onHandleWork(@NonNull Intent intent)
{
MwmApplication app = MwmApplication.from(this);
String msg = "onHandleWork: " + intent;
Logger.i(TAG, msg);
CrashlyticsUtils.INSTANCE.log(Log.INFO, getTag(), msg);
if (!app.arePlatformAndCoreInitialized())
{
Logger.w(TAG, "Application is not initialized, ignoring " + intent);
return;
}
onHandleWorkInitialized(intent);
}
}

View file

@ -1,32 +0,0 @@
package app.organicmaps.background;
import android.content.Context;
import android.content.Intent;
import androidx.annotation.NonNull;
import androidx.core.app.JobIntentService;
import app.organicmaps.MwmJobIntentService;
import app.organicmaps.editor.Editor;
import app.organicmaps.scheduling.JobIdMap;
public class OsmUploadService extends MwmJobIntentService
{
/**
* Starts this service to upload map edits to osm servers.
*/
@SuppressWarnings("deprecation") // https://github.com/organicmaps/organicmaps/issues/4531
public static void startActionUploadOsmChanges(@NonNull Context context)
{
final Intent intent = new Intent(context, OsmUploadService.class);
JobIntentService.enqueueWork(context.getApplicationContext(), OsmUploadService.class,
JobIdMap.getId(OsmUploadService.class), intent);
}
@Override
protected void onHandleWorkInitialized(@NonNull Intent intent)
{
final Context context = getApplicationContext();
Editor.uploadChanges(context);
}
}

View file

@ -0,0 +1,61 @@
package app.organicmaps.background;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.work.Constraints;
import androidx.work.NetworkType;
import androidx.work.OneTimeWorkRequest;
import androidx.work.WorkManager;
import androidx.work.WorkRequest;
import androidx.work.Worker;
import androidx.work.WorkerParameters;
import app.organicmaps.MwmApplication;
import app.organicmaps.editor.Editor;
import app.organicmaps.editor.OsmOAuth;
import app.organicmaps.util.log.Logger;
public class OsmUploadWork extends Worker
{
private static final String TAG = OsmUploadWork.class.getSimpleName();
private final Context mContext;
private final WorkerParameters mWorkerParameters;
public OsmUploadWork(@NonNull Context context, @NonNull WorkerParameters workerParams)
{
super(context, workerParams);
this.mContext = context;
this.mWorkerParameters = workerParams;
}
/**
* Starts this worker to upload map edits to osm servers.
*/
public static void startActionUploadOsmChanges(@NonNull Context context)
{
if (Editor.nativeHasSomethingToUpload() && OsmOAuth.isAuthorized(context))
{
final Constraints constraints = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED)
.setRequiresCharging(true)
.build();
final WorkRequest workReq = new OneTimeWorkRequest.Builder(OsmUploadWork.class).setConstraints(constraints)
.build();
WorkManager.getInstance(context).enqueue(workReq);
}
}
@NonNull
@Override
public Result doWork()
{
final MwmApplication app = MwmApplication.from(mContext);
if (!app.arePlatformAndCoreInitialized())
{
Logger.w(TAG, "Application is not initialized, ignoring " + mWorkerParameters);
return Result.failure();
}
Editor.uploadChanges(mContext);
return Result.success();
}
}

View file

@ -11,7 +11,7 @@ import app.organicmaps.BuildConfig;
import app.organicmaps.Framework;
import app.organicmaps.MwmApplication;
import app.organicmaps.background.AppBackgroundTracker;
import app.organicmaps.background.OsmUploadService;
import app.organicmaps.background.OsmUploadWork;
import app.organicmaps.bookmarks.data.Metadata;
import app.organicmaps.editor.data.FeatureCategory;
import app.organicmaps.editor.data.Language;
@ -207,7 +207,7 @@ public final class Editor
if (foreground)
return;
OsmUploadService.startActionUploadOsmChanges(mContext);
OsmUploadWork.startActionUploadOsmChanges(mContext);
}
}
}

View file

@ -1,31 +0,0 @@
package app.organicmaps.scheduling;
import app.organicmaps.background.OsmUploadService;
import java.util.HashMap;
import java.util.Map;
public class JobIdMap
{
private static final Map<Class<?>, Integer> MAP = new HashMap<>();
static {
MAP.put(OsmUploadService.class, calcIdentifier(MAP.size()));
}
private static final int ID_BASIC = 1070;
private static final int JOB_TYPE_SHIFTS = 12;
private static int calcIdentifier(int count)
{
return (count + 1 << JOB_TYPE_SHIFTS) + ID_BASIC;
}
public static int getId(Class<?> clazz)
{
Integer integer = MAP.get(clazz);
if (integer == null)
throw new IllegalArgumentException("Value not found for args : " + clazz);
return integer;
}
}