mirror of
https://github.com/nextcloud/talk-android.git
synced 2024-11-27 17:08:34 +03:00
improve detekt score
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
parent
941d35e03f
commit
48c7ccb4b0
7 changed files with 76 additions and 65 deletions
|
@ -70,7 +70,7 @@ class SharedItemsActivity : AppCompatActivity() {
|
|||
adapter.authHeader = it.authHeader
|
||||
binding.imageRecycler.adapter = adapter
|
||||
|
||||
val layoutManager = GridLayoutManager(this, 4)
|
||||
val layoutManager = GridLayoutManager(this, SPAN_COUNT)
|
||||
binding.imageRecycler.layoutManager = layoutManager
|
||||
} else {
|
||||
val adapter = SharedItemsListAdapter()
|
||||
|
@ -164,5 +164,6 @@ class SharedItemsActivity : AppCompatActivity() {
|
|||
const val TAB_LOCATION = "location"
|
||||
const val TAB_DECKCARD = "deckcard"
|
||||
const val TAB_OTHER = "other"
|
||||
const val SPAN_COUNT: Int = 4
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,10 +80,12 @@ class SharedItemsAdapter : RecyclerView.Adapter<SharedItemsAdapter.ViewHolder>()
|
|||
currentItem.path,
|
||||
currentItem.link,
|
||||
currentItem.mimeType,
|
||||
FileViewerUtils.ProgressUi(
|
||||
holder.binding.progressBar,
|
||||
null,
|
||||
it as SimpleDraweeView
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -81,10 +81,12 @@ class SharedItemsListAdapter : RecyclerView.Adapter<SharedItemsListAdapter.ViewH
|
|||
currentItem.path,
|
||||
currentItem.link,
|
||||
currentItem.mimeType,
|
||||
FileViewerUtils.ProgressUi(
|
||||
holder.binding.progressBar,
|
||||
null,
|
||||
holder.binding.fileImage
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -181,9 +181,12 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom
|
|||
}
|
||||
|
||||
if (message.activeUser != null && message.activeUser.getUsername() != null && message.activeUser.getBaseUrl() != null) {
|
||||
clickView.setOnClickListener(v -> {
|
||||
fileViewerUtils.openFile(message, progressBar, getMessageText(), image);
|
||||
});
|
||||
clickView.setOnClickListener(v ->
|
||||
fileViewerUtils.openFile(
|
||||
message,
|
||||
new FileViewerUtils.ProgressUi(progressBar, getMessageText(), image)
|
||||
)
|
||||
);
|
||||
|
||||
clickView.setOnLongClickListener(l -> {
|
||||
onMessageViewLongClick(message);
|
||||
|
@ -197,9 +200,7 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom
|
|||
Objects.requireNonNull(message.getSelectedIndividualHashMap().get(MagicPreviewMessageViewHolder.KEY_NAME)),
|
||||
Objects.requireNonNull(message.getSelectedIndividualHashMap().get(MagicPreviewMessageViewHolder.KEY_ID)),
|
||||
Objects.requireNonNull(message.getSelectedIndividualHashMap().get(MagicPreviewMessageViewHolder.KEY_MIMETYPE)),
|
||||
progressBar,
|
||||
getMessageText(),
|
||||
image);
|
||||
new FileViewerUtils.ProgressUi(progressBar, getMessageText(), image));
|
||||
|
||||
} else if (message.getMessageType() == ChatMessage.MessageType.SINGLE_LINK_GIPHY_MESSAGE) {
|
||||
getMessageText().setText("GIPHY");
|
||||
|
|
|
@ -15,10 +15,6 @@ import javax.inject.Inject
|
|||
@AutoInjector(NextcloudTalkApplication::class)
|
||||
class SharedItemsRepository {
|
||||
|
||||
companion object {
|
||||
private val TAG = SharedItemsRepository::class.simpleName
|
||||
}
|
||||
|
||||
var parameters: Parameters? = null
|
||||
|
||||
@Inject
|
||||
|
@ -38,7 +34,9 @@ class SharedItemsRepository {
|
|||
return ncApi.getSharedItems(
|
||||
credentials,
|
||||
ApiUtils.getUrlForChatSharedItems(1, parameters!!.baseUrl, parameters!!.roomToken),
|
||||
type, lastKnownMessageId, 28
|
||||
type,
|
||||
lastKnownMessageId,
|
||||
BATCH_SIZE
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -61,4 +59,8 @@ class SharedItemsRepository {
|
|||
val userEntity: UserEntity,
|
||||
val roomToken: String
|
||||
)
|
||||
|
||||
companion object {
|
||||
const val BATCH_SIZE: Int = 28
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,23 @@
|
|||
/*
|
||||
* Nextcloud Talk application
|
||||
*
|
||||
* @author Marcel Hibbe
|
||||
* Copyright (C) 2022 Marcel Hibbe <dev@mhibbe.de>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.nextcloud.talk.utils
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
|
@ -35,9 +55,7 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
|
||||
fun openFile(
|
||||
message: ChatMessage,
|
||||
progressBar: ProgressBar?,
|
||||
messageText: EmojiTextView?,
|
||||
previewImage: SimpleDraweeView
|
||||
progressUi: ProgressUi
|
||||
) {
|
||||
val fileName = message.getSelectedIndividualHashMap()[MagicPreviewMessageViewHolder.KEY_NAME]!!
|
||||
val mimetype = message.getSelectedIndividualHashMap()[MagicPreviewMessageViewHolder.KEY_MIMETYPE]!!
|
||||
|
@ -59,9 +77,7 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
path,
|
||||
link,
|
||||
mimetype,
|
||||
progressBar,
|
||||
messageText,
|
||||
previewImage
|
||||
progressUi
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -72,9 +88,7 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
path: String,
|
||||
link: String,
|
||||
mimetype: String,
|
||||
progressBar: ProgressBar?,
|
||||
messageText: EmojiTextView?,
|
||||
previewImage: SimpleDraweeView
|
||||
progressUi: ProgressUi
|
||||
) {
|
||||
if (isSupportedForInternalViewer(mimetype) || canBeHandledByExternalApp(mimetype, fileName)) {
|
||||
openOrDownloadFile(
|
||||
|
@ -83,9 +97,7 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
path,
|
||||
fileSize,
|
||||
mimetype,
|
||||
progressBar,
|
||||
messageText,
|
||||
previewImage
|
||||
progressUi
|
||||
)
|
||||
} else {
|
||||
openFileInFilesApp(link, fileId)
|
||||
|
@ -106,9 +118,7 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
path: String,
|
||||
fileSize: Int,
|
||||
mimetype: String,
|
||||
progressBar: ProgressBar?,
|
||||
messageText: EmojiTextView?,
|
||||
previewImage: SimpleDraweeView
|
||||
progressUi: ProgressUi
|
||||
) {
|
||||
val file = File(context.cacheDir, fileName)
|
||||
if (file.exists()) {
|
||||
|
@ -120,9 +130,7 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
path,
|
||||
fileSize,
|
||||
mimetype,
|
||||
progressBar,
|
||||
messageText,
|
||||
previewImage
|
||||
progressUi
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -148,11 +156,12 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
}
|
||||
}
|
||||
|
||||
@Suppress("Detekt.TooGenericExceptionCaught")
|
||||
private fun openFileByExternalApp(fileName: String, mimetype: String) {
|
||||
val path = context.cacheDir.absolutePath + "/" + fileName
|
||||
val file = File(path)
|
||||
val intent: Intent
|
||||
if (Build.VERSION.SDK_INT < 24) {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
|
||||
intent = Intent(Intent.ACTION_VIEW)
|
||||
intent.setDataAndType(Uri.fromFile(file), mimetype)
|
||||
intent.flags = Intent.FLAG_ACTIVITY_NO_HISTORY
|
||||
|
@ -259,14 +268,10 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
path: String,
|
||||
fileSize: Int,
|
||||
mimetype: String,
|
||||
progressBar: ProgressBar?,
|
||||
messageText: EmojiTextView?,
|
||||
previewImage: SimpleDraweeView
|
||||
progressUi: ProgressUi
|
||||
) {
|
||||
// check if download worker is already running
|
||||
val workers = WorkManager.getInstance(context).getWorkInfosByTag(
|
||||
fileId!!
|
||||
)
|
||||
val workers = WorkManager.getInstance(context).getWorkInfosByTag(fileId!!)
|
||||
try {
|
||||
for (workInfo in workers.get()) {
|
||||
if (workInfo.state == WorkInfo.State.RUNNING || workInfo.state == WorkInfo.State.ENQUEUED) {
|
||||
|
@ -296,16 +301,14 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
.addTag(fileId)
|
||||
.build()
|
||||
WorkManager.getInstance().enqueue(downloadWorker)
|
||||
progressBar?.visibility = View.VISIBLE
|
||||
progressUi.progressBar?.visibility = View.VISIBLE
|
||||
WorkManager.getInstance(context).getWorkInfoByIdLiveData(downloadWorker.id)
|
||||
.observeForever { workInfo: WorkInfo? ->
|
||||
updateViewsByProgress(
|
||||
fileName,
|
||||
mimetype,
|
||||
workInfo!!,
|
||||
progressBar,
|
||||
messageText,
|
||||
previewImage
|
||||
progressUi
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -314,15 +317,13 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
fileName: String,
|
||||
mimetype: String,
|
||||
workInfo: WorkInfo,
|
||||
progressBar: ProgressBar?,
|
||||
messageText: EmojiTextView?,
|
||||
previewImage: SimpleDraweeView
|
||||
progressUi: ProgressUi
|
||||
) {
|
||||
when (workInfo.state) {
|
||||
WorkInfo.State.RUNNING -> {
|
||||
val progress = workInfo.progress.getInt(DownloadFileToCacheWorker.PROGRESS, -1)
|
||||
if (progress > -1) {
|
||||
messageText?.text = String.format(
|
||||
progressUi.messageText?.text = String.format(
|
||||
context.resources.getString(R.string.filename_progress),
|
||||
fileName,
|
||||
progress
|
||||
|
@ -330,7 +331,7 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
}
|
||||
}
|
||||
WorkInfo.State.SUCCEEDED -> {
|
||||
if (previewImage.isShown) {
|
||||
if (progressUi.previewImage.isShown) {
|
||||
openFileByMimetype(fileName, mimetype)
|
||||
} else {
|
||||
Log.d(
|
||||
|
@ -339,12 +340,12 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
" was downloaded but it's not opened because view is not shown on screen"
|
||||
)
|
||||
}
|
||||
messageText?.text = fileName
|
||||
progressBar?.visibility = View.GONE
|
||||
progressUi.messageText?.text = fileName
|
||||
progressUi.progressBar?.visibility = View.GONE
|
||||
}
|
||||
WorkInfo.State.FAILED -> {
|
||||
messageText?.text = fileName
|
||||
progressBar?.visibility = View.GONE
|
||||
progressUi.messageText?.text = fileName
|
||||
progressUi.progressBar?.visibility = View.GONE
|
||||
}
|
||||
else -> {
|
||||
}
|
||||
|
@ -355,9 +356,7 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
fileName: String,
|
||||
fileId: String,
|
||||
mimeType: String,
|
||||
progressBar: ProgressBar,
|
||||
messageText: EmojiTextView?,
|
||||
previewImage: SimpleDraweeView
|
||||
progressUi: ProgressUi
|
||||
) {
|
||||
val workers = WorkManager.getInstance(context).getWorkInfosByTag(fileId)
|
||||
|
||||
|
@ -366,7 +365,7 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
if (workInfo.state == WorkInfo.State.RUNNING ||
|
||||
workInfo.state == WorkInfo.State.ENQUEUED
|
||||
) {
|
||||
progressBar.visibility = View.VISIBLE
|
||||
progressUi.progressBar?.visibility = View.VISIBLE
|
||||
WorkManager
|
||||
.getInstance(context)
|
||||
.getWorkInfoByIdLiveData(workInfo.id)
|
||||
|
@ -375,9 +374,7 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
fileName,
|
||||
mimeType,
|
||||
info!!,
|
||||
progressBar,
|
||||
messageText,
|
||||
previewImage
|
||||
progressUi
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -389,9 +386,14 @@ class FileViewerUtils(private val context: Context, private val userEntity: User
|
|||
}
|
||||
}
|
||||
|
||||
data class ProgressUi(
|
||||
val progressBar: ProgressBar?,
|
||||
val messageText: EmojiTextView?,
|
||||
val previewImage: SimpleDraweeView
|
||||
)
|
||||
|
||||
companion object {
|
||||
private val TAG = FileViewerUtils::class.simpleName
|
||||
|
||||
const val KEY_ID = "id"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -92,7 +92,7 @@ class SharedItemsViewModel(private val repository: SharedItemsRepository, privat
|
|||
override fun onComplete() {
|
||||
|
||||
val sortedMutableItems = items.toSortedMap().values.toList().reversed().toMutableList()
|
||||
val moreItemsExisting = items.count() == 28
|
||||
val moreItemsExisting = items.count() == BATCH_SIZE
|
||||
|
||||
if (initModel) {
|
||||
this@SharedItemsViewModel._sharedItems.value =
|
||||
|
@ -143,5 +143,6 @@ class SharedItemsViewModel(private val repository: SharedItemsRepository, privat
|
|||
|
||||
companion object {
|
||||
private val TAG = SharedItemsViewModel::class.simpleName
|
||||
const val BATCH_SIZE: Int = 28
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue