SyncAdapter.kt 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * Copyright (c) Milan Jurkulák 2023.
  3. * Contact:
  4. * e: mimoccc@gmail.com
  5. * e: mj@mjdev.org
  6. * w: https://mjdev.org
  7. */
  8. package org.mjdev.tvapp.sync
  9. import android.accounts.Account
  10. import android.content.AbstractThreadedSyncAdapter
  11. import android.content.ContentProviderClient
  12. import android.content.Context
  13. import android.content.SyncResult
  14. import android.os.Bundle
  15. import androidx.annotation.Keep
  16. import io.objectbox.Box
  17. import org.mjdev.tvapp.BuildConfig
  18. import org.mjdev.tvapp.data.local.Movie
  19. import org.mjdev.tvapp.database.DAO
  20. import org.mjdev.tvapp.repository.ApiService
  21. import org.mjdev.tvapp.sync.base.Syncer
  22. import org.mjdev.tvapp.sync.syncers.GithubMoviesSyncer
  23. import org.mjdev.tvapp.sync.syncers.WebMovieSyncer
  24. import org.mjdev.tvlib.extensions.GlobalExt.launchIO
  25. @Keep
  26. @Suppress("unused")
  27. class SyncAdapter(
  28. context: Context,
  29. val apiService: ApiService,
  30. val dao: DAO,
  31. val movieDao: Box<Movie> = dao.movieDao,
  32. ) : AbstractThreadedSyncAdapter(context, true, false) {
  33. private fun ifDebug(syncer: Syncer) = if (BuildConfig.DEBUG) syncer else null
  34. private fun ifNotDebug(syncer: Syncer) = if (!BuildConfig.DEBUG) syncer else null
  35. private val customSyncers: List<Syncer> by lazy {
  36. listOfNotNull(
  37. ifNotDebug(GithubMoviesSyncer(this)),
  38. ifDebug(WebMovieSyncer(this, "https://tekeye.uk/html/html5-video-test-page")),
  39. ifDebug(WebMovieSyncer(this, "https://prehraj.to/hledej/filmy")),
  40. ifDebug(WebMovieSyncer(this, "https://movie4kto.net/")),
  41. ifDebug(WebMovieSyncer(this, "https://movie4kto.net/")),
  42. )
  43. }
  44. override fun onPerformSync(
  45. account: Account?,
  46. extras: Bundle?,
  47. authority: String?,
  48. provider: ContentProviderClient?,
  49. syncResult: SyncResult?
  50. ) {
  51. launchIO {
  52. customSyncers.forEach { syncer -> syncer.sync() }
  53. }
  54. }
  55. }