diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt index fa8cf386..d2072ea6 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt @@ -34,6 +34,7 @@ import com.lagradost.cloudstream3.mvvm.* import com.lagradost.cloudstream3.syncproviders.AccountManager import com.lagradost.cloudstream3.syncproviders.SyncAPI import com.lagradost.cloudstream3.syncproviders.providers.Kitsu +import com.lagradost.cloudstream3.syncproviders.providers.SimklApi import com.lagradost.cloudstream3.ui.APIRepository import com.lagradost.cloudstream3.ui.WatchType import com.lagradost.cloudstream3.ui.download.DOWNLOAD_NAVIGATE_TO @@ -878,7 +879,7 @@ class ResultViewModel2 : ViewModel() { response.type, response.posterUrl, response.year, - response.getImdbId() + response.syncData ) ) @@ -956,7 +957,7 @@ class ResultViewModel2 : ViewModel() { response.type, response.posterUrl, response.year, - response.getImdbId() + response.syncData ) ) @@ -1022,7 +1023,7 @@ class ResultViewModel2 : ViewModel() { response.type, response.posterUrl, response.year, - response.getImdbId() + response.syncData ) ) @@ -1055,8 +1056,10 @@ class ResultViewModel2 : ViewModel() { } val duplicateEntries = data.filter { - checkDuplicateData.imdbId != null && it.imdbId == checkDuplicateData.imdbId || - normalizeString(it.name) == normalizeString(checkDuplicateData.name) && it.year == checkDuplicateData.year + checkDuplicateData.imdbId != null && + getImdbIdFromSyncData(it.syncData) == checkDuplicateData.imdbId || + normalizeString(it.name) == normalizeString(checkDuplicateData.name) && + it.year == checkDuplicateData.year } if (duplicateEntries.isEmpty() || context == null) { @@ -1117,6 +1120,14 @@ class ResultViewModel2 : ViewModel() { .show().setDefaultFocus() } + private fun getImdbIdFromSyncData(syncData: Map?): String? { + return normalSafeApiCall { + SimklApi.readIdFromString( + syncData?.get(AccountManager.simklApi.idPrefix) + )[SimklApi.Companion.SyncServices.Imdb] + } + } + private fun startChromecast( activity: Activity?, result: ResultEpisode, diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/DataStoreHelper.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/DataStoreHelper.kt index 0ef99881..ed7e1b2f 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/DataStoreHelper.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/DataStoreHelper.kt @@ -361,7 +361,7 @@ object DataStoreHelper { @JsonProperty("type") override var type: TvType?, @JsonProperty("posterUrl") override var posterUrl: String?, @JsonProperty("year") open val year: Int?, - @JsonProperty("imdbId") open val imdbId: String?, + @JsonProperty("syncData") open val syncData: Map?, @JsonProperty("quality") override var quality: SearchQuality?, @JsonProperty("posterHeaders") override var posterHeaders: Map? ) : SearchResponse @@ -377,10 +377,10 @@ object DataStoreHelper { override var type: TvType?, override var posterUrl: String?, override val year: Int?, - override val imdbId: String? = null, + override val syncData: Map? = null, override var quality: SearchQuality? = null, override var posterHeaders: Map? = null - ) : LibrarySearchResponse(id, latestUpdatedTime, name, url, apiName, type, posterUrl, year, imdbId, quality, posterHeaders) { + ) : LibrarySearchResponse(id, latestUpdatedTime, name, url, apiName, type, posterUrl, year, syncData, quality, posterHeaders) { fun toLibraryItem(): SyncAPI.LibraryItem? { return SyncAPI.LibraryItem( name, @@ -405,10 +405,10 @@ object DataStoreHelper { override var type: TvType?, override var posterUrl: String?, override val year: Int?, - override val imdbId: String? = null, + override val syncData: Map? = null, override var quality: SearchQuality? = null, override var posterHeaders: Map? = null - ) : LibrarySearchResponse(id, latestUpdatedTime, name, url, apiName, type, posterUrl, year, imdbId, quality, posterHeaders) { + ) : LibrarySearchResponse(id, latestUpdatedTime, name, url, apiName, type, posterUrl, year, syncData, quality, posterHeaders) { fun toLibraryItem(id: String): SyncAPI.LibraryItem { return SyncAPI.LibraryItem( name, @@ -433,10 +433,10 @@ object DataStoreHelper { override var type: TvType?, override var posterUrl: String?, override val year: Int?, - override val imdbId: String? = null, + override val syncData: Map? = null, override var quality: SearchQuality? = null, override var posterHeaders: Map? = null - ) : LibrarySearchResponse(id, latestUpdatedTime, name, url, apiName, type, posterUrl, year, imdbId, quality, posterHeaders) { + ) : LibrarySearchResponse(id, latestUpdatedTime, name, url, apiName, type, posterUrl, year, syncData, quality, posterHeaders) { fun toLibraryItem(): SyncAPI.LibraryItem? { return SyncAPI.LibraryItem( name,