Handle the offline override in the repository
This commit is contained in:
parent
5ab9db586d
commit
88debf068b
@ -153,7 +153,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar
|
|||||||
val view = binding.root
|
val view = binding.root
|
||||||
|
|
||||||
fromTabShortcut = intent.getIntExtra("shortcutTab", -1) != -1
|
fromTabShortcut = intent.getIntExtra("shortcutTab", -1) != -1
|
||||||
offlineShortcut = intent.getBooleanExtra("startOffline", false)
|
repository.offlineOverride = intent.getBooleanExtra("startOffline", false)
|
||||||
|
|
||||||
if (fromTabShortcut) {
|
if (fromTabShortcut) {
|
||||||
elementsShown = ItemType.fromInt(intent.getIntExtra("shortcutTab", ItemType.UNREAD.position))
|
elementsShown = ItemType.fromInt(intent.getIntExtra("shortcutTab", ItemType.UNREAD.position))
|
||||||
@ -197,7 +197,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar
|
|||||||
R.color.refresh_progress_3
|
R.color.refresh_progress_3
|
||||||
)
|
)
|
||||||
binding.swipeRefreshLayout.setOnRefreshListener {
|
binding.swipeRefreshLayout.setOnRefreshListener {
|
||||||
offlineShortcut = false
|
repository.offlineOverride = false
|
||||||
lastFetchDone = false
|
lastFetchDone = false
|
||||||
handleDrawerItems()
|
handleDrawerItems()
|
||||||
CoroutineScope(Dispatchers.Main).launch {
|
CoroutineScope(Dispatchers.Main).launch {
|
||||||
|
@ -28,6 +28,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
var searchFilter: String? = null
|
var searchFilter: String? = null
|
||||||
|
|
||||||
var itemsCaching = settings.getBoolean("items_caching", false)
|
var itemsCaching = settings.getBoolean("items_caching", false)
|
||||||
|
var offlineOverride = false
|
||||||
|
|
||||||
var apiMajorVersion = 0
|
var apiMajorVersion = 0
|
||||||
var badgeUnread = 0
|
var badgeUnread = 0
|
||||||
@ -49,7 +50,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
|
|
||||||
suspend fun getNewerItems(): ArrayList<SelfossModel.Item> {
|
suspend fun getNewerItems(): ArrayList<SelfossModel.Item> {
|
||||||
// TODO: Use the updatedSince parameter
|
// TODO: Use the updatedSince parameter
|
||||||
if (isConnectionAvailable.value) {
|
if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
val fetchedItems = api.getItems(
|
val fetchedItems = api.getItems(
|
||||||
displayedItems.type,
|
displayedItems.type,
|
||||||
settings.getString("prefer_api_items_number", "200").toInt(),
|
settings.getString("prefer_api_items_number", "200").toInt(),
|
||||||
@ -71,7 +72,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
}
|
}
|
||||||
|
|
||||||
suspend fun getOlderItems(): ArrayList<SelfossModel.Item> {
|
suspend fun getOlderItems(): ArrayList<SelfossModel.Item> {
|
||||||
if (isConnectionAvailable.value) {
|
if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
val offset = items.size
|
val offset = items.size
|
||||||
val fetchedItems = api.getItems(
|
val fetchedItems = api.getItems(
|
||||||
displayedItems.type,
|
displayedItems.type,
|
||||||
@ -93,7 +94,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
}
|
}
|
||||||
|
|
||||||
suspend fun allItems(itemType: ItemType): List<SelfossModel.Item>? {
|
suspend fun allItems(itemType: ItemType): List<SelfossModel.Item>? {
|
||||||
return if (isConnectionAvailable.value) {
|
return if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
api.getItems(
|
api.getItems(
|
||||||
itemType.type,
|
itemType.type,
|
||||||
200,
|
200,
|
||||||
@ -123,7 +124,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
|
|
||||||
suspend fun reloadBadges(): Boolean {
|
suspend fun reloadBadges(): Boolean {
|
||||||
var success = false
|
var success = false
|
||||||
if (isConnectionAvailable.value) {
|
if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
val response = api.stats()
|
val response = api.stats()
|
||||||
if (response != null) {
|
if (response != null) {
|
||||||
badgeUnread = response.unread
|
badgeUnread = response.unread
|
||||||
@ -139,7 +140,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
|
|
||||||
suspend fun getTags(): List<SelfossModel.Tag>? {
|
suspend fun getTags(): List<SelfossModel.Tag>? {
|
||||||
// TODO: Store in DB
|
// TODO: Store in DB
|
||||||
return if (isConnectionAvailable.value) {
|
return if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
api.tags()
|
api.tags()
|
||||||
} else {
|
} else {
|
||||||
// TODO: Compute from database
|
// TODO: Compute from database
|
||||||
@ -149,7 +150,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
|
|
||||||
suspend fun getSpouts(): Map<String, SelfossModel.Spout>? {
|
suspend fun getSpouts(): Map<String, SelfossModel.Spout>? {
|
||||||
// TODO: Store in DB
|
// TODO: Store in DB
|
||||||
return if (isConnectionAvailable.value) {
|
return if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
api.spouts()
|
api.spouts()
|
||||||
} else {
|
} else {
|
||||||
// TODO: Compute from database
|
// TODO: Compute from database
|
||||||
@ -159,7 +160,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
|
|
||||||
suspend fun getSources(): ArrayList<SelfossModel.Source>? {
|
suspend fun getSources(): ArrayList<SelfossModel.Source>? {
|
||||||
// TODO: Store in DB
|
// TODO: Store in DB
|
||||||
return if (isConnectionAvailable.value) {
|
return if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
api.sources()
|
api.sources()
|
||||||
} else {
|
} else {
|
||||||
// TODO: Compute from database
|
// TODO: Compute from database
|
||||||
@ -178,7 +179,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
|
|
||||||
suspend fun markAsReadById(id: Int): Boolean {
|
suspend fun markAsReadById(id: Int): Boolean {
|
||||||
var success = false
|
var success = false
|
||||||
if (isConnectionAvailable.value) {
|
if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
success = api.markAsRead(id.toString())?.isSuccess == true
|
success = api.markAsRead(id.toString())?.isSuccess == true
|
||||||
}
|
}
|
||||||
return success
|
return success
|
||||||
@ -197,7 +198,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
suspend fun unmarkAsReadById(id: Int): Boolean {
|
suspend fun unmarkAsReadById(id: Int): Boolean {
|
||||||
// TODO: Check internet connection
|
// TODO: Check internet connection
|
||||||
var success = false
|
var success = false
|
||||||
if (isConnectionAvailable.value) {
|
if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
success = api.unmarkAsRead(id.toString())?.isSuccess == true
|
success = api.unmarkAsRead(id.toString())?.isSuccess == true
|
||||||
}
|
}
|
||||||
return success
|
return success
|
||||||
@ -214,7 +215,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
|
|
||||||
suspend fun starrById(id: Int): Boolean {
|
suspend fun starrById(id: Int): Boolean {
|
||||||
var success = false
|
var success = false
|
||||||
if (isConnectionAvailable.value) {
|
if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
success = api.starr(id.toString())?.isSuccess == true
|
success = api.starr(id.toString())?.isSuccess == true
|
||||||
}
|
}
|
||||||
return success
|
return success
|
||||||
@ -231,7 +232,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
|
|
||||||
suspend fun unstarrById(id: Int): Boolean {
|
suspend fun unstarrById(id: Int): Boolean {
|
||||||
var success = false
|
var success = false
|
||||||
if (isConnectionAvailable.value) {
|
if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
success = api.unstarr(id.toString())?.isSuccess == true
|
success = api.unstarr(id.toString())?.isSuccess == true
|
||||||
}
|
}
|
||||||
return success
|
return success
|
||||||
@ -240,7 +241,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
|
|
||||||
suspend fun markAllAsRead(items: ArrayList<SelfossModel.Item>): Boolean {
|
suspend fun markAllAsRead(items: ArrayList<SelfossModel.Item>): Boolean {
|
||||||
var success = false
|
var success = false
|
||||||
if (isConnectionAvailable.value) {
|
if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
success = api.markAllAsRead(items.map { it.id.toString() })?.isSuccess == true
|
success = api.markAllAsRead(items.map { it.id.toString() })?.isSuccess == true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -292,7 +293,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
filter: String
|
filter: String
|
||||||
): Boolean {
|
): Boolean {
|
||||||
var response = false
|
var response = false
|
||||||
if (isConnectionAvailable.value) {
|
if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
response = api.createSourceForVersion(
|
response = api.createSourceForVersion(
|
||||||
title,
|
title,
|
||||||
url,
|
url,
|
||||||
@ -309,7 +310,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
suspend fun deleteSource(id: Int): Boolean {
|
suspend fun deleteSource(id: Int): Boolean {
|
||||||
// TODO: Store in DB
|
// TODO: Store in DB
|
||||||
var success = false
|
var success = false
|
||||||
if (isConnectionAvailable.value) {
|
if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
val response = api.deleteSource(id)
|
val response = api.deleteSource(id)
|
||||||
if (response != null) {
|
if (response != null) {
|
||||||
success = response.isSuccess
|
success = response.isSuccess
|
||||||
@ -321,7 +322,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
|
|
||||||
suspend fun updateRemote(): Boolean {
|
suspend fun updateRemote(): Boolean {
|
||||||
var response = false
|
var response = false
|
||||||
if (isConnectionAvailable.value) {
|
if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
response = api.update()?.isSuccess == true
|
response = api.update()?.isSuccess == true
|
||||||
}
|
}
|
||||||
return response
|
return response
|
||||||
@ -329,7 +330,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
|
|
||||||
suspend fun login(): Boolean {
|
suspend fun login(): Boolean {
|
||||||
var result = false
|
var result = false
|
||||||
if (isConnectionAvailable.value) {
|
if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
try {
|
try {
|
||||||
val response = api.login()
|
val response = api.login()
|
||||||
result = response?.isSuccess == true
|
result = response?.isSuccess == true
|
||||||
@ -356,7 +357,7 @@ class Repository(private val api: SelfossApi, private val apiDetails: ApiDetails
|
|||||||
private suspend fun updateApiVersion() {
|
private suspend fun updateApiVersion() {
|
||||||
apiMajorVersion = settings.getInt("apiVersionMajor", 0)
|
apiMajorVersion = settings.getInt("apiVersionMajor", 0)
|
||||||
|
|
||||||
if (isConnectionAvailable.value) {
|
if (isConnectionAvailable.value && !offlineOverride) {
|
||||||
val fetchedVersion = api.version()
|
val fetchedVersion = api.version()
|
||||||
if (fetchedVersion != null) {
|
if (fetchedVersion != null) {
|
||||||
apiMajorVersion = fetchedVersion.getApiMajorVersion()
|
apiMajorVersion = fetchedVersion.getApiMajorVersion()
|
||||||
|
Loading…
Reference in New Issue
Block a user