diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt index f8a219a..e15a143 100644 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt +++ b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt @@ -5,7 +5,7 @@ class BookListContract { sealed class UIEvent { - data class Click(val bookId: Int) : UIEvent() + data class Click(val bookId: String?) : UIEvent() } sealed class State { diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt index f8a219a..e15a143 100644 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt +++ b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt @@ -5,7 +5,7 @@ class BookListContract { sealed class UIEvent { - data class Click(val bookId: Int) : UIEvent() + data class Click(val bookId: String?) : UIEvent() } sealed class State { diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListScreen.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListScreen.kt index efbd78a..cd98638 100644 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListScreen.kt +++ b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListScreen.kt @@ -1,16 +1,20 @@ package fr.tf1.player.atelierplayermvvm.ui.list import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.MutableState import androidx.compose.runtime.State import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @Composable -fun BookListScreen(viewState: State) { +fun BookListScreen( + viewState: State, + onUiEvent: (event: BookListContract.UIEvent) -> Unit +) { when (viewState.value) { is BookListContract.State.Loading -> { //show loader @@ -21,14 +25,21 @@ items( count = (viewState.value as BookListContract.State.Completed).bookList.size, itemContent = { index -> - Text( - text = (viewState.value as BookListContract.State.Completed).bookList[index].bookName - ?: "" - ) - Text( - text = (viewState.value as BookListContract.State.Completed).bookList[index].bookDesc - ?: "" - ) + val book = + (viewState.value as BookListContract.State.Completed).bookList[index] + Column(modifier = Modifier.clickable { + onUiEvent(BookListContract.UIEvent.Click(book.id)) + }) { + Text( + text = book.bookName + ?: "" + ) + Text( + text = book.bookDesc + ?: "" + ) + } + }) } } diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt index f8a219a..e15a143 100644 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt +++ b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt @@ -5,7 +5,7 @@ class BookListContract { sealed class UIEvent { - data class Click(val bookId: Int) : UIEvent() + data class Click(val bookId: String?) : UIEvent() } sealed class State { diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListScreen.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListScreen.kt index efbd78a..cd98638 100644 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListScreen.kt +++ b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListScreen.kt @@ -1,16 +1,20 @@ package fr.tf1.player.atelierplayermvvm.ui.list import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.MutableState import androidx.compose.runtime.State import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @Composable -fun BookListScreen(viewState: State) { +fun BookListScreen( + viewState: State, + onUiEvent: (event: BookListContract.UIEvent) -> Unit +) { when (viewState.value) { is BookListContract.State.Loading -> { //show loader @@ -21,14 +25,21 @@ items( count = (viewState.value as BookListContract.State.Completed).bookList.size, itemContent = { index -> - Text( - text = (viewState.value as BookListContract.State.Completed).bookList[index].bookName - ?: "" - ) - Text( - text = (viewState.value as BookListContract.State.Completed).bookList[index].bookDesc - ?: "" - ) + val book = + (viewState.value as BookListContract.State.Completed).bookList[index] + Column(modifier = Modifier.clickable { + onUiEvent(BookListContract.UIEvent.Click(book.id)) + }) { + Text( + text = book.bookName + ?: "" + ) + Text( + text = book.bookDesc + ?: "" + ) + } + }) } } diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/ListActivity.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/ListActivity.kt index cc8c724..b63d1c7 100644 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/ListActivity.kt +++ b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/ListActivity.kt @@ -22,7 +22,12 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(ComposeView(this).apply { - setContent { BookListScreen(viewModel.viewState) } + setContent { + BookListScreen(viewModel.viewState) { uiEvent -> + viewModel.handleEvent(uiEvent) + + } + } }) } diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt index f8a219a..e15a143 100644 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt +++ b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListContract.kt @@ -5,7 +5,7 @@ class BookListContract { sealed class UIEvent { - data class Click(val bookId: Int) : UIEvent() + data class Click(val bookId: String?) : UIEvent() } sealed class State { diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListScreen.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListScreen.kt index efbd78a..cd98638 100644 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListScreen.kt +++ b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/BookListScreen.kt @@ -1,16 +1,20 @@ package fr.tf1.player.atelierplayermvvm.ui.list import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.MutableState import androidx.compose.runtime.State import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @Composable -fun BookListScreen(viewState: State) { +fun BookListScreen( + viewState: State, + onUiEvent: (event: BookListContract.UIEvent) -> Unit +) { when (viewState.value) { is BookListContract.State.Loading -> { //show loader @@ -21,14 +25,21 @@ items( count = (viewState.value as BookListContract.State.Completed).bookList.size, itemContent = { index -> - Text( - text = (viewState.value as BookListContract.State.Completed).bookList[index].bookName - ?: "" - ) - Text( - text = (viewState.value as BookListContract.State.Completed).bookList[index].bookDesc - ?: "" - ) + val book = + (viewState.value as BookListContract.State.Completed).bookList[index] + Column(modifier = Modifier.clickable { + onUiEvent(BookListContract.UIEvent.Click(book.id)) + }) { + Text( + text = book.bookName + ?: "" + ) + Text( + text = book.bookDesc + ?: "" + ) + } + }) } } diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/ListActivity.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/ListActivity.kt index cc8c724..b63d1c7 100644 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/ListActivity.kt +++ b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/ListActivity.kt @@ -22,7 +22,12 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(ComposeView(this).apply { - setContent { BookListScreen(viewModel.viewState) } + setContent { + BookListScreen(viewModel.viewState) { uiEvent -> + viewModel.handleEvent(uiEvent) + + } + } }) } diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/ListViewModel.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/ListViewModel.kt index 1fdf7b8..f28bd4f 100644 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/ListViewModel.kt +++ b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/ListViewModel.kt @@ -3,11 +3,9 @@ import androidx.compose.runtime.MutableState import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf -import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import fr.tf1.player.atelierplayermvvm.data.model.Book import fr.tf1.player.atelierplayermvvm.data.usecases.FetchListUseCase import kotlinx.coroutines.launch import javax.inject.Inject @@ -18,6 +16,7 @@ private val initialState: BookListContract.State = BookListContract.State.Loading private val _viewState: MutableState = mutableStateOf(initialState) + var viewState: State = _viewState init { @@ -31,4 +30,8 @@ } } + fun handleEvent(uiEvent: BookListContract.UIEvent) { + + } + } \ No newline at end of file