package io.evercam.androidapp.tasks; import android.app.Activity; import android.os.AsyncTask; import android.util.Log; import io.evercam.Camera; import io.evercam.CameraDetail; import io.evercam.EvercamException; import io.evercam.androidapp.R; import io.evercam.androidapp.custom.CustomProgressDialog; import io.evercam.androidapp.custom.CustomToast; import io.evercam.androidapp.dal.DbCamera; import io.evercam.androidapp.dto.AppData; import io.evercam.androidapp.dto.EvercamCamera; import io.evercam.androidapp.utils.Constants; import io.evercam.androidapp.video.VideoActivity; public class PatchCameraTask extends AsyncTask<Void, Void, EvercamCamera> { private final String TAG = "PatchCameraTask"; private CameraDetail cameraDetail; private Activity activity; private CustomProgressDialog customProgressDialog; private String errorMessage; public PatchCameraTask(CameraDetail cameraDetail, Activity activity) { this.cameraDetail = cameraDetail; this.activity = activity; } @Override protected void onPreExecute() { errorMessage = activity.getString(R.string.unknown_error); customProgressDialog = new CustomProgressDialog(activity); customProgressDialog.show(activity.getString(R.string.patching_camera)); } @Override protected EvercamCamera doInBackground(Void... params) { Log.d(TAG, cameraDetail.toString()); return patchCamera(cameraDetail); } @Override protected void onPostExecute(EvercamCamera evercamCamera) { customProgressDialog.dismiss(); if(evercamCamera != null) { CustomToast.showInBottom(activity, R.string.patch_success); /** * Successfully updated camera, update saved camera, show camera * live view, and finish edit camera activity */ VideoActivity.startingCameraID = evercamCamera.getCameraId(); VideoActivity.evercamCamera = evercamCamera; activity.setResult(Constants.RESULT_TRUE); activity.finish(); } else { CustomToast.showInCenterLong(activity, errorMessage); } } private EvercamCamera patchCamera(CameraDetail detail) { try { Camera patchedCamera = Camera.patch(detail); if(patchedCamera != null) { Camera camera = patchedCamera; // Camera camera = Camera.getById(detail.getId(), false); EvercamCamera evercamCamera = new EvercamCamera().convertFromEvercam(camera); DbCamera dbCamera = new DbCamera(activity); dbCamera.deleteCamera(evercamCamera.getCameraId()); for(int index = 0; index < AppData.evercamCameraList.size(); index++) { if(AppData.evercamCameraList.get(index).getCameraId().equals(camera.getId())) { AppData.evercamCameraList.remove(index); } } dbCamera.addCamera(evercamCamera); AppData.evercamCameraList.add(evercamCamera); return evercamCamera; } else { Log.e(TAG, "Returned patch camera is null"); return null; } } catch(EvercamException e) { errorMessage = e.getMessage(); Log.e(TAG, "patch camera: " + e.getMessage()); return null; } } }