diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt index d6e79a76f..9b320d82a 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -177,7 +177,7 @@ class MainActivity : BaseActivity(), ActionBarProvider { private fun openNewConversationScreen() { router?.pushController( - RouterTransaction.with(ContactsView()) + RouterTransaction.with(ContactsView()) .pushChangeHandler(HorizontalChangeHandler()) .popChangeHandler(HorizontalChangeHandler()) ) diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/UserItem.kt b/app/src/main/java/com/nextcloud/talk/adapters/items/UserItem.kt index ba9dc07af..4f6b0f620 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/items/UserItem.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/items/UserItem.kt @@ -21,9 +21,6 @@ package com.nextcloud.talk.adapters.items import android.content.Context -import android.graphics.drawable.BitmapDrawable -import android.graphics.drawable.Drawable -import android.graphics.drawable.LayerDrawable import android.text.TextUtils import android.view.View import android.widget.ImageView diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.kt index a53609924..20e36b489 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.kt @@ -44,7 +44,6 @@ import com.nextcloud.talk.utils.DisplayUtils import com.nextcloud.talk.utils.TextMatchers import com.nextcloud.talk.utils.preferences.AppPreferences import com.stfalcon.chatkit.messages.MessageHolders -import com.stfalcon.chatkit.utils.DateFormatter import org.koin.core.KoinComponent import org.koin.core.inject diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.kt index 973d43b39..4ec199b87 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.kt @@ -41,7 +41,6 @@ import com.nextcloud.talk.utils.DisplayUtils.getMessageSelector import com.nextcloud.talk.utils.DisplayUtils.searchAndReplaceWithMentionSpan import com.nextcloud.talk.utils.TextMatchers import com.stfalcon.chatkit.messages.MessageHolders.OutcomingTextMessageViewHolder -import com.stfalcon.chatkit.utils.DateFormatter import org.koin.core.KoinComponent import org.koin.core.inject import java.util.* diff --git a/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt b/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt index 96629a35a..2f4cfb6b1 100644 --- a/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt +++ b/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt @@ -43,7 +43,10 @@ import com.nextcloud.talk.models.database.UserEntity import com.nextcloud.talk.models.json.capabilities.Capabilities import com.nextcloud.talk.models.json.push.PushConfiguration import com.nextcloud.talk.models.json.signaling.settings.SignalingSettings -import com.nextcloud.talk.newarch.di.module.* +import com.nextcloud.talk.newarch.di.module.CommunicationModule +import com.nextcloud.talk.newarch.di.module.NetworkModule +import com.nextcloud.talk.newarch.di.module.ServiceModule +import com.nextcloud.talk.newarch.di.module.StorageModule import com.nextcloud.talk.newarch.domain.di.module.UseCasesModule import com.nextcloud.talk.newarch.features.account.di.module.AccountModule import com.nextcloud.talk.newarch.features.contactsflow.di.module.ContactsFlowModule diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.kt index e62534e30..a0936b437 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.kt @@ -27,7 +27,6 @@ import android.os.Build import android.os.Bundle import android.os.Handler import android.text.InputType -import android.util.Log import android.view.* import android.view.inputmethod.EditorInfo import android.widget.ProgressBar @@ -45,7 +44,6 @@ import butterknife.OnClick import butterknife.Optional import com.bluelinelabs.conductor.RouterTransaction import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler -import com.bluelinelabs.logansquare.LoganSquare import com.kennyc.bottomsheet.BottomSheet import com.nextcloud.talk.R import com.nextcloud.talk.activities.MagicCallActivity @@ -57,8 +55,6 @@ import com.nextcloud.talk.controllers.bottomsheet.EntryMenuController import com.nextcloud.talk.controllers.bottomsheet.OperationsMenuController import com.nextcloud.talk.events.BottomSheetLockEvent import com.nextcloud.talk.jobs.AddParticipantsToConversation -import com.nextcloud.talk.models.RetrofitBucket -import com.nextcloud.talk.models.json.autocomplete.AutocompleteOverall import com.nextcloud.talk.models.json.autocomplete.AutocompleteUser import com.nextcloud.talk.models.json.conversations.Conversation import com.nextcloud.talk.models.json.conversations.RoomOverall @@ -82,15 +78,11 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import okhttp3.ResponseBody import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode import org.koin.android.ext.android.inject import org.parceler.Parcels -import java.util.ArrayList -import java.util.HashMap -import java.util.HashSet -import kotlin.Comparator +import java.util.* import kotlin.String class ContactsController : BaseController, diff --git a/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt b/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt index 0af08c064..bb12ead4a 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt @@ -32,8 +32,6 @@ import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import butterknife.BindView -import com.bluelinelabs.conductor.RouterTransaction -import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler import com.nextcloud.talk.R import com.nextcloud.talk.adapters.items.AdvancedUserItem import com.nextcloud.talk.controllers.base.BaseController diff --git a/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.kt b/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.kt index 9456bc6b0..a70aea742 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.kt @@ -33,23 +33,19 @@ import android.view.inputmethod.InputMethodManager import android.widget.EditText import androidx.annotation.RequiresApi import androidx.appcompat.app.ActionBar -import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.view.isVisible import com.bluelinelabs.conductor.ControllerChangeHandler import com.bluelinelabs.conductor.ControllerChangeType import com.bluelinelabs.conductor.autodispose.ControllerScopeProvider import com.google.android.material.appbar.AppBarLayout -import com.google.android.material.floatingactionbutton.FloatingActionButton import com.nextcloud.talk.R import com.nextcloud.talk.activities.MainActivity import com.nextcloud.talk.controllers.SwitchAccountController import com.nextcloud.talk.controllers.base.providers.ActionBarProvider -import com.nextcloud.talk.utils.animations.FABAwareScrollingViewBehavior import com.nextcloud.talk.utils.preferences.AppPreferences import com.uber.autodispose.lifecycle.LifecycleScopeProvider import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.search_layout.* -import kotlinx.android.synthetic.main.search_layout.view.* import org.greenrobot.eventbus.EventBus import org.koin.android.ext.android.inject import java.util.* diff --git a/app/src/main/java/com/nextcloud/talk/jobs/DeleteConversationWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/DeleteConversationWorker.kt index 21a34c9a9..dadf91d9a 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/DeleteConversationWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/DeleteConversationWorker.kt @@ -29,8 +29,8 @@ import com.nextcloud.talk.newarch.domain.repository.offline.UsersRepository import com.nextcloud.talk.newarch.local.models.UserNgEntity import com.nextcloud.talk.newarch.local.models.getCredentials import com.nextcloud.talk.utils.ApiUtils -import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_CONVERSATION_TOKEN +import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID import io.reactivex.Observer import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers diff --git a/app/src/main/java/com/nextcloud/talk/jobs/LeaveConversationWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/LeaveConversationWorker.kt index c9fb21982..88abcfc57 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/LeaveConversationWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/LeaveConversationWorker.kt @@ -29,8 +29,8 @@ import com.nextcloud.talk.newarch.domain.repository.offline.UsersRepository import com.nextcloud.talk.newarch.local.models.UserNgEntity import com.nextcloud.talk.newarch.local.models.getCredentials import com.nextcloud.talk.utils.ApiUtils -import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_CONVERSATION_TOKEN +import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID import io.reactivex.Observer import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers diff --git a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.kt index 932ea408e..b1a6d210b 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.kt @@ -84,6 +84,7 @@ import com.nextcloud.talk.utils.NotificationUtils.cancelExistingNotificationWith import com.nextcloud.talk.utils.NotificationUtils.createNotificationChannel import com.nextcloud.talk.utils.NotificationUtils.findNotificationForRoom import com.nextcloud.talk.utils.PushUtils +import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_CONVERSATION_TOKEN import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_FROM_NOTIFICATION_START_CALL import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_NOTIFICATION_ID @@ -91,7 +92,6 @@ import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_NOTIFICATION_SIGNATURE import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_NOTIFICATION_SUBJECT import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_ID -import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_CONVERSATION_TOKEN import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_USER_ENTITY import com.nextcloud.talk.utils.database.arbitrarystorage.ArbitraryStorageUtils import com.nextcloud.talk.utils.preferences.AppPreferences diff --git a/app/src/main/java/com/nextcloud/talk/jobs/ShareOperationWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/ShareOperationWorker.kt index cece12170..4330c54f6 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/ShareOperationWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/ShareOperationWorker.kt @@ -27,9 +27,9 @@ import com.nextcloud.talk.newarch.domain.repository.offline.UsersRepository import com.nextcloud.talk.newarch.local.models.UserNgEntity import com.nextcloud.talk.newarch.local.models.getCredentials import com.nextcloud.talk.utils.ApiUtils +import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_CONVERSATION_TOKEN import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_FILE_PATHS import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID -import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_CONVERSATION_TOKEN import io.reactivex.Observer import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers diff --git a/app/src/main/java/com/nextcloud/talk/jobs/WebsocketConnectionsWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/WebsocketConnectionsWorker.kt index f2682f676..cb1551474 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/WebsocketConnectionsWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/WebsocketConnectionsWorker.kt @@ -25,7 +25,6 @@ import androidx.work.Worker import androidx.work.WorkerParameters import com.nextcloud.talk.newarch.domain.repository.offline.UsersRepository import com.nextcloud.talk.newarch.local.models.UserNgEntity -import com.nextcloud.talk.webrtc.WebSocketConnectionHelper import org.koin.core.KoinComponent import org.koin.core.inject diff --git a/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.java b/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.java index a90356e6c..070ee950c 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.java +++ b/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.java @@ -28,9 +28,6 @@ import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter; import org.parceler.Parcel; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; import java.util.Objects; import lombok.Data; diff --git a/app/src/main/java/com/nextcloud/talk/models/json/push/PushConfiguration.kt b/app/src/main/java/com/nextcloud/talk/models/json/push/PushConfiguration.kt index 62e1e5043..3a26de762 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/push/PushConfiguration.kt +++ b/app/src/main/java/com/nextcloud/talk/models/json/push/PushConfiguration.kt @@ -89,4 +89,4 @@ data class PushConfigurationStateWrapper( var pushConfigurationState: PushConfigurationState, @SerialName("reason") var reason: Int? -): Parcelable \ No newline at end of file +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/nextcloud/talk/newarch/data/repository/online/NextcloudTalkRepositoryImpl.kt b/app/src/main/java/com/nextcloud/talk/newarch/data/repository/online/NextcloudTalkRepositoryImpl.kt index ff08bb6d6..c386d43ac 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/data/repository/online/NextcloudTalkRepositoryImpl.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/data/repository/online/NextcloudTalkRepositoryImpl.kt @@ -20,7 +20,6 @@ package com.nextcloud.talk.newarch.data.repository.online -import com.nextcloud.talk.models.json.autocomplete.AutocompleteOverall import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall import com.nextcloud.talk.models.json.conversations.Conversation import com.nextcloud.talk.models.json.conversations.RoomOverall diff --git a/app/src/main/java/com/nextcloud/talk/newarch/domain/di/module/UseCasesModule.kt b/app/src/main/java/com/nextcloud/talk/newarch/domain/di/module/UseCasesModule.kt index f49a1e7f7..1911d4912 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/domain/di/module/UseCasesModule.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/domain/di/module/UseCasesModule.kt @@ -52,32 +52,32 @@ val UseCasesModule = module { } fun createGetContactsUseCase(nextcloudTalkRepository: NextcloudTalkRepository, - apiErrorHandler: ApiErrorHandler + apiErrorHandler: ApiErrorHandler ): GetContactsUseCase { return GetContactsUseCase(nextcloudTalkRepository, apiErrorHandler) } fun createUnregisterPushWithServerUseCase(nextcloudTalkRepository: NextcloudTalkRepository, - apiErrorHandler: ApiErrorHandler + apiErrorHandler: ApiErrorHandler ): UnregisterPushWithServerUseCase { return UnregisterPushWithServerUseCase(nextcloudTalkRepository, apiErrorHandler) } fun createUnregisterPushWithProxyUseCase(nextcloudTalkRepository: NextcloudTalkRepository, - apiErrorHandler: ApiErrorHandler + apiErrorHandler: ApiErrorHandler ): UnregisterPushWithProxyUseCase { return UnregisterPushWithProxyUseCase(nextcloudTalkRepository, apiErrorHandler) } fun createRegisterPushWithServerUseCase(nextcloudTalkRepository: NextcloudTalkRepository, - apiErrorHandler: ApiErrorHandler + apiErrorHandler: ApiErrorHandler ): RegisterPushWithServerUseCase { return RegisterPushWithServerUseCase(nextcloudTalkRepository, apiErrorHandler) } fun createRegisterPushWithProxyUseCase(nextcloudTalkRepository: NextcloudTalkRepository, - apiErrorHandler: ApiErrorHandler + apiErrorHandler: ApiErrorHandler ): RegisterPushWithProxyUseCase { return RegisterPushWithProxyUseCase(nextcloudTalkRepository, apiErrorHandler) } @@ -95,7 +95,7 @@ fun createGetSignalingSettingsUseCase(nextcloudTalkRepository: NextcloudTalkRepo } fun createGetSignalingUseCase(nextcloudTalkRepository: NextcloudTalkRepository, - apiErrorHandler: ApiErrorHandler + apiErrorHandler: ApiErrorHandler ): GetSignalingSettingsUseCase { return GetSignalingSettingsUseCase(nextcloudTalkRepository, apiErrorHandler) } diff --git a/app/src/main/java/com/nextcloud/talk/newarch/domain/repository/online/NextcloudTalkRepository.kt b/app/src/main/java/com/nextcloud/talk/newarch/domain/repository/online/NextcloudTalkRepository.kt index 74251f542..c36e8a19c 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/domain/repository/online/NextcloudTalkRepository.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/domain/repository/online/NextcloudTalkRepository.kt @@ -20,7 +20,6 @@ package com.nextcloud.talk.newarch.domain.repository.online -import com.nextcloud.talk.models.json.autocomplete.AutocompleteOverall import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall import com.nextcloud.talk.models.json.conversations.Conversation import com.nextcloud.talk.models.json.conversations.RoomOverall diff --git a/app/src/main/java/com/nextcloud/talk/newarch/domain/usecases/RegisterPushWithProxyUseCase.kt b/app/src/main/java/com/nextcloud/talk/newarch/domain/usecases/RegisterPushWithProxyUseCase.kt index 2ebe2cf26..a4556c462 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/domain/usecases/RegisterPushWithProxyUseCase.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/domain/usecases/RegisterPushWithProxyUseCase.kt @@ -22,7 +22,6 @@ package com.nextcloud.talk.newarch.domain.usecases -import com.nextcloud.talk.models.json.push.PushRegistrationOverall import com.nextcloud.talk.newarch.data.source.remote.ApiErrorHandler import com.nextcloud.talk.newarch.domain.repository.online.NextcloudTalkRepository import com.nextcloud.talk.newarch.domain.usecases.base.UseCase diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/account/loginentry/LoginEntryView.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/account/loginentry/LoginEntryView.kt index d881578fe..74234fcb3 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/account/loginentry/LoginEntryView.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/account/loginentry/LoginEntryView.kt @@ -98,7 +98,6 @@ class LoginEntryView(val bundle: Bundle) : BaseView() { }) - val baseUrl = bundle.get(BundleKeys.KEY_BASE_URL) val headers: MutableMap = hashMapOf() headers["OCS-APIRequest"] = "true" diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/account/loginentry/LoginEntryViewModel.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/account/loginentry/LoginEntryViewModel.kt index 4265f98e6..255a93add 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/account/loginentry/LoginEntryViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/account/loginentry/LoginEntryViewModel.kt @@ -2,7 +2,6 @@ package com.nextcloud.talk.newarch.features.account.loginentry import android.app.Application import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.viewModelScope import com.nextcloud.talk.models.LoginData import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall import com.nextcloud.talk.models.json.push.PushConfiguration diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactPresenter.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactPresenter.kt index d58c0f01e..af6f511b9 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactPresenter.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactPresenter.kt @@ -1,7 +1,6 @@ package com.nextcloud.talk.newarch.features.contactsflow import android.content.Context -import android.util.Log import android.view.ViewGroup import androidx.core.view.isVisible import coil.api.load @@ -15,8 +14,10 @@ import com.nextcloud.talk.utils.ApiUtils import com.otaliastudios.elements.Element import com.otaliastudios.elements.Page import com.otaliastudios.elements.Presenter +import com.otaliastudios.elements.extensions.FooterSource import com.otaliastudios.elements.extensions.HeaderSource import kotlinx.android.synthetic.main.rv_item_contact.view.* +import kotlinx.android.synthetic.main.rv_item_participant_rv_footer.view.* import kotlinx.android.synthetic.main.rv_item_title_header.view.* import org.koin.core.KoinComponent import org.koin.core.inject @@ -25,13 +26,19 @@ open class ContactPresenter(context: Context, onElementClick: ((Page, H private val globalService: GlobalService by inject() override val elementTypes: Collection - get() = listOf(ParticipantElementType.PARTICIPANT.ordinal, ParticipantElementType.PARTICIPANT_HEADER.ordinal) + get() = listOf(ParticipantElementType.PARTICIPANT.ordinal, ParticipantElementType.PARTICIPANT_HEADER.ordinal, ParticipantElementType.PARTICIPANT_FOOTER.ordinal) override fun onCreate(parent: ViewGroup, elementType: Int): Holder { - return if (elementType == ParticipantElementType.PARTICIPANT.ordinal) { - Holder(getLayoutInflater().inflate(R.layout.rv_item_contact, parent, false)) - } else { - Holder(getLayoutInflater().inflate(R.layout.rv_item_title_header, parent, false)) + return when (elementType) { + ParticipantElementType.PARTICIPANT.ordinal -> { + Holder(getLayoutInflater().inflate(R.layout.rv_item_contact, parent, false)) + } + ParticipantElementType.PARTICIPANT_HEADER.ordinal -> { + Holder(getLayoutInflater().inflate(R.layout.rv_item_title_header, parent, false)) + } + else -> { + Holder(getLayoutInflater().inflate(R.layout.rv_item_participant_rv_footer, parent, false)) + } } } @@ -76,8 +83,10 @@ open class ContactPresenter(context: Context, onElementClick: ((Page, H } } } - } else { + } else if (element.type == ParticipantElementType.PARTICIPANT_HEADER.ordinal) { holder.itemView.titleTextView.text = (element.data as HeaderSource.Data<*, *>).header.toString() + } else { + holder.itemView.messageTextView.text = (element.data as FooterSource.Data<*, *>).footer.toString() } } } \ No newline at end of file diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsFooterSource.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsFooterSource.kt new file mode 100644 index 000000000..7ae7e3249 --- /dev/null +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsFooterSource.kt @@ -0,0 +1,39 @@ +package com.nextcloud.talk.newarch.features.contactsflow + +import android.content.Context +import com.nextcloud.talk.R +import com.nextcloud.talk.models.json.participants.Participant +import com.otaliastudios.elements.Page +import com.otaliastudios.elements.Source +import com.otaliastudios.elements.extensions.FooterSource + +class ContactsFooterSource(private val context: Context, private val elementType: Int) : FooterSource() { + private var lastAnchor: Participant? = null + + override fun dependsOn(source: Source<*>): Boolean { + return source is ContactsViewSource + } + + override fun areItemsTheSame(first: Data, second: Data): Boolean { + return first == second + } + + override fun getElementType(data: Data) = elementType + + override fun computeFooters(page: Page, list: List): List> { + val results = arrayListOf>() + lastAnchor = if (list.isNotEmpty()) { + val participant = list.takeLast(1)[0] + + if (lastAnchor == null || lastAnchor != participant) { + results.add(Data(participant, context.getString(R.string.nc_search_for_more))) + } + + participant + } else { + null + } + + return results + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsUtils.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsUtils.kt index 382744de0..8be89f29b 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsUtils.kt @@ -2,5 +2,6 @@ package com.nextcloud.talk.newarch.features.contactsflow enum class ParticipantElementType { PARTICIPANT, - PARTICIPANT_HEADER + PARTICIPANT_HEADER, + PARTICIPANT_FOOTER } \ No newline at end of file diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsView.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsView.kt index 3c34cedd9..2b25716db 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsView.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsView.kt @@ -22,7 +22,7 @@ import kotlinx.android.synthetic.main.conversations_list_view.view.* import kotlinx.android.synthetic.main.message_state.view.* import org.koin.android.ext.android.inject -class ContactsView(private val bundle: Bundle? = null) : BaseView() { +class ContactsView(private val bundle: Bundle? = null) : BaseView() { override val scopeProvider: LifecycleScopeProvider<*> = ControllerScopeProvider.from(this) private lateinit var viewModel: ContactsViewModel @@ -47,6 +47,7 @@ class ContactsView(private val bundle: Bundle? = null) : BaseView() { adapter = Adapter.builder(this) .addSource(ContactsViewSource(viewModel.contactsLiveData, ParticipantElementType.PARTICIPANT.ordinal)) .addSource(ContactsHeaderSource(activity as Context, ParticipantElementType.PARTICIPANT_HEADER.ordinal)) + .addSource(ContactsFooterSource(activity as Context, ParticipantElementType.PARTICIPANT_FOOTER.ordinal)) .addPresenter(ContactPresenter(activity as Context, ::onElementClick)) .addPresenter(Presenter.forLoadingIndicator(activity as Context, R.layout.loading_state)) .addPresenter(Presenter.forEmptyIndicator(activity as Context, R.layout.message_state)) @@ -66,10 +67,13 @@ class ContactsView(private val bundle: Bundle? = null) : BaseView() { return view } - private fun onElementClick(page: Page, holder: Presenter.Holder, element: Element) { - val isElementSelected = element.data?.selected == true - element.data?.selected = !isElementSelected - adapter.notifyItemChanged(holder.adapterPosition, ElementPayload.SELECTION_TOGGLE) + private fun onElementClick(page: Page, holder: Presenter.Holder, element: Element) { + if (element.data is Participant?) { + val participant = element.data as Participant? + val isElementSelected = participant?.selected == true + participant?.selected = !isElementSelected + adapter.notifyItemChanged(holder.adapterPosition, ElementPayload.SELECTION_TOGGLE) + } } override fun getTitle(): String? { diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewHeaderSource.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewHeaderSource.kt index c4427d6a2..1e7a6da90 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewHeaderSource.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewHeaderSource.kt @@ -7,7 +7,7 @@ import com.otaliastudios.elements.Page import com.otaliastudios.elements.Source import com.otaliastudios.elements.extensions.HeaderSource -class ContactsHeaderSource(private val context: Context, private val elementType: Int): HeaderSource() { +class ContactsHeaderSource(private val context: Context, private val elementType: Int) : HeaderSource() { // Store the last header that was added, even if it belongs to a previous page. private var lastHeader: String = "" diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewModel.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewModel.kt index b0572d6c9..0b0e1e336 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewModel.kt @@ -1,8 +1,6 @@ package com.nextcloud.talk.newarch.features.contactsflow import android.app.Application -import android.os.Build -import android.util.Log import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope import com.nextcloud.talk.models.json.participants.Participant @@ -13,8 +11,6 @@ import com.nextcloud.talk.newarch.domain.usecases.base.UseCaseResponse import com.nextcloud.talk.newarch.features.conversationslist.ConversationsListView import com.nextcloud.talk.newarch.services.GlobalService import org.koin.core.parameter.parametersOf -import java.util.* -import kotlin.Comparator class ContactsViewModel constructor( application: Application, @@ -22,14 +18,19 @@ class ContactsViewModel constructor( val globalService: GlobalService ) : BaseViewModel(application) { val contactsLiveData = MutableLiveData>() - val searchQuery = MutableLiveData(null) + private var searchQuery: String? = null var conversationToken: String? = null + fun setSearchQuery(query: String?) { + searchQuery = query + loadContacts() + } + fun loadContacts() { - getContactsUseCase.invoke(viewModelScope, parametersOf(globalService.currentUserLiveData.value, searchQuery.value, conversationToken), object : + getContactsUseCase.invoke(viewModelScope, parametersOf(globalService.currentUserLiveData.value, searchQuery, conversationToken), object : UseCaseResponse> { override suspend fun onSuccess(result: List) { - val sortPriority = mapOf("users" to 0, "groups" to 1, "emails" to 2, "circles" to 3) + val sortPriority = mapOf("users" to 0, "groups" to 1, "emails" to 2, "circles" to 0) val typeComparator = Comparator { o1, o2 -> sortPriority[o2.source]?.let { sortPriority[o1.source]?.compareTo(it) } 0 @@ -38,7 +39,7 @@ class ContactsViewModel constructor( val sortedList = result.sortedWith(compareBy({ sortPriority[it.source] }, { - it.displayName.toLowerCase(Locale.getDefault()) + it.displayName.toLowerCase() })) contactsLiveData.postValue(sortedList) diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewSource.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewSource.kt index ea9a694fe..07b6ba90b 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewSource.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/ContactsViewSource.kt @@ -23,7 +23,6 @@ package com.nextcloud.talk.newarch.features.contactsflow import androidx.lifecycle.LiveData -import com.nextcloud.talk.models.json.conversations.Conversation import com.nextcloud.talk.models.json.participants.Participant import com.otaliastudios.elements.Element import com.otaliastudios.elements.Page diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListViewModel.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListViewModel.kt index 997bdc2ab..be5816dd8 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListViewModel.kt @@ -22,11 +22,13 @@ package com.nextcloud.talk.newarch.features.conversationslist import android.app.Application import android.graphics.drawable.Drawable -import androidx.lifecycle.* +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.Transformations +import androidx.lifecycle.liveData +import androidx.lifecycle.viewModelScope import coil.Coil import coil.api.get import coil.transform.CircleCropTransformation -import com.nextcloud.talk.R import com.nextcloud.talk.models.json.conversations.Conversation import com.nextcloud.talk.models.json.generic.GenericOverall import com.nextcloud.talk.newarch.conversationsList.mvp.BaseViewModel @@ -40,7 +42,6 @@ import com.nextcloud.talk.newarch.domain.usecases.base.UseCaseResponse import com.nextcloud.talk.newarch.local.models.getCredentials import com.nextcloud.talk.newarch.services.GlobalService import com.nextcloud.talk.utils.ApiUtils -import com.nextcloud.talk.utils.DisplayUtils import kotlinx.coroutines.launch import org.koin.core.parameter.parametersOf import java.util.concurrent.locks.ReentrantLock diff --git a/app/src/main/java/com/nextcloud/talk/newarch/local/converters/PushConfigurationConverter.kt b/app/src/main/java/com/nextcloud/talk/newarch/local/converters/PushConfigurationConverter.kt index 021c6acfa..8d4912a79 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/local/converters/PushConfigurationConverter.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/local/converters/PushConfigurationConverter.kt @@ -21,7 +21,6 @@ package com.nextcloud.talk.newarch.local.converters import androidx.room.TypeConverter -import com.bluelinelabs.logansquare.LoganSquare import com.nextcloud.talk.models.json.push.PushConfiguration import com.nextcloud.talk.newarch.utils.MagicJson import kotlinx.serialization.json.Json diff --git a/app/src/main/java/com/nextcloud/talk/utils/PushUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/PushUtils.kt index 23899db98..ced1066a0 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/PushUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/PushUtils.kt @@ -40,7 +40,6 @@ import java.security.* import java.security.spec.InvalidKeySpecException import java.security.spec.PKCS8EncodedKeySpec import java.security.spec.X509EncodedKeySpec -import java.util.HashMap class PushUtils(val usersRepository: UsersRepository) : KoinComponent { val appPreferences: AppPreferences by inject() @@ -65,7 +64,7 @@ class PushUtils(val usersRepository: UsersRepository) : KoinComponent { return options } - fun getMapForPushRegistrationWithServer(context: Context, token: String) : Map { + fun getMapForPushRegistrationWithServer(context: Context, token: String): Map { val options = mutableMapOf() // Let's generate a keypair if we don't have it diff --git a/app/src/main/java/com/nextcloud/talk/utils/animations/FABAwareScrollingViewBehavior.java b/app/src/main/java/com/nextcloud/talk/utils/animations/FABAwareScrollingViewBehavior.java index ac810d193..3b5264177 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/animations/FABAwareScrollingViewBehavior.java +++ b/app/src/main/java/com/nextcloud/talk/utils/animations/FABAwareScrollingViewBehavior.java @@ -20,7 +20,6 @@ import android.util.AttributeSet; import android.view.View; import androidx.annotation.NonNull; -import androidx.cardview.widget.CardView; import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.core.view.ViewCompat; diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.kt b/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.kt index ab17ea0df..005618851 100644 --- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.kt +++ b/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.kt @@ -34,8 +34,8 @@ import com.nextcloud.talk.models.json.websocket.* import com.nextcloud.talk.newarch.local.models.UserNgEntity import com.nextcloud.talk.utils.LoggingUtils.writeLogEntryToFile import com.nextcloud.talk.utils.MagicMap -import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_CONVERSATION_TOKEN +import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID import okhttp3.OkHttpClient import okhttp3.Request.Builder import okhttp3.Response diff --git a/app/src/main/res/layout/rv_item_participant_rv_footer.xml b/app/src/main/res/layout/rv_item_participant_rv_footer.xml new file mode 100644 index 000000000..dea17468d --- /dev/null +++ b/app/src/main/res/layout/rv_item_participant_rv_footer.xml @@ -0,0 +1,38 @@ + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a6dbc169c..8e8cb4d92 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -338,4 +338,5 @@ M3.27,4.27L19.74,20.74 + Search for more participants