Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 20 additions & 5 deletions feature/post/src/main/java/com/conf/mad/todo/post/PostScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
@file:OptIn(ExperimentalComposeUiApi::class)

package com.conf.mad.todo.post

import androidx.compose.foundation.background
Expand All @@ -33,7 +35,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
Expand All @@ -46,6 +50,7 @@ import com.conf.mad.todo.designsystem.preview.DevicePreview
import com.conf.mad.todo.post.component.AddTaskTopAppBar
import com.conf.mad.todo.post.component.TaskTextField
import com.conf.mad.todo.task.model.Task
import com.conf.mad.todo.ui.noRippleClickable

const val POST_SCREEN_ROUTE = "post"
const val POST_SCREEN_TASK_ID_ARGS = "id"
Expand All @@ -70,6 +75,7 @@ fun PostScreen(
viewModel: PostViewModel = hiltViewModel()
) {
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
val focusManager = LocalFocusManager.current
PostScreen(
title = uiState.title,
description = uiState.description,
Expand All @@ -78,7 +84,8 @@ fun PostScreen(
onCancel = onCancel,
onComplete = viewModel::onCreateNewTask,
onTitleChanged = viewModel::onTitleChanged,
onDescriptionChanged = viewModel::onDescriptionChanged
onDescriptionChanged = viewModel::onDescriptionChanged,
onKeyboardHide = { focusManager.clearFocus() }
)
LaunchedEffect(uiState.isSaved) {
if (uiState.isSaved) {
Expand All @@ -96,22 +103,30 @@ fun PostScreen(
onCancel: () -> Unit,
onComplete: () -> Unit,
onTitleChanged: (String) -> Unit,
onDescriptionChanged: (String) -> Unit
onDescriptionChanged: (String) -> Unit,
onKeyboardHide: () -> Unit = {}
) {
val isPostEnabled = remember(title) {
title.isNotBlank()
}
Scaffold(
modifier = Modifier
.fillMaxSize()
.background(TodoTheme.colors.surface),
.background(TodoTheme.colors.surface)
.noRippleClickable(onKeyboardHide),
topBar = {
AddTaskTopAppBar(
isFavorite = isFavorite,
isPostEnabled = isPostEnabled,
onPressFavorite = onFavoritePressed,
onCancel = onCancel,
onComplete = onComplete
onCancel = {
onKeyboardHide()
onCancel()
},
onComplete = {
onKeyboardHide()
onComplete()
}
)
}
) { paddingValues ->
Expand Down