Skip to content

Commit b80bffb

Browse files
committed
feat: Upgrade dependencies.
1 parent 1e08197 commit b80bffb

File tree

17 files changed

+96
-37
lines changed

17 files changed

+96
-37
lines changed

app/build.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,6 @@ android {
4949
targetCompatibility = JavaVersion.VERSION_17
5050
}
5151

52-
kotlinOptions {
53-
jvmTarget = libs.versions.jvmTarget.get()
54-
}
55-
5652
buildFeatures {
5753
buildConfig = true
5854
}
@@ -63,6 +59,10 @@ android {
6359
}
6460
}
6561

62+
kotlin {
63+
jvmToolchain(17)
64+
}
65+
6666
dependencies {
6767
implementation(project(":shared"))
6868

core/analytics/src/commonMain/kotlin/com/zrcoding/hackertab/analytics/models/AnalyticsEvent.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ data class AnalyticsEvent(
2020
const val SETUP_COMPLETED = "setup_completed"
2121
const val TOPIC_SELECTION_CHANGED = "topic_selection_changed"
2222
const val SOURCE_SELECTION_CHANGED = "source_selection_changed"
23+
const val SOURCE_FILTER_CHANGED = "source_filter_changed"
2324
const val TOPIC_FILTER_CHANGED = "topic_filter_changed"
2425
// Add more standard event types here
2526
}

core/data/src/commonMain/kotlin/com/zrcoding/hackertab/data/mappers/Mappers.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,14 @@ import com.zrcoding.hackertab.network.dtos.ConferenceDto
1616
import com.zrcoding.hackertab.network.dtos.GithubDto
1717
import com.zrcoding.hackertab.network.dtos.IndieHackersDto
1818
import com.zrcoding.hackertab.network.dtos.ProductHuntDto
19-
import kotlinx.datetime.Clock
20-
import kotlinx.datetime.Instant
2119
import kotlinx.datetime.LocalDateTime
2220
import kotlinx.datetime.TimeZone
2321
import kotlinx.datetime.toLocalDateTime
22+
import kotlin.time.Clock
23+
import kotlin.time.ExperimentalTime
24+
import kotlin.time.Instant
2425

26+
@OptIn(ExperimentalTime::class)
2527
fun Long.toZonedLocalDate(): LocalDateTime = Instant.fromEpochMilliseconds(this)
2628
.toLocalDateTime(TimeZone.currentSystemDefault())
2729

@@ -108,6 +110,7 @@ fun ProductHuntDto.toProductHunt() = ProductHunt(
108110
tags = tags.orEmpty().take(1)
109111
)
110112

113+
@OptIn(ExperimentalTime::class)
111114
fun IndieHackersDto.toIndieHackers() = IndieHackers(
112115
id = id ?: Clock.System.now().toEpochMilliseconds().toString(),
113116
title = title,

core/domain/src/commonMain/kotlin/com/zrcoding/hackertab/domain/usecases/BuildConferenceDisplayedDateUseCase.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ object BuildConferenceDisplayedDateUseCase {
1414
if (startDate.month != endDate.month) {
1515
"$start - ${toMonthWithDay(endDate)}"
1616
} else {
17-
"$start - ${endDate.dayOfMonth}"
17+
"$start - ${endDate.day}"
1818
}
1919
}
2020
}
@@ -25,6 +25,6 @@ object BuildConferenceDisplayedDateUseCase {
2525
val month = date.month.name.lowercase().replaceFirstChar {
2626
if (it.isLowerCase()) it.titlecase() else it.toString()
2727
}
28-
return "$month ${date.dayOfMonth}"
28+
return "$month ${date.day}"
2929
}
3030
}

feature/home/src/commonMain/kotlin/com/zrcoding/hackertab/home/presentation/HomeScreenViewModel.kt

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ package com.zrcoding.hackertab.home.presentation
22

