diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e5f69bd..f30f6e1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,7 +16,7 @@ android:theme="@style/Theme.AtelierPlayerMVVM" tools:targetApi="31"> diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e5f69bd..f30f6e1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,7 +16,7 @@ android:theme="@style/Theme.AtelierPlayerMVVM" tools:targetApi="31"> diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/details/BookDetailActivity.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/details/BookDetailActivity.kt deleted file mode 100644 index da41e3f..0000000 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/details/BookDetailActivity.kt +++ /dev/null @@ -1,24 +0,0 @@ -package fr.tf1.player.atelierplayermvvm.ui.details - -import android.os.Bundle -import androidx.activity.viewModels -import androidx.appcompat.app.AppCompatActivity -import androidx.compose.ui.platform.ComposeView -import dagger.hilt.android.AndroidEntryPoint - -@AndroidEntryPoint -class BookDetailActivity : AppCompatActivity() { - private val viewModel: BookDetailViewModel by viewModels() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(ComposeView(this).apply { - setContent { - BookDetailScreen(viewModel.viewState) - } - }) - - val bookId = intent.getStringExtra("BOOK_ID") - viewModel.fetchBookDetail(bookId?.toInt() ?: 0) - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e5f69bd..f30f6e1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,7 +16,7 @@ android:theme="@style/Theme.AtelierPlayerMVVM" tools:targetApi="31"> diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/details/BookDetailActivity.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/details/BookDetailActivity.kt deleted file mode 100644 index da41e3f..0000000 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/details/BookDetailActivity.kt +++ /dev/null @@ -1,24 +0,0 @@ -package fr.tf1.player.atelierplayermvvm.ui.details - -import android.os.Bundle -import androidx.activity.viewModels -import androidx.appcompat.app.AppCompatActivity -import androidx.compose.ui.platform.ComposeView -import dagger.hilt.android.AndroidEntryPoint - -@AndroidEntryPoint -class BookDetailActivity : AppCompatActivity() { - private val viewModel: BookDetailViewModel by viewModels() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(ComposeView(this).apply { - setContent { - BookDetailScreen(viewModel.viewState) - } - }) - - val bookId = intent.getStringExtra("BOOK_ID") - viewModel.fetchBookDetail(bookId?.toInt() ?: 0) - } -} \ No newline at end of file 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 46ae778..012a228 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 @@ -8,28 +8,23 @@ import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.State import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext -import fr.tf1.player.atelierplayermvvm.ui.details.BookDetailActivity -import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.onEach @Composable fun BookListScreen( - viewModel: ListViewModel + viewModel: ListViewModel, + onBookClicked: (bookId: String?) -> Unit ) { - val context = LocalContext.current LaunchedEffect(key1 = "BOOK_LIST_EFFECT_KEY") { viewModel.effect.onEach { sideEffect -> when (sideEffect) { is BookListContract.SideEffect.ShowDetails -> { - val intent = Intent(context, BookDetailActivity::class.java) - intent.putExtra("BOOK_ID", sideEffect.bookId) - context.startActivity(intent) + onBookClicked(sideEffect.bookId) } } }.collect() diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e5f69bd..f30f6e1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,7 +16,7 @@ android:theme="@style/Theme.AtelierPlayerMVVM" tools:targetApi="31"> diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/details/BookDetailActivity.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/details/BookDetailActivity.kt deleted file mode 100644 index da41e3f..0000000 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/details/BookDetailActivity.kt +++ /dev/null @@ -1,24 +0,0 @@ -package fr.tf1.player.atelierplayermvvm.ui.details - -import android.os.Bundle -import androidx.activity.viewModels -import androidx.appcompat.app.AppCompatActivity -import androidx.compose.ui.platform.ComposeView -import dagger.hilt.android.AndroidEntryPoint - -@AndroidEntryPoint -class BookDetailActivity : AppCompatActivity() { - private val viewModel: BookDetailViewModel by viewModels() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(ComposeView(this).apply { - setContent { - BookDetailScreen(viewModel.viewState) - } - }) - - val bookId = intent.getStringExtra("BOOK_ID") - viewModel.fetchBookDetail(bookId?.toInt() ?: 0) - } -} \ No newline at end of file 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 46ae778..012a228 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 @@ -8,28 +8,23 @@ import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.State import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext -import fr.tf1.player.atelierplayermvvm.ui.details.BookDetailActivity -import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.onEach @Composable fun BookListScreen( - viewModel: ListViewModel + viewModel: ListViewModel, + onBookClicked: (bookId: String?) -> Unit ) { - val context = LocalContext.current LaunchedEffect(key1 = "BOOK_LIST_EFFECT_KEY") { viewModel.effect.onEach { sideEffect -> when (sideEffect) { is BookListContract.SideEffect.ShowDetails -> { - val intent = Intent(context, BookDetailActivity::class.java) - intent.putExtra("BOOK_ID", sideEffect.bookId) - context.startActivity(intent) + onBookClicked(sideEffect.bookId) } } }.collect() 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 deleted file mode 100644 index 08e0e3e..0000000 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/ListActivity.kt +++ /dev/null @@ -1,35 +0,0 @@ -package fr.tf1.player.atelierplayermvvm.ui.list - -import android.os.Bundle -import androidx.activity.viewModels -import androidx.appcompat.app.AppCompatActivity -import androidx.compose.ui.platform.ComposeView -import androidx.navigation.compose.NavHost -import androidx.navigation.compose.composable -import androidx.navigation.compose.rememberNavController -import dagger.hilt.android.AndroidEntryPoint -import fr.tf1.player.atelierplayermvvm.ui.details.BookDetailScreen -import fr.tf1.player.atelierplayermvvm.ui.details.BookDetailViewModel - -@AndroidEntryPoint -class ListActivity : AppCompatActivity() { - - private val listViewModel: ListViewModel by viewModels() - private val detailViewModel: BookDetailViewModel by viewModels() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(ComposeView(this).apply { - setContent { - val navController = rememberNavController() - - NavHost(navController = navController, startDestination = "booklist") { - composable("booklist") { BookListScreen(listViewModel) } - composable("bookdetail") { BookDetailScreen(detailViewModel) } - } - } - }) - - } - -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e5f69bd..f30f6e1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,7 +16,7 @@ android:theme="@style/Theme.AtelierPlayerMVVM" tools:targetApi="31"> diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/details/BookDetailActivity.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/details/BookDetailActivity.kt deleted file mode 100644 index da41e3f..0000000 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/details/BookDetailActivity.kt +++ /dev/null @@ -1,24 +0,0 @@ -package fr.tf1.player.atelierplayermvvm.ui.details - -import android.os.Bundle -import androidx.activity.viewModels -import androidx.appcompat.app.AppCompatActivity -import androidx.compose.ui.platform.ComposeView -import dagger.hilt.android.AndroidEntryPoint - -@AndroidEntryPoint -class BookDetailActivity : AppCompatActivity() { - private val viewModel: BookDetailViewModel by viewModels() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(ComposeView(this).apply { - setContent { - BookDetailScreen(viewModel.viewState) - } - }) - - val bookId = intent.getStringExtra("BOOK_ID") - viewModel.fetchBookDetail(bookId?.toInt() ?: 0) - } -} \ No newline at end of file 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 46ae778..012a228 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 @@ -8,28 +8,23 @@ import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.State import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext -import fr.tf1.player.atelierplayermvvm.ui.details.BookDetailActivity -import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.onEach @Composable fun BookListScreen( - viewModel: ListViewModel + viewModel: ListViewModel, + onBookClicked: (bookId: String?) -> Unit ) { - val context = LocalContext.current LaunchedEffect(key1 = "BOOK_LIST_EFFECT_KEY") { viewModel.effect.onEach { sideEffect -> when (sideEffect) { is BookListContract.SideEffect.ShowDetails -> { - val intent = Intent(context, BookDetailActivity::class.java) - intent.putExtra("BOOK_ID", sideEffect.bookId) - context.startActivity(intent) + onBookClicked(sideEffect.bookId) } } }.collect() 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 deleted file mode 100644 index 08e0e3e..0000000 --- a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/ListActivity.kt +++ /dev/null @@ -1,35 +0,0 @@ -package fr.tf1.player.atelierplayermvvm.ui.list - -import android.os.Bundle -import androidx.activity.viewModels -import androidx.appcompat.app.AppCompatActivity -import androidx.compose.ui.platform.ComposeView -import androidx.navigation.compose.NavHost -import androidx.navigation.compose.composable -import androidx.navigation.compose.rememberNavController -import dagger.hilt.android.AndroidEntryPoint -import fr.tf1.player.atelierplayermvvm.ui.details.BookDetailScreen -import fr.tf1.player.atelierplayermvvm.ui.details.BookDetailViewModel - -@AndroidEntryPoint -class ListActivity : AppCompatActivity() { - - private val listViewModel: ListViewModel by viewModels() - private val detailViewModel: BookDetailViewModel by viewModels() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(ComposeView(this).apply { - setContent { - val navController = rememberNavController() - - NavHost(navController = navController, startDestination = "booklist") { - composable("booklist") { BookListScreen(listViewModel) } - composable("bookdetail") { BookDetailScreen(detailViewModel) } - } - } - }) - - } - -} \ No newline at end of file diff --git a/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/MainActivity.kt b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/MainActivity.kt new file mode 100644 index 0000000..1395ef7 --- /dev/null +++ b/app/src/main/java/fr/tf1/player/atelierplayermvvm/ui/list/MainActivity.kt @@ -0,0 +1,40 @@ +package fr.tf1.player.atelierplayermvvm.ui.list + +import android.os.Bundle +import androidx.activity.viewModels +import androidx.appcompat.app.AppCompatActivity +import androidx.compose.ui.platform.ComposeView +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import dagger.hilt.android.AndroidEntryPoint +import fr.tf1.player.atelierplayermvvm.ui.details.BookDetailScreen +import fr.tf1.player.atelierplayermvvm.ui.details.BookDetailViewModel + +@AndroidEntryPoint +class MainActivity : AppCompatActivity() { + + private val listViewModel: ListViewModel by viewModels() + private val detailViewModel: BookDetailViewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(ComposeView(this).apply { + setContent { + val navController = rememberNavController() + + NavHost(navController = navController, startDestination = "bookList") { + composable("bookList") { BookListScreen(listViewModel) { bookId -> + navController.navigate("bookDetail/$bookId") + } } + composable("bookDetail/{bookId}") { + bookId -> it.arguments?.getString("bookId") + BookDetailScreen(detailViewModel) + } + } + } + }) + + } + +} \ No newline at end of file