mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-17 11:25:34 -04:00
#1351 cleaned code
This commit is contained in:
parent
6c2317db59
commit
eda5db38d6
@ -45,7 +45,7 @@ class ReceiverHandShake(private val wifiDirectManager: WifiDirectManager, groupI
|
|||||||
FileItem(fileName = fileName)
|
FileItem(fileName = fileName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wifiDirectManager.setFilesForTransfer(fileItems.toList())
|
wifiDirectManager.setFilesForTransfer(fileItems)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
|
@ -47,14 +47,13 @@ import java.net.Socket
|
|||||||
private const val TIME_OUT = 15000
|
private const val TIME_OUT = 15000
|
||||||
|
|
||||||
internal class SenderDevice(
|
internal class SenderDevice(
|
||||||
activity: Activity,
|
var activity: Activity,
|
||||||
private val wifiDirectManager: WifiDirectManager,
|
private val wifiDirectManager: WifiDirectManager,
|
||||||
val fileReceiverDeviceAddress: InetAddress
|
private val fileReceiverDeviceAddress: InetAddress
|
||||||
) {
|
) {
|
||||||
private val contentResolver: ContentResolver = activity.contentResolver
|
suspend fun send(fileItems: List<FileItem?>) = withContext(Dispatchers.IO) {
|
||||||
private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO
|
// Delay trying to connect with receiver, to allow slow receiver devices to setup server
|
||||||
suspend fun send(fileItems: List<FileItem?>) = withContext(ioDispatcher) {
|
delay(FOR_SLOW_RECEIVER)
|
||||||
delayForSlowReceiverDevicesToSetupServer()
|
|
||||||
val hostAddress =
|
val hostAddress =
|
||||||
fileReceiverDeviceAddress.hostAddress
|
fileReceiverDeviceAddress.hostAddress
|
||||||
var isTransferErrorFree = true
|
var isTransferErrorFree = true
|
||||||
@ -63,7 +62,7 @@ internal class SenderDevice(
|
|||||||
.forEachIndexed { fileIndex, fileItem ->
|
.forEachIndexed { fileIndex, fileItem ->
|
||||||
try {
|
try {
|
||||||
Socket().use { socket ->
|
Socket().use { socket ->
|
||||||
contentResolver.openInputStream(fileItem?.fileUri!!).use { fileInputStream ->
|
activity.contentResolver.openInputStream(fileItem?.fileUri!!).use { fileInputStream ->
|
||||||
socket.bind(null)
|
socket.bind(null)
|
||||||
socket.connect(
|
socket.connect(
|
||||||
InetSocketAddress(hostAddress, WifiDirectManager.FILE_TRANSFER_PORT),
|
InetSocketAddress(hostAddress, WifiDirectManager.FILE_TRANSFER_PORT),
|
||||||
@ -85,7 +84,7 @@ internal class SenderDevice(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return@withContext isTransferErrorFree
|
isTransferErrorFree
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun publishProgress(fileIndex: Int, fileStatus: FileItem.FileStatus) {
|
private suspend fun publishProgress(fileIndex: Int, fileStatus: FileItem.FileStatus) {
|
||||||
@ -94,13 +93,8 @@ internal class SenderDevice(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("MagicNumber")
|
|
||||||
private suspend fun delayForSlowReceiverDevicesToSetupServer() {
|
|
||||||
// Delay trying to connect with receiver, to allow slow receiver devices to setup server
|
|
||||||
delay(3000)
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "SenderDeviceAsyncTask"
|
private const val TAG = "SenderDeviceAsyncTask"
|
||||||
|
private const val FOR_SLOW_RECEIVER: Long = 3000
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -219,11 +219,11 @@ class WifiDirectManager @Inject constructor(
|
|||||||
Log.d(TAG, "Starting handshake")
|
Log.d(TAG, "Starting handshake")
|
||||||
}
|
}
|
||||||
lifecycleCoroutineScope.launch {
|
lifecycleCoroutineScope.launch {
|
||||||
val peerGroupHandshake = if (isFileSender) {
|
val peerGroupHandshake = if (isFileSender)
|
||||||
SenderHandShake(this@WifiDirectManager, groupInfo)
|
SenderHandShake(this@WifiDirectManager, groupInfo)
|
||||||
} else {
|
else
|
||||||
ReceiverHandShake(this@WifiDirectManager, groupInfo)
|
ReceiverHandShake(this@WifiDirectManager, groupInfo)
|
||||||
}
|
|
||||||
val inetAddress = peerGroupHandshake.handshake()
|
val inetAddress = peerGroupHandshake.handshake()
|
||||||
if (inetAddress != null) {
|
if (inetAddress != null) {
|
||||||
startFileTransfer(groupInfo, inetAddress)
|
startFileTransfer(groupInfo, inetAddress)
|
||||||
@ -248,7 +248,7 @@ class WifiDirectManager @Inject constructor(
|
|||||||
|
|
||||||
val zimStorageRootPath get() = sharedPreferenceUtil.prefStorage + "/Kiwix/"
|
val zimStorageRootPath get() = sharedPreferenceUtil.prefStorage + "/Kiwix/"
|
||||||
|
|
||||||
private fun startFileTransfer(groupInfo: WifiP2pInfo, inetAddress: InetAddress) {
|
private suspend fun startFileTransfer(groupInfo: WifiP2pInfo, inetAddress: InetAddress) {
|
||||||
if (groupInfo.groupFormed) {
|
if (groupInfo.groupFormed) {
|
||||||
if (isFileSender) {
|
if (isFileSender) {
|
||||||
Log.d(LocalFileTransferFragment.TAG, "Starting file transfer")
|
Log.d(LocalFileTransferFragment.TAG, "Starting file transfer")
|
||||||
@ -256,17 +256,14 @@ class WifiDirectManager @Inject constructor(
|
|||||||
if (groupInfo.isGroupOwner) inetAddress else groupInfo.groupOwnerAddress
|
if (groupInfo.isGroupOwner) inetAddress else groupInfo.groupOwnerAddress
|
||||||
activity.toast(R.string.preparing_files, Toast.LENGTH_LONG)
|
activity.toast(R.string.preparing_files, Toast.LENGTH_LONG)
|
||||||
val senderDevice = SenderDevice(activity, this, fileReceiverDeviceAddress)
|
val senderDevice = SenderDevice(activity, this, fileReceiverDeviceAddress)
|
||||||
lifecycleCoroutineScope.launch {
|
|
||||||
val isFileSendSuccessfully = senderDevice.send(filesForTransfer)
|
val isFileSendSuccessfully = senderDevice.send(filesForTransfer)
|
||||||
onFileTransferAsyncTaskComplete(isFileSendSuccessfully)
|
onFileTransferAsyncTaskComplete(isFileSendSuccessfully)
|
||||||
if (BuildConfig.DEBUG) {
|
if (BuildConfig.DEBUG) {
|
||||||
Log.d(TAG, "SenderDevice completed $isFileSendSuccessfully")
|
Log.d(TAG, "SenderDevice completed $isFileSendSuccessfully")
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
callbacks?.onFilesForTransferAvailable(filesForTransfer)
|
callbacks?.onFilesForTransferAvailable(filesForTransfer)
|
||||||
val receiverDevice = ReceiverDevice(this)
|
val receiverDevice = ReceiverDevice(this)
|
||||||
lifecycleCoroutineScope.launch {
|
|
||||||
val isReceivedFileSuccessFully = receiverDevice.receive()
|
val isReceivedFileSuccessFully = receiverDevice.receive()
|
||||||
onFileTransferAsyncTaskComplete(isReceivedFileSuccessFully)
|
onFileTransferAsyncTaskComplete(isReceivedFileSuccessFully)
|
||||||
if (BuildConfig.DEBUG) {
|
if (BuildConfig.DEBUG) {
|
||||||
@ -275,7 +272,6 @@ class WifiDirectManager @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
fun changeStatus(itemIndex: Int, status: FileStatus) {
|
fun changeStatus(itemIndex: Int, status: FileStatus) {
|
||||||
filesForTransfer[itemIndex].fileStatus = status
|
filesForTransfer[itemIndex].fileStatus = status
|
||||||
|
Loading…
x
Reference in New Issue
Block a user