Compare commits
2 commits
13962a11d7
...
2f5ebb28f6
Author | SHA1 | Date | |
---|---|---|---|
2f5ebb28f6 | |||
6569ac64b2 |
5 changed files with 44 additions and 12 deletions
|
@ -182,6 +182,29 @@ class MarkdownTests {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun launchWithContentUriTest() = runTest {
|
||||
val markdownText = "# UI Testing\n\nThe quick brown fox jumped over the lazy dog."
|
||||
file.outputStream().writer().use { it.write(markdownText) }
|
||||
val fileUri = FileProvider.getUriForFile(
|
||||
getApplicationContext(),
|
||||
"${BuildConfig.APPLICATION_ID}.fileprovider",
|
||||
file
|
||||
)
|
||||
ActivityScenario.launch<MainActivity>(
|
||||
Intent(
|
||||
Intent.ACTION_VIEW,
|
||||
fileUri,
|
||||
getInstrumentation().targetContext,
|
||||
MainActivity::class.java
|
||||
)
|
||||
)
|
||||
onMainScreen(composeRule) {
|
||||
awaitIdle()
|
||||
checkMarkdownEquals(markdownText)
|
||||
checkTitleEquals("temp.md")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun openEditAndSaveMarkdownTest() = runTest {
|
||||
|
|
|
@ -14,7 +14,6 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
|||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
import kotlinx.coroutines.sync.withLock
|
||||
import kotlinx.coroutines.withContext
|
||||
|
@ -50,9 +49,6 @@ class MarkdownViewModel(
|
|||
private val saveMutex = Mutex()
|
||||
|
||||
init {
|
||||
viewModelScope.launch {
|
||||
load(null)
|
||||
}
|
||||
preferenceHelper.observe<Boolean>(Preference.LOCK_SWIPING)
|
||||
.onEach {
|
||||
_state.value = _state.value.copy(lockSwiping = it)
|
||||
|
|
|
@ -61,6 +61,7 @@ import com.wbrawner.simplemarkdown.MarkdownViewModel
|
|||
import com.wbrawner.simplemarkdown.ParameterizedText
|
||||
import com.wbrawner.simplemarkdown.R
|
||||
import com.wbrawner.simplemarkdown.Route
|
||||
import com.wbrawner.simplemarkdown.utility.activity
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.map
|
||||
|
@ -86,6 +87,10 @@ fun MainScreen(
|
|||
val alert by viewModel.collectAsState(EditorState::alert, null)
|
||||
val saveCallback by viewModel.collectAsState(EditorState::saveCallback, null)
|
||||
val lockSwiping by viewModel.collectAsState(EditorState::lockSwiping, false)
|
||||
val intentData = LocalContext.current.activity?.intent?.data
|
||||
LaunchedEffect(intentData) {
|
||||
viewModel.load(intentData?.toString())
|
||||
}
|
||||
LaunchedEffect(enableAutosave) {
|
||||
if (!enableAutosave) return@LaunchedEffect
|
||||
while (isActive) {
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
package com.wbrawner.simplemarkdown.utility
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.ContextWrapper
|
||||
import android.content.res.AssetManager
|
||||
import android.net.Uri
|
||||
import android.provider.OpenableColumns
|
||||
import android.view.View
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.io.Reader
|
||||
|
@ -22,11 +22,11 @@ suspend fun Uri.getName(context: Context): String {
|
|||
if ("content" == scheme) {
|
||||
withContext(Dispatchers.IO) {
|
||||
context.contentResolver.query(
|
||||
this@getName,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
this@getName,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
)?.use {
|
||||
val nameIndex = it.getColumnIndex(OpenableColumns.DISPLAY_NAME)
|
||||
it.moveToFirst()
|
||||
|
@ -41,3 +41,11 @@ suspend fun Uri.getName(context: Context): String {
|
|||
}
|
||||
return fileName ?: "Untitled.md"
|
||||
}
|
||||
|
||||
@Suppress("RecursivePropertyAccessor")
|
||||
val Context.activity: Activity?
|
||||
get() = when (this) {
|
||||
is Activity -> this
|
||||
is ContextWrapper -> baseContext.activity
|
||||
else -> null
|
||||
}
|
|
@ -1,2 +1,2 @@
|
|||
- Fix files not opening from external apps
|
||||
- Fix opening files from external apps
|
||||
- Update dependencies
|
Loading…
Reference in a new issue