mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 03:59:35 +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)
|
||||
class SharedItemsRepository {
|
||||
|
||||
var parameters: Parameters? = null
|
||||
|
||||
@Inject
|
||||
lateinit var ncApi: NcApi
|
||||
|
||||
@ -27,23 +25,27 @@ class SharedItemsRepository {
|
||||
sharedApplication!!.componentApplication.inject(this)
|
||||
}
|
||||
|
||||
fun media(type: SharedItemType): Observable<SharedMediaItems>? {
|
||||
return media(type, null)
|
||||
fun media(parameters: Parameters, type: SharedItemType): Observable<SharedMediaItems>? {
|
||||
return media(parameters, type, null)
|
||||
}
|
||||
|
||||
fun media(type: SharedItemType, lastKnownMessageId: Int?): Observable<SharedMediaItems>? {
|
||||
val credentials = ApiUtils.getCredentials(parameters!!.userName, parameters!!.userToken)
|
||||
fun media(parameters: Parameters, type: SharedItemType, lastKnownMessageId: Int?): Observable<SharedMediaItems>? {
|
||||
val credentials = ApiUtils.getCredentials(parameters.userName, parameters.userToken)
|
||||
|
||||
return ncApi.getSharedItems(
|
||||
credentials,
|
||||
ApiUtils.getUrlForChatSharedItems(1, parameters!!.baseUrl, parameters!!.roomToken),
|
||||
ApiUtils.getUrlForChatSharedItems(1, parameters.baseUrl, parameters.roomToken),
|
||||
type.toString().lowercase(Locale.ROOT),
|
||||
lastKnownMessageId,
|
||||
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
|
||||
val items = mutableMapOf<String, SharedItem>()
|
||||
@ -70,8 +72,8 @@ class SharedItemsRepository {
|
||||
fileParameters["link"]!!,
|
||||
fileParameters["mimetype"]!!,
|
||||
previewAvailable,
|
||||
previewLink(fileParameters["id"]),
|
||||
parameters!!.userEntity
|
||||
previewLink(fileParameters["id"], parameters.baseUrl),
|
||||
parameters.userEntity
|
||||
)
|
||||
} else {
|
||||
Log.w(TAG, "location and deckcard are not yet supported")
|
||||
@ -87,16 +89,16 @@ class SharedItemsRepository {
|
||||
sortedMutableItems,
|
||||
chatLastGiven,
|
||||
moreItemsExisting,
|
||||
authHeader()
|
||||
authHeader(parameters.userName, parameters.userToken)
|
||||
)
|
||||
}
|
||||
|
||||
fun availableTypes(): Observable<Set<SharedItemType>> {
|
||||
val credentials = ApiUtils.getCredentials(parameters!!.userName, parameters!!.userToken)
|
||||
fun availableTypes(parameters: Parameters): Observable<Set<SharedItemType>> {
|
||||
val credentials = ApiUtils.getCredentials(parameters.userName, parameters.userToken)
|
||||
|
||||
return ncApi.getSharedItemsOverview(
|
||||
credentials,
|
||||
ApiUtils.getUrlForChatSharedItemsOverview(1, parameters!!.baseUrl, parameters!!.roomToken),
|
||||
ApiUtils.getUrlForChatSharedItemsOverview(1, parameters.baseUrl, parameters.roomToken),
|
||||
1
|
||||
).map {
|
||||
val types = mutableSetOf<SharedItemType>()
|
||||
@ -115,13 +117,13 @@ class SharedItemsRepository {
|
||||
}
|
||||
}
|
||||
|
||||
fun authHeader(): Map<String, String> {
|
||||
return mapOf(Pair("Authorization", ApiUtils.getCredentials(parameters!!.userName, parameters!!.userToken)))
|
||||
private fun authHeader(userName: String, userToken: String): Map<String, String> {
|
||||
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(
|
||||
parameters!!.baseUrl,
|
||||
baseUrl,
|
||||
fileId,
|
||||
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.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() {
|
||||
|
||||
private val _sharedItemType: MutableLiveData<Set<SharedItemType>> by lazy {
|
||||
@ -39,14 +43,15 @@ class SharedItemsViewModel(private val repository: SharedItemsRepository, privat
|
||||
val currentSharedItems = sharedItems.value!!
|
||||
|
||||
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())
|
||||
?.subscribe(observer(currentSharedItems.type, false))
|
||||
}
|
||||
}
|
||||
|
||||
fun loadItems(type: SharedItemType) {
|
||||
repository.media(type)?.subscribeOn(Schedulers.io())
|
||||
repository.media(repositoryParameters, type)?.subscribeOn(Schedulers.io())
|
||||
?.observeOn(AndroidSchedulers.mainThread())
|
||||
?.subscribe(observer(type, true))
|
||||
}
|
||||
@ -78,7 +83,7 @@ class SharedItemsViewModel(private val repository: SharedItemsRepository, privat
|
||||
oldItems + newSharedItems!!.items,
|
||||
newSharedItems!!.lastSeenId,
|
||||
newSharedItems!!.moreItemsExisting,
|
||||
repository.authHeader()
|
||||
newSharedItems!!.authHeader
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -86,7 +91,7 @@ class SharedItemsViewModel(private val repository: SharedItemsRepository, privat
|
||||
}
|
||||
|
||||
private fun availableTypes() {
|
||||
repository.availableTypes().subscribeOn(Schedulers.io())
|
||||
repository.availableTypes(repositoryParameters).subscribeOn(Schedulers.io())
|
||||
?.observeOn(AndroidSchedulers.mainThread())
|
||||
?.subscribe(object : Observer<Set<SharedItemType>> {
|
||||
|
||||
@ -116,7 +121,7 @@ class SharedItemsViewModel(private val repository: SharedItemsRepository, privat
|
||||
if (modelClass.isAssignableFrom(SharedItemsViewModel::class.java)) {
|
||||
|
||||
val repository = SharedItemsRepository()
|
||||
repository.parameters = SharedItemsRepository.Parameters(
|
||||
val repositoryParameters = SharedItemsRepository.Parameters(
|
||||
userEntity.userId,
|
||||
userEntity.token,
|
||||
userEntity.baseUrl,
|
||||
@ -124,7 +129,7 @@ class SharedItemsViewModel(private val repository: SharedItemsRepository, privat
|
||||
roomToken
|
||||
)
|
||||
|
||||
return SharedItemsViewModel(repository, initialType) as T
|
||||
return SharedItemsViewModel(repository, initialType, repositoryParameters) as T
|
||||
}
|
||||
|
||||
throw IllegalArgumentException("Unknown ViewModel class")
|
||||
|
Loading…
Reference in New Issue
Block a user