Skip to content

Commit 3537337

Browse files
committed
log press to export log.
1 parent 4f670d8 commit 3537337

File tree

1 file changed

+37
-1
lines changed
  • mobile/src/main/java/com/windscribe/mobile/ui/preferences/debug

1 file changed

+37
-1
lines changed

mobile/src/main/java/com/windscribe/mobile/ui/preferences/debug/DebugScreen.kt

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.windscribe.mobile.ui.preferences.debug
22

33
import PreferencesNavBar
4+
import android.content.Context
5+
import android.content.Intent
6+
import android.net.Uri
7+
import androidx.compose.foundation.combinedClickable
48
import androidx.compose.foundation.layout.Column
59
import androidx.compose.foundation.layout.Spacer
610
import androidx.compose.foundation.layout.height
@@ -16,9 +20,12 @@ import androidx.compose.runtime.getValue
1620
import androidx.compose.runtime.mutableStateOf
1721
import androidx.compose.runtime.remember
1822
import androidx.compose.ui.Modifier
23+
import androidx.compose.ui.platform.LocalContext
1924
import androidx.compose.ui.res.stringResource
2025
import androidx.compose.ui.text.style.TextAlign
2126
import androidx.compose.ui.unit.dp
27+
import androidx.core.content.FileProvider
28+
import androidx.navigation.NavController
2229
import com.windscribe.mobile.ui.common.PreferenceBackground
2330
import com.windscribe.mobile.ui.common.PreferenceProgressBar
2431
import com.windscribe.mobile.ui.helper.MultiDevicePreview
@@ -27,10 +34,14 @@ import com.windscribe.mobile.ui.nav.LocalNavController
2734
import com.windscribe.mobile.ui.theme.font12
2835
import com.windscribe.mobile.ui.theme.primaryTextColor
2936
import com.windscribe.vpn.R
37+
import com.windscribe.vpn.Windscribe.Companion.appContext
38+
import com.windscribe.vpn.constants.PreferencesKeyConstants
39+
import java.io.File
3040

3141
@Composable
3242
fun DebugScreen(viewModel: DebugViewModel? = null) {
3343
val navController = LocalNavController.current
44+
val context = LocalContext.current
3445
val debugLog by viewModel?.debugLog?.collectAsState()
3546
?: remember { mutableStateOf(emptyList()) }
3647
val showProgress by viewModel?.showProgress?.collectAsState()
@@ -48,7 +59,12 @@ fun DebugScreen(viewModel: DebugViewModel? = null) {
4859
listState.scrollToItem(debugLog.size - 1)
4960
}
5061
}
51-
LazyColumn(state = listState) {
62+
LazyColumn(state = listState, modifier = Modifier.combinedClickable(
63+
onClick = {},
64+
onLongClick = {
65+
exportLog(context)
66+
}
67+
)) {
5268
items(debugLog.size) {
5369
Text(
5470
debugLog[it],
@@ -63,6 +79,26 @@ fun DebugScreen(viewModel: DebugViewModel? = null) {
6379
}
6480
}
6581

82+
private fun exportLog(context: Context) {
83+
val logFile = File(appContext.cacheDir.path + PreferencesKeyConstants.DEBUG_LOG_FILE_NAME)
84+
if (logFile.exists()) {
85+
val fileUri: Uri = FileProvider.getUriForFile(
86+
context,
87+
"com.windscribe.vpn.provider",
88+
logFile
89+
)
90+
val shareIntent = Intent(Intent.ACTION_SEND).apply {
91+
type = "text/plain"
92+
putExtra(Intent.EXTRA_STREAM, fileUri)
93+
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
94+
}
95+
val chooser = Intent.createChooser(shareIntent, "Export Log File")
96+
if (shareIntent.resolveActivity(context.packageManager) != null) {
97+
context.startActivity(chooser)
98+
}
99+
}
100+
}
101+
66102
@Composable
67103
@MultiDevicePreview
68104
private fun DebugScreenPreview() {

0 commit comments

Comments
 (0)