Skip to content

Commit dcc7019

Browse files
committed
fix(ui): .
1 parent f5f22cb commit dcc7019

24 files changed

+607
-277
lines changed

app/build.gradle

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
plugins {
22
id 'com.android.application'
33
id 'org.jetbrains.kotlin.android'
4+
5+
// Add the Google services Gradle plugin
6+
id 'com.google.gms.google-services'
7+
8+
// DI
9+
id 'kotlin-kapt'
10+
id 'com.google.dagger.hilt.android'
411
}
512

613
android {
@@ -47,18 +54,18 @@ android {
4754
}
4855

4956
dependencies {
50-
implementation 'androidx.core:core-ktx:1.7.0'
51-
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
52-
implementation 'androidx.activity:activity-compose:1.3.1'
57+
implementation 'androidx.core:core-ktx:1.9.0'
58+
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1'
59+
implementation 'androidx.activity:activity-compose:1.7.0'
5360
implementation "androidx.compose.ui:ui:$compose_version"
5461
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
55-
implementation 'androidx.compose.material3:material3:1.0.0-alpha11'
62+
implementation 'androidx.compose.material3:material3:1.1.0-beta01'
5663
implementation 'androidx.compose.ui:ui-viewbinding:1.4.0'
5764
implementation 'androidx.compose.ui:ui-util:1.4.0'
5865
implementation 'androidx.compose.material:material-icons-extended:1.4.0'
5966
testImplementation 'junit:junit:4.13.2'
60-
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
61-
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
67+
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
68+
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
6269
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
6370
debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"
6471
debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version"
@@ -70,4 +77,23 @@ dependencies {
7077
implementation "com.google.accompanist:accompanist-systemuicontroller:0.28.0"
7178
implementation "androidx.compose.ui:ui-viewbinding:1.4.0"
7279
implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1"
80+
81+
// Import the BoM for the Firebase platform
82+
implementation platform('com.google.firebase:firebase-bom:31.3.0')
83+
implementation 'com.google.firebase:firebase-analytics-ktx'
84+
85+
// Declare the dependency for the Firestore library
86+
implementation 'com.google.firebase:firebase-firestore-ktx'
87+
88+
// Dependency injection
89+
implementation "com.google.dagger:hilt-android:2.44"
90+
implementation "androidx.hilt:hilt-navigation-compose:1.0.0"
91+
kapt "com.google.dagger:hilt-compiler:2.44"
92+
implementation 'com.google.code.gson:gson:2.9.0'
93+
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'
94+
}
95+
96+
// Allow references to generated code
97+
kapt {
98+
correctErrorTypes true
7399
}

app/google-services.json

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
"project_info": {
3+
"project_number": "667179946559",
4+
"project_id": "chatgpt-compose",
5+
"storage_bucket": "chatgpt-compose.appspot.com"
6+
},
7+
"client": [
8+
{
9+
"client_info": {
10+
"mobilesdk_app_id": "1:667179946559:android:fb1d6c39e9d32c4fd25e8a",
11+
"android_client_info": {
12+
"package_name": "com.chatgptlite.wanted"
13+
}
14+
},
15+
"oauth_client": [
16+
{
17+
"client_id": "667179946559-d86doom2s4bmvi30maellt3hg9mll5au.apps.googleusercontent.com",
18+
"client_type": 3
19+
}
20+
],
21+
"api_key": [
22+
{
23+
"current_key": "AIzaSyCV_zuuvvcAUD_31MyZDDCs7MMlZYu0NR8"
24+
}
25+
],
26+
"services": {
27+
"appinvite_service": {
28+
"other_platform_oauth_client": [
29+
{
30+
"client_id": "667179946559-d86doom2s4bmvi30maellt3hg9mll5au.apps.googleusercontent.com",
31+
"client_type": 3
32+
}
33+
]
34+
}
35+
}
36+
}
37+
],
38+
"configuration_version": "1"
39+
}

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<uses-permission android:name="android.permission.INTERNET"/>
66

77
<application
8+
android:name=".di.BaseApplication"
89
android:allowBackup="true"
910
android:dataExtractionRules="@xml/data_extraction_rules"
1011
android:fullBackupContent="@xml/backup_rules"
@@ -17,7 +18,8 @@
1718
android:name=".MainActivity"
1819
android:exported="true"
1920
android:label="@string/app_name"
20-
android:theme="@style/Theme.ChatGPTLite">
21+
android:theme="@style/Theme.ChatGPTLite"
22+
android:windowSoftInputMode="adjustResize">
2123
<intent-filter>
2224
<action android:name="android.intent.action.MAIN" />
2325

app/src/main/java/com/chatgptlite/wanted/MainActivity.kt

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,32 +10,33 @@ import androidx.compose.material3.*
1010
import androidx.compose.runtime.*
1111
import androidx.compose.ui.Modifier
1212
import androidx.compose.ui.platform.ComposeView
13+
import androidx.compose.ui.platform.LocalFocusManager
1314
import androidx.compose.ui.tooling.preview.Preview
1415
import androidx.core.view.WindowCompat
1516
import com.chatgptlite.wanted.ui.common.AppBar
1617
import com.chatgptlite.wanted.ui.common.AppScaffold
1718
import com.chatgptlite.wanted.ui.conversations.Conversation
1819
import com.chatgptlite.wanted.ui.theme.ChatGPTLiteTheme
20+
import dagger.hilt.android.AndroidEntryPoint
1921
import kotlinx.coroutines.launch
2022

21-
23+
@AndroidEntryPoint
2224
class MainActivity : ComponentActivity() {
23-
private val viewModel: MainViewModel by viewModels()
25+
private val mainViewModel: MainViewModel by viewModels()
2426

2527
@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
2628
@OptIn(ExperimentalMaterial3Api::class)
2729
override fun onCreate(savedInstanceState: Bundle?) {
2830
super.onCreate(savedInstanceState)
2931

30-
WindowCompat.setDecorFitsSystemWindows(window, true)
32+
WindowCompat.setDecorFitsSystemWindows(window, false)
3133

3234
setContentView(
3335
ComposeView(this).apply {
3436
consumeWindowInsets = false
3537
setContent {
3638
val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)
37-
viewModel
38-
val drawerOpen by viewModel.drawerShouldBeOpened.collectAsState()
39+
val drawerOpen by mainViewModel.drawerShouldBeOpened.collectAsState()
3940

4041
if (drawerOpen) {
4142
// Open drawer and reset state in VM.
@@ -44,18 +45,22 @@ class MainActivity : ComponentActivity() {
4445
try {
4546
drawerState.open()
4647
} finally {
47-
viewModel.resetOpenDrawerAction()
48+
mainViewModel.resetOpenDrawerAction()
4849
}
4950
}
5051
}
5152

5253
// Intercepts back navigation when the drawer is open
5354
val scope = rememberCoroutineScope()
54-
if (drawerState.isOpen) {
55-
BackHandler {
55+
val focusManager = LocalFocusManager.current
56+
57+
BackHandler {
58+
if (drawerState.isOpen) {
5659
scope.launch {
5760
drawerState.close()
5861
}
62+
} else {
63+
focusManager.clearFocus()
5964
}
6065
}
6166

@@ -72,22 +77,19 @@ class MainActivity : ComponentActivity() {
7277

7378
println(it)
7479
},
80+
onNewChatClicked = {
81+
scope.launch {
82+
drawerState.close()
83+
}
84+
}
7585
) {
76-
Scaffold(
77-
modifier = Modifier.safeContentPadding(),
78-
topBar = {
79-
AppBar(
80-
onClickMenu = {
81-
scope.launch {
82-
drawerState.open()
83-
}
84-
}
85-
)
86-
},
87-
content = {
88-
Conversation()
89-
},
90-
)
86+
Column( modifier = Modifier
87+
.fillMaxSize()) {
88+
AppBar {
89+
90+
}
91+
Conversation()
92+
}
9193
}
9294
}
9395
}

app/src/main/java/com/chatgptlite/wanted/MainViewModel.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.chatgptlite.wanted
22

3+
import androidx.activity.compose.BackHandler
34
import androidx.lifecycle.ViewModel
45
import kotlinx.coroutines.flow.MutableStateFlow
56
import kotlinx.coroutines.flow.asStateFlow
7+
import kotlinx.coroutines.launch
68

79
/**
810
* Used to communicate between screens.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.chatgptlite.wanted.constants
2+
3+
const val conversationCollection: String = "conversations";
4+
const val messageCollection: String = "messages";

app/src/main/java/com/chatgptlite/wanted/data/fake/FakeConversations.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@ val fakeConversations: List<ConversationModel> = listOf(
77
ConversationModel(
88
id = "1",
99
title = "What's Flutter?",
10-
date = Date(),
10+
createdAt = Date(),
1111
),
1212
ConversationModel(
1313
id = "2",
1414
title = "What's Compose?",
15-
date = Date(),
15+
createdAt = Date(),
1616
),
1717
ConversationModel(
1818
id = "3",
1919
title = "What's ChatGPT?",
20-
date = Date(),
20+
createdAt = Date(),
2121
),
2222
)

0 commit comments

Comments
 (0)