package com.lemenzo.messenger.retention;

import android.app.job.JobParameters;
import android.app.job.JobService;
import android.content.Context;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public final class MessageRetentionJobService extends JobService {
    private ExecutorService worker;

    public static void runCleanupAsync(Context context){
        ExecutorService executor=Executors.newSingleThreadExecutor(r->new Thread(r,"LemenzoMessageRetention"));
        executor.execute(()->{try{MessageRetentionManager.cleanup(context);}finally{executor.shutdown();}});
    }

    @Override public boolean onStartJob(JobParameters params){
        worker=Executors.newSingleThreadExecutor(r->new Thread(r,"LemenzoMessageRetentionJob"));
        worker.execute(()->{
            try{MessageRetentionManager.cleanup(getApplicationContext());}
            finally{
                jobFinished(params,false);
                if(worker!=null)worker.shutdown();
            }
        });
        return true;
    }

    @Override public boolean onStopJob(JobParameters params){
        if(worker!=null)worker.shutdownNow();
        return true;
    }

    @Override public void onDestroy(){if(worker!=null)worker.shutdownNow();super.onDestroy();}
}
