Increment: Add onFileTransferComplete() callback

- Async-tasks are now free of a LocalFileTransferActivity instance
This commit is contained in:
Aditya-Sood 2019-08-04 16:15:09 +05:30
parent 2471385963
commit e6fa97abba
4 changed files with 19 additions and 19 deletions

View File

@ -246,6 +246,11 @@ public class LocalFileTransferActivity extends AppCompatActivity implements
} }
} }
@Override
public void onFileTransferComplete() {
finish();
}
/* Helper methods used for checking permissions and states of services */ /* Helper methods used for checking permissions and states of services */
private boolean checkCoarseLocationAccessPermission() { // Required by Android to detect wifi-p2p peers private boolean checkCoarseLocationAccessPermission() { // Required by Android to detect wifi-p2p peers
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)

View File

@ -4,7 +4,6 @@ import android.os.AsyncTask;
import android.util.Log; import android.util.Log;
import android.widget.Toast; import android.widget.Toast;
import java.lang.ref.WeakReference;
import org.kiwix.kiwixmobile.BuildConfig; import org.kiwix.kiwixmobile.BuildConfig;
import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.R;
@ -35,13 +34,10 @@ class ReceiverDeviceAsyncTask extends AsyncTask<Void, Integer, Boolean> {
private static final String TAG = "ReceiverDeviceAsyncTask"; private static final String TAG = "ReceiverDeviceAsyncTask";
private WeakReference<LocalFileTransferActivity> weakReferenceToActivity;
private WifiDirectManager wifiDirectManager; private WifiDirectManager wifiDirectManager;
private int fileItemIndex;
private String incomingFileName; private String incomingFileName;
public ReceiverDeviceAsyncTask(WifiDirectManager wifiDirectManager, LocalFileTransferActivity localFileTransferActivity) { public ReceiverDeviceAsyncTask(WifiDirectManager wifiDirectManager, LocalFileTransferActivity localFileTransferActivity) {
this.weakReferenceToActivity = new WeakReference<>(localFileTransferActivity);
this.wifiDirectManager = wifiDirectManager; this.wifiDirectManager = wifiDirectManager;
} }
@ -53,6 +49,7 @@ class ReceiverDeviceAsyncTask extends AsyncTask<Void, Integer, Boolean> {
final String KIWIX_ROOT = wifiDirectManager.getZimStorageRootPath(); final String KIWIX_ROOT = wifiDirectManager.getZimStorageRootPath();
int totalFileCount = wifiDirectManager.getTotalFilesForTransfer(); int totalFileCount = wifiDirectManager.getTotalFilesForTransfer();
boolean result = true; boolean result = true;
int fileItemIndex;
if (BuildConfig.DEBUG) Log.d(TAG, "Expecting "+totalFileCount+" files"); if (BuildConfig.DEBUG) Log.d(TAG, "Expecting "+totalFileCount+" files");
@ -115,13 +112,12 @@ class ReceiverDeviceAsyncTask extends AsyncTask<Void, Integer, Boolean> {
protected void onPostExecute(Boolean allFilesReceived) { protected void onPostExecute(Boolean allFilesReceived) {
if (BuildConfig.DEBUG) Log.d(TAG, "File transfer complete"); if (BuildConfig.DEBUG) Log.d(TAG, "File transfer complete");
final LocalFileTransferActivity localFileTransferActivity = weakReferenceToActivity.get();
if (allFilesReceived) { if (allFilesReceived) {
wifiDirectManager.displayToast(R.string.file_transfer_complete, Toast.LENGTH_LONG); wifiDirectManager.displayToast(R.string.file_transfer_complete, Toast.LENGTH_LONG);
} else { } else {
wifiDirectManager.displayToast(R.string.error_during_transfer, Toast.LENGTH_LONG); wifiDirectManager.displayToast(R.string.error_during_transfer, Toast.LENGTH_LONG);
} }
localFileTransferActivity.finish(); wifiDirectManager.onFileTransferAsyncTaskComplete();
} }
} }

View File

@ -6,7 +6,6 @@ import android.os.AsyncTask;
import android.util.Log; import android.util.Log;
import android.widget.Toast; import android.widget.Toast;
import java.lang.ref.WeakReference;
import org.kiwix.kiwixmobile.BuildConfig; import org.kiwix.kiwixmobile.BuildConfig;
import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.R;
@ -20,7 +19,6 @@ import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.Fil
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectManager.FILE_TRANSFER_PORT; import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectManager.FILE_TRANSFER_PORT;
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectManager.copyToOutputStream; import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectManager.copyToOutputStream;
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectManager.getFileName; import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectManager.getFileName;
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.LocalFileTransferActivity.showToast;
/** /**
* Helper class for the local file sharing module. * Helper class for the local file sharing module.
@ -38,13 +36,12 @@ class SenderDeviceAsyncTask extends AsyncTask<Uri, Integer, Boolean> {
private static final String TAG = "SenderDeviceAsyncTask"; private static final String TAG = "SenderDeviceAsyncTask";
private WeakReference<LocalFileTransferActivity> weakReferenceToActivity;
private WifiDirectManager wifiDirectManager; private WifiDirectManager wifiDirectManager;
private int fileItemIndex = -1; private ContentResolver contentResolver;
public SenderDeviceAsyncTask(WifiDirectManager wifiDirectManager, LocalFileTransferActivity localFileTransferActivity) { public SenderDeviceAsyncTask(WifiDirectManager wifiDirectManager, LocalFileTransferActivity localFileTransferActivity) {
this.weakReferenceToActivity = new WeakReference<>(localFileTransferActivity);
this.wifiDirectManager = wifiDirectManager; this.wifiDirectManager = wifiDirectManager;
this.contentResolver = localFileTransferActivity.getContentResolver();
} }
@Override @Override
@ -59,10 +56,8 @@ class SenderDeviceAsyncTask extends AsyncTask<Uri, Integer, Boolean> {
for(int i = 0; i < 2000000000; i++); for(int i = 0; i < 2000000000; i++);
final LocalFileTransferActivity localFileTransferActivity = weakReferenceToActivity.get(); boolean result = true;
ContentResolver contentResolver = localFileTransferActivity.getContentResolver(); int fileItemIndex = -1;
Boolean result = true;
for(Uri fileUri : fileUris) { // Uri of file to be transferred for(Uri fileUri : fileUris) { // Uri of file to be transferred
fileItemIndex++; fileItemIndex++;
@ -109,7 +104,7 @@ class SenderDeviceAsyncTask extends AsyncTask<Uri, Integer, Boolean> {
wifiDirectManager.changeStatus(fileIndex, fileStatus); wifiDirectManager.changeStatus(fileIndex, fileStatus);
if(fileStatus == ERROR) { if(fileStatus == ERROR) {
wifiDirectManager.displayToast(R.string.error_transferring, getFileName(wifiDirectManager.getFileUriArrayList().get(fileItemIndex)), Toast.LENGTH_SHORT); wifiDirectManager.displayToast(R.string.error_transferring, getFileName(wifiDirectManager.getFileUriArrayList().get(fileIndex)), Toast.LENGTH_SHORT);
} }
} }
@ -119,11 +114,9 @@ class SenderDeviceAsyncTask extends AsyncTask<Uri, Integer, Boolean> {
@Override @Override
protected void onPostExecute(Boolean fileSendSuccessful) { protected void onPostExecute(Boolean fileSendSuccessful) {
final LocalFileTransferActivity localFileTransferActivity = weakReferenceToActivity.get();
if (wifiDirectManager.allFilesSent()) { if (wifiDirectManager.allFilesSent()) {
wifiDirectManager.displayToast(R.string.file_transfer_complete, Toast.LENGTH_SHORT); wifiDirectManager.displayToast(R.string.file_transfer_complete, Toast.LENGTH_SHORT);
localFileTransferActivity.finish();
} }
wifiDirectManager.onFileTransferAsyncTaskComplete();
} }
} }

View File

@ -446,6 +446,10 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
showToast(activity, stringResourceId, duration); showToast(activity, stringResourceId, duration);
} }
public void onFileTransferAsyncTaskComplete() {
((Callbacks) activity).onFileTransferComplete();
}
public interface Callbacks { public interface Callbacks {
void onUserDeviceDetailsAvailable(@Nullable WifiP2pDevice userDevice); void onUserDeviceDetailsAvailable(@Nullable WifiP2pDevice userDevice);
@ -458,5 +462,7 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
void onFilesForTransferAvailable(@NonNull ArrayList<FileItem> filesForTransfer); void onFilesForTransferAvailable(@NonNull ArrayList<FileItem> filesForTransfer);
void onFileStatusChanged(int itemIndex); void onFileStatusChanged(int itemIndex);
void onFileTransferComplete();
} }
} }