Skip to content

Commit

Permalink
Merge branch 'refs/heads/master' into development
Browse files Browse the repository at this point in the history
# Conflicts:
#	app/src/main/java/com/jk/gogit/components/Page.kt
#	app/src/main/java/com/jk/gogit/navigation/AppScreens.kt
#	app/src/main/java/com/jk/gogit/repositorydetails/RepoDetailScreen.kt
#	app/src/main/java/com/jk/gogit/repositorydetails/commits/CommitListScreen.kt
  • Loading branch information
jk2pr committed Jul 31, 2024
2 parents 00e433f + 33c0653 commit 5ce3496
Show file tree
Hide file tree
Showing 105 changed files with 1,361 additions and 4,357 deletions.
8 changes: 5 additions & 3 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ plugins {
alias(libs.plugins.google.services)
alias(libs.plugins.kotlinx.serializtion)
alias(libs.plugins.appolo.client.android)
alias(libs.plugins.compose.compiler)
}

apollo {
Expand Down Expand Up @@ -65,9 +66,6 @@ android {
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.5.10"
}
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
Expand All @@ -77,6 +75,7 @@ android {

dependencies {

implementation(libs.androidx.core.splashscreen)
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
Expand Down Expand Up @@ -112,6 +111,9 @@ dependencies {
implementation(libs.androidx.constraintlayout.compose)


//Network Monitor
implementation (libs.connext)

implementation(libs.coil)
implementation(libs.joda.time)

Expand Down
4 changes: 4 additions & 0 deletions app/src/main/java/com/jk/gogit/AppModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package com.jk.gogit

import com.hoppers.networkmodule.network.apolloClient
import com.hoppers.networkmodule.network.ktorHttpClient
import com.jk.gogit.home.FeedExecutor
import com.jk.gogit.home.FeedViewModel
import com.jk.gogit.login.AuthViewModel
import com.jk.gogit.organisation.OrgExecutor
import com.jk.gogit.organisation.OrgListViewModel
Expand All @@ -28,6 +30,7 @@ val appModule = module {
single { apolloClient }
single<DispatcherProvider> { DefaultDispatchers() }
single<UserProfileExecutor> { UserProfileExecutor(get()) }
single<FeedExecutor> { FeedExecutor(get()) }
single<RepoExecutor> { RepoExecutor(get()) }
single<RepoTreeExecutor> { RepoTreeExecutor(get()) }
single<SearchExecutor> { SearchExecutor(get()) }
Expand All @@ -36,6 +39,7 @@ val appModule = module {
single<OrgExecutor> { OrgExecutor(get()) }
single<CommitListExecutor> { CommitListExecutor(get()) }
viewModel { _ -> AuthViewModel() }
viewModel { params -> FeedViewModel(feedExecutor = get(), dispatchers = get(), login = params.get()) }
viewModel { params -> UserProfileViewModel(userProfileExecutor = get(), dispatchers = get(), login = params.get()) }
viewModel { params -> RepoListViewModel(repoExecutor = get(), dispatchers = get(), login = params.get(), isStarred = params.get(), isOrg = params.get(), filter = params.get(), repoName = params.get()) }
viewModel { params -> UserListViewModel(userListExecutor = get(), dispatchers = get(), login = params.get(), filter = params.get(), repoName = params.get()) }
Expand Down
17 changes: 16 additions & 1 deletion app/src/main/java/com/jk/gogit/GoGitApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,34 @@ package com.jk.gogit

import android.app.Application
import android.content.Context
import android.widget.Toast
import com.google.firebase.auth.FirebaseAuth
import com.hoppers.networkmodule.AuthManager
import org.koin.android.ext.koin.androidContext
import org.koin.android.ext.koin.androidLogger
import org.koin.core.context.GlobalContext.startKoin

class GoGitApplication : Application() {
override fun onCreate() {
super.onCreate()
val context = applicationContext
val sharedPreferences = getSharedPreferences("auth", Context.MODE_PRIVATE)
com.hoppers.networkmodule.network.AuthManager.initialize(sharedPreferences)
AuthManager.initialize(sharedPreferences, onLogout = {
sharedPreferences.edit().clear().apply()
val firebaseAuth = FirebaseAuth.getInstance()
// firebaseAuth.signOut()
showToast()
})
startKoin {
androidLogger()
androidContext(this@GoGitApplication)
modules(appModule)
}
}

private fun showToast() {
Toast.makeText(this, "Your session logged out, Please login again ", Toast.LENGTH_SHORT)
.show()

}
}
4 changes: 1 addition & 3 deletions app/src/main/java/com/jk/gogit/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import com.google.firebase.FirebaseApp
import com.jk.gogit.components.ComposeLocalWrapper
import com.jk.gogit.login.screen.LoginScreen
import com.jk.gogit.ui.theme.GoGitTheme
Expand All @@ -17,9 +16,8 @@ import org.koin.core.annotation.KoinExperimentalAPI
class MainActivity : ComponentActivity() {
@OptIn(KoinExperimentalAPI::class)
override fun onCreate(savedInstanceState: Bundle?) {
FirebaseApp.initializeApp(this)
super.onCreate(savedInstanceState)
enableEdgeToEdge()
super.onCreate(savedInstanceState)
setContent {
GoGitTheme(dynamicColor = false) {
ComposeLocalWrapper {
Expand Down
45 changes: 45 additions & 0 deletions app/src/main/java/com/jk/gogit/components/Chip.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.jk.gogit.components

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.FilterChip
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.hoppers.type.SearchType

@Composable
fun Chip(
modifier: Modifier = Modifier,
types: List<SearchType>,
onTypeSelected: (SearchType) -> Unit = {},
) {
val selectedType = remember { mutableStateOf(types.first()) }

Row(
modifier = modifier
.fillMaxWidth()
.padding(vertical = 16.dp),
horizontalArrangement = Arrangement.SpaceEvenly
) {
types.forEach { type ->
val isSelected = selectedType.value == type
FilterChip(label = {
Text(
text = type.name,
modifier = Modifier.padding(8.dp)
)
}, selected = isSelected,
onClick = {
selectedType.value = type
onTypeSelected(type)
}
)
}
}
}
41 changes: 14 additions & 27 deletions app/src/main/java/com/jk/gogit/components/DropdownFilter.kt
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
package com.jk.gogit.components

import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.sizeIn
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.CheckCircle
import androidx.compose.material.icons.outlined.ArrowDropDown
import androidx.compose.material.icons.outlined.Done
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SuggestionChip
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
Expand All @@ -23,7 +20,6 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp


Expand All @@ -36,30 +32,22 @@ fun DropdownFilter(
var selectedOption by remember { mutableStateOf<String?>(null) }
var filterLabel by remember { mutableStateOf("Language") }

Column(modifier = Modifier.padding(vertical = 8.dp)) {
Card(
//border = BorderStroke(2.dp,MaterialTheme.colorScheme.primary),
shape = MaterialTheme.shapes.extraLarge,
colors = CardDefaults.cardColors(containerColor = Color.LightGray.copy(alpha = 0.2f))

) {
Column{
SuggestionChip(onClick = { expanded = true }, label = {
Row(
modifier = Modifier.padding(horizontal = 8.dp),
verticalAlignment = Alignment.CenterVertically,
) {
Text(
text = filterLabel,
style = MaterialTheme.typography.labelMedium,
modifier = Modifier
.wrapContentWidth()
.clickable(onClick = { expanded = true }),
)
Icon(
imageVector = Icons.Outlined.ArrowDropDown,
contentDescription = "Dropdown Icon",
)
}
}
})
DropdownMenu(
modifier = Modifier.wrapContentWidth(),
expanded = expanded,
Expand All @@ -74,17 +62,16 @@ fun DropdownFilter(
onFilterSelected(selectedOption)
expanded = false
},
trailingIcon = {
if (option == selectedOption)
Icon(
imageVector = Icons.Filled.CheckCircle,
contentDescription = "Done Icon",
)
},
text = {
Row {
Text(option)
if (option == selectedOption) {
Icon(
imageVector = Icons.Outlined.Done,
contentDescription = "Done Icon",
modifier = Modifier.sizeIn(48.dp)
)
}
}
Text(option)

}
)
}
Expand Down
57 changes: 57 additions & 0 deletions app/src/main/java/com/jk/gogit/components/HyperLinkText.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package com.jk.gogit.components

import androidx.compose.foundation.text.ClickableText
import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.LocalTextStyle
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.withStyle

@Composable
fun HyperLinkText(
hyperLink: String,
modifier: Modifier,
localString: String,
startIndex: Int,
endIndex: Int,
hyperLinkStyle: SpanStyle = SpanStyle(),
localStringStyle: TextStyle = LocalTextStyle.current,
action: (String) -> Unit
) {

val annotatedString = buildAnnotatedString {
withStyle(style = SpanStyle(fontWeight = FontWeight.Bold)) {
append(hyperLink)
}
append(localString)
addStyle(
end = endIndex,
start = startIndex,
style = hyperLinkStyle
)
addStringAnnotation(
annotation = hyperLink,
end = endIndex,
start = startIndex,
tag = "URL"
)
}

ClickableText(
modifier = modifier,
style = localStringStyle.copy(color = LocalContentColor.current),
text = annotatedString,
onClick = {
annotatedString
.getStringAnnotations("URL", it, it)
.firstOrNull()?.let { stringAnnotation ->
action(stringAnnotation.item)
}
},

)
}
31 changes: 31 additions & 0 deletions app/src/main/java/com/jk/gogit/components/IconwithText.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.jk.gogit.components

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.size
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp

@Composable
fun IconWithText(text: String, res: Int, tint: Color = Color.Black) {
Row(horizontalArrangement = Arrangement.spacedBy(1.dp)) {

Icon(
painter = painterResource(id = res),
contentDescription = null,
tint = tint,
modifier = Modifier.size(16.dp)
)
Text(
text = text,
style = MaterialTheme.typography.bodySmall,
// fontFamily = FontFamily(Font(R.font.bebasneue_light)),
)
}
}
40 changes: 40 additions & 0 deletions app/src/main/java/com/jk/gogit/components/OfflineError.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.jk.gogit.components

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.jk.gogit.R

@Composable
@Preview
fun OfflineError(
modifier: Modifier = Modifier,
retryHandler: () -> Unit = {},
title: String = "You're offline",
message: String = "Check your connection"
) {

Column(
modifier = modifier,
verticalArrangement = Arrangement.spacedBy(8.dp, Alignment.CenterVertically),
horizontalAlignment = Alignment.CenterHorizontally
) {
Icon(painterResource(id = R.drawable.wifi_off_48dp), contentDescription = "Error")
Text(text = title, style = MaterialTheme.typography.headlineSmall)
Text(text = message, style = MaterialTheme.typography.bodyLarge)

OutlinedButton(onClick = retryHandler) {
Text(text = "Try again")
}
}

}
Loading

0 comments on commit 5ce3496

Please sign in to comment.