Skip to content

Commit f2be41d

Browse files
author
oxy
committed
Fix fetch the release everytime.
1 parent f675604 commit f2be41d

File tree

3 files changed

+13
-11
lines changed

3 files changed

+13
-11
lines changed

data/src/main/java/com/m3u/data/repository/other/OtherRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ package com.m3u.data.repository.other
33
import com.m3u.data.api.dto.github.Release
44

55
interface OtherRepository {
6-
suspend fun getRelease(): Release?
6+
suspend fun release(): Release?
77
}

data/src/main/java/com/m3u/data/repository/other/OtherRepositoryImpl.kt

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,17 @@ internal class OtherRepositoryImpl @Inject constructor(
1616
delegate: Logger
1717
) : OtherRepository {
1818
private val logger = delegate.install(Profiles.REPOS_OTHER)
19-
override suspend fun getRelease(): Release? {
20-
if (publisher.snapshot) return null
19+
private var releases: List<Release>? = null
20+
override suspend fun release(): Release? {
21+
if (releases == null) {
22+
// cannot use lazy because the suspension
23+
releases = logger.execute { githubApi.releases("oxyroid", "M3UAndroid") } ?: emptyList()
24+
}
2125
val versionName = publisher.versionName
22-
val releases = logger
23-
.execute { githubApi.releases("oxyroid", "M3UAndroid") }
24-
?: emptyList()
25-
if (releases.isEmpty()) return null
26-
val i = releases.indexOf { it.name == versionName }
27-
// if (i <= 0) return null
28-
return releases.first()
26+
val currentReleases = releases ?: emptyList()
27+
if (currentReleases.isEmpty()) return null
28+
val i = currentReleases.indexOf { it.name == versionName }
29+
if (i <= 0 && !publisher.snapshot) return null
30+
return currentReleases.first()
2931
}
3032
}

feature/foryou/src/main/java/com/m3u/feature/foryou/ForyouViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ class ForyouViewModel @Inject constructor(
100100
)
101101

102102
private val newRelease: StateFlow<Release?> = flow {
103-
emit(otherRepository.getRelease())
103+
emit(otherRepository.release())
104104
}
105105
.stateIn(
106106
scope = viewModelScope,

0 commit comments

Comments
 (0)