diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt index e23f2776..7924c8e5 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt @@ -247,7 +247,10 @@ class ComposeActivity : setupContentWarningField(composeOptions?.contentWarning) setupPollView() applyShareIntent(intent, savedInstanceState) - viewModel.setupComplete.value = true + + binding.composeEditField.post { + binding.composeEditField.requestFocus() + } } private fun applyShareIntent(intent: Intent, savedInstanceState: Bundle?) { @@ -431,13 +434,6 @@ class ComposeActivity : } } } - - lifecycleScope.launch { - viewModel.setupComplete.collect { - // Focus may have changed during view model setup, ensure initial focus is on the edit field - binding.composeEditField.requestFocus() - } - } } private fun setupButtons() { diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeViewModel.kt index 95b6589c..564c1551 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeViewModel.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeViewModel.kt @@ -89,7 +89,6 @@ class ComposeViewModel @Inject constructor( val statusVisibility: MutableStateFlow = MutableStateFlow(Status.Visibility.UNKNOWN) val showContentWarning: MutableStateFlow = MutableStateFlow(false) - val setupComplete: MutableStateFlow = MutableStateFlow(false) val poll: MutableStateFlow = MutableStateFlow(null) val scheduledAt: MutableStateFlow = MutableStateFlow(null) @@ -101,6 +100,8 @@ class ComposeViewModel @Inject constructor( // Used in ComposeActivity to pass state to result function when cropImage contract inflight var cropImageItemOld: QueuedMedia? = null + private var setupComplete = false + suspend fun pickMedia(mediaUri: Uri, description: String? = null): Result = withContext(Dispatchers.IO) { try { val (type, uri, size) = mediaUploader.prepareMedia(mediaUri, instanceInfo.first()) @@ -380,7 +381,7 @@ class ComposeViewModel @Inject constructor( fun setup(composeOptions: ComposeActivity.ComposeOptions?) { - if (setupComplete.value) { + if (setupComplete) { return } @@ -452,6 +453,8 @@ class ComposeViewModel @Inject constructor( } replyingStatusContent = composeOptions?.replyingStatusContent replyingStatusAuthor = composeOptions?.replyingStatusAuthor + + setupComplete = true } fun updatePoll(newPoll: NewPoll) {