Skip to content

Commit e703c73

Browse files
authored
Merge pull request #3 from DevelopersBreach/shreyas/topic-module-setup
Implement clean architecture for Topic screen
2 parents 3f9c09c + 812186f commit e703c73

File tree

13 files changed

+153
-33
lines changed

13 files changed

+153
-33
lines changed

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/core/KtorHttpClient.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package com.developersbreach.kotlindictionarymultiplatform.core
22

3+
import com.developersbreach.kotlindictionarymultiplatform.data.detail.ChatCompletionRequest
4+
import com.developersbreach.kotlindictionarymultiplatform.data.detail.ChatCompletionResponse
5+
import com.developersbreach.kotlindictionarymultiplatform.data.detail.ChatMessage
6+
import com.developersbreach.kotlindictionarymultiplatform.data.detail.FunctionDefinition
7+
import com.developersbreach.kotlindictionarymultiplatform.data.detail.KotlinTopicDetails
38
import io.ktor.client.HttpClient
49
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
510
import io.ktor.client.request.header
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.developersbreach.kotlindictionarymultiplatform.core
1+
package com.developersbreach.kotlindictionarymultiplatform.data.detail
22

33
import kotlinx.serialization.Serializable
44
import kotlinx.serialization.SerialName
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.developersbreach.kotlindictionarymultiplatform.data.topic.model
2+
3+
data class Topic(
4+
val name: String
5+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.developersbreach.kotlindictionarymultiplatform.data.topic.repository
2+
3+
import com.developersbreach.kotlindictionarymultiplatform.data.topic.model.Topic
4+
5+
object TopicRepository {
6+
fun getTopics(): List<Topic> = listOf(
7+
Topic("Variables"),
8+
Topic("Strings"),
9+
Topic("Functions"),
10+
Topic("Coroutines"),
11+
Topic("Classes"),
12+
Topic("Interfaces"),
13+
Topic("Objects"),
14+
Topic("Collections"),
15+
Topic("Null Safety"),
16+
Topic("Lambdas"),
17+
Topic("Higher-Order Functions"),
18+
Topic("Delegation"),
19+
Topic("Sealed Classes"),
20+
Topic("Generics"),
21+
Topic("Annotations")
22+
)
23+
}
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.developersbreach.kotlindictionarymultiplatform.di
22

3-
import org.koin.core.module.dsl.viewModel
4-
import com.developersbreach.kotlindictionarymultiplatform.ui.screens.DetailViewModel
53
import org.koin.dsl.module
4+
import com.developersbreach.kotlindictionarymultiplatform.ui.screens.detail.DetailViewModel
5+
import com.developersbreach.kotlindictionarymultiplatform.ui.screens.topic.TopicViewModel
6+
import org.koin.core.module.dsl.viewModel
67

78
val appModule = module {
8-
99
viewModel {
1010
DetailViewModel(get())
1111
}
12-
}
12+
viewModel {
13+
TopicViewModel()
14+
}
15+
}

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/ui/navigation/AppDestinations.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ sealed interface AppDestinations {
1010

1111
@Serializable
1212
data class Detail(val topicId: String) : AppDestinations
13-
}
13+
}

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/ui/navigation/AppNavigation.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ import androidx.compose.runtime.remember
55
import androidx.navigation.compose.NavHost
66
import androidx.navigation.compose.composable
77
import androidx.navigation.compose.rememberNavController
8-
import com.developersbreach.kotlindictionarymultiplatform.ui.screens.DetailScreen
9-
import com.developersbreach.kotlindictionarymultiplatform.ui.screens.DetailViewModel
10-
import com.developersbreach.kotlindictionarymultiplatform.ui.screens.TopicListScreen
8+
import com.developersbreach.kotlindictionarymultiplatform.ui.screens.detail.DetailScreen
9+
import com.developersbreach.kotlindictionarymultiplatform.ui.screens.detail.DetailViewModel
10+
import com.developersbreach.kotlindictionarymultiplatform.ui.screens.topic.TopicScreen
11+
import com.developersbreach.kotlindictionarymultiplatform.ui.screens.topic.TopicViewModel
1112
import org.koin.compose.viewmodel.koinViewModel
1213

1314
@Composable
@@ -21,12 +22,13 @@ fun AppNavigation(
2122
navController = navController,
2223
startDestination = startDestination,
2324
) {
24-
2525
composable<AppDestinations.TopicList> {
26-
TopicListScreen(
26+
val viewModel: TopicViewModel = koinViewModel()
27+
TopicScreen(
2728
onTopicClick = { selectedTopicId ->
2829
actions.navigateToDetail(selectedTopicId)
29-
}
30+
},
31+
viewModel = viewModel
3032
)
3133
}
3234

@@ -35,4 +37,4 @@ fun AppNavigation(
3537
DetailScreen(viewModel = viewModel)
3638
}
3739
}
38-
}
40+
}

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/ui/navigation/NavigationAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ class NavigationActions(private val navController: NavHostController) {
77
val navigateToDetail: (String) -> Unit = { topicId ->
88
navController.navigate(AppDestinations.Detail(topicId))
99
}
10-
}
10+
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.developersbreach.kotlindictionarymultiplatform.ui.screens
1+
package com.developersbreach.kotlindictionarymultiplatform.ui.screens.detail
22

33
import androidx.compose.runtime.*
44
import androidx.compose.material.*
@@ -63,4 +63,4 @@ fun DetailScreen(viewModel: DetailViewModel) {
6363
CircularProgressIndicator()
6464
}
6565
}
66-
}
66+
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package com.developersbreach.kotlindictionarymultiplatform.ui.screens
1+
package com.developersbreach.kotlindictionarymultiplatform.ui.screens.detail
22

33
import androidx.lifecycle.SavedStateHandle
44
import androidx.lifecycle.ViewModel
55
import androidx.lifecycle.viewModelScope
66
import androidx.navigation.toRoute
7-
import com.developersbreach.kotlindictionarymultiplatform.core.KotlinTopicDetails
7+
import com.developersbreach.kotlindictionarymultiplatform.data.detail.KotlinTopicDetails
88
import com.developersbreach.kotlindictionarymultiplatform.core.KtorHttpClient
99
import kotlinx.coroutines.flow.MutableStateFlow
1010
import kotlinx.coroutines.flow.StateFlow
@@ -37,4 +37,4 @@ class DetailViewModel(
3737
}
3838
}
3939
}
40-
}
40+
}

0 commit comments

Comments
 (0)