Skip to content

Commit cb8fcbc

Browse files
committed
fix(provider): resolve debug providers not initialized properly
1 parent 86e4107 commit cb8fcbc

File tree

1 file changed

+32
-14
lines changed

1 file changed

+32
-14
lines changed

domain/provider/src/main/kotlin/com/flixclusive/domain/provider/ProviderLoaderUseCase.kt

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,14 @@ class ProviderLoaderUseCase
6464

6565
private val dynamicResourceLoader by lazy { DynamicResourceLoader(context = context) }
6666

67-
private val providerPreferences: ProviderPreferences get() =
68-
dataStoreManager
69-
.getUserPrefs<ProviderPreferences>(UserPreferences.PROVIDER_PREFS_KEY)
70-
.awaitFirst()
71-
72-
suspend fun load( // TODO: Implement a custom throwable here
67+
private val providerPreferences: ProviderPreferences
68+
get() =
69+
dataStoreManager
70+
.getUserPrefs<ProviderPreferences>(UserPreferences.PROVIDER_PREFS_KEY)
71+
.awaitFirst()
72+
73+
suspend fun load(
74+
// TODO: Implement a custom throwable here
7375
provider: ProviderMetadata,
7476
needsDownload: Boolean = false,
7577
filePath: String? = null,
@@ -112,8 +114,11 @@ class ProviderLoaderUseCase
112114
return@forEach
113115
}
114116

115-
val repository =
117+
val updaterJson =
116118
fromJson<List<ProviderMetadata>>(updaterFile.reader())
119+
120+
val repository =
121+
updaterJson
117122
.firstOrNull()
118123
?.repositoryUrl
119124
?.toValidRepositoryLink()
@@ -126,11 +131,19 @@ class ProviderLoaderUseCase
126131
}
127132

128133
subDirectory.listFiles()?.forEach subDirectory@{ providerFile ->
129-
if (!providerFile.name.equals(UPDATER_FILE, true)) {
134+
if (providerFile.name.equals(UPDATER_FILE, true)) {
130135
return@subDirectory
131136
}
132137

133-
addProviderToPreferences(file = providerFile)
138+
val metadata =
139+
updaterJson.find {
140+
it.buildUrl.endsWith(providerFile.name)
141+
} ?: return@subDirectory
142+
143+
addProviderToPreferences(
144+
id = metadata.id,
145+
file = providerFile,
146+
)
134147
}
135148
}
136149
}
@@ -141,16 +154,17 @@ class ProviderLoaderUseCase
141154

142155
if (!file.exists()) {
143156
warnLog("Provider file doesn't exist for: ${itemPreference.name}")
144-
return
157+
return@forEach
145158
}
146159

147160
val metadata =
148161
getProviderMetadataFromUpdater(
149162
id = itemPreference.id,
150163
file = file,
151-
) ?: return
164+
) ?: return@forEach
152165

153-
val isDebugProvider = file.parent?.equals(PROVIDER_DEBUG, true) == true
166+
val mainParentFolder = file.parentFile?.parent
167+
val isDebugProvider = mainParentFolder.equals(PROVIDER_DEBUG, true)
154168

155169
when {
156170
file.isProviderFile && isDebugProvider -> {
@@ -194,15 +208,19 @@ class ProviderLoaderUseCase
194208
}
195209
}
196210

197-
private suspend fun addProviderToPreferences(file: File) {
211+
private suspend fun addProviderToPreferences(
212+
id: String,
213+
file: File,
214+
) {
198215
val isProviderNotYetLoaded =
199216
providerPreferences.providers
200-
.any { it.filePath == file.absolutePath }
217+
.any { it.filePath == file.absolutePath && it.id == id }
201218
.not()
202219

203220
if (isProviderNotYetLoaded) {
204221
val newProvider =
205222
ProviderFromPreferences(
223+
id = id,
206224
name = file.nameWithoutExtension,
207225
filePath = file.absolutePath,
208226
isDisabled = false,

0 commit comments

Comments
 (0)