Refactor WifiDirectManager

- Use displayToast() instead of showToast() within WDM (per DRY principle)
- Add onFileTransferAsyncTaskComplete() method for async-tasks to inform WDM post their completion
- Add `wereAllFilesTransferred` status variable
This commit is contained in:
Aditya-Sood 2019-08-04 17:59:18 +05:30
parent 39afa4b830
commit 2d20ac07eb
4 changed files with 24 additions and 32 deletions

View File

@ -247,7 +247,7 @@ public class LocalFileTransferActivity extends AppCompatActivity implements
} }
@Override @Override
public void onFileTransferComplete() { public void onFileTransferComplete(boolean wereAllFilesTransferred) {
finish(); finish();
} }

View File

@ -109,15 +109,8 @@ class ReceiverDeviceAsyncTask extends AsyncTask<Void, Integer, Boolean> {
} }
@Override @Override
protected void onPostExecute(Boolean allFilesReceived) { protected void onPostExecute(Boolean wereAllFilesTransferred) {
if (BuildConfig.DEBUG) Log.d(TAG, "File transfer complete"); if (BuildConfig.DEBUG) Log.d(TAG, "ReceiverDeviceAsyncTask complete");
wifiDirectManager.onFileTransferAsyncTaskComplete(wereAllFilesTransferred);
if (allFilesReceived) {
wifiDirectManager.displayToast(R.string.file_transfer_complete, Toast.LENGTH_LONG);
} else {
wifiDirectManager.displayToast(R.string.error_during_transfer, Toast.LENGTH_LONG);
}
wifiDirectManager.onFileTransferAsyncTaskComplete();
} }
} }

View File

@ -113,10 +113,8 @@ class SenderDeviceAsyncTask extends AsyncTask<Uri, Integer, Boolean> {
} }
@Override @Override
protected void onPostExecute(Boolean fileSendSuccessful) { protected void onPostExecute(Boolean wereAllFilesTransferred) {
if (wifiDirectManager.allFilesSent()) { if (BuildConfig.DEBUG) Log.d(TAG, "SenderDeviceAsyncTask complete");
wifiDirectManager.displayToast(R.string.file_transfer_complete, Toast.LENGTH_SHORT); wifiDirectManager.onFileTransferAsyncTaskComplete(wereAllFilesTransferred);
}
wifiDirectManager.onFileTransferAsyncTaskComplete();
} }
} }

View File

@ -118,17 +118,14 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
manager.discoverPeers(channel, new WifiP2pManager.ActionListener() { manager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
@Override @Override
public void onSuccess() { public void onSuccess() {
showToast(activity, R.string.discovery_initiated, displayToast(R.string.discovery_initiated, Toast.LENGTH_SHORT);
Toast.LENGTH_SHORT);
} }
@Override @Override
public void onFailure(int reason) { public void onFailure(int reason) {
String errorMessage = getErrorMessage(reason); String errorMessage = getErrorMessage(reason);
Log.d(TAG, activity.getString(R.string.discovery_failed) + ": " + errorMessage); Log.d(TAG, activity.getString(R.string.discovery_failed) + ": " + errorMessage);
showToast(activity, displayToast(R.string.discovery_failed, Toast.LENGTH_SHORT);
activity.getString(R.string.discovery_failed),
Toast.LENGTH_SHORT);
} }
}); });
} }
@ -138,7 +135,7 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
this.wifiP2pEnabled = wifiP2pEnabled; this.wifiP2pEnabled = wifiP2pEnabled;
if(wifiP2pEnabled == false) { if(wifiP2pEnabled == false) {
showToast(activity, R.string.discovery_needs_wifi, Toast.LENGTH_SHORT); displayToast(R.string.discovery_needs_wifi, Toast.LENGTH_SHORT);
((Callbacks) activity).clearListOfAvailablePeers(); ((Callbacks) activity).clearListOfAvailablePeers();
} }
} }
@ -171,7 +168,7 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
retryChannel = true; retryChannel = true;
manager.initialize(activity, getMainLooper(), this); manager.initialize(activity, getMainLooper(), this);
} else { } else {
showToast(activity, R.string.severe_loss_error, Toast.LENGTH_LONG); displayToast(R.string.severe_loss_error, Toast.LENGTH_LONG);
} }
} }
@ -214,7 +211,7 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
@Override public Unit invoke() { @Override public Unit invoke() {
((Callbacks) activity).onSenderStartedConnection(); ((Callbacks) activity).onSenderStartedConnection();
connect(); connect();
showToast(activity, R.string.performing_handshake, Toast.LENGTH_LONG); displayToast(R.string.performing_handshake, Toast.LENGTH_LONG);
return Unit.INSTANCE; return Unit.INSTANCE;
} }
}); });
@ -239,8 +236,7 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
public void onFailure(int reason) { public void onFailure(int reason) {
String errorMessage = getErrorMessage(reason); String errorMessage = getErrorMessage(reason);
Log.d(TAG, activity.getString(R.string.connection_failed) + ": " + errorMessage); Log.d(TAG, activity.getString(R.string.connection_failed) + ": " + errorMessage);
showToast(activity, activity.getString(R.string.connection_failed), displayToast(R.string.connection_failed, Toast.LENGTH_LONG);
Toast.LENGTH_LONG);
} }
}); });
} }
@ -312,8 +308,8 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
public void setClientAddress(@Nullable InetAddress clientAddress) { public void setClientAddress(@Nullable InetAddress clientAddress) {
if (clientAddress == null) { if (clientAddress == null) {
// null is returned only in case of a failed handshake // null is returned only in case of a failed handshake
showToast(activity, R.string.device_not_cooperating, Toast.LENGTH_LONG); displayToast(R.string.device_not_cooperating, Toast.LENGTH_LONG);
activity.finish(); ((Callbacks) activity).onFileTransferComplete(false);
return; return;
} }
@ -336,7 +332,7 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
fileReceiverDeviceAddress = fileReceiverDeviceAddress =
(isGroupOwner()) ? selectedPeerDeviceInetAddress : getGroupOwnerAddress(); (isGroupOwner()) ? selectedPeerDeviceInetAddress : getGroupOwnerAddress();
showToast(activity, R.string.preparing_files, Toast.LENGTH_LONG); displayToast(R.string.preparing_files, Toast.LENGTH_LONG);
senderDeviceAsyncTaskArray = new SenderDeviceAsyncTask(this, activity); senderDeviceAsyncTaskArray = new SenderDeviceAsyncTask(this, activity);
senderDeviceAsyncTaskArray.execute(fileUriArrayList.toArray(new Uri[0])); senderDeviceAsyncTaskArray.execute(fileUriArrayList.toArray(new Uri[0]));
} }
@ -443,8 +439,13 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
showToast(activity, stringResourceId, duration); showToast(activity, stringResourceId, duration);
} }
public void onFileTransferAsyncTaskComplete() { public void onFileTransferAsyncTaskComplete(boolean wereAllFilesTransferred) {
((Callbacks) activity).onFileTransferComplete(); if (wereAllFilesTransferred) {
displayToast(R.string.file_transfer_complete, Toast.LENGTH_LONG);
} else {
displayToast(R.string.error_during_transfer, Toast.LENGTH_LONG);
}
((Callbacks) activity).onFileTransferComplete(wereAllFilesTransferred);
} }
public interface Callbacks { public interface Callbacks {
@ -460,6 +461,6 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
void onFileStatusChanged(int itemIndex); void onFileStatusChanged(int itemIndex);
void onFileTransferComplete(); void onFileTransferComplete(boolean wereAllFilesTransferred);
} }
} }