diff --git a/.gitignore b/.gitignore index 007f6af..0ff128a 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ xcuserdata /module/network/ktor3/schemas/* /sample/shared/schemas/* /.gradle-home/* +/.refact/* diff --git a/module/logging/logging/src/androidMain/kotlin/ru/bartwell/kick/module/logging/feature/table/util/LaunchUtils.kt b/module/logging/logging/src/androidMain/kotlin/ru/bartwell/kick/module/logging/feature/table/util/LaunchUtils.kt index 786da57..46b9727 100644 --- a/module/logging/logging/src/androidMain/kotlin/ru/bartwell/kick/module/logging/feature/table/util/LaunchUtils.kt +++ b/module/logging/logging/src/androidMain/kotlin/ru/bartwell/kick/module/logging/feature/table/util/LaunchUtils.kt @@ -21,6 +21,7 @@ internal actual object LaunchUtils { private const val SHARE_FILE_NAME = "android.log" private const val SHARE_TEXT_TITLE = "Share logs as text" private const val SHARE_FILE_TITLE = "Share logs as file" + private const val MAX_SHARE_TEXT_CHARS = 120_000 internal actual fun canCopyLogs(): Boolean = true internal actual fun canSaveLogsToFile(): Boolean = true @@ -57,6 +58,10 @@ internal actual object LaunchUtils { internal actual fun shareLogsAsText(context: PlatformContext, logs: List) { val androidContext = context.get() val text = logs.joinToString(separator = "\n") { it.toLogString() } + if (text.length > MAX_SHARE_TEXT_CHARS) { + shareLogsAsFile(context = context, logs = logs) + return + } Intent(Intent.ACTION_SEND).apply { type = LOG_MIME_TYPE putExtra(Intent.EXTRA_TEXT, text) diff --git a/module/logging/logging/src/commonMain/kotlin/ru/bartwell/kick/module/logging/feature/table/presentation/LogViewerContent.kt b/module/logging/logging/src/commonMain/kotlin/ru/bartwell/kick/module/logging/feature/table/presentation/LogViewerContent.kt index e7ca3f7..796f270 100644 --- a/module/logging/logging/src/commonMain/kotlin/ru/bartwell/kick/module/logging/feature/table/presentation/LogViewerContent.kt +++ b/module/logging/logging/src/commonMain/kotlin/ru/bartwell/kick/module/logging/feature/table/presentation/LogViewerContent.kt @@ -7,6 +7,7 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ClearAll import androidx.compose.material.icons.filled.FileDownload @@ -91,12 +92,14 @@ internal fun LogViewerContent( LabelsBar(component = component, state = state) } ErrorBox(modifier = Modifier.fillMaxSize(), error = state.error) { - LazyColumn( - state = listState, - modifier = Modifier.fillMaxSize().testTag("log_list"), - ) { - items(state.log) { item -> - Item(item) + SelectionContainer { + LazyColumn( + state = listState, + modifier = Modifier.fillMaxSize().testTag("log_list"), + ) { + items(state.log) { item -> + Item(item) + } } } }