|
@@ -14,19 +14,22 @@ import androidx.lifecycle.lifecycleScope
|
|
|
import com.doverfuelingsolutions.issp.R
|
|
import com.doverfuelingsolutions.issp.R
|
|
|
import com.doverfuelingsolutions.issp.api.FuelInfoApi
|
|
import com.doverfuelingsolutions.issp.api.FuelInfoApi
|
|
|
import com.doverfuelingsolutions.issp.api.SystemApi
|
|
import com.doverfuelingsolutions.issp.api.SystemApi
|
|
|
-import com.doverfuelingsolutions.issp.bugly.BuglyUtil
|
|
|
|
|
|
|
+import com.doverfuelingsolutions.issp.api.WayneApiConfig
|
|
|
|
|
+import com.doverfuelingsolutions.issp.api.dto.DFSResult
|
|
|
|
|
+import com.doverfuelingsolutions.issp.api.ftp.WayneFTPClient
|
|
|
import com.doverfuelingsolutions.issp.data.GlobalData
|
|
import com.doverfuelingsolutions.issp.data.GlobalData
|
|
|
import com.doverfuelingsolutions.issp.databinding.ActivityPreferenceBinding
|
|
import com.doverfuelingsolutions.issp.databinding.ActivityPreferenceBinding
|
|
|
-import com.doverfuelingsolutions.issp.utils.AppUtil
|
|
|
|
|
-import com.doverfuelingsolutions.issp.utils.DFSToastUtil
|
|
|
|
|
-import com.doverfuelingsolutions.issp.utils.StringUtil
|
|
|
|
|
-import com.doverfuelingsolutions.issp.utils.WindowUtil
|
|
|
|
|
|
|
+import com.doverfuelingsolutions.issp.utils.*
|
|
|
import com.doverfuelingsolutions.issp.utils.log.DFSLog
|
|
import com.doverfuelingsolutions.issp.utils.log.DFSLog
|
|
|
import com.doverfuelingsolutions.issp.utils.sp.SPKeys
|
|
import com.doverfuelingsolutions.issp.utils.sp.SPKeys
|
|
|
import com.doverfuelingsolutions.issp.utils.sp.SPUtil
|
|
import com.doverfuelingsolutions.issp.utils.sp.SPUtil
|
|
|
import com.doverfuelingsolutions.issp.view.fragment.FragmentPreference
|
|
import com.doverfuelingsolutions.issp.view.fragment.FragmentPreference
|
|
|
import com.tencent.bugly.beta.Beta
|
|
import com.tencent.bugly.beta.Beta
|
|
|
|
|
+import kotlinx.coroutines.Dispatchers
|
|
|
|
|
+import kotlinx.coroutines.GlobalScope
|
|
|
import kotlinx.coroutines.launch
|
|
import kotlinx.coroutines.launch
|
|
|
|
|
+import java.io.File
|
|
|
|
|
+import kotlin.coroutines.resume
|
|
|
|
|
|
|
|
class PreferenceActivity : AppCompatActivity(),
|
|
class PreferenceActivity : AppCompatActivity(),
|
|
|
View.OnClickListener {
|
|
View.OnClickListener {
|
|
@@ -126,6 +129,7 @@ class PreferenceActivity : AppCompatActivity(),
|
|
|
GlobalData.accessTokenExpire.set(0L)
|
|
GlobalData.accessTokenExpire.set(0L)
|
|
|
LoginActivity.start(this, bundleOf(Pair(LoginActivity.autoLogin, false)))
|
|
LoginActivity.start(this, bundleOf(Pair(LoginActivity.autoLogin, false)))
|
|
|
}
|
|
}
|
|
|
|
|
+ binding.uploadLog -> uploadLog()
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -189,6 +193,52 @@ class PreferenceActivity : AppCompatActivity(),
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private fun uploadLog() {
|
|
|
|
|
+ viewModel.isSubmitting.value = true
|
|
|
|
|
+ GlobalScope.launch(Dispatchers.IO) {
|
|
|
|
|
+ val localFiles = File(DFSLog.folder).listFiles { file -> file.isFile && file.extension.isEmpty() }
|
|
|
|
|
+ if (localFiles.isNullOrEmpty()) {
|
|
|
|
|
+ DFSToastUtil.fail(R.string.no_log)
|
|
|
|
|
+ return@launch
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ val failList = arrayListOf<String>()
|
|
|
|
|
+ val mWayneFTPClient = WayneFTPClient(WayneApiConfig.DOMAIN_DEFAULT.replace("http://", ""), "androidPos", "111111")
|
|
|
|
|
+ val remoteFolder = "/isspt/log/${DeviceUtil.generateSerialNumber()}"
|
|
|
|
|
+ mWayneFTPClient.connect()
|
|
|
|
|
+ localFiles.forEach {
|
|
|
|
|
+ val zipFilePath = "${it.absolutePath}.zip"
|
|
|
|
|
+ val resultZip = ZipUtils.buildZip(it.absolutePath, zipFilePath, true)
|
|
|
|
|
+ if (resultZip) {
|
|
|
|
|
+ val zipFile = File(zipFilePath)
|
|
|
|
|
+ val resultUpload = mWayneFTPClient.uploadFile(zipFile, remoteFolder)
|
|
|
|
|
+ zipFile.delete()
|
|
|
|
|
+
|
|
|
|
|
+ if (!resultUpload) failList.add(it.name)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ failList.add(it.name)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ mWayneFTPClient.close()
|
|
|
|
|
+
|
|
|
|
|
+ lifecycleScope.launch {
|
|
|
|
|
+ viewModel.isSubmitting.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ when {
|
|
|
|
|
+ localFiles.size == failList.size -> {
|
|
|
|
|
+ DFSToastUtil.fail(R.string.log_upload_fail)
|
|
|
|
|
+ }
|
|
|
|
|
+ failList.isNotEmpty() -> {
|
|
|
|
|
+ DFSToastUtil.success(StringUtil.get(R.string.log_upload_fail_partly, failList.joinToString(", ")))
|
|
|
|
|
+ }
|
|
|
|
|
+ else -> {
|
|
|
|
|
+ DFSToastUtil.success(R.string.log_upload_done)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
class PreferenceViewModel : ViewModel() {
|
|
class PreferenceViewModel : ViewModel() {
|
|
|
val isSubmitting = MutableLiveData(false)
|
|
val isSubmitting = MutableLiveData(false)
|
|
|
}
|
|
}
|