Strip direct api access from background
This commit is contained in:
parent
1fb16bcbdd
commit
38f1dbd34d
@ -15,8 +15,6 @@ import bou.amine.apps.readerforselfossv2.android.MainActivity
|
||||
import bou.amine.apps.readerforselfossv2.android.MyApp
|
||||
import bou.amine.apps.readerforselfossv2.android.R
|
||||
import bou.amine.apps.readerforselfossv2.android.model.preloadImages
|
||||
import bou.amine.apps.readerforselfossv2.android.persistence.AndroidDeviceDatabase
|
||||
import bou.amine.apps.readerforselfossv2.android.persistence.AndroidDeviceDatabaseService
|
||||
import bou.amine.apps.readerforselfossv2.android.persistence.database.AppDatabase
|
||||
import bou.amine.apps.readerforselfossv2.android.persistence.entities.ActionEntity
|
||||
import bou.amine.apps.readerforselfossv2.android.persistence.migrations.MIGRATION_1_2
|
||||
@ -25,13 +23,8 @@ import bou.amine.apps.readerforselfossv2.android.persistence.migrations.MIGRATIO
|
||||
import bou.amine.apps.readerforselfossv2.android.utils.Config
|
||||
import bou.amine.apps.readerforselfossv2.android.utils.network.isNetworkAvailable
|
||||
import bou.amine.apps.readerforselfossv2.repository.Repository
|
||||
|
||||
import bou.amine.apps.readerforselfossv2.rest.SelfossApiImpl
|
||||
import bou.amine.apps.readerforselfossv2.rest.SelfossModel
|
||||
import bou.amine.apps.readerforselfossv2.service.ApiDetailsService
|
||||
import bou.amine.apps.readerforselfossv2.service.SearchService
|
||||
import bou.amine.apps.readerforselfossv2.service.SelfossService
|
||||
import bou.amine.apps.readerforselfossv2.utils.DateUtils
|
||||
import bou.amine.apps.readerforselfossv2.utils.ItemType
|
||||
import com.russhwolf.settings.Settings
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@ -46,24 +39,12 @@ class LoadingWorker(val context: Context, params: WorkerParameters) : Worker(con
|
||||
lateinit var db: AppDatabase
|
||||
|
||||
override val di by lazy { (applicationContext as MyApp).di }
|
||||
private val apiDetailsService : ApiDetailsService by instance()
|
||||
private val repository : Repository by instance()
|
||||
|
||||
override fun doWork(): Result {
|
||||
val settings = Settings()
|
||||
val periodicRefresh = settings.getBoolean("periodic_refresh", false)
|
||||
if (periodicRefresh) {
|
||||
val api = SelfossApiImpl(
|
||||
// this.context,
|
||||
// null,
|
||||
// settings.getBoolean("isSelfSignedCert", false),
|
||||
// sharedPref.getString("api_timeout", "-1")!!.toLong()
|
||||
apiDetailsService
|
||||
)
|
||||
|
||||
val dateUtils = DateUtils(repository.apiMajorVersion)
|
||||
val searchService = SearchService(dateUtils)
|
||||
val service = SelfossService(api, AndroidDeviceDatabaseService(AndroidDeviceDatabase(applicationContext), searchService), searchService)
|
||||
|
||||
if (context.isNetworkAvailable()) {
|
||||
|
||||
@ -95,19 +76,19 @@ override fun doWork(): Result {
|
||||
actions.forEach { action ->
|
||||
when {
|
||||
action.read -> doAndReportOnFail(
|
||||
api.markAsRead(action.articleId),
|
||||
repository.markAsRead(action.articleId.toInt()),
|
||||
action
|
||||
)
|
||||
action.unread -> doAndReportOnFail(
|
||||
api.unmarkAsRead(action.articleId),
|
||||
repository.unmarkAsRead(action.articleId.toInt()),
|
||||
action
|
||||
)
|
||||
action.starred -> doAndReportOnFail(
|
||||
api.starr(action.articleId),
|
||||
repository.starr(action.articleId.toInt()),
|
||||
action
|
||||
)
|
||||
action.unstarred -> doAndReportOnFail(
|
||||
api.unstarr(action.articleId),
|
||||
repository.unstarr(action.articleId.toInt()),
|
||||
action
|
||||
)
|
||||
}
|
||||
@ -116,10 +97,10 @@ override fun doWork(): Result {
|
||||
if (context.isNetworkAvailable()) {
|
||||
launch {
|
||||
try {
|
||||
val newItems = service.allNewItems()
|
||||
val newItems = repository.allItems(ItemType.UNREAD)
|
||||
handleNewItemsNotification(newItems, notifyNewItems, notificationManager)
|
||||
val readItems = service.allReadItems()
|
||||
val starredItems = service.allStarredItems()
|
||||
val readItems = repository.allItems(ItemType.ALL)
|
||||
val starredItems = repository.allItems(ItemType.STARRED)
|
||||
// TODO: save all to DB
|
||||
} catch (e: Throwable) {}
|
||||
}
|
||||
@ -178,8 +159,9 @@ override fun doWork(): Result {
|
||||
}
|
||||
}
|
||||
|
||||
private fun doAndReportOnFail(result: SelfossModel.SuccessResponse?, action: ActionEntity) {
|
||||
if (result != null && result.isSuccess) {
|
||||
private fun doAndReportOnFail(result: Boolean, action: ActionEntity) {
|
||||
// TODO: Failures should be reported
|
||||
if (result) {
|
||||
thread {
|
||||
db.actionsDao().delete(action)
|
||||
}
|
||||
|
@ -28,6 +28,7 @@ interface Repository {
|
||||
|
||||
suspend fun getNewerItems(): ArrayList<SelfossModel.Item>
|
||||
suspend fun getOlderItems(): ArrayList<SelfossModel.Item>
|
||||
suspend fun allItems(itemType: ItemType): List<SelfossModel.Item>?
|
||||
suspend fun reloadBadges(): Boolean
|
||||
suspend fun getTags(): List<SelfossModel.Tag>?
|
||||
suspend fun getSpouts(): Map<String, SelfossModel.Spout>?
|
||||
|
@ -75,6 +75,9 @@ class RepositoryImpl(private val api: SelfossApi, private val apiDetails: ApiDet
|
||||
return items
|
||||
}
|
||||
|
||||
override suspend fun allItems(itemType: ItemType): List<SelfossModel.Item>? =
|
||||
api.getItems(itemType.type, 200, 0, tagFilter?.tag, sourceFilter?.id?.toLong(), searchFilter)
|
||||
|
||||
private fun appendItems(fetchedItems: List<SelfossModel.Item>) {
|
||||
// TODO: Store in DB if enabled by user
|
||||
val fetchedIDS = fetchedItems.map { it.id }
|
||||
|
Loading…
Reference in New Issue
Block a user