@@ -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