@@ -5,33 +5,54 @@ import android.content.Intent
5
5
import android.util.Log
6
6
import androidx.compose.foundation.layout.Column
7
7
import androidx.compose.foundation.layout.fillMaxSize
8
+ import androidx.compose.foundation.layout.wrapContentSize
8
9
import androidx.compose.foundation.rememberScrollState
9
10
import androidx.compose.foundation.verticalScroll
11
+ import androidx.compose.material.CircularProgressIndicator
12
+ import androidx.compose.material.Text
10
13
import androidx.compose.runtime.Composable
14
+ import androidx.compose.runtime.livedata.observeAsState
15
+ import androidx.compose.ui.Alignment
11
16
import androidx.compose.ui.Modifier
12
17
import androidx.compose.ui.platform.LocalContext
18
+ import com.amedigital.challenge_model.Banner
13
19
import com.amedigital.challenge_model.Categoria
20
+ import com.amedigital.challenge_model.api.Resource
14
21
import com.amedigital.challenge_model.fakeBanners
15
22
import com.amedigital.challenge_model.fakeCategorias
16
23
import com.amedigital.challenge_model.fakeProdutos
17
24
import com.amedigital.challenge_produto.CategoriaActivity
18
25
import com.amedigital.challenge_produto.ListaCategorias
19
26
import com.amedigital.challenge_produto.ListaProdutos
20
27
import com.amedigital.challenge_produto.ProdutoActivity
28
+ import com.amedigital.challenge_produto.widgets.LogAndShowErrorPanel
21
29
import com.amedigital.coreui.widgets.Banner
30
+ import com.amedigital.coreui.widgets.WaitingIndicator
31
+ import org.koin.androidx.compose.getViewModel
22
32
23
33
@Composable
24
34
fun Home () {
35
+ val viewModel = getViewModel<HomeViewModel >()
36
+ val bannerState = viewModel.banner.observeAsState()
37
+
38
+ when (val banner = bannerState.value) {
39
+ is Resource .Requesting -> WaitingIndicator ()
40
+ is Resource .Failure -> LogAndShowErrorPanel (banner.throwable)
41
+ is Resource .Success -> HomeView (banner.value)
42
+ }
43
+ }
44
+
45
+ @Composable
46
+ private fun HomeView (images : List <Banner >) {
25
47
val context = LocalContext .current
26
- val homeTag = " HOME"
27
48
val scrollState = rememberScrollState()
28
49
Column (
29
50
modifier = Modifier
30
51
.fillMaxSize()
31
52
.verticalScroll(scrollState)
32
53
) {
33
- Banner (fakeBanners .map { it.linkUrl }, onImageClick = { image ->
34
- Log .d(homeTag , image)
54
+ Banner (images .map { it.linkUrl }, onImageClick = { image ->
55
+ Log .d(" HOME " , image)
35
56
})
36
57
ListaCategorias (fakeCategorias, onCategoriaClick = { categoria ->
37
58
CategoriaActivity .gotoCategoria(context, categoria)
0 commit comments