Skip to content

Commit

Permalink
refactor(feature_crash_handler): use share file extension function fo…
Browse files Browse the repository at this point in the history
…r reusability
  • Loading branch information
dead8309 committed Aug 4, 2023
1 parent 9f453b7 commit ffea387
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 22 deletions.
23 changes: 23 additions & 0 deletions data/src/main/java/com/my/kizzy/data/utils/Ext.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,19 @@ package com.my.kizzy.data.utils

import android.content.ContentResolver
import android.content.Context
import android.content.Intent
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.graphics.Canvas
import android.net.Uri
import android.util.DisplayMetrics
import android.webkit.MimeTypeMap
import androidx.core.app.ShareCompat
import androidx.core.content.FileProvider
import com.blankj.utilcode.util.AppUtils
import com.blankj.utilcode.util.FileIOUtils
import com.blankj.utilcode.util.FileUtils
import com.my.kizzy.data.remote.ApiResponse
import com.my.kizzy.data.rpc.RpcImage
import com.my.kizzy.preference.Prefs
Expand Down Expand Up @@ -115,4 +120,22 @@ fun Context.uriToFile(uri: Uri): File {
}
}
return file
}

fun Context.shareAsFile(content: String?, fileName: String) {
val tempFile = File("$filesDir/$fileName")
if (FileUtils.isFileExists(tempFile)) {
FileUtils.delete(tempFile)
}
FileIOUtils.writeFileFromString(tempFile, content)
shareFile(tempFile)
}

fun Context.shareFile(file: File?) {
if (file == null) return
val uri = FileProvider.getUriForFile(this, "com.my.kizzy.provider", file)
val intent = ShareCompat.IntentBuilder(this).setType("text/plain")
.setStream(uri).intent.setAction(Intent.ACTION_SEND).setDataAndType(uri, "text/*")
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
this.startActivity(Intent.createChooser(intent, "Share File With"))
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,27 +12,34 @@

package com.my.kizzy.feature_crash_handler

import android.content.Intent
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.Share
import androidx.compose.material.icons.outlined.Close
import androidx.compose.material3.*
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.ElevatedCard
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ExtendedFloatingActionButton
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.app.ShareCompat
import androidx.core.content.FileProvider
import com.blankj.utilcode.util.FileIOUtils
import com.blankj.utilcode.util.FileUtils
import com.my.kizzy.data.utils.shareAsFile
import com.my.kizzy.resources.R
import java.io.File
import kotlin.system.exitProcess

@OptIn(ExperimentalMaterial3Api::class)
Expand All @@ -57,20 +64,7 @@ fun CrashScreen(trace: String?) {
})
}, floatingActionButton = {
ExtendedFloatingActionButton(onClick = {
val file = File(ctx.filesDir.toString() + "/" + "Kizzy_Log.txt")
if (FileUtils.isFileExists(file)) {
FileUtils.delete(file)
}
FileIOUtils.writeFileFromString(file, trace)
val uri = FileProvider.getUriForFile(
ctx,
"com.my.kizzy.provider",
file
)
val intent = ShareCompat.IntentBuilder(ctx).setType("text/plain")
.setStream(uri).intent.setAction(Intent.ACTION_SEND).setDataAndType(uri, "text/*")
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
ctx.startActivity(Intent.createChooser(intent, "Share File With"))
ctx.shareAsFile(trace, "Kizzy_Log.txt")
}) {
Icon(
imageVector = Icons.Default.Share,
Expand Down

0 comments on commit ffea387

Please sign in to comment.