mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 12:09:45 +01:00
Pass needed parameters during every call to repository
Signed-off-by: Tim Krüger <t@timkrueger.me>
This commit is contained in:
parent
577357011e
commit
6a27dc7dba
@ -18,8 +18,6 @@ import javax.inject.Inject
|
|||||||
@AutoInjector(NextcloudTalkApplication::class)
|
@AutoInjector(NextcloudTalkApplication::class)
|
||||||
class SharedItemsRepository {
|
class SharedItemsRepository {
|
||||||
|
|
||||||
var parameters: Parameters? = null
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var ncApi: NcApi
|
lateinit var ncApi: NcApi
|
||||||
|
|
||||||
@ -27,23 +25,27 @@ class SharedItemsRepository {
|
|||||||
sharedApplication!!.componentApplication.inject(this)
|
sharedApplication!!.componentApplication.inject(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun media(type: SharedItemType): Observable<SharedMediaItems>? {
|
fun media(parameters: Parameters, type: SharedItemType): Observable<SharedMediaItems>? {
|
||||||
return media(type, null)
|
return media(parameters, type, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun media(type: SharedItemType, lastKnownMessageId: Int?): Observable<SharedMediaItems>? {
|
fun media(parameters: Parameters, type: SharedItemType, lastKnownMessageId: Int?): Observable<SharedMediaItems>? {
|
||||||
val credentials = ApiUtils.getCredentials(parameters!!.userName, parameters!!.userToken)
|
val credentials = ApiUtils.getCredentials(parameters.userName, parameters.userToken)
|
||||||
|
|
||||||
return ncApi.getSharedItems(
|
return ncApi.getSharedItems(
|
||||||
credentials,
|
credentials,
|
||||||
ApiUtils.getUrlForChatSharedItems(1, parameters!!.baseUrl, parameters!!.roomToken),
|
ApiUtils.getUrlForChatSharedItems(1, parameters.baseUrl, parameters.roomToken),
|
||||||
type.toString().lowercase(Locale.ROOT),
|
type.toString().lowercase(Locale.ROOT),
|
||||||
lastKnownMessageId,
|
lastKnownMessageId,
|
||||||
BATCH_SIZE
|
BATCH_SIZE
|
||||||
).map { map(it, type) }
|
).map { map(it, type, parameters) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun map(response: Response<ChatShareOverall>, type: SharedItemType): SharedMediaItems {
|
private fun map(
|
||||||
|
response: Response<ChatShareOverall>,
|
||||||
|
type: SharedItemType,
|
||||||
|
parameters: Parameters
|
||||||
|
): SharedMediaItems {
|
||||||
|
|
||||||
var chatLastGiven: Int? = null
|
var chatLastGiven: Int? = null
|
||||||
val items = mutableMapOf<String, SharedItem>()
|
val items = mutableMapOf<String, SharedItem>()
|
||||||
@ -70,8 +72,8 @@ class SharedItemsRepository {
|
|||||||
fileParameters["link"]!!,
|
fileParameters["link"]!!,
|
||||||
fileParameters["mimetype"]!!,
|
fileParameters["mimetype"]!!,
|
||||||
previewAvailable,
|
previewAvailable,
|
||||||
previewLink(fileParameters["id"]),
|
previewLink(fileParameters["id"], parameters.baseUrl),
|
||||||
parameters!!.userEntity
|
parameters.userEntity
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
Log.w(TAG, "location and deckcard are not yet supported")
|
Log.w(TAG, "location and deckcard are not yet supported")
|
||||||
@ -87,16 +89,16 @@ class SharedItemsRepository {
|
|||||||
sortedMutableItems,
|
sortedMutableItems,
|
||||||
chatLastGiven,
|
chatLastGiven,
|
||||||
moreItemsExisting,
|
moreItemsExisting,
|
||||||
authHeader()
|
authHeader(parameters.userName, parameters.userToken)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun availableTypes(): Observable<Set<SharedItemType>> {
|
fun availableTypes(parameters: Parameters): Observable<Set<SharedItemType>> {
|
||||||
val credentials = ApiUtils.getCredentials(parameters!!.userName, parameters!!.userToken)
|
val credentials = ApiUtils.getCredentials(parameters.userName, parameters.userToken)
|
||||||
|
|
||||||
return ncApi.getSharedItemsOverview(
|
return ncApi.getSharedItemsOverview(
|
||||||
credentials,
|
credentials,
|
||||||
ApiUtils.getUrlForChatSharedItemsOverview(1, parameters!!.baseUrl, parameters!!.roomToken),
|
ApiUtils.getUrlForChatSharedItemsOverview(1, parameters.baseUrl, parameters.roomToken),
|
||||||
1
|
1
|
||||||
).map {
|
).map {
|
||||||
val types = mutableSetOf<SharedItemType>()
|
val types = mutableSetOf<SharedItemType>()
|
||||||
@ -115,13 +117,13 @@ class SharedItemsRepository {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun authHeader(): Map<String, String> {
|
private fun authHeader(userName: String, userToken: String): Map<String, String> {
|
||||||
return mapOf(Pair("Authorization", ApiUtils.getCredentials(parameters!!.userName, parameters!!.userToken)))
|
return mapOf(Pair("Authorization", ApiUtils.getCredentials(userName, userToken)))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun previewLink(fileId: String?): String {
|
private fun previewLink(fileId: String?, baseUrl: String): String {
|
||||||
return ApiUtils.getUrlForFilePreviewWithFileId(
|
return ApiUtils.getUrlForFilePreviewWithFileId(
|
||||||
parameters!!.baseUrl,
|
baseUrl,
|
||||||
fileId,
|
fileId,
|
||||||
sharedApplication!!.resources.getDimensionPixelSize(R.dimen.maximum_file_preview_size)
|
sharedApplication!!.resources.getDimensionPixelSize(R.dimen.maximum_file_preview_size)
|
||||||
)
|
)
|
||||||
|
@ -14,7 +14,11 @@ import io.reactivex.android.schedulers.AndroidSchedulers
|
|||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
|
|
||||||
class SharedItemsViewModel(private val repository: SharedItemsRepository, private val initialType: SharedItemType) :
|
class SharedItemsViewModel(
|
||||||
|
private val repository: SharedItemsRepository,
|
||||||
|
private val initialType: SharedItemType,
|
||||||
|
private val repositoryParameters: SharedItemsRepository.Parameters
|
||||||
|
) :
|
||||||
ViewModel() {
|
ViewModel() {
|
||||||
|
|
||||||
private val _sharedItemType: MutableLiveData<Set<SharedItemType>> by lazy {
|
private val _sharedItemType: MutableLiveData<Set<SharedItemType>> by lazy {
|
||||||
@ -39,14 +43,15 @@ class SharedItemsViewModel(private val repository: SharedItemsRepository, privat
|
|||||||
val currentSharedItems = sharedItems.value!!
|
val currentSharedItems = sharedItems.value!!
|
||||||
|
|
||||||
if (currentSharedItems.moreItemsExisting) {
|
if (currentSharedItems.moreItemsExisting) {
|
||||||
repository.media(currentSharedItems.type, currentSharedItems.lastSeenId)?.subscribeOn(Schedulers.io())
|
repository.media(repositoryParameters, currentSharedItems.type, currentSharedItems.lastSeenId)
|
||||||
|
?.subscribeOn(Schedulers.io())
|
||||||
?.observeOn(AndroidSchedulers.mainThread())
|
?.observeOn(AndroidSchedulers.mainThread())
|
||||||
?.subscribe(observer(currentSharedItems.type, false))
|
?.subscribe(observer(currentSharedItems.type, false))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun loadItems(type: SharedItemType) {
|
fun loadItems(type: SharedItemType) {
|
||||||
repository.media(type)?.subscribeOn(Schedulers.io())
|
repository.media(repositoryParameters, type)?.subscribeOn(Schedulers.io())
|
||||||
?.observeOn(AndroidSchedulers.mainThread())
|
?.observeOn(AndroidSchedulers.mainThread())
|
||||||
?.subscribe(observer(type, true))
|
?.subscribe(observer(type, true))
|
||||||
}
|
}
|
||||||
@ -78,7 +83,7 @@ class SharedItemsViewModel(private val repository: SharedItemsRepository, privat
|
|||||||
oldItems + newSharedItems!!.items,
|
oldItems + newSharedItems!!.items,
|
||||||
newSharedItems!!.lastSeenId,
|
newSharedItems!!.lastSeenId,
|
||||||
newSharedItems!!.moreItemsExisting,
|
newSharedItems!!.moreItemsExisting,
|
||||||
repository.authHeader()
|
newSharedItems!!.authHeader
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -86,7 +91,7 @@ class SharedItemsViewModel(private val repository: SharedItemsRepository, privat
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun availableTypes() {
|
private fun availableTypes() {
|
||||||
repository.availableTypes().subscribeOn(Schedulers.io())
|
repository.availableTypes(repositoryParameters).subscribeOn(Schedulers.io())
|
||||||
?.observeOn(AndroidSchedulers.mainThread())
|
?.observeOn(AndroidSchedulers.mainThread())
|
||||||
?.subscribe(object : Observer<Set<SharedItemType>> {
|
?.subscribe(object : Observer<Set<SharedItemType>> {
|
||||||
|
|
||||||
@ -116,7 +121,7 @@ class SharedItemsViewModel(private val repository: SharedItemsRepository, privat
|
|||||||
if (modelClass.isAssignableFrom(SharedItemsViewModel::class.java)) {
|
if (modelClass.isAssignableFrom(SharedItemsViewModel::class.java)) {
|
||||||
|
|
||||||
val repository = SharedItemsRepository()
|
val repository = SharedItemsRepository()
|
||||||
repository.parameters = SharedItemsRepository.Parameters(
|
val repositoryParameters = SharedItemsRepository.Parameters(
|
||||||
userEntity.userId,
|
userEntity.userId,
|
||||||
userEntity.token,
|
userEntity.token,
|
||||||
userEntity.baseUrl,
|
userEntity.baseUrl,
|
||||||
@ -124,7 +129,7 @@ class SharedItemsViewModel(private val repository: SharedItemsRepository, privat
|
|||||||
roomToken
|
roomToken
|
||||||
)
|
)
|
||||||
|
|
||||||
return SharedItemsViewModel(repository, initialType) as T
|
return SharedItemsViewModel(repository, initialType, repositoryParameters) as T
|
||||||
}
|
}
|
||||||
|
|
||||||
throw IllegalArgumentException("Unknown ViewModel class")
|
throw IllegalArgumentException("Unknown ViewModel class")
|
||||||
|
Loading…
Reference in New Issue
Block a user