Skip to content

Commit 063f486

Browse files
committed
"Added UI for Git List"
1 parent ae17385 commit 063f486

File tree

8 files changed

+255
-28
lines changed

8 files changed

+255
-28
lines changed

.idea/codeStyles/Project.xml

Lines changed: 139 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/codeStyles/codeStyleConfig.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,6 @@ dependencies {
7777

7878
implementation "com.github.bumptech.glide:glide:$glide_version"
7979
kapt "com.github.bumptech.glide:compiler:$glide_version"
80+
81+
implementation "dev.chrisbanes.accompanist:accompanist-picasso:$accompanist_version"
8082
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.app.gitreposcompose
2+
3+
import androidx.compose.foundation.ScrollableColumn
4+
import androidx.compose.foundation.Text
5+
import androidx.compose.foundation.layout.*
6+
import androidx.compose.foundation.shape.RoundedCornerShape
7+
import androidx.compose.material.Card
8+
import androidx.compose.runtime.Composable
9+
import androidx.compose.ui.Alignment
10+
import androidx.compose.ui.Modifier
11+
import androidx.compose.ui.text.font.FontWeight
12+
import androidx.compose.ui.unit.dp
13+
import androidx.compose.ui.unit.sp
14+
import com.app.gitreposcompose.model.RepositoriesModel
15+
import dev.chrisbanes.accompanist.picasso.PicassoImage
16+
17+
@Composable
18+
fun ReposListItem(repositoriesModelItem: RepositoriesModel.RepositoriesModelItem) {
19+
Card(
20+
shape = RoundedCornerShape(5.dp),
21+
modifier = Modifier.fillMaxWidth()
22+
.wrapContentHeight()
23+
.padding(10.dp)
24+
) {
25+
Column(
26+
horizontalAlignment = Alignment.Start,
27+
modifier = Modifier
28+
.padding(10.dp)
29+
) {
30+
Row(
31+
verticalAlignment = Alignment.CenterVertically
32+
) {
33+
PicassoImage(
34+
data = repositoriesModelItem.owner?.avatarUrl.toString(),
35+
fadeIn = true,
36+
modifier = Modifier.preferredSize(size = 20.dp)
37+
)
38+
Spacer(modifier = Modifier.preferredSize(height = 0.dp, width = 5.dp))
39+
Text(text = repositoriesModelItem.fullName?.substringBefore(delimiter = "/").toString(), fontSize = 16.sp)
40+
}
41+
Spacer(modifier = Modifier.preferredHeight(5.dp))
42+
Text(text = repositoriesModelItem.name.toString(), fontSize = 18.sp, fontWeight = FontWeight.Bold)
43+
Spacer(modifier = Modifier.preferredHeight(5.dp))
44+
Text(text = repositoriesModelItem.description.toString(), fontSize = 14.sp)
45+
}
46+
}
47+
}
48+
49+
@Composable
50+
fun ReposList(repositoriesModel: RepositoriesModel?) {
51+
ScrollableColumn {
52+
repositoriesModel?.forEach { repositoriesModelItem ->
53+
ReposListItem(repositoriesModelItem = repositoriesModelItem)
54+
}
55+
}
56+
}

app/src/main/java/com/app/gitreposcompose/ui/main/MainActivity.kt

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,17 @@ import android.os.Bundle
44
import androidx.activity.viewModels
55
import androidx.appcompat.app.AppCompatActivity
66
import androidx.compose.foundation.Text
7+
import androidx.compose.foundation.layout.Column
8+
import androidx.compose.foundation.layout.fillMaxWidth
9+
import androidx.compose.material.LinearProgressIndicator
710
import androidx.compose.material.MaterialTheme
811
import androidx.compose.material.Surface
912
import androidx.compose.runtime.Composable
1013
import androidx.compose.runtime.livedata.observeAsState
14+
import androidx.compose.ui.Alignment
15+
import androidx.compose.ui.Modifier
1116
import androidx.compose.ui.platform.setContent
12-
import androidx.ui.tooling.preview.Preview
17+
import com.app.gitreposcompose.ReposList
1318
import com.app.gitreposcompose.model.ResultData
1419
import com.app.gitreposcompose.theming.GitReposComposeTheme
1520
import com.app.gitreposcompose.ui.main.viewmodel.MainViewModel
@@ -24,7 +29,7 @@ class MainActivity : AppCompatActivity() {
2429
setContent {
2530
GitReposComposeTheme {
2631
Surface(color = MaterialTheme.colors.background) {
27-
mainViewModel.getRepositoriesList("")
32+
mainViewModel.getRepositoriesList("1")
2833
ReposData(mainViewModel)
2934
}
3035
}
@@ -36,32 +41,25 @@ class MainActivity : AppCompatActivity() {
3641
fun ReposData(mainViewModel: MainViewModel) {
3742
val dataState = mainViewModel.repositoriesListLiveData.observeAsState()
3843

39-
when(val resultData = dataState.value) {
40-
is ResultData.Loading -> {
41-
Text(text = "Loading Data")
42-
}
43-
is ResultData.Success -> {
44-
val repositoriesModel = resultData.data
45-
Text(text = "Data: $repositoriesModel")
46-
}
47-
is ResultData.Failed -> {
48-
Text(text = "Failed")
49-
}
50-
is ResultData.Exception -> {
51-
Text(text = "Something went wrong Please try again!")
44+
Column(
45+
horizontalAlignment = Alignment.CenterHorizontally,
46+
) {
47+
when (val resultData = dataState.value) {
48+
is ResultData.Loading -> {
49+
LinearProgressIndicator(
50+
modifier = Modifier.fillMaxWidth()
51+
)
52+
}
53+
is ResultData.Success -> {
54+
val repositoriesModel = resultData.data
55+
ReposList(repositoriesModel = repositoriesModel)
56+
}
57+
is ResultData.Failed -> {
58+
Text(text = "Failed to load data.")
59+
}
60+
is ResultData.Exception -> {
61+
Text(text = "Something went wrong. Please try again!")
62+
}
5263
}
5364
}
54-
}
55-
56-
@Composable
57-
fun Greeting(name: String) {
58-
Text(text = "Hello $name!")
59-
}
60-
61-
@Preview(showBackground = true)
62-
@Composable
63-
fun DefaultPreview() {
64-
GitReposComposeTheme {
65-
Greeting("Android")
66-
}
6765
}

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ buildscript {
1818
ext.glide_version = "4.11.0"
1919
ext.hilt_version = "2.29.1-alpha"
2020
ext.hilt_extensions_version = "1.0.0-alpha02"
21+
ext.accompanist_version = "0.3.0"
2122

2223
repositories {
2324
google()

0 commit comments

Comments
 (0)