33
import androidx.lifecycle.ViewModel
44
import androidx.lifecycle.viewModelScope
5+
import com.zrcoding.hackertab.analytics.AnalyticsHelper
6+
import com.zrcoding.hackertab.analytics.models.AnalyticsEvent
7+
import com.zrcoding.hackertab.analytics.models.Param
58
import com.zrcoding.hackertab.domain.models.BaseArticle
69
import com.zrcoding.hackertab.domain.models.NetworkErrors
710
import com.zrcoding.hackertab.domain.models.Resource
@@ -22,7 +25,8 @@ import kotlinx.coroutines.launch
2225
class HomeScreenViewModel(
2326
private val observeSelectedSourcesUseCase: ObserveSelectedSourcesUseCase,
2427
private val observeSelectedTopicsUseCase: ObserveSelectedTopicsUseCase,
25-
private val articleRepository: ArticleRepository
28+
private val articleRepository: ArticleRepository,
29+
private val analyticsHelper: AnalyticsHelper
2630
) : ViewModel() {
2731

2832
private val _viewState = MutableStateFlow(HomeScreenViewState())
@@ -75,6 +79,7 @@ class HomeScreenViewModel(
7579
it.copy(selectedSource = source)
7680
}
7781
loadArticles()
82+
logSourceFilterChanged(source)
7883
}
7984

8085
fun onTopicSelected(topic: Topic) {
@@ -83,6 +88,7 @@ class HomeScreenViewModel(
8388
it.copy(selectedTopic = topic)
8489
}
8590
loadArticles()
91+
logTopicFilterChanged(topic)
8692
}
8793

8894
fun onRefreshBtnClick() {
@@ -104,6 +110,7 @@ class HomeScreenViewModel(
104110
error = null
105111
)
106112
}
113+
107114
is Resource.Failure -> {
108115
_viewState.update {
109116
it.copy(
@@ -130,7 +137,7 @@ class HomeScreenViewModel(
130137
}
131138
}
132139

133-
suspend fun getSourceTag(
140+
private suspend fun getSourceTag(
134141
source: Source,
135142
topic: Topic
136143
): Resource<List<BaseArticle>, NetworkErrors>? {
@@ -179,4 +186,32 @@ class HomeScreenViewModel(
179186
Source.INDIE_HACKERS -> articleRepository.getIndieHackersArticles()
180187
}
181188
}
189+
190+
private fun logSourceFilterChanged(source: Source) {
191+
analyticsHelper.logEvent(
192+
event = AnalyticsEvent(
193+
name = AnalyticsEvent.Types.SOURCE_FILTER_CHANGED,
194+
properties = setOf(
195+
Param(
196+
key = AnalyticsEvent.ParamKeys.VALUE,
197+
value = source.analyticsTag
198+
)
199+
)
200+
),
201+
)
202+
}
203+
204+
private fun logTopicFilterChanged(topic: Topic) {
205+
analyticsHelper.logEvent(
206+
event = AnalyticsEvent(
207+
name = AnalyticsEvent.Types.SOURCE_FILTER_CHANGED,
208+
properties = setOf(
209+
Param(
210+
key = AnalyticsEvent.ParamKeys.VALUE,
211+
value = topic.id
212+
)
213+
)
214+
),
215+
)
216+
}
182217
}

feature/home/src/commonMain/kotlin/com/zrcoding/hackertab/home/presentation/cards/devto/DevtoItem.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ import com.zrcoding.hackertab.design.theme.HackertabTheme
1313
import com.zrcoding.hackertab.domain.models.Devto
1414
import com.zrcoding.hackertab.home.presentation.cards.SourceItemTemplate
1515
import com.zrcoding.hackertab.home.presentation.utils.timeAgo
16-
import kotlinx.datetime.Clock
1716
import kotlinx.datetime.TimeZone
1817
import kotlinx.datetime.toLocalDateTime
1918
import org.jetbrains.compose.resources.stringResource
2019
import org.jetbrains.compose.ui.tooling.preview.Preview
20+
import kotlin.time.Clock
21+
import kotlin.time.ExperimentalTime
2122

2223
@OptIn(ExperimentalLayoutApi::class)
2324
@Composable
@@ -46,6 +47,7 @@ fun DevtoItem(devto: Devto) {
4647
}
4748
}
4849

50+
@OptIn(ExperimentalTime::class)
4951
@Preview()
5052
@Composable
5153
private fun DevtoItemPreview() {

feature/home/src/commonMain/kotlin/com/zrcoding/hackertab/home/presentation/cards/freecodecamp/FreeCodeCampItem.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ import com.zrcoding.hackertab.design.theme.HackertabTheme
99
import com.zrcoding.hackertab.domain.models.FreeCodeCamp
1010
import com.zrcoding.hackertab.home.presentation.cards.SourceItemTemplate
1111
import com.zrcoding.hackertab.home.presentation.utils.timeAgo
12-
import kotlinx.datetime.Clock
1312
import kotlinx.datetime.TimeZone
1413
import kotlinx.datetime.toLocalDateTime
1514
import org.jetbrains.compose.ui.tooling.preview.Preview
15+
import kotlin.time.Clock
16+
import kotlin.time.ExperimentalTime
1617

1718
@OptIn(ExperimentalLayoutApi::class)
1819
@Composable
@@ -31,6 +32,7 @@ fun FreeCodeCampItem(post: FreeCodeCamp) {
3132
)
3233
}
3334

35+
@OptIn(ExperimentalTime::class)
3436
@Preview()
3537
@Composable
3638
private fun FreeCodeCampItemPreview() {

feature/home/src/commonMain/kotlin/com/zrcoding/hackertab/home/presentation/cards/hackernews/HackerNewsItem.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@ import com.zrcoding.hackertab.design.theme.HackertabTheme
1414
import com.zrcoding.hackertab.domain.models.HackerNews
1515
import com.zrcoding.hackertab.home.presentation.cards.SourceItemTemplate
1616
import com.zrcoding.hackertab.home.presentation.utils.timeAgo
17-
import kotlinx.datetime.Clock
1817
import kotlinx.datetime.TimeZone
1918
import kotlinx.datetime.toLocalDateTime
2019
import org.jetbrains.compose.resources.stringResource
2120
import org.jetbrains.compose.ui.tooling.preview.Preview
21+
import kotlin.time.Clock
22+
import kotlin.time.ExperimentalTime
2223

2324
@OptIn(ExperimentalLayoutApi::class)
2425
@Composable
@@ -45,6 +46,7 @@ fun HackerNewsItem(new: HackerNews) {
4546
)
4647
}
4748

49+
@OptIn(ExperimentalTime::class)
4850
@Preview()
4951
@Composable
5052
fun HackerNewsItemPreview() {

feature/home/src/commonMain/kotlin/com/zrcoding/hackertab/home/presentation/cards/hashnode/HashnodeItem.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ import com.zrcoding.hackertab.design.theme.HackertabTheme
1313
import com.zrcoding.hackertab.domain.models.Hashnode
1414
import com.zrcoding.hackertab.home.presentation.cards.SourceItemTemplate
1515
import com.zrcoding.hackertab.home.presentation.utils.timeAgo
16-
import kotlinx.datetime.Clock
1716
import kotlinx.datetime.TimeZone
1817
import kotlinx.datetime.toLocalDateTime
1918
import org.jetbrains.compose.resources.stringResource
2019
import org.jetbrains.compose.ui.tooling.preview.Preview
20+
import kotlin.time.Clock
21+
import kotlin.time.ExperimentalTime
2122

2223
@OptIn(ExperimentalLayoutApi::class)
2324
@Composable
@@ -46,6 +47,7 @@ fun HashnodeItem(hashnode: Hashnode) {
4647
}
4748
}
4849

50+
@OptIn(ExperimentalTime::class)
4951
@Preview()
5052
@Composable
5153
private fun HashnodeItemPreview() {

feature/home/src/commonMain/kotlin/com/zrcoding/hackertab/home/presentation/cards/indiehackers/IndieHackersItem.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@ import com.zrcoding.hackertab.design.theme.HackertabTheme
1414
import com.zrcoding.hackertab.domain.models.IndieHackers
1515
import com.zrcoding.hackertab.home.presentation.cards.SourceItemTemplate
1616
import com.zrcoding.hackertab.home.presentation.utils.timeAgo
17-
import kotlinx.datetime.Clock
1817
import kotlinx.datetime.TimeZone
1918
import kotlinx.datetime.toLocalDateTime
2019
import org.jetbrains.compose.resources.stringResource
2120
import org.jetbrains.compose.ui.tooling.preview.Preview
21+
import kotlin.time.Clock
22+
import kotlin.time.ExperimentalTime
2223

2324
@OptIn(ExperimentalLayoutApi::class)
2425
@Composable
@@ -47,6 +48,7 @@ fun IndieHackersItem(indieHackers: IndieHackers) {
4748
}
4849
}
4950

51+
@OptIn(ExperimentalTime::class)
5052
@Preview()
5153
@Composable
5254
private fun IndieHackersItemPreview() {

0 commit comments

Comments
 (0)