From b83931c13ac76de58cf60aa0c07c8b3d6e8f8e98 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Wed, 9 Oct 2019 12:07:01 +0200 Subject: [PATCH] It compiles again! Signed-off-by: Mario Danic --- .idea/modules.xml | 1 + data/src/main/res/values/strings.xml | 23 - domain/.gitignore | 1 - domain/build.gradle | 56 - domain/consumer-rules.pro | 0 domain/proguard-rules.pro | 21 - .../domain/ExampleInstrumentedTest.kt | 44 - domain/src/main/AndroidManifest.xml | 22 - domain/src/main/res/values/strings.xml | 23 - presentation/build.gradle | 6 +- .../talk/adapters/items/AdvancedUserItem.java | 10 +- .../talk/adapters/items/AppItem.java | 1 - .../talk/adapters/items/CallItem.java | 9 +- .../talk/adapters/items/ConversationItem.java | 6 +- .../adapters/items/GenericTextHeaderItem.java | 1 - .../items/MentionAutocompleteItem.java | 7 +- .../talk/adapters/items/MenuItem.java | 2 - .../adapters/items/NotificationSoundItem.java | 1 - .../talk/adapters/items/ProgressItem.java | 1 - .../talk/adapters/items/UserItem.java | 20 +- .../MagicIncomingTextMessageViewHolder.java | 6 +- .../MagicOutcomingTextMessageViewHolder.java | 6 +- .../MagicPreviewMessageViewHolder.java | 11 +- .../MagicSystemMessageViewHolder.java | 3 +- .../MagicUnreadNoticeMessageViewHolder.java | 1 - .../java/com/nextcloud/talk/api/NcApi.java | 43 +- .../application/NextcloudTalkApplication.kt | 9 +- .../MentionAutocompleteCallback.java | 3 +- .../adapters/items/BrowserFileItem.java | 3 +- .../controllers/BrowserController.java | 19 +- .../filebrowser/models/BrowserFile.java | 11 +- .../models/properties/NCEncrypted.java | 3 +- .../models/properties/NCPreview.java | 3 +- .../models/properties/OCFavorite.java | 3 +- .../filebrowser/models/properties/OCId.java | 3 +- .../filebrowser/models/properties/OCSize.java | 3 +- .../filebrowser/operations/DavListing.java | 3 +- .../filebrowser/webdav/DavUtils.java | 15 +- .../webdav/ReadFilesystemOperation.java | 7 +- .../AccountVerificationController.java | 12 +- .../talk/controllers/CallController.java | 77 +- .../CallNotificationController.java | 26 +- .../talk/controllers/ChatController.kt | 46 +- .../talk/controllers/ContactsController.java | 93 +- .../controllers/ConversationInfoController.kt | 22 +- .../ConversationsListController.java | 35 +- .../talk/controllers/LockedController.java | 3 +- .../RingtoneSelectionController.java | 5 +- .../ServerSelectionController.java | 15 +- .../talk/controllers/SettingsController.java | 26 +- .../controllers/SwitchAccountController.java | 8 +- .../controllers/WebViewLoginController.java | 17 +- .../talk/controllers/base/BaseController.java | 4 +- .../bottomsheet/CallMenuController.java | 478 ++++---- .../bottomsheet/EntryMenuController.java | 7 +- .../bottomsheet/OperationsMenuController.java | 34 +- .../items/ListIconDialogAdapter.kt | 2 - .../talk/dagger/modules/BusModule.java | 3 +- .../talk/dagger/modules/DatabaseModule.java | 3 +- .../talk/dagger/modules/RestModule.java | 26 +- .../talk/events/CertificateEvent.java | 1 - .../talk/events/MoreMenuClickEvent.java | 2 +- .../events/SessionDescriptionSendEvent.java | 2 +- .../events/WebSocketCommunicationEvent.java | 3 +- .../talk/jobs/AccountRemovalWorker.java | 14 +- .../jobs/AddParticipantsToConversation.java | 24 +- .../talk/jobs/CapabilitiesWorker.java | 13 +- .../talk/jobs/DeleteConversationWorker.java | 7 +- .../talk/jobs/LeaveConversationWorker.java | 7 +- .../talk/jobs/NotificationWorker.java | 1026 +++++++++-------- .../talk/jobs/ShareOperationWorker.java | 3 +- .../talk/jobs/SignalingSettingsWorker.java | 15 +- .../talk/jobs/WebsocketConnectionsWorker.java | 5 +- .../nextcloud/talk/models/RetrofitBucket.java | 3 +- .../models/database/ArbitraryStorage.java | 1 - .../database/ArbitraryStorageEntity.java | 287 ----- .../talk/models/database/Models.java | 17 - .../nextcloud/talk/models/database/User.java | 3 +- .../talk/models/database/UserEntity.java | 674 ----------- .../json/autocomplete/AutocompleteOCS.java | 3 +- .../json/capabilities/Capabilities.java | 5 +- .../capabilities/NotificationsCapability.java | 3 +- .../json/capabilities/SpreedCapability.java | 5 +- .../talk/models/json/chat/ChatMessage.java | 7 +- .../talk/models/json/chat/ChatOCS.java | 3 +- .../json/conversations/Conversation.java | 6 +- .../models/json/conversations/RoomsOCS.java | 3 +- .../EnumSystemMessageTypeConverter.kt | 21 +- .../LoganSquareJodaTimeConverter.java | 6 +- .../talk/models/json/mention/MentionOCS.java | 3 +- .../json/notifications/Notification.java | 8 +- .../notifications/NotificationOverall.java | 23 +- .../json/notifications/NotificationsOCS.java | 3 +- .../json/participants/AddParticipantOCS.java | 2 +- .../json/participants/ParticipantsOCS.java | 3 +- .../models/json/push/NotificationUser.java | 37 +- .../models/json/sharees/ExactSharees.java | 3 +- .../talk/models/json/sharees/SharesData.java | 3 +- .../signaling/DataChannelMessageNick.java | 3 +- .../models/json/signaling/SignalingOCS.java | 3 +- .../json/signaling/settings/IceServer.java | 3 +- .../json/signaling/settings/Settings.java | 3 +- .../json/websocket/ByeWebSocketMessage.java | 3 +- .../EventOverallWebSocketMessage.java | 3 +- .../RoomPropertiesWebSocketMessage.java | 2 +- ...HelloResponseFeaturesWebSocketMessage.java | 3 +- .../ConversationsListContract.kt | 4 +- .../talk/{ => newarch}/mvp/BaseMvpView.kt | 3 +- .../talk/{ => newarch}/mvp/BasePresenter.kt | 2 +- .../talk/{ => newarch}/mvp/MvpPresenter.kt | 2 +- .../MentionAutocompletePresenter.java | 7 +- .../talk/receivers/PackageReplacedReceiver.kt | 3 - .../com/nextcloud/talk/utils/AccountUtils.kt | 5 +- .../com/nextcloud/talk/utils/ApiUtils.java | 7 +- .../com/nextcloud/talk/utils/DateUtils.kt | 5 +- .../com/nextcloud/talk/utils/DeviceUtils.java | 1 - .../nextcloud/talk/utils/DisplayUtils.java | 7 +- .../talk/utils/EmojiTextInputEditText.java | 2 - .../utils/FABAwareScrollingViewBehavior.java | 1 - .../com/nextcloud/talk/utils/LoggingUtils.kt | 4 - .../nextcloud/talk/utils/MagicCharPolicy.java | 1 - .../utils/OkHttpNetworkFetcherWithCache.java | 3 +- .../com/nextcloud/talk/utils/PushUtils.java | 28 +- .../nextcloud/talk/utils/SecurityUtils.java | 16 +- .../com/nextcloud/talk/utils/ShareUtils.java | 3 +- .../nextcloud/talk/utils/TextMatchers.java | 1 - .../animations/SharedElementTransition.java | 8 +- .../ArbitraryStorageModule.java | 1 - .../talk/utils/database/user/UserModule.java | 1 - .../talk/utils/database/user/UserUtils.java | 1 - .../talk/utils/power/PowerManagerUtils.java | 1 - .../talk/utils/power/ProximityLock.java | 1 - .../utils/preferences/AppPreferences.java | 8 +- .../preferences/MagicUserInputModule.java | 3 +- .../DatabaseStorageModule.java | 5 +- .../talk/utils/ssl/MagicKeyManager.java | 9 +- .../talk/utils/ssl/MagicTrustManager.java | 10 +- .../talk/utils/ssl/SSLSocketFactoryCompat.kt | 8 +- ...terialPreferenceCategoryWithRightLink.java | 6 +- .../talk/webrtc/MagicAudioManager.java | 5 +- .../talk/webrtc/MagicBluetoothManager.java | 3 +- .../webrtc/MagicPeerConnectionWrapper.java | 21 +- .../talk/webrtc/MagicWebRTCUtils.java | 8 +- .../talk/webrtc/MagicWebSocketInstance.java | 32 +- .../webrtc/WebSocketConnectionHelper.java | 20 +- settings.gradle | 2 +- 146 files changed, 1418 insertions(+), 2469 deletions(-) delete mode 100644 data/src/main/res/values/strings.xml delete mode 100644 domain/.gitignore delete mode 100644 domain/build.gradle delete mode 100644 domain/consumer-rules.pro delete mode 100644 domain/proguard-rules.pro delete mode 100644 domain/src/androidTest/java/com/nextcloud/domain/ExampleInstrumentedTest.kt delete mode 100644 domain/src/main/AndroidManifest.xml delete mode 100644 domain/src/main/res/values/strings.xml delete mode 100644 presentation/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorageEntity.java delete mode 100644 presentation/src/main/java/com/nextcloud/talk/models/database/Models.java delete mode 100644 presentation/src/main/java/com/nextcloud/talk/models/database/UserEntity.java rename domain/src/test/java/com/nextcloud/domain/ExampleUnitTest.kt => presentation/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOverall.java (69%) rename data/src/test/java/com/nextcloud/data/ExampleUnitTest.kt => presentation/src/main/java/com/nextcloud/talk/models/json/push/NotificationUser.java (65%) rename presentation/src/main/java/com/nextcloud/talk/{ => newarch}/features/conversationsList/ConversationsListContract.kt (89%) rename presentation/src/main/java/com/nextcloud/talk/{ => newarch}/mvp/BaseMvpView.kt (95%) rename presentation/src/main/java/com/nextcloud/talk/{ => newarch}/mvp/BasePresenter.kt (95%) rename presentation/src/main/java/com/nextcloud/talk/{ => newarch}/mvp/MvpPresenter.kt (93%) diff --git a/.idea/modules.xml b/.idea/modules.xml index 1e0573a53..f8c9c15b7 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -6,6 +6,7 @@ + \ No newline at end of file diff --git a/data/src/main/res/values/strings.xml b/data/src/main/res/values/strings.xml deleted file mode 100644 index 2a05ffeda..000000000 --- a/data/src/main/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - data - diff --git a/domain/.gitignore b/domain/.gitignore deleted file mode 100644 index 796b96d1c..000000000 --- a/domain/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/domain/build.gradle b/domain/build.gradle deleted file mode 100644 index 4e035bf70..000000000 --- a/domain/build.gradle +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Nextcloud Talk application - * - * @author Mario Danic - * Copyright (C) 2017-2019 Mario Danic - * - * 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 . - */ - -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' -android { - compileSdkVersion 29 - buildToolsVersion "29.0.2" - - - defaultConfig { - minSdkVersion 21 - targetSdkVersion 29 - versionCode 1 - versionName "1.0" - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles 'consumer-rules.pro' - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion" - implementation 'androidx.appcompat:appcompat:1.1.0' - implementation 'androidx.core:core-ktx:1.1.0' - testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test.ext:junit:1.1.1' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' -} diff --git a/domain/consumer-rules.pro b/domain/consumer-rules.pro deleted file mode 100644 index e69de29bb..000000000 diff --git a/domain/proguard-rules.pro b/domain/proguard-rules.pro deleted file mode 100644 index f1b424510..000000000 --- a/domain/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile diff --git a/domain/src/androidTest/java/com/nextcloud/domain/ExampleInstrumentedTest.kt b/domain/src/androidTest/java/com/nextcloud/domain/ExampleInstrumentedTest.kt deleted file mode 100644 index bcee65ff1..000000000 --- a/domain/src/androidTest/java/com/nextcloud/domain/ExampleInstrumentedTest.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Nextcloud Talk application - * - * @author Mario Danic - * Copyright (C) 2017-2019 Mario Danic - * - * 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 . - */ - -package com.nextcloud.domain - -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.ext.junit.runners.AndroidJUnit4 - -import org.junit.Test -import org.junit.runner.RunWith - -import org.junit.Assert.* - -/** - * Instrumented test, which will execute on an Android device. - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -@RunWith(AndroidJUnit4::class) -class ExampleInstrumentedTest { - @Test - fun useAppContext() { - // Context of the app under test. - val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("com.nextcloud.domain.test", appContext.packageName) - } -} diff --git a/domain/src/main/AndroidManifest.xml b/domain/src/main/AndroidManifest.xml deleted file mode 100644 index 5c6dbc4e8..000000000 --- a/domain/src/main/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/domain/src/main/res/values/strings.xml b/domain/src/main/res/values/strings.xml deleted file mode 100644 index 0171f1daf..000000000 --- a/domain/src/main/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - domain - diff --git a/presentation/build.gradle b/presentation/build.gradle index c3c73614c..46841a6c8 100644 --- a/presentation/build.gradle +++ b/presentation/build.gradle @@ -144,8 +144,6 @@ configurations.all { dependencies { implementation fileTree(include: ['*'], dir: 'libs') - implementation project(':data') - implementation project(':domain') implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'com.google.android.material:material:1.1.0-beta01' @@ -185,6 +183,10 @@ dependencies { implementation 'com.squareup.retrofit2:retrofit:2.6.2' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.6.2' implementation 'com.github.aurae.retrofit2:converter-logansquare:1.4.1' + implementation group: 'joda-time', name: 'joda-time', version: '2.10.3' + implementation 'com.bluelinelabs:logansquare:1.3.7' + implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.10.0.pr1' + kapt 'com.bluelinelabs:logansquare-compiler:1.3.7' implementation 'com.google.dagger:dagger:2.24' kapt 'com.google.dagger:dagger-compiler:2.24' diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java b/presentation/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java index ae21c4774..1b8d6b6d0 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java @@ -22,10 +22,13 @@ package com.nextcloud.talk.adapters.items; import android.accounts.Account; import android.view.View; -import android.widget.*; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; import androidx.annotation.Nullable; import androidx.emoji.widget.EmojiTextView; - import butterknife.BindView; import butterknife.ButterKnife; import com.facebook.drawee.backends.pipeline.Fresco; @@ -34,7 +37,7 @@ import com.facebook.drawee.view.SimpleDraweeView; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.participants.Participant; +import com.nextcloud.talk.models.json.participants.Participant; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.DisplayUtils; import eu.davidea.flexibleadapter.FlexibleAdapter; @@ -42,7 +45,6 @@ import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.flexibleadapter.items.IFilterable; import eu.davidea.flexibleadapter.utils.FlexibleUtils; import eu.davidea.viewholders.FlexibleViewHolder; - import java.util.List; import java.util.regex.Pattern; diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/items/AppItem.java b/presentation/src/main/java/com/nextcloud/talk/adapters/items/AppItem.java index 88be4e209..2735d8410 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/items/AppItem.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/items/AppItem.java @@ -36,7 +36,6 @@ import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.flexibleadapter.items.IFlexible; import eu.davidea.viewholders.FlexibleViewHolder; - import java.util.List; public class AppItem extends AbstractFlexibleItem { diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/items/CallItem.java b/presentation/src/main/java/com/nextcloud/talk/adapters/items/CallItem.java index 71ce47574..b63b8ea41 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/items/CallItem.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/items/CallItem.java @@ -26,9 +26,7 @@ import android.text.format.DateUtils; import android.view.View; import android.widget.ImageButton; import android.widget.ImageView; - import androidx.emoji.widget.EmojiTextView; - import butterknife.BindView; import butterknife.ButterKnife; import com.facebook.drawee.backends.pipeline.Fresco; @@ -38,7 +36,7 @@ import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.events.MoreMenuClickEvent; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.conversations.Conversation; +import com.nextcloud.talk.models.json.conversations.Conversation; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.DisplayUtils; import eu.davidea.flexibleadapter.FlexibleAdapter; @@ -46,10 +44,9 @@ import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.flexibleadapter.items.IFilterable; import eu.davidea.flexibleadapter.utils.FlexibleUtils; import eu.davidea.viewholders.FlexibleViewHolder; -import org.greenrobot.eventbus.EventBus; - import java.util.List; import java.util.regex.Pattern; +import org.greenrobot.eventbus.EventBus; public class CallItem extends AbstractFlexibleItem implements IFilterable { @@ -114,7 +111,7 @@ public class CallItem extends AbstractFlexibleItem System.currentTimeMillis(), 0, DateUtils.FORMAT_ABBREV_RELATIVE)); } - if (conversation.getHasPassword()) { + if (conversation.hasPassword) { holder.passwordProtectedImageView.setVisibility(View.VISIBLE); } else { holder.passwordProtectedImageView.setVisibility(View.GONE); diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java b/presentation/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java index 1da4814b9..820975c86 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java @@ -29,20 +29,17 @@ import android.text.format.DateUtils; import android.view.View; import android.widget.ImageView; import android.widget.TextView; - import androidx.emoji.widget.EmojiTextView; - import butterknife.BindView; import butterknife.ButterKnife; - import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView; +import com.nextcloud.talk.models.json.conversations.Conversation; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.models.json.chat.ChatMessage; -import com.nextcloud.data.models.json.conversations.Conversation; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.DisplayUtils; import eu.davidea.flexibleadapter.FlexibleAdapter; @@ -51,7 +48,6 @@ import eu.davidea.flexibleadapter.items.IFilterable; import eu.davidea.flexibleadapter.items.IFlexible; import eu.davidea.flexibleadapter.utils.FlexibleUtils; import eu.davidea.viewholders.FlexibleViewHolder; - import java.util.List; import java.util.regex.Pattern; diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/items/GenericTextHeaderItem.java b/presentation/src/main/java/com/nextcloud/talk/adapters/items/GenericTextHeaderItem.java index 331c52803..42067663b 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/items/GenericTextHeaderItem.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/items/GenericTextHeaderItem.java @@ -30,7 +30,6 @@ import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.items.AbstractHeaderItem; import eu.davidea.flexibleadapter.items.IFlexible; import eu.davidea.viewholders.FlexibleViewHolder; - import java.util.List; public class GenericTextHeaderItem extends AbstractHeaderItem { diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/items/MentionAutocompleteItem.java b/presentation/src/main/java/com/nextcloud/talk/adapters/items/MentionAutocompleteItem.java index 0a89eae1e..59aba15ba 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/items/MentionAutocompleteItem.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/items/MentionAutocompleteItem.java @@ -22,7 +22,6 @@ package com.nextcloud.talk.adapters.items; import android.annotation.SuppressLint; import android.view.View; - import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.interfaces.DraweeController; import com.nextcloud.talk.R; @@ -30,15 +29,13 @@ import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.DisplayUtils; - -import java.util.List; -import java.util.regex.Pattern; - import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.flexibleadapter.items.IFilterable; import eu.davidea.flexibleadapter.items.IFlexible; import eu.davidea.flexibleadapter.utils.FlexibleUtils; +import java.util.List; +import java.util.regex.Pattern; public class MentionAutocompleteItem extends AbstractFlexibleItem implements IFilterable { diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/items/MenuItem.java b/presentation/src/main/java/com/nextcloud/talk/adapters/items/MenuItem.java index 33f335bd2..120bae1db 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/items/MenuItem.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/items/MenuItem.java @@ -22,7 +22,6 @@ package com.nextcloud.talk.adapters.items; - import android.graphics.drawable.Drawable; import android.text.Spannable; import android.text.SpannableString; @@ -37,7 +36,6 @@ import com.nextcloud.talk.utils.DisplayUtils; import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.viewholders.FlexibleViewHolder; - import java.util.List; public class MenuItem extends AbstractFlexibleItem { diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/items/NotificationSoundItem.java b/presentation/src/main/java/com/nextcloud/talk/adapters/items/NotificationSoundItem.java index ffa33fbcc..e950c00af 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/items/NotificationSoundItem.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/items/NotificationSoundItem.java @@ -34,7 +34,6 @@ import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.flexibleadapter.items.IFlexible; import eu.davidea.viewholders.FlexibleViewHolder; - import java.util.List; public class NotificationSoundItem extends AbstractFlexibleItem { diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/items/ProgressItem.java b/presentation/src/main/java/com/nextcloud/talk/adapters/items/ProgressItem.java index 14e5e74ef..83d889a83 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/items/ProgressItem.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/items/ProgressItem.java @@ -39,7 +39,6 @@ import eu.davidea.flexibleadapter.helpers.AnimatorHelper; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.flexibleadapter.items.IFlexible; import eu.davidea.viewholders.FlexibleViewHolder; - import java.util.List; /** diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/items/UserItem.java b/presentation/src/main/java/com/nextcloud/talk/adapters/items/UserItem.java index 0a829a032..ded66e5a8 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/items/UserItem.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/items/UserItem.java @@ -25,32 +25,28 @@ import android.graphics.drawable.BitmapDrawable; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; - +import androidx.emoji.widget.EmojiTextView; +import butterknife.BindView; +import butterknife.ButterKnife; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.converters.EnumParticipantTypeConverter; -import com.nextcloud.data.models.json.participants.Participant; +import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter; +import com.nextcloud.talk.models.json.participants.Participant; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.DisplayUtils; - -import java.util.List; -import java.util.regex.Pattern; - -import javax.annotation.Nullable; - -import androidx.emoji.widget.EmojiTextView; -import butterknife.BindView; -import butterknife.ButterKnife; import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.flexibleadapter.items.IFilterable; import eu.davidea.flexibleadapter.items.ISectionable; import eu.davidea.flexibleadapter.utils.FlexibleUtils; import eu.davidea.viewholders.FlexibleViewHolder; +import java.util.List; +import java.util.regex.Pattern; +import javax.annotation.Nullable; public class UserItem extends AbstractFlexibleItem implements ISectionable, IFilterable { diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.java b/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.java index ec8edc80d..1fd945e7a 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.java @@ -34,7 +34,6 @@ import android.view.View; import android.widget.TextView; import androidx.core.view.ViewCompat; import androidx.emoji.widget.EmojiTextView; - import autodagger.AutoInjector; import butterknife.BindView; import butterknife.ButterKnife; @@ -49,10 +48,9 @@ import com.nextcloud.talk.utils.TextMatchers; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; import com.stfalcon.chatkit.messages.MessageHolders; - -import javax.inject.Inject; import java.util.HashMap; import java.util.Map; +import javax.inject.Inject; @AutoInjector(NextcloudTalkApplication.class) public class MagicIncomingTextMessageViewHolder @@ -135,7 +133,7 @@ public class MagicIncomingTextMessageViewHolder int bubbleResource = R.drawable.shape_incoming_message; - if (message.getIsGrouped()) { + if (message.isGrouped) { bubbleResource = R.drawable.shape_grouped_incoming_message; } diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.java b/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.java index ab543ff33..3c3abd881 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.java @@ -32,7 +32,6 @@ import android.view.View; import android.widget.TextView; import androidx.core.view.ViewCompat; import androidx.emoji.widget.EmojiTextView; - import autodagger.AutoInjector; import butterknife.BindView; import butterknife.ButterKnife; @@ -44,10 +43,9 @@ import com.nextcloud.talk.utils.DisplayUtils; import com.nextcloud.talk.utils.TextMatchers; import com.nextcloud.talk.utils.database.user.UserUtils; import com.stfalcon.chatkit.messages.MessageHolders; - -import javax.inject.Inject; import java.util.HashMap; import java.util.Map; +import javax.inject.Inject; @AutoInjector(NextcloudTalkApplication.class) public class MagicOutcomingTextMessageViewHolder extends MessageHolders.OutcomingTextMessageViewHolder { @@ -120,7 +118,7 @@ public class MagicOutcomingTextMessageViewHolder extends MessageHolders.Outcomin } Resources resources = NextcloudTalkApplication.Companion.getSharedApplication().getResources(); - if (message.getIsGrouped()) { + if (message.isGrouped) { Drawable bubbleDrawable = DisplayUtils.getMessageSelector(resources.getColor(R.color.bg_message_list_outcoming_bubble), resources.getColor(R.color.transparent), diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java b/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java index f6b7c4a38..db73a5d95 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java @@ -29,9 +29,7 @@ import android.graphics.drawable.LayerDrawable; import android.net.Uri; import android.os.Handler; import android.view.View; - import androidx.emoji.widget.EmojiTextView; - import autodagger.AutoInjector; import butterknife.BindView; import butterknife.ButterKnife; @@ -51,11 +49,10 @@ import io.reactivex.Single; import io.reactivex.SingleObserver; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; -import okhttp3.OkHttpClient; - -import javax.inject.Inject; import java.util.List; import java.util.concurrent.Callable; +import javax.inject.Inject; +import okhttp3.OkHttpClient; @AutoInjector(NextcloudTalkApplication.class) public class MagicPreviewMessageViewHolder extends MessageHolders.IncomingImageMessageViewHolder { @@ -80,8 +77,8 @@ public class MagicPreviewMessageViewHolder extends MessageHolders.IncomingImageM public void onBind(ChatMessage message) { super.onBind(message); if (userAvatar != null) { - if (message.getIsGrouped() || message.isOneToOneConversation()) { - if (message.isOneToOneConversation()) { + if (message.isGrouped || message.isOneToOneConversation) { + if (message.isOneToOneConversation) { userAvatar.setVisibility(View.GONE); } else { userAvatar.setVisibility(View.INVISIBLE); diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicSystemMessageViewHolder.java b/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicSystemMessageViewHolder.java index 0340e6fd7..e95067bf8 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicSystemMessageViewHolder.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicSystemMessageViewHolder.java @@ -27,16 +27,15 @@ import android.text.Spannable; import android.text.SpannableString; import android.view.View; import androidx.core.view.ViewCompat; +import autodagger.AutoInjector; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.models.json.chat.ChatMessage; import com.nextcloud.talk.utils.DisplayUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; import com.stfalcon.chatkit.messages.MessageHolders; - import java.util.Map; import javax.inject.Inject; -import autodagger.AutoInjector; @AutoInjector(NextcloudTalkApplication.class) public class MagicSystemMessageViewHolder extends MessageHolders.IncomingTextMessageViewHolder { diff --git a/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicUnreadNoticeMessageViewHolder.java b/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicUnreadNoticeMessageViewHolder.java index aac615f2c..d5a184d30 100644 --- a/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicUnreadNoticeMessageViewHolder.java +++ b/presentation/src/main/java/com/nextcloud/talk/adapters/messages/MagicUnreadNoticeMessageViewHolder.java @@ -21,7 +21,6 @@ package com.nextcloud.talk.adapters.messages; import android.view.View; - import com.nextcloud.talk.models.json.chat.ChatMessage; import com.stfalcon.chatkit.messages.MessageHolders; diff --git a/presentation/src/main/java/com/nextcloud/talk/api/NcApi.java b/presentation/src/main/java/com/nextcloud/talk/api/NcApi.java index d91b9d577..f3f42e4a9 100644 --- a/presentation/src/main/java/com/nextcloud/talk/api/NcApi.java +++ b/presentation/src/main/java/com/nextcloud/talk/api/NcApi.java @@ -21,27 +21,36 @@ package com.nextcloud.talk.api; import androidx.annotation.Nullable; -import com.nextcloud.data.models.json.capabilities.CapabilitiesOverall; +import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall; import com.nextcloud.talk.models.json.chat.ChatOverall; -import com.nextcloud.data.models.json.generic.GenericOverall; -import com.nextcloud.data.models.json.generic.Status; -import com.nextcloud.data.models.json.mention.MentionOverall; -import com.nextcloud.data.models.json.notifications.NotificationOverall; -import com.nextcloud.data.models.json.participants.AddParticipantOverall; -import com.nextcloud.data.models.json.participants.ParticipantsOverall; -import com.nextcloud.data.models.json.push.PushRegistrationOverall; -import com.nextcloud.data.models.json.conversations.RoomOverall; -import com.nextcloud.data.models.json.conversations.RoomsOverall; -import com.nextcloud.data.models.json.signaling.SignalingOverall; -import com.nextcloud.data.models.json.signaling.settings.SignalingSettingsOverall; -import com.nextcloud.data.models.json.userprofile.UserProfileOverall; +import com.nextcloud.talk.models.json.conversations.RoomOverall; +import com.nextcloud.talk.models.json.conversations.RoomsOverall; +import com.nextcloud.talk.models.json.generic.GenericOverall; +import com.nextcloud.talk.models.json.generic.Status; +import com.nextcloud.talk.models.json.mention.MentionOverall; +import com.nextcloud.talk.models.json.notifications.NotificationOverall; +import com.nextcloud.talk.models.json.participants.AddParticipantOverall; +import com.nextcloud.talk.models.json.participants.ParticipantsOverall; +import com.nextcloud.talk.models.json.push.PushRegistrationOverall; +import com.nextcloud.talk.models.json.signaling.SignalingOverall; +import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall; +import com.nextcloud.talk.models.json.userprofile.UserProfileOverall; import io.reactivex.Observable; -import okhttp3.ResponseBody; -import retrofit2.Response; -import retrofit2.http.*; - import java.util.List; import java.util.Map; +import okhttp3.ResponseBody; +import retrofit2.Response; +import retrofit2.http.DELETE; +import retrofit2.http.Field; +import retrofit2.http.FieldMap; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.GET; +import retrofit2.http.Header; +import retrofit2.http.POST; +import retrofit2.http.PUT; +import retrofit2.http.Query; +import retrofit2.http.QueryMap; +import retrofit2.http.Url; public interface NcApi { diff --git a/presentation/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt b/presentation/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt index 188520ba7..6d0f48a1b 100644 --- a/presentation/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt +++ b/presentation/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt @@ -23,10 +23,9 @@ package com.nextcloud.talk.application import android.content.Context import android.os.Build import android.util.Log +import androidx.appcompat.app.AppCompatDelegate import androidx.emoji.bundled.BundledEmojiCompatConfig import androidx.emoji.text.EmojiCompat - -import androidx.appcompat.app.AppCompatDelegate import androidx.lifecycle.LifecycleObserver import androidx.multidex.MultiDex import androidx.multidex.MultiDexApplication @@ -59,7 +58,6 @@ import com.nextcloud.talk.utils.preferences.AppPreferences import com.nextcloud.talk.webrtc.MagicWebRTCUtils import com.vanniktech.emoji.EmojiManager import com.vanniktech.emoji.googlecompat.GoogleCompatEmojiProvider - import de.cotech.hw.SecurityKeyManager import de.cotech.hw.SecurityKeyManagerConfig import okhttp3.OkHttpClient @@ -67,11 +65,10 @@ import org.conscrypt.Conscrypt import org.webrtc.PeerConnectionFactory import org.webrtc.voiceengine.WebRtcAudioManager import org.webrtc.voiceengine.WebRtcAudioUtils - -import javax.inject.Inject -import javax.inject.Singleton import java.security.Security import java.util.concurrent.TimeUnit +import javax.inject.Inject +import javax.inject.Singleton @AutoComponent(modules = [BusModule::class, ContextModule::class, DatabaseModule::class, RestModule::class, UserModule::class, ArbitraryStorageModule::class]) @Singleton diff --git a/presentation/src/main/java/com/nextcloud/talk/callbacks/MentionAutocompleteCallback.java b/presentation/src/main/java/com/nextcloud/talk/callbacks/MentionAutocompleteCallback.java index 9f32ea1bf..d27e06120 100644 --- a/presentation/src/main/java/com/nextcloud/talk/callbacks/MentionAutocompleteCallback.java +++ b/presentation/src/main/java/com/nextcloud/talk/callbacks/MentionAutocompleteCallback.java @@ -24,11 +24,10 @@ import android.content.Context; import android.text.Editable; import android.text.Spanned; import android.widget.EditText; - import com.facebook.widget.text.span.BetterImageSpan; +import com.nextcloud.talk.models.json.mention.Mention; import com.nextcloud.talk.R; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.mention.Mention; import com.nextcloud.talk.utils.DisplayUtils; import com.nextcloud.talk.utils.MagicCharPolicy; import com.nextcloud.talk.utils.text.Spans; diff --git a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/adapters/items/BrowserFileItem.java b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/adapters/items/BrowserFileItem.java index 4ad6fa10a..8a83fb653 100644 --- a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/adapters/items/BrowserFileItem.java +++ b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/adapters/items/BrowserFileItem.java @@ -46,9 +46,8 @@ import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.flexibleadapter.items.IFilterable; import eu.davidea.flexibleadapter.items.IFlexible; import eu.davidea.viewholders.FlexibleViewHolder; - -import javax.inject.Inject; import java.util.List; +import javax.inject.Inject; @AutoInjector(NextcloudTalkApplication.class) public class BrowserFileItem extends AbstractFlexibleItem implements IFilterable { diff --git a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/controllers/BrowserController.java b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/controllers/BrowserController.java index 765a0ac44..7dc655576 100644 --- a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/controllers/BrowserController.java +++ b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/controllers/BrowserController.java @@ -23,7 +23,12 @@ package com.nextcloud.talk.components.filebrowser.controllers; import android.annotation.SuppressLint; import android.content.Context; import android.os.Bundle; -import android.view.*; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import androidx.work.Data; @@ -52,14 +57,18 @@ import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.flexibleadapter.items.IFlexible; +import java.io.File; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.TreeSet; +import javax.inject.Inject; import okhttp3.OkHttpClient; import org.parceler.Parcel; import org.parceler.Parcels; -import javax.inject.Inject; -import java.io.File; -import java.util.*; - @AutoInjector(NextcloudTalkApplication.class) public class BrowserController extends BaseController implements ListingInterface, FlexibleAdapter.OnItemClickListener, SelectionInterface { diff --git a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/BrowserFile.java b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/BrowserFile.java index 5fd0e11c8..9a6963962 100644 --- a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/BrowserFile.java +++ b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/BrowserFile.java @@ -29,12 +29,15 @@ import at.bitfire.dav4android.property.GetContentType; import at.bitfire.dav4android.property.GetLastModified; import at.bitfire.dav4android.property.ResourceType; import com.bluelinelabs.logansquare.annotation.JsonObject; -import com.nextcloud.talk.components.filebrowser.models.properties.*; -import lombok.Data; -import org.parceler.Parcel; - +import com.nextcloud.talk.components.filebrowser.models.properties.NCEncrypted; +import com.nextcloud.talk.components.filebrowser.models.properties.NCPreview; +import com.nextcloud.talk.components.filebrowser.models.properties.OCFavorite; +import com.nextcloud.talk.components.filebrowser.models.properties.OCId; +import com.nextcloud.talk.components.filebrowser.models.properties.OCSize; import java.io.File; import java.util.List; +import lombok.Data; +import org.parceler.Parcel; @Data @JsonObject diff --git a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCEncrypted.java b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCEncrypted.java index ee69353fd..d88e12923 100644 --- a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCEncrypted.java +++ b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCEncrypted.java @@ -25,6 +25,7 @@ import at.bitfire.dav4android.Property; import at.bitfire.dav4android.PropertyFactory; import at.bitfire.dav4android.XmlUtils; import com.nextcloud.talk.components.filebrowser.webdav.DavUtils; +import java.io.IOException; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.NotNull; @@ -32,8 +33,6 @@ import org.jetbrains.annotations.Nullable; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; -import java.io.IOException; - public class NCEncrypted implements Property { public static final Name NAME = new Name(DavUtils.NC_NAMESPACE, DavUtils.EXTENDED_PROPERTY_IS_ENCRYPTED); diff --git a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCPreview.java b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCPreview.java index 2d387d4b7..461ebd6d2 100644 --- a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCPreview.java +++ b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/NCPreview.java @@ -25,6 +25,7 @@ import at.bitfire.dav4android.Property; import at.bitfire.dav4android.PropertyFactory; import at.bitfire.dav4android.XmlUtils; import com.nextcloud.talk.components.filebrowser.webdav.DavUtils; +import java.io.IOException; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.NotNull; @@ -32,8 +33,6 @@ import org.jetbrains.annotations.Nullable; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; -import java.io.IOException; - public class NCPreview implements Property { public static final Property.Name NAME = new Property.Name(DavUtils.NC_NAMESPACE, DavUtils.EXTENDED_PROPERTY_HAS_PREVIEW); diff --git a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCFavorite.java b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCFavorite.java index d1d34fa28..b182c88bc 100644 --- a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCFavorite.java +++ b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCFavorite.java @@ -25,6 +25,7 @@ import at.bitfire.dav4android.Property; import at.bitfire.dav4android.PropertyFactory; import at.bitfire.dav4android.XmlUtils; import com.nextcloud.talk.components.filebrowser.webdav.DavUtils; +import java.io.IOException; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.NotNull; @@ -32,8 +33,6 @@ import org.jetbrains.annotations.Nullable; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; -import java.io.IOException; - public class OCFavorite implements Property { public static final Property.Name NAME = new Property.Name(DavUtils.OC_NAMESPACE, DavUtils.EXTENDED_PROPERTY_FAVORITE); diff --git a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCId.java b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCId.java index ca5b69b37..60dc773ea 100644 --- a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCId.java +++ b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCId.java @@ -25,6 +25,7 @@ import at.bitfire.dav4android.Property; import at.bitfire.dav4android.PropertyFactory; import at.bitfire.dav4android.XmlUtils; import com.nextcloud.talk.components.filebrowser.webdav.DavUtils; +import java.io.IOException; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.NotNull; @@ -32,8 +33,6 @@ import org.jetbrains.annotations.Nullable; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; -import java.io.IOException; - public class OCId implements Property { public static final Name NAME = new Name(DavUtils.OC_NAMESPACE, DavUtils.EXTENDED_PROPERTY_NAME_REMOTE_ID); diff --git a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCSize.java b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCSize.java index 26b5e4dd4..13b9e3224 100644 --- a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCSize.java +++ b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/models/properties/OCSize.java @@ -25,6 +25,7 @@ import at.bitfire.dav4android.Property; import at.bitfire.dav4android.PropertyFactory; import at.bitfire.dav4android.XmlUtils; import com.nextcloud.talk.components.filebrowser.webdav.DavUtils; +import java.io.IOException; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.NotNull; @@ -32,8 +33,6 @@ import org.jetbrains.annotations.Nullable; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; -import java.io.IOException; - public class OCSize implements Property { public static final Property.Name NAME = new Property.Name(DavUtils.OC_NAMESPACE, DavUtils.EXTENDED_PROPERTY_NAME_SIZE); diff --git a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/operations/DavListing.java b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/operations/DavListing.java index 38399344c..1d43d4d78 100644 --- a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/operations/DavListing.java +++ b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/operations/DavListing.java @@ -29,9 +29,8 @@ import io.reactivex.Single; import io.reactivex.SingleObserver; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; -import okhttp3.OkHttpClient; - import java.util.concurrent.Callable; +import okhttp3.OkHttpClient; public class DavListing extends ListingAbstractClass { private DavResponse davResponse = new DavResponse(); diff --git a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/DavUtils.java b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/DavUtils.java index 579f726be..d0528bd53 100644 --- a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/DavUtils.java +++ b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/DavUtils.java @@ -23,9 +23,18 @@ package com.nextcloud.talk.components.filebrowser.webdav; import at.bitfire.dav4android.Property; import at.bitfire.dav4android.PropertyFactory; import at.bitfire.dav4android.PropertyRegistry; -import at.bitfire.dav4android.property.*; -import com.nextcloud.talk.components.filebrowser.models.properties.*; - +import at.bitfire.dav4android.property.CreationDate; +import at.bitfire.dav4android.property.DisplayName; +import at.bitfire.dav4android.property.GetContentLength; +import at.bitfire.dav4android.property.GetContentType; +import at.bitfire.dav4android.property.GetETag; +import at.bitfire.dav4android.property.GetLastModified; +import at.bitfire.dav4android.property.ResourceType; +import com.nextcloud.talk.components.filebrowser.models.properties.NCEncrypted; +import com.nextcloud.talk.components.filebrowser.models.properties.NCPreview; +import com.nextcloud.talk.components.filebrowser.models.properties.OCFavorite; +import com.nextcloud.talk.components.filebrowser.models.properties.OCId; +import com.nextcloud.talk.components.filebrowser.models.properties.OCSize; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; diff --git a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/ReadFilesystemOperation.java b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/ReadFilesystemOperation.java index 19ff8f58f..55eefa03b 100644 --- a/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/ReadFilesystemOperation.java +++ b/presentation/src/main/java/com/nextcloud/talk/components/filebrowser/webdav/ReadFilesystemOperation.java @@ -28,15 +28,14 @@ import com.nextcloud.talk.components.filebrowser.models.DavResponse; import com.nextcloud.talk.dagger.modules.RestModule; import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.utils.ApiUtils; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import kotlin.Unit; import kotlin.jvm.functions.Function2; import okhttp3.HttpUrl; import okhttp3.OkHttpClient; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - public class ReadFilesystemOperation { private final OkHttpClient okHttpClient; private final String url; diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java index 65295a837..22c77de8d 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java @@ -36,6 +36,9 @@ import autodagger.AutoInjector; import butterknife.BindView; import com.bluelinelabs.conductor.RouterTransaction; import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler; +import com.nextcloud.talk.models.json.conversations.RoomsOverall; +import com.nextcloud.talk.models.json.generic.Status; +import com.nextcloud.talk.models.json.userprofile.UserProfileOverall; import com.nextcloud.talk.R; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; @@ -45,9 +48,6 @@ import com.nextcloud.talk.jobs.CapabilitiesWorker; import com.nextcloud.talk.jobs.PushRegistrationWorker; import com.nextcloud.talk.jobs.SignalingSettingsWorker; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.generic.Status; -import com.nextcloud.data.models.json.conversations.RoomsOverall; -import com.nextcloud.data.models.json.userprofile.UserProfileOverall; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.ClosedInterfaceImpl; import com.nextcloud.talk.utils.bundle.BundleKeys; @@ -55,19 +55,17 @@ import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder; import com.uber.autodispose.AutoDispose; - import io.reactivex.CompletableObserver; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import java.net.CookieManager; +import javax.inject.Inject; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; -import javax.inject.Inject; -import java.net.CookieManager; - @AutoInjector(NextcloudTalkApplication.class) public class AccountVerificationController extends BaseController { diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/CallController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/CallController.java index 5d6a61778..e63c8fed4 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/CallController.java @@ -39,7 +39,12 @@ import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; -import android.widget.*; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ProgressBar; +import android.widget.RelativeLayout; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; @@ -51,23 +56,28 @@ import com.bluelinelabs.logansquare.LoganSquare; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView; +import com.nextcloud.talk.models.ExternalSignalingServer; +import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall; +import com.nextcloud.talk.models.json.conversations.Conversation; +import com.nextcloud.talk.models.json.conversations.RoomOverall; +import com.nextcloud.talk.models.json.conversations.RoomsOverall; +import com.nextcloud.talk.models.json.generic.GenericOverall; +import com.nextcloud.talk.models.json.participants.Participant; +import com.nextcloud.talk.models.json.participants.ParticipantsOverall; +import com.nextcloud.talk.models.json.signaling.*; +import com.nextcloud.talk.models.json.signaling.settings.IceServer; +import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall; import com.nextcloud.talk.R; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.controllers.base.BaseController; -import com.nextcloud.talk.events.*; -import com.nextcloud.data.models.ExternalSignalingServer; +import com.nextcloud.talk.events.ConfigurationChangeEvent; +import com.nextcloud.talk.events.MediaStreamEvent; +import com.nextcloud.talk.events.NetworkEvent; +import com.nextcloud.talk.events.PeerConnectionEvent; +import com.nextcloud.talk.events.SessionDescriptionSendEvent; +import com.nextcloud.talk.events.WebSocketCommunicationEvent; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.capabilities.CapabilitiesOverall; -import com.nextcloud.data.models.json.conversations.RoomOverall; -import com.nextcloud.data.models.json.generic.GenericOverall; -import com.nextcloud.data.models.json.participants.Participant; -import com.nextcloud.data.models.json.participants.ParticipantsOverall; -import com.nextcloud.data.models.json.conversations.Conversation; -import com.nextcloud.data.models.json.conversations.RoomsOverall; -import com.nextcloud.data.models.json.signaling.*; -import com.nextcloud.data.models.json.signaling.settings.IceServer; -import com.nextcloud.data.models.json.signaling.settings.SignalingSettingsOverall; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.DisplayUtils; import com.nextcloud.talk.utils.NotificationUtils; @@ -77,13 +87,27 @@ import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.power.PowerManagerUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder; -import com.nextcloud.talk.webrtc.*; +import com.nextcloud.talk.webrtc.MagicAudioManager; +import com.nextcloud.talk.webrtc.MagicPeerConnectionWrapper; +import com.nextcloud.talk.webrtc.MagicWebRTCUtils; +import com.nextcloud.talk.webrtc.MagicWebSocketInstance; +import com.nextcloud.talk.webrtc.WebSocketConnectionHelper; import com.wooplr.spotlight.SpotlightView; import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import javax.inject.Inject; import me.zhanghai.android.effortlesspermissions.AfterPermissionDenied; import me.zhanghai.android.effortlesspermissions.EffortlessPermissions; import me.zhanghai.android.effortlesspermissions.OpenAppDetailsDialogFragment; @@ -93,14 +117,27 @@ import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import org.parceler.Parcel; -import org.webrtc.*; +import org.webrtc.AudioSource; +import org.webrtc.AudioTrack; +import org.webrtc.Camera1Enumerator; +import org.webrtc.Camera2Enumerator; +import org.webrtc.CameraEnumerator; +import org.webrtc.CameraVideoCapturer; +import org.webrtc.EglBase; +import org.webrtc.IceCandidate; +import org.webrtc.Logging; +import org.webrtc.MediaConstraints; +import org.webrtc.MediaStream; +import org.webrtc.PeerConnection; +import org.webrtc.PeerConnectionFactory; +import org.webrtc.RendererCommon; +import org.webrtc.SessionDescription; +import org.webrtc.SurfaceViewRenderer; +import org.webrtc.VideoCapturer; +import org.webrtc.VideoSource; +import org.webrtc.VideoTrack; import pub.devrel.easypermissions.AfterPermissionGranted; -import javax.inject.Inject; -import java.io.IOException; -import java.util.*; -import java.util.concurrent.TimeUnit; - @AutoInjector(NextcloudTalkApplication.class) public class CallController extends BaseController { diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java index 2b15f52d4..78d0e440b 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java @@ -29,7 +29,11 @@ import android.graphics.drawable.ColorDrawable; import android.media.AudioAttributes; import android.media.MediaPlayer; import android.net.Uri; -import android.os.*; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.os.VibrationEffect; +import android.os.Vibrator; import android.renderscript.RenderScript; import android.text.TextUtils; import android.util.Log; @@ -57,17 +61,17 @@ import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber; import com.facebook.imagepipeline.image.CloseableImage; import com.facebook.imagepipeline.postprocessors.BlurPostProcessor; import com.facebook.imagepipeline.request.ImageRequest; +import com.nextcloud.talk.models.RingtoneSettings; +import com.nextcloud.talk.models.json.conversations.Conversation; +import com.nextcloud.talk.models.json.conversations.RoomsOverall; +import com.nextcloud.talk.models.json.participants.Participant; +import com.nextcloud.talk.models.json.participants.ParticipantsOverall; import com.nextcloud.talk.R; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.controllers.base.BaseController; import com.nextcloud.talk.events.ConfigurationChangeEvent; -import com.nextcloud.data.models.RingtoneSettings; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.participants.Participant; -import com.nextcloud.data.models.json.participants.ParticipantsOverall; -import com.nextcloud.data.models.json.conversations.Conversation; -import com.nextcloud.data.models.json.conversations.RoomsOverall; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.DisplayUtils; import com.nextcloud.talk.utils.DoNotDisturbUtils; @@ -75,11 +79,14 @@ import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.preferences.AppPreferences; import com.nextcloud.talk.utils.singletons.AvatarStatusCodeHolder; import com.uber.autodispose.AutoDispose; - import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import java.io.IOException; +import java.util.List; +import javax.annotation.Nullable; +import javax.inject.Inject; import okhttp3.Cache; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -87,11 +94,6 @@ import org.greenrobot.eventbus.ThreadMode; import org.michaelevans.colorart.library.ColorArt; import org.parceler.Parcels; -import javax.annotation.Nullable; -import javax.inject.Inject; -import java.io.IOException; -import java.util.List; - @AutoInjector(NextcloudTalkApplication.class) public class CallNotificationController extends BaseController { diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/presentation/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index 3ce27ac39..62f09b3af 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/ChatController.kt @@ -35,8 +35,17 @@ import android.text.InputFilter import android.text.TextUtils import android.text.TextWatcher import android.util.Log -import android.view.* -import android.widget.* +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup +import android.widget.AbsListView +import android.widget.ImageButton +import android.widget.ProgressBar +import android.widget.RelativeLayout +import android.widget.TextView import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory import androidx.emoji.text.EmojiCompat import androidx.emoji.widget.EmojiEditText @@ -54,9 +63,18 @@ import com.facebook.datasource.DataSource import com.facebook.drawee.backends.pipeline.Fresco import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber import com.facebook.imagepipeline.image.CloseableImage +import com.nextcloud.talk.models.json.conversations.Conversation +import com.nextcloud.talk.models.json.conversations.RoomOverall +import com.nextcloud.talk.models.json.conversations.RoomsOverall +import com.nextcloud.talk.models.json.generic.GenericOverall +import com.nextcloud.talk.models.json.mention.Mention import com.nextcloud.talk.R import com.nextcloud.talk.activities.MagicCallActivity -import com.nextcloud.talk.adapters.messages.* +import com.nextcloud.talk.adapters.messages.MagicIncomingTextMessageViewHolder +import com.nextcloud.talk.adapters.messages.MagicOutcomingTextMessageViewHolder +import com.nextcloud.talk.adapters.messages.MagicPreviewMessageViewHolder +import com.nextcloud.talk.adapters.messages.MagicSystemMessageViewHolder +import com.nextcloud.talk.adapters.messages.MagicUnreadNoticeMessageViewHolder import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.callbacks.MentionAutocompleteCallback @@ -67,13 +85,14 @@ import com.nextcloud.talk.events.WebSocketCommunicationEvent import com.nextcloud.talk.models.database.UserEntity import com.nextcloud.talk.models.json.chat.ChatMessage import com.nextcloud.talk.models.json.chat.ChatOverall -import com.nextcloud.data.models.json.conversations.Conversation -import com.nextcloud.data.models.json.conversations.RoomOverall -import com.nextcloud.data.models.json.conversations.RoomsOverall -import com.nextcloud.data.models.json.generic.GenericOverall -import com.nextcloud.data.models.json.mention.Mention import com.nextcloud.talk.presenters.MentionAutocompletePresenter -import com.nextcloud.talk.utils.* +import com.nextcloud.talk.utils.ApiUtils +import com.nextcloud.talk.utils.ConductorRemapping +import com.nextcloud.talk.utils.DateUtils +import com.nextcloud.talk.utils.DisplayUtils +import com.nextcloud.talk.utils.KeyboardUtils +import com.nextcloud.talk.utils.MagicCharPolicy +import com.nextcloud.talk.utils.NotificationUtils import com.nextcloud.talk.utils.bundle.BundleKeys import com.nextcloud.talk.utils.database.user.UserUtils import com.nextcloud.talk.utils.preferences.AppPreferences @@ -102,7 +121,9 @@ import org.greenrobot.eventbus.ThreadMode import org.parceler.Parcels import retrofit2.HttpException import retrofit2.Response -import java.util.* +import java.util.Date +import java.util.HashMap +import java.util.Objects import java.util.concurrent.TimeUnit import javax.inject.Inject @@ -202,7 +223,7 @@ class ChatController(args: Bundle) : BaseController(), MessagesListAdapter if (conversationUser?.userId == "?") { credentials = null } else { - credentials = ApiUtils.getCredentials(conversationUser.username, conversationUser.token) + credentials = ApiUtils.getCredentials(conversationUser?.username, conversationUser?.token) } if (args.containsKey(BundleKeys.KEY_FROM_NOTIFICATION_START_CALL)) { @@ -765,7 +786,6 @@ class ChatController(args: Bundle) : BaseController(), MessagesListAdapter roomToken)) ?.subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) - ?.`as`(AutoDispose.autoDisposable(scopeProvider)) ?.subscribe(object : Observer { override fun onSubscribe(d: Disposable) { } @@ -1238,7 +1258,7 @@ class ChatController(args: Bundle) : BaseController(), MessagesListAdapter val clipboardManager = activity?.getSystemService(Context.CLIPBOARD_SERVICE) as android.content.ClipboardManager val clipData = android.content.ClipData.newPlainText( resources?.getString(R.string.nc_app_name), message.text) - clipboardManager.primaryClip = clipData + clipboardManager.setPrimaryClip(clipData) } } diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/ContactsController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/ContactsController.java index 6544463e3..7dbf976d2 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/ContactsController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/ContactsController.java @@ -38,55 +38,6 @@ import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.widget.ProgressBar; import android.widget.RelativeLayout; - -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; -import com.nextcloud.talk.adapters.items.GenericTextHeaderItem; -import com.nextcloud.talk.adapters.items.ProgressItem; -import com.nextcloud.talk.adapters.items.UserItem; -import com.nextcloud.talk.api.NcApi; -import com.nextcloud.talk.application.NextcloudTalkApplication; -import com.nextcloud.talk.controllers.base.BaseController; -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.data.models.RetrofitBucket; -import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.autocomplete.AutocompleteOverall; -import com.nextcloud.data.models.json.autocomplete.AutocompleteUser; -import com.nextcloud.data.models.json.conversations.Conversation; -import com.nextcloud.data.models.json.conversations.RoomOverall; -import com.nextcloud.data.models.json.participants.Participant; -import com.nextcloud.data.models.json.sharees.Sharee; -import com.nextcloud.data.models.json.sharees.ShareesOverall; -import com.nextcloud.talk.utils.ApiUtils; -import com.nextcloud.talk.utils.ConductorRemapping; -import com.nextcloud.talk.utils.KeyboardUtils; -import com.nextcloud.talk.utils.bundle.BundleKeys; -import com.nextcloud.talk.utils.database.user.UserUtils; -import com.nextcloud.talk.utils.preferences.AppPreferences; -import com.uber.autodispose.AutoDispose; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; -import org.parceler.Parcels; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.inject.Inject; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.SearchView; @@ -101,6 +52,38 @@ import autodagger.AutoInjector; import butterknife.BindView; 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.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; +import com.nextcloud.talk.models.json.participants.Participant; +import com.nextcloud.talk.models.json.sharees.Sharee; +import com.nextcloud.talk.models.json.sharees.ShareesOverall; +import com.nextcloud.talk.R; +import com.nextcloud.talk.activities.MagicCallActivity; +import com.nextcloud.talk.adapters.items.GenericTextHeaderItem; +import com.nextcloud.talk.adapters.items.ProgressItem; +import com.nextcloud.talk.adapters.items.UserItem; +import com.nextcloud.talk.api.NcApi; +import com.nextcloud.talk.application.NextcloudTalkApplication; +import com.nextcloud.talk.controllers.base.BaseController; +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.database.UserEntity; +import com.nextcloud.talk.utils.ApiUtils; +import com.nextcloud.talk.utils.ConductorRemapping; +import com.nextcloud.talk.utils.KeyboardUtils; +import com.nextcloud.talk.utils.bundle.BundleKeys; +import com.nextcloud.talk.utils.database.user.UserUtils; +import com.nextcloud.talk.utils.preferences.AppPreferences; +import com.uber.autodispose.AutoDispose; import eu.davidea.fastscroller.FastScroller; import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.SelectableAdapter; @@ -111,7 +94,19 @@ import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import javax.inject.Inject; import okhttp3.ResponseBody; +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; +import org.parceler.Parcels; @AutoInjector(NextcloudTalkApplication.class) public class ContactsController extends BaseController implements SearchView.OnQueryTextListener, diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt b/presentation/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt index edbaa873e..d06dd559f 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt @@ -48,6 +48,12 @@ import com.bluelinelabs.conductor.RouterTransaction import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler import com.facebook.drawee.backends.pipeline.Fresco import com.facebook.drawee.view.SimpleDraweeView +import com.nextcloud.talk.models.json.conversations.Conversation +import com.nextcloud.talk.models.json.conversations.RoomOverall +import com.nextcloud.talk.models.json.converters.EnumNotificationLevelConverter +import com.nextcloud.talk.models.json.generic.GenericOverall +import com.nextcloud.talk.models.json.participants.Participant +import com.nextcloud.talk.models.json.participants.ParticipantsOverall import com.nextcloud.talk.R import com.nextcloud.talk.adapters.items.UserItem import com.nextcloud.talk.api.NcApi @@ -59,12 +65,6 @@ import com.nextcloud.talk.events.EventStatus import com.nextcloud.talk.jobs.DeleteConversationWorker import com.nextcloud.talk.jobs.LeaveConversationWorker import com.nextcloud.talk.models.database.UserEntity -import com.nextcloud.data.models.json.conversations.Conversation -import com.nextcloud.data.models.json.conversations.RoomOverall -import com.nextcloud.data.models.json.converters.EnumNotificationLevelConverter -import com.nextcloud.data.models.json.generic.GenericOverall -import com.nextcloud.data.models.json.participants.Participant -import com.nextcloud.data.models.json.participants.ParticipantsOverall import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.DateUtils import com.nextcloud.talk.utils.DisplayUtils @@ -73,7 +73,11 @@ import com.nextcloud.talk.utils.preferences.preferencestorage.DatabaseStorageMod import com.nextcloud.talk.utils.ui.MaterialPreferenceCategoryWithRightLink import com.yarolegovich.lovelydialog.LovelySaveStateHandler import com.yarolegovich.lovelydialog.LovelyStandardDialog -import com.yarolegovich.mp.* +import com.yarolegovich.mp.MaterialChoicePreference +import com.yarolegovich.mp.MaterialPreferenceCategory +import com.yarolegovich.mp.MaterialPreferenceScreen +import com.yarolegovich.mp.MaterialStandardPreference +import com.yarolegovich.mp.MaterialSwitchPreference import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager import eu.davidea.flexibleadapter.items.AbstractFlexibleItem @@ -84,10 +88,10 @@ import io.reactivex.schedulers.Schedulers import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode -import java.util.* +import java.util.ArrayList +import java.util.Calendar import javax.inject.Inject - @AutoInjector(NextcloudTalkApplication::class) class ConversationInfoController(args: Bundle) : BaseController(), FlexibleAdapter.OnItemClickListener { diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java index 47963886a..e6887ee91 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java @@ -38,7 +38,6 @@ import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.widget.ProgressBar; import android.widget.RelativeLayout; - import androidx.annotation.NonNull; import androidx.appcompat.widget.SearchView; import androidx.core.graphics.drawable.RoundedBitmapDrawable; @@ -49,7 +48,8 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import androidx.work.Data; import androidx.work.OneTimeWorkRequest; import androidx.work.WorkManager; - +import autodagger.AutoInjector; +import butterknife.BindView; import com.bluelinelabs.conductor.RouterTransaction; import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler; import com.bluelinelabs.conductor.changehandler.TransitionChangeHandlerCompat; @@ -65,6 +65,8 @@ import com.facebook.imagepipeline.image.CloseableImage; import com.facebook.imagepipeline.request.ImageRequest; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.kennyc.bottomsheet.BottomSheet; +import com.nextcloud.talk.models.json.conversations.Conversation; +import com.nextcloud.talk.models.json.participants.Participant; import com.nextcloud.talk.R; import com.nextcloud.talk.activities.MagicCallActivity; import com.nextcloud.talk.adapters.items.CallItem; @@ -80,8 +82,6 @@ import com.nextcloud.talk.events.MoreMenuClickEvent; import com.nextcloud.talk.interfaces.ConversationMenuInterface; import com.nextcloud.talk.jobs.DeleteConversationWorker; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.conversations.Conversation; -import com.nextcloud.data.models.json.participants.Participant; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.ConductorRemapping; import com.nextcloud.talk.utils.DisplayUtils; @@ -93,27 +93,21 @@ import com.nextcloud.talk.utils.preferences.AppPreferences; import com.uber.autodispose.AutoDispose; import com.yarolegovich.lovelydialog.LovelySaveStateHandler; import com.yarolegovich.lovelydialog.LovelyStandardDialog; - -import org.apache.commons.lang3.builder.CompareToBuilder; -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; -import org.parceler.Parcels; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import javax.inject.Inject; - -import autodagger.AutoInjector; -import butterknife.BindView; import eu.davidea.fastscroller.FastScroller; import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import javax.inject.Inject; +import org.apache.commons.lang3.builder.CompareToBuilder; +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; +import org.parceler.Parcels; import retrofit2.HttpException; @AutoInjector(NextcloudTalkApplication.class) @@ -600,13 +594,12 @@ public class ConversationsListController extends BaseController implements Searc conversation = ((CallItem) clickedItem).getModel(); } - Bundle bundle = new Bundle(); bundle.putParcelable(BundleKeys.INSTANCE.getKEY_USER_ENTITY(), currentUser); bundle.putString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN(), conversation.getToken()); bundle.putString(BundleKeys.INSTANCE.getKEY_ROOM_ID(), conversation.getRoomId()); - if (conversation.getHasPassword() && (conversation.getParticipantType().equals(Participant.ParticipantType.GUEST) || + if (conversation.hasPassword && (conversation.getParticipantType().equals(Participant.ParticipantType.GUEST) || conversation.getParticipantType().equals(Participant.ParticipantType.USER_FOLLOWING_LINK))) { bundle.putInt(BundleKeys.INSTANCE.getKEY_OPERATION_CODE(), 99); prepareAndShowBottomSheetWithBundle(bundle, false); diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/LockedController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/LockedController.java index 98220d561..720bb2e71 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/LockedController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/LockedController.java @@ -42,10 +42,9 @@ import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.controllers.base.BaseController; import com.nextcloud.talk.utils.SecurityUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; - -import javax.inject.Inject; import java.util.concurrent.Executor; import java.util.concurrent.Executors; +import javax.inject.Inject; @AutoInjector(NextcloudTalkApplication.class) public class LockedController extends BaseController { diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.java index c728e57b1..4876e27b9 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.java @@ -40,22 +40,21 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import autodagger.AutoInjector; import butterknife.BindView; import com.bluelinelabs.logansquare.LoganSquare; +import com.nextcloud.talk.models.RingtoneSettings; import com.nextcloud.talk.R; import com.nextcloud.talk.adapters.items.NotificationSoundItem; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.controllers.base.BaseController; -import com.nextcloud.data.models.RingtoneSettings; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.preferences.AppPreferences; import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.SelectableAdapter; import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; - -import javax.inject.Inject; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; @AutoInjector(NextcloudTalkApplication.class) public class RingtoneSelectionController extends BaseController implements FlexibleAdapter.OnItemClickListener { diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.java index fcaf2474b..e6cfd8ee5 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.java @@ -35,9 +35,10 @@ import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.widget.ProgressBar; import android.widget.TextView; - import androidx.annotation.NonNull; - +import autodagger.AutoInjector; +import butterknife.BindView; +import butterknife.OnClick; import com.bluelinelabs.conductor.RouterTransaction; import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler; import com.nextcloud.talk.R; @@ -51,16 +52,10 @@ import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder; import com.uber.autodispose.AutoDispose; - -import java.security.cert.CertificateException; - -import javax.inject.Inject; - -import autodagger.AutoInjector; -import butterknife.BindView; -import butterknife.OnClick; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; +import java.security.cert.CertificateException; +import javax.inject.Inject; import studio.carbonylgroup.textfieldboxes.ExtendedEditText; import studio.carbonylgroup.textfieldboxes.TextFieldBoxes; diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/SettingsController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/SettingsController.java index 436270889..5420d6050 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/SettingsController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/SettingsController.java @@ -52,15 +52,19 @@ import com.bluelinelabs.logansquare.LoganSquare; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView; +import com.nextcloud.talk.models.RingtoneSettings; import com.nextcloud.talk.BuildConfig; import com.nextcloud.talk.R; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.controllers.base.BaseController; import com.nextcloud.talk.jobs.AccountRemovalWorker; -import com.nextcloud.data.models.RingtoneSettings; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.talk.utils.*; +import com.nextcloud.talk.utils.ApiUtils; +import com.nextcloud.talk.utils.DisplayUtils; +import com.nextcloud.talk.utils.DoNotDisturbUtils; +import com.nextcloud.talk.utils.LoggingUtils; +import com.nextcloud.talk.utils.SecurityUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; @@ -69,16 +73,24 @@ import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder; import com.uber.autodispose.AutoDispose; import com.yarolegovich.lovelydialog.LovelySaveStateHandler; import com.yarolegovich.lovelydialog.LovelyStandardDialog; -import com.yarolegovich.mp.*; +import com.yarolegovich.mp.MaterialChoicePreference; +import com.yarolegovich.mp.MaterialEditTextPreference; +import com.yarolegovich.mp.MaterialPreferenceCategory; +import com.yarolegovich.mp.MaterialPreferenceScreen; +import com.yarolegovich.mp.MaterialStandardPreference; +import com.yarolegovich.mp.MaterialSwitchPreference; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; -import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener; - -import javax.inject.Inject; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Locale; +import java.util.Objects; +import javax.inject.Inject; +import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener; @AutoInjector(NextcloudTalkApplication.class) public class SettingsController extends BaseController { diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.java index af7781ac0..5cac427b7 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.java @@ -37,28 +37,26 @@ import autodagger.AutoInjector; import butterknife.BindView; import com.bluelinelabs.conductor.RouterTransaction; import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler; +import com.nextcloud.talk.models.ImportAccount; +import com.nextcloud.talk.models.json.participants.Participant; import com.nextcloud.talk.R; import com.nextcloud.talk.adapters.items.AdvancedUserItem; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.controllers.base.BaseController; -import com.nextcloud.data.models.ImportAccount; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.participants.Participant; import com.nextcloud.talk.utils.AccountUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; import com.uber.autodispose.AutoDispose; - import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; - -import javax.inject.Inject; import java.net.CookieManager; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; @AutoInjector(NextcloudTalkApplication.class) public class SwitchAccountController extends BaseController { diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java index 672e9fa22..348447c5b 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java @@ -33,7 +33,14 @@ import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.webkit.*; +import android.webkit.ClientCertRequest; +import android.webkit.CookieSyncManager; +import android.webkit.SslErrorHandler; +import android.webkit.WebResourceRequest; +import android.webkit.WebResourceResponse; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.webkit.WebViewClient; import android.widget.ProgressBar; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; @@ -43,12 +50,12 @@ import autodagger.AutoInjector; import butterknife.BindView; import com.bluelinelabs.conductor.RouterTransaction; import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler; +import com.nextcloud.talk.models.LoginData; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.controllers.base.BaseController; import com.nextcloud.talk.events.CertificateEvent; import com.nextcloud.talk.jobs.PushRegistrationWorker; -import com.nextcloud.data.models.LoginData; import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; @@ -56,16 +63,12 @@ import com.nextcloud.talk.utils.preferences.AppPreferences; import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder; import com.nextcloud.talk.utils.ssl.MagicTrustManager; import com.uber.autodispose.AutoDispose; - import de.cotech.hw.fido.WebViewFidoBridge; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import io.requery.Persistable; import io.requery.reactivex.ReactiveEntityStore; -import org.greenrobot.eventbus.EventBus; - -import javax.inject.Inject; import java.lang.reflect.Field; import java.net.CookieManager; import java.net.URLDecoder; @@ -75,6 +78,8 @@ import java.security.cert.X509Certificate; import java.util.HashMap; import java.util.Locale; import java.util.Map; +import javax.inject.Inject; +import org.greenrobot.eventbus.EventBus; @AutoInjector(NextcloudTalkApplication.class) public class WebViewLoginController extends BaseController { diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/base/BaseController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/base/BaseController.java index 7ccc317e1..2191eb4bd 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/base/BaseController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/base/BaseController.java @@ -20,7 +20,6 @@ package com.nextcloud.talk.controllers.base; import android.content.Context; import android.os.Build; -import android.os.Bundle; import android.util.Log; import android.view.MenuItem; import android.view.View; @@ -42,10 +41,9 @@ import com.nextcloud.talk.controllers.WebViewLoginController; import com.nextcloud.talk.controllers.base.providers.ActionBarProvider; import com.nextcloud.talk.utils.preferences.AppPreferences; import com.uber.autodispose.lifecycle.LifecycleScopeProvider; - -import javax.inject.Inject; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; @AutoInjector(NextcloudTalkApplication.class) public abstract class BaseController extends ButterKnifeController { diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java index c19f77601..e963daf55 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java @@ -49,7 +49,7 @@ import com.nextcloud.talk.events.BottomSheetLockEvent; import com.nextcloud.talk.interfaces.ConversationMenuInterface; import com.nextcloud.talk.jobs.LeaveConversationWorker; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.conversations.Conversation; +import com.nextcloud.talk.models.json.conversations.Conversation; import com.nextcloud.talk.utils.DisplayUtils; import com.nextcloud.talk.utils.ShareUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; @@ -57,265 +57,291 @@ import com.nextcloud.talk.utils.database.user.UserUtils; import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; +import java.util.ArrayList; +import java.util.List; +import javax.inject.Inject; import org.greenrobot.eventbus.EventBus; import org.parceler.Parcel; import org.parceler.Parcels; -import javax.inject.Inject; -import java.util.ArrayList; -import java.util.List; - @AutoInjector(NextcloudTalkApplication.class) -public class CallMenuController extends BaseController implements FlexibleAdapter.OnItemClickListener { - @BindView(R.id.recycler_view) - RecyclerView recyclerView; +public class CallMenuController extends BaseController + implements FlexibleAdapter.OnItemClickListener { + @BindView(R.id.recycler_view) + RecyclerView recyclerView; - @Inject - EventBus eventBus; + @Inject + EventBus eventBus; - @Inject - UserUtils userUtils; + @Inject + UserUtils userUtils; - private Conversation conversation; - private List menuItems; - private FlexibleAdapter adapter; - private MenuType menuType; - private Intent shareIntent; + private Conversation conversation; + private List menuItems; + private FlexibleAdapter adapter; + private MenuType menuType; + private Intent shareIntent; - private UserEntity currentUser; - private ConversationMenuInterface conversationMenuInterface; + private UserEntity currentUser; + private ConversationMenuInterface conversationMenuInterface; - public CallMenuController(Bundle args) { - super(); - this.conversation = Parcels.unwrap(args.getParcelable(BundleKeys.INSTANCE.getKEY_ROOM())); - if (args.containsKey(BundleKeys.INSTANCE.getKEY_MENU_TYPE())) { - this.menuType = Parcels.unwrap(args.getParcelable(BundleKeys.INSTANCE.getKEY_MENU_TYPE())); - } + public CallMenuController(Bundle args) { + super(); + this.conversation = Parcels.unwrap(args.getParcelable(BundleKeys.INSTANCE.getKEY_ROOM())); + if (args.containsKey(BundleKeys.INSTANCE.getKEY_MENU_TYPE())) { + this.menuType = Parcels.unwrap(args.getParcelable(BundleKeys.INSTANCE.getKEY_MENU_TYPE())); + } + } + + public CallMenuController(Bundle args, + @Nullable ConversationMenuInterface conversationMenuInterface) { + super(); + this.conversation = Parcels.unwrap(args.getParcelable(BundleKeys.INSTANCE.getKEY_ROOM())); + if (args.containsKey(BundleKeys.INSTANCE.getKEY_MENU_TYPE())) { + this.menuType = Parcels.unwrap(args.getParcelable(BundleKeys.INSTANCE.getKEY_MENU_TYPE())); + } + this.conversationMenuInterface = conversationMenuInterface; + } + + @Override + protected View inflateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup container) { + return inflater.inflate(R.layout.controller_call_menu, container, false); + } + + @Override + protected void onViewBound(@NonNull View view) { + super.onViewBound(view); + NextcloudTalkApplication.Companion.getSharedApplication() + .getComponentApplication() + .inject(this); + prepareViews(); + } + + private void prepareViews() { + LinearLayoutManager layoutManager = new SmoothScrollLinearLayoutManager(getActivity()); + recyclerView.setLayoutManager(layoutManager); + recyclerView.setHasFixedSize(true); + + prepareMenu(); + if (adapter == null) { + adapter = new FlexibleAdapter<>(menuItems, getActivity(), false); } - public CallMenuController(Bundle args, @Nullable ConversationMenuInterface conversationMenuInterface) { - super(); - this.conversation = Parcels.unwrap(args.getParcelable(BundleKeys.INSTANCE.getKEY_ROOM())); - if (args.containsKey(BundleKeys.INSTANCE.getKEY_MENU_TYPE())) { - this.menuType = Parcels.unwrap(args.getParcelable(BundleKeys.INSTANCE.getKEY_MENU_TYPE())); - } - this.conversationMenuInterface = conversationMenuInterface; - } + adapter.addListener(this); + recyclerView.setAdapter(adapter); + } - @Override - protected View inflateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup container) { - return inflater.inflate(R.layout.controller_call_menu, container, false); - } + private void prepareIntent() { + shareIntent = new Intent(Intent.ACTION_SEND); + shareIntent.setType("text/plain"); + shareIntent.putExtra(Intent.EXTRA_SUBJECT, + String.format(getResources().getString(R.string.nc_share_subject), + getResources().getString(R.string.nc_app_name))); + } - @Override - protected void onViewBound(@NonNull View view) { - super.onViewBound(view); - NextcloudTalkApplication.Companion.getSharedApplication().getComponentApplication().inject(this); - prepareViews(); - } + private void prepareMenu() { + menuItems = new ArrayList<>(); - private void prepareViews() { - LinearLayoutManager layoutManager = new SmoothScrollLinearLayoutManager(getActivity()); - recyclerView.setLayoutManager(layoutManager); - recyclerView.setHasFixedSize(true); + if (menuType.equals(MenuType.REGULAR)) { + if (!TextUtils.isEmpty(conversation.getDisplayName())) { + menuItems.add(new MenuItem(conversation.getDisplayName(), 0, null)); + } else if (!TextUtils.isEmpty(conversation.getName())) { + menuItems.add(new MenuItem(conversation.getName(), 0, null)); + } else { + menuItems.add(new MenuItem(getResources().getString(R.string.nc_configure_room), 0, null)); + } - prepareMenu(); - if (adapter == null) { - adapter = new FlexibleAdapter<>(menuItems, getActivity(), false); - } + currentUser = userUtils.getCurrentUser(); - adapter.addListener(this); - recyclerView.setAdapter(adapter); - } + if (conversation.isFavorite()) { + menuItems.add(new MenuItem(getResources().getString(R.string.nc_remove_from_favorites), 97, + DisplayUtils.getTintedDrawable(getResources(), R.drawable.ic_star_border_black_24dp, + R.color.grey_600))); + } else if (currentUser.hasSpreedFeatureCapability("favorites")) { + menuItems.add(new MenuItem(getResources().getString(R.string.nc_add_to_favorites) + , 98, DisplayUtils.getTintedDrawable(getResources(), R.drawable.ic_star_black_24dp, + R.color.grey_600))); + } - private void prepareIntent() { - shareIntent = new Intent(Intent.ACTION_SEND); - shareIntent.setType("text/plain"); - shareIntent.putExtra(Intent.EXTRA_SUBJECT, String.format(getResources().getString(R.string.nc_share_subject), - getResources().getString(R.string.nc_app_name))); - } + if (conversation.isNameEditable(currentUser)) { + menuItems.add(new MenuItem(getResources().getString(R.string.nc_rename), 2, + getResources().getDrawable(R.drawable + .ic_pencil_grey600_24dp))); + } - private void prepareMenu() { - menuItems = new ArrayList<>(); - - if (menuType.equals(MenuType.REGULAR)) { - if (!TextUtils.isEmpty(conversation.getDisplayName())) { - menuItems.add(new MenuItem(conversation.getDisplayName(), 0, null)); - } else if (!TextUtils.isEmpty(conversation.getName())) { - menuItems.add(new MenuItem(conversation.getName(), 0, null)); - } else { - menuItems.add(new MenuItem(getResources().getString(R.string.nc_configure_room), 0, null)); - } - - currentUser = userUtils.getCurrentUser(); - - if (conversation.isFavorite()) { - menuItems.add(new MenuItem(getResources().getString(R.string.nc_remove_from_favorites), 97, DisplayUtils.getTintedDrawable(getResources(), R.drawable.ic_star_border_black_24dp, R.color.grey_600))); - } else if (currentUser.hasSpreedFeatureCapability("favorites")) { - menuItems.add(new MenuItem(getResources().getString(R.string.nc_add_to_favorites) - , 98, DisplayUtils.getTintedDrawable(getResources(), R.drawable.ic_star_black_24dp, R.color.grey_600))); - } - - if (conversation.isNameEditable(currentUser)) { - menuItems.add(new MenuItem(getResources().getString(R.string.nc_rename), 2, getResources().getDrawable(R.drawable - .ic_pencil_grey600_24dp))); - } - - if (conversation.canModerate(currentUser)) { - if (!conversation.isPublic()) { - menuItems.add(new MenuItem(getResources().getString(R.string.nc_make_call_public), 3, getResources().getDrawable(R.drawable - .ic_link_grey600_24px))); - } else { - if (conversation.isHasPassword()) { - menuItems.add(new MenuItem(getResources().getString(R.string.nc_change_password), 4, getResources().getDrawable(R.drawable - .ic_lock_grey600_24px))); - menuItems.add(new MenuItem(getResources().getString(R.string.nc_clear_password), 5, getResources().getDrawable(R.drawable - .ic_lock_open_grey600_24dp))); - } else { - menuItems.add(new MenuItem(getResources().getString(R.string.nc_set_password), 6, getResources().getDrawable(R.drawable - .ic_lock_plus_grey600_24dp))); - } - } - - menuItems.add(new MenuItem(getResources().getString(R.string.nc_delete_call), 9, getResources().getDrawable(R.drawable - .ic_delete_grey600_24dp))); - } - - if (conversation.isPublic()) { - menuItems.add(new MenuItem(getResources().getString(R.string.nc_share_link), 7, getResources().getDrawable(R.drawable - .ic_link_grey600_24px))); - if (conversation.canModerate(currentUser)) { - menuItems.add(new MenuItem(getResources().getString(R.string.nc_make_call_private), 8, getResources().getDrawable(R.drawable - .ic_group_grey600_24px))); - } - } - - - if (conversation.canLeave(currentUser)) { - menuItems.add(new MenuItem(getResources().getString(R.string.nc_leave), 1, - DisplayUtils.getTintedDrawable(getResources(), - R.drawable.ic_exit_to_app_black_24dp, R.color.grey_600) - )); - } - } else if (menuType.equals(MenuType.SHARE)) { - prepareIntent(); - List appInfoList = ShareUtils.getShareApps(getActivity(), shareIntent, null, - null); - menuItems.add(new AppItem(getResources().getString(R.string.nc_share_link_via), "", "", - getResources().getDrawable(R.drawable.ic_link_grey600_24px))); - if (appInfoList != null) { - for (AppAdapter.AppInfo appInfo : appInfoList) { - menuItems.add(new AppItem(appInfo.title, appInfo.packageName, appInfo.name, appInfo.drawable)); - } - } + if (conversation.canModerate(currentUser)) { + if (!conversation.isPublic()) { + menuItems.add(new MenuItem(getResources().getString(R.string.nc_make_call_public), 3, + getResources().getDrawable(R.drawable + .ic_link_grey600_24px))); } else { - menuItems.add(new MenuItem(getResources().getString(R.string.nc_start_conversation), 0, null)); - menuItems.add(new MenuItem(getResources().getString(R.string.nc_new_conversation), 1, getResources().getDrawable(R.drawable.ic_add_grey600_24px))); - menuItems.add(new MenuItem(getResources().getString(R.string.nc_join_via_link), 2, getResources().getDrawable(R.drawable.ic_link_grey600_24px))); + if (conversation.isHasPassword()) { + menuItems.add(new MenuItem(getResources().getString(R.string.nc_change_password), 4, + getResources().getDrawable(R.drawable + .ic_lock_grey600_24px))); + menuItems.add(new MenuItem(getResources().getString(R.string.nc_clear_password), 5, + getResources().getDrawable(R.drawable + .ic_lock_open_grey600_24dp))); + } else { + menuItems.add(new MenuItem(getResources().getString(R.string.nc_set_password), 6, + getResources().getDrawable(R.drawable + .ic_lock_plus_grey600_24dp))); + } } + + menuItems.add(new MenuItem(getResources().getString(R.string.nc_delete_call), 9, + getResources().getDrawable(R.drawable + .ic_delete_grey600_24dp))); + } + + if (conversation.isPublic()) { + menuItems.add(new MenuItem(getResources().getString(R.string.nc_share_link), 7, + getResources().getDrawable(R.drawable + .ic_link_grey600_24px))); + if (conversation.canModerate(currentUser)) { + menuItems.add(new MenuItem(getResources().getString(R.string.nc_make_call_private), 8, + getResources().getDrawable(R.drawable + .ic_group_grey600_24px))); + } + } + + if (conversation.canLeave(currentUser)) { + menuItems.add(new MenuItem(getResources().getString(R.string.nc_leave), 1, + DisplayUtils.getTintedDrawable(getResources(), + R.drawable.ic_exit_to_app_black_24dp, R.color.grey_600) + )); + } + } else if (menuType.equals(MenuType.SHARE)) { + prepareIntent(); + List appInfoList = + ShareUtils.getShareApps(getActivity(), shareIntent, null, + null); + menuItems.add(new AppItem(getResources().getString(R.string.nc_share_link_via), "", "", + getResources().getDrawable(R.drawable.ic_link_grey600_24px))); + if (appInfoList != null) { + for (AppAdapter.AppInfo appInfo : appInfoList) { + menuItems.add( + new AppItem(appInfo.title, appInfo.packageName, appInfo.name, appInfo.drawable)); + } + } + } else { + menuItems.add( + new MenuItem(getResources().getString(R.string.nc_start_conversation), 0, null)); + menuItems.add(new MenuItem(getResources().getString(R.string.nc_new_conversation), 1, + getResources().getDrawable(R.drawable.ic_add_grey600_24px))); + menuItems.add(new MenuItem(getResources().getString(R.string.nc_join_via_link), 2, + getResources().getDrawable(R.drawable.ic_link_grey600_24px))); } + } - @Override - public boolean onItemClick(View view, int position) { - Bundle bundle = new Bundle(); - bundle.putParcelable(BundleKeys.INSTANCE.getKEY_ROOM(), Parcels.wrap(conversation)); + @Override + public boolean onItemClick(View view, int position) { + Bundle bundle = new Bundle(); + bundle.putParcelable(BundleKeys.INSTANCE.getKEY_ROOM(), Parcels.wrap(conversation)); - if (menuType.equals(MenuType.REGULAR)) { - MenuItem menuItem = (MenuItem) adapter.getItem(position); - if (menuItem != null) { + if (menuType.equals(MenuType.REGULAR)) { + MenuItem menuItem = (MenuItem) adapter.getItem(position); + if (menuItem != null) { - int tag = menuItem.getTag(); - if (tag == 5) { - conversation.setPassword(""); - } + int tag = menuItem.getTag(); + if (tag == 5) { + conversation.setPassword(""); + } - if (tag > 0) { - if (tag == 1 || tag == 9) { - if (tag == 1) { - Data data; - if ((data = getWorkerData()) != null) { - OneTimeWorkRequest leaveConversationWorker = - new OneTimeWorkRequest.Builder(LeaveConversationWorker.class).setInputData(data).build(); - WorkManager.getInstance().enqueue(leaveConversationWorker); - } - } else { - Bundle deleteConversationBundle; - if ((deleteConversationBundle = getDeleteConversationBundle()) != null) { - conversationMenuInterface.openLovelyDialogWithIdAndBundle(ConversationsListController.ID_DELETE_CONVERSATION_DIALOG, deleteConversationBundle); - } - } - eventBus.post(new BottomSheetLockEvent(true, 0, false, true)); - } else { - bundle.putInt(BundleKeys.INSTANCE.getKEY_OPERATION_CODE(), tag); - if (tag != 2 && tag != 4 && tag != 6 && tag != 7) { - eventBus.post(new BottomSheetLockEvent(false, 0, false, false)); - getRouter().pushController(RouterTransaction.with(new OperationsMenuController(bundle)) - .pushChangeHandler(new HorizontalChangeHandler()) - .popChangeHandler(new HorizontalChangeHandler())); - } else if (tag != 7) { - getRouter().pushController(RouterTransaction.with(new EntryMenuController(bundle)) - .pushChangeHandler(new HorizontalChangeHandler()) - .popChangeHandler(new HorizontalChangeHandler())); - } else { - bundle.putParcelable(BundleKeys.INSTANCE.getKEY_MENU_TYPE(), Parcels.wrap(MenuType.SHARE)); - getRouter().pushController(RouterTransaction.with(new CallMenuController(bundle, null)) - .pushChangeHandler(new HorizontalChangeHandler()) - .popChangeHandler(new HorizontalChangeHandler())); - } - } - } + if (tag > 0) { + if (tag == 1 || tag == 9) { + if (tag == 1) { + Data data; + if ((data = getWorkerData()) != null) { + OneTimeWorkRequest leaveConversationWorker = + new OneTimeWorkRequest.Builder(LeaveConversationWorker.class).setInputData(data) + .build(); + WorkManager.getInstance().enqueue(leaveConversationWorker); + } + } else { + Bundle deleteConversationBundle; + if ((deleteConversationBundle = getDeleteConversationBundle()) != null) { + conversationMenuInterface.openLovelyDialogWithIdAndBundle( + ConversationsListController.ID_DELETE_CONVERSATION_DIALOG, + deleteConversationBundle); + } } - } else if (menuType.equals(MenuType.SHARE) && position != 0) { - AppItem appItem = (AppItem) adapter.getItem(position); - if (appItem != null && getActivity() != null) { - if (!conversation.getHasPassword()) { - shareIntent.putExtra(Intent.EXTRA_TEXT, ShareUtils.getStringForIntent(getActivity(), null, - userUtils, conversation)); - Intent intent = new Intent(shareIntent); - intent.setComponent(new ComponentName(appItem.getPackageName(), appItem.getName())); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - eventBus.post(new BottomSheetLockEvent(true, 0, false, true)); - getActivity().startActivity(intent); - } else { - bundle.putInt(BundleKeys.INSTANCE.getKEY_OPERATION_CODE(), 7); - bundle.putParcelable(BundleKeys.INSTANCE.getKEY_SHARE_INTENT(), Parcels.wrap(shareIntent)); - bundle.putString(BundleKeys.INSTANCE.getKEY_APP_ITEM_PACKAGE_NAME(), appItem.getPackageName()); - bundle.putString(BundleKeys.INSTANCE.getKEY_APP_ITEM_NAME(), appItem.getName()); - getRouter().pushController(RouterTransaction.with(new EntryMenuController(bundle)) - .pushChangeHandler(new HorizontalChangeHandler()) - .popChangeHandler(new HorizontalChangeHandler())); - } + eventBus.post(new BottomSheetLockEvent(true, 0, false, true)); + } else { + bundle.putInt(BundleKeys.INSTANCE.getKEY_OPERATION_CODE(), tag); + if (tag != 2 && tag != 4 && tag != 6 && tag != 7) { + eventBus.post(new BottomSheetLockEvent(false, 0, false, false)); + getRouter().pushController( + RouterTransaction.with(new OperationsMenuController(bundle)) + .pushChangeHandler(new HorizontalChangeHandler()) + .popChangeHandler(new HorizontalChangeHandler())); + } else if (tag != 7) { + getRouter().pushController(RouterTransaction.with(new EntryMenuController(bundle)) + .pushChangeHandler(new HorizontalChangeHandler()) + .popChangeHandler(new HorizontalChangeHandler())); + } else { + bundle.putParcelable(BundleKeys.INSTANCE.getKEY_MENU_TYPE(), + Parcels.wrap(MenuType.SHARE)); + getRouter().pushController( + RouterTransaction.with(new CallMenuController(bundle, null)) + .pushChangeHandler(new HorizontalChangeHandler()) + .popChangeHandler(new HorizontalChangeHandler())); } + } } - - return true; - } - - private Data getWorkerData() { - if (!TextUtils.isEmpty(conversation.getToken())) { - Data.Builder data = new Data.Builder(); - data.putString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN(), conversation.getToken()); - data.putLong(BundleKeys.INSTANCE.getKEY_INTERNAL_USER_ID(), currentUser.getId()); - return data.build(); + } + } else if (menuType.equals(MenuType.SHARE) && position != 0) { + AppItem appItem = (AppItem) adapter.getItem(position); + if (appItem != null && getActivity() != null) { + if (!conversation.hasPassword) { + shareIntent.putExtra(Intent.EXTRA_TEXT, ShareUtils.getStringForIntent(getActivity(), null, + userUtils, conversation)); + Intent intent = new Intent(shareIntent); + intent.setComponent(new ComponentName(appItem.getPackageName(), appItem.getName())); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + eventBus.post(new BottomSheetLockEvent(true, 0, false, true)); + getActivity().startActivity(intent); + } else { + bundle.putInt(BundleKeys.INSTANCE.getKEY_OPERATION_CODE(), 7); + bundle.putParcelable(BundleKeys.INSTANCE.getKEY_SHARE_INTENT(), + Parcels.wrap(shareIntent)); + bundle.putString(BundleKeys.INSTANCE.getKEY_APP_ITEM_PACKAGE_NAME(), + appItem.getPackageName()); + bundle.putString(BundleKeys.INSTANCE.getKEY_APP_ITEM_NAME(), appItem.getName()); + getRouter().pushController(RouterTransaction.with(new EntryMenuController(bundle)) + .pushChangeHandler(new HorizontalChangeHandler()) + .popChangeHandler(new HorizontalChangeHandler())); } - - return null; + } } - private Bundle getDeleteConversationBundle() { - if (!TextUtils.isEmpty(conversation.getToken())) { - Bundle bundle = new Bundle(); - bundle.putLong(BundleKeys.INSTANCE.getKEY_INTERNAL_USER_ID(), currentUser.getId()); - bundle.putParcelable(BundleKeys.INSTANCE.getKEY_ROOM(), Parcels.wrap(conversation)); - return bundle; - } - - return null; + return true; + } + private Data getWorkerData() { + if (!TextUtils.isEmpty(conversation.getToken())) { + Data.Builder data = new Data.Builder(); + data.putString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN(), conversation.getToken()); + data.putLong(BundleKeys.INSTANCE.getKEY_INTERNAL_USER_ID(), currentUser.getId()); + return data.build(); } - @Parcel - public enum MenuType { - REGULAR, SHARE + return null; + } + + private Bundle getDeleteConversationBundle() { + if (!TextUtils.isEmpty(conversation.getToken())) { + Bundle bundle = new Bundle(); + bundle.putLong(BundleKeys.INSTANCE.getKEY_INTERNAL_USER_ID(), currentUser.getId()); + bundle.putParcelable(BundleKeys.INSTANCE.getKEY_ROOM(), Parcels.wrap(conversation)); + return bundle; } + + return null; + } + + @Parcel + public enum MenuType { + REGULAR, SHARE + } } diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.java index 20960591a..13d8fc9fa 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.java @@ -34,7 +34,6 @@ import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.widget.Button; import android.widget.ImageView; - import androidx.annotation.NonNull; import autodagger.AutoInjector; import butterknife.BindView; @@ -46,7 +45,7 @@ import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.controllers.base.BaseController; import com.nextcloud.talk.events.BottomSheetLockEvent; -import com.nextcloud.data.models.json.conversations.Conversation; +import com.nextcloud.talk.models.json.conversations.Conversation; import com.nextcloud.talk.utils.EmojiTextInputEditText; import com.nextcloud.talk.utils.ShareUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; @@ -58,12 +57,10 @@ import com.vanniktech.emoji.emoji.Emoji; import com.vanniktech.emoji.listeners.OnEmojiClickListener; import com.vanniktech.emoji.listeners.OnEmojiPopupDismissListener; import com.vanniktech.emoji.listeners.OnEmojiPopupShownListener; - +import javax.inject.Inject; import org.greenrobot.eventbus.EventBus; import org.parceler.Parcels; -import javax.inject.Inject; - @AutoInjector(NextcloudTalkApplication.class) public class EntryMenuController extends BaseController { diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java b/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java index 47696affe..00f5ec6b3 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java @@ -35,48 +35,42 @@ import android.widget.Button; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; - +import autodagger.AutoInjector; +import butterknife.BindView; import com.bluelinelabs.conductor.RouterTransaction; import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler; import com.bluelinelabs.logansquare.LoganSquare; +import com.nextcloud.talk.models.RetrofitBucket; +import com.nextcloud.talk.models.json.capabilities.Capabilities; +import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall; +import com.nextcloud.talk.models.json.conversations.Conversation; +import com.nextcloud.talk.models.json.conversations.RoomOverall; +import com.nextcloud.talk.models.json.generic.GenericOverall; +import com.nextcloud.talk.models.json.participants.AddParticipantOverall; import com.nextcloud.talk.R; import com.nextcloud.talk.activities.MagicCallActivity; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.controllers.base.BaseController; import com.nextcloud.talk.events.BottomSheetLockEvent; -import com.nextcloud.data.models.RetrofitBucket; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.capabilities.Capabilities; -import com.nextcloud.data.models.json.capabilities.CapabilitiesOverall; -import com.nextcloud.data.models.json.conversations.Conversation; -import com.nextcloud.data.models.json.conversations.RoomOverall; -import com.nextcloud.data.models.json.generic.GenericOverall; -import com.nextcloud.data.models.json.participants.AddParticipantOverall; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.ConductorRemapping; import com.nextcloud.talk.utils.DisplayUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder; - -import org.greenrobot.eventbus.EventBus; -import org.parceler.Parcels; - -import java.io.IOException; -import java.util.ArrayList; - -import javax.inject.Inject; - -import autodagger.AutoInjector; -import butterknife.BindView; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import java.io.IOException; +import java.util.ArrayList; +import javax.inject.Inject; +import org.greenrobot.eventbus.EventBus; +import org.parceler.Parcels; import retrofit2.HttpException; @AutoInjector(NextcloudTalkApplication.class) diff --git a/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/items/ListIconDialogAdapter.kt b/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/items/ListIconDialogAdapter.kt index 43c66fd1a..40aa475f3 100644 --- a/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/items/ListIconDialogAdapter.kt +++ b/presentation/src/main/java/com/nextcloud/talk/controllers/bottomsheet/items/ListIconDialogAdapter.kt @@ -23,7 +23,6 @@ package com.nextcloud.talk.controllers.bottomsheet.items import android.view.View import android.view.ViewGroup import android.widget.ImageView -import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.WhichButton @@ -34,7 +33,6 @@ import com.afollestad.materialdialogs.internal.rtl.RtlTextView import com.afollestad.materialdialogs.list.getItemSelector import com.afollestad.materialdialogs.utils.MDUtil.inflate import com.afollestad.materialdialogs.utils.MDUtil.maybeSetTextColor -import com.google.android.material.textview.MaterialTextView import com.nextcloud.talk.R private const val KEY_ACTIVATED_INDEX = "activated_index" diff --git a/presentation/src/main/java/com/nextcloud/talk/dagger/modules/BusModule.java b/presentation/src/main/java/com/nextcloud/talk/dagger/modules/BusModule.java index a8817229a..4feb5d1db 100644 --- a/presentation/src/main/java/com/nextcloud/talk/dagger/modules/BusModule.java +++ b/presentation/src/main/java/com/nextcloud/talk/dagger/modules/BusModule.java @@ -22,9 +22,8 @@ package com.nextcloud.talk.dagger.modules; import dagger.Module; import dagger.Provides; -import org.greenrobot.eventbus.EventBus; - import javax.inject.Singleton; +import org.greenrobot.eventbus.EventBus; @Module public class BusModule { diff --git a/presentation/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java b/presentation/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java index 3ff5643a5..8c38f082d 100644 --- a/presentation/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java +++ b/presentation/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java @@ -33,9 +33,8 @@ import io.requery.reactivex.ReactiveEntityStore; import io.requery.reactivex.ReactiveSupport; import io.requery.sql.Configuration; import io.requery.sql.EntityDataStore; -import net.orange_box.storebox.StoreBox; - import javax.inject.Singleton; +import net.orange_box.storebox.StoreBox; @Module public class DatabaseModule { diff --git a/presentation/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java b/presentation/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java index de2a058db..42e514621 100644 --- a/presentation/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java +++ b/presentation/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java @@ -41,15 +41,6 @@ import com.nextcloud.talk.utils.ssl.SSLSocketFactoryCompat; import dagger.Module; import dagger.Provides; import io.reactivex.schedulers.Schedulers; -import okhttp3.*; -import okhttp3.internal.tls.OkHostnameVerifier; -import okhttp3.logging.HttpLoggingInterceptor; -import retrofit2.Retrofit; -import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; - -import javax.inject.Singleton; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.X509KeyManager; import java.io.IOException; import java.net.CookieManager; import java.net.InetSocketAddress; @@ -60,6 +51,23 @@ import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; import java.util.concurrent.TimeUnit; +import javax.inject.Singleton; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.X509KeyManager; +import okhttp3.Authenticator; +import okhttp3.Cache; +import okhttp3.Credentials; +import okhttp3.Dispatcher; +import okhttp3.Interceptor; +import okhttp3.JavaNetCookieJar; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.Route; +import okhttp3.internal.tls.OkHostnameVerifier; +import okhttp3.logging.HttpLoggingInterceptor; +import retrofit2.Retrofit; +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; @Module(includes = DatabaseModule.class) public class RestModule { diff --git a/presentation/src/main/java/com/nextcloud/talk/events/CertificateEvent.java b/presentation/src/main/java/com/nextcloud/talk/events/CertificateEvent.java index f23f63c55..c7af5c84d 100644 --- a/presentation/src/main/java/com/nextcloud/talk/events/CertificateEvent.java +++ b/presentation/src/main/java/com/nextcloud/talk/events/CertificateEvent.java @@ -23,7 +23,6 @@ package com.nextcloud.talk.events; import android.webkit.SslErrorHandler; import androidx.annotation.Nullable; import com.nextcloud.talk.utils.ssl.MagicTrustManager; - import java.security.cert.X509Certificate; public class CertificateEvent { diff --git a/presentation/src/main/java/com/nextcloud/talk/events/MoreMenuClickEvent.java b/presentation/src/main/java/com/nextcloud/talk/events/MoreMenuClickEvent.java index f35fac1f9..bca88d9e4 100644 --- a/presentation/src/main/java/com/nextcloud/talk/events/MoreMenuClickEvent.java +++ b/presentation/src/main/java/com/nextcloud/talk/events/MoreMenuClickEvent.java @@ -20,7 +20,7 @@ package com.nextcloud.talk.events; -import com.nextcloud.data.models.json.conversations.Conversation; +import com.nextcloud.talk.models.json.conversations.Conversation; import lombok.Data; @Data diff --git a/presentation/src/main/java/com/nextcloud/talk/events/SessionDescriptionSendEvent.java b/presentation/src/main/java/com/nextcloud/talk/events/SessionDescriptionSendEvent.java index 2669f244f..4fd81563f 100644 --- a/presentation/src/main/java/com/nextcloud/talk/events/SessionDescriptionSendEvent.java +++ b/presentation/src/main/java/com/nextcloud/talk/events/SessionDescriptionSendEvent.java @@ -21,7 +21,7 @@ package com.nextcloud.talk.events; import androidx.annotation.Nullable; -import com.nextcloud.data.models.json.signaling.NCIceCandidate; +import com.nextcloud.talk.models.json.signaling.NCIceCandidate; import lombok.Data; import org.webrtc.SessionDescription; diff --git a/presentation/src/main/java/com/nextcloud/talk/events/WebSocketCommunicationEvent.java b/presentation/src/main/java/com/nextcloud/talk/events/WebSocketCommunicationEvent.java index c801af4b2..d6a36a8a7 100644 --- a/presentation/src/main/java/com/nextcloud/talk/events/WebSocketCommunicationEvent.java +++ b/presentation/src/main/java/com/nextcloud/talk/events/WebSocketCommunicationEvent.java @@ -21,9 +21,8 @@ package com.nextcloud.talk.events; import androidx.annotation.Nullable; -import lombok.Data; - import java.util.HashMap; +import lombok.Data; @Data public class WebSocketCommunicationEvent { diff --git a/presentation/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java b/presentation/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java index 5472faf13..1cb795a4a 100644 --- a/presentation/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java +++ b/presentation/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java @@ -20,7 +20,6 @@ package com.nextcloud.talk.jobs; - import android.app.NotificationManager; import android.content.Context; import android.os.Build; @@ -31,12 +30,12 @@ import androidx.work.Worker; import androidx.work.WorkerParameters; import autodagger.AutoInjector; import com.bluelinelabs.logansquare.LoganSquare; +import com.nextcloud.talk.models.json.generic.GenericOverall; +import com.nextcloud.talk.models.json.push.PushConfigurationState; import com.nextcloud.talk.R; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.generic.GenericOverall; -import com.nextcloud.data.models.json.push.PushConfigurationState; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.database.arbitrarystorage.ArbitraryStorageUtils; import com.nextcloud.talk.utils.database.user.UserUtils; @@ -44,15 +43,14 @@ import com.nextcloud.talk.webrtc.WebSocketConnectionHelper; import io.reactivex.CompletableObserver; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; -import okhttp3.JavaNetCookieJar; -import okhttp3.OkHttpClient; -import retrofit2.Retrofit; - -import javax.inject.Inject; import java.io.IOException; import java.net.CookieManager; import java.util.HashMap; import java.util.zip.CRC32; +import javax.inject.Inject; +import okhttp3.JavaNetCookieJar; +import okhttp3.OkHttpClient; +import retrofit2.Retrofit; @AutoInjector(NextcloudTalkApplication.class) public class AccountRemovalWorker extends Worker { diff --git a/presentation/src/main/java/com/nextcloud/talk/jobs/AddParticipantsToConversation.java b/presentation/src/main/java/com/nextcloud/talk/jobs/AddParticipantsToConversation.java index 7242d6492..ff1f538b2 100644 --- a/presentation/src/main/java/com/nextcloud/talk/jobs/AddParticipantsToConversation.java +++ b/presentation/src/main/java/com/nextcloud/talk/jobs/AddParticipantsToConversation.java @@ -21,26 +21,22 @@ package com.nextcloud.talk.jobs; import android.content.Context; - -import com.nextcloud.talk.api.NcApi; -import com.nextcloud.talk.application.NextcloudTalkApplication; -import com.nextcloud.talk.events.EventStatus; -import com.nextcloud.data.models.RetrofitBucket; -import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.talk.utils.ApiUtils; -import com.nextcloud.talk.utils.bundle.BundleKeys; -import com.nextcloud.talk.utils.database.user.UserUtils; - -import org.greenrobot.eventbus.EventBus; - -import javax.inject.Inject; - import androidx.annotation.NonNull; import androidx.work.Data; import androidx.work.Worker; import androidx.work.WorkerParameters; import autodagger.AutoInjector; +import com.nextcloud.talk.models.RetrofitBucket; +import com.nextcloud.talk.api.NcApi; +import com.nextcloud.talk.application.NextcloudTalkApplication; +import com.nextcloud.talk.events.EventStatus; +import com.nextcloud.talk.models.database.UserEntity; +import com.nextcloud.talk.utils.ApiUtils; +import com.nextcloud.talk.utils.bundle.BundleKeys; +import com.nextcloud.talk.utils.database.user.UserUtils; import io.reactivex.schedulers.Schedulers; +import javax.inject.Inject; +import org.greenrobot.eventbus.EventBus; @AutoInjector(NextcloudTalkApplication.class) public class AddParticipantsToConversation extends Worker { diff --git a/presentation/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java b/presentation/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java index 2278eeb37..8ce0e32fa 100644 --- a/presentation/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java +++ b/presentation/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java @@ -28,26 +28,25 @@ import androidx.work.Worker; import androidx.work.WorkerParameters; import autodagger.AutoInjector; import com.bluelinelabs.logansquare.LoganSquare; +import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.events.EventStatus; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.capabilities.CapabilitiesOverall; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; -import okhttp3.JavaNetCookieJar; -import okhttp3.OkHttpClient; -import org.greenrobot.eventbus.EventBus; -import retrofit2.Retrofit; - -import javax.inject.Inject; import java.io.IOException; import java.net.CookieManager; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; +import okhttp3.JavaNetCookieJar; +import okhttp3.OkHttpClient; +import org.greenrobot.eventbus.EventBus; +import retrofit2.Retrofit; @AutoInjector(NextcloudTalkApplication.class) public class CapabilitiesWorker extends Worker { diff --git a/presentation/src/main/java/com/nextcloud/talk/jobs/DeleteConversationWorker.java b/presentation/src/main/java/com/nextcloud/talk/jobs/DeleteConversationWorker.java index 3b8f4e1eb..593d0717b 100644 --- a/presentation/src/main/java/com/nextcloud/talk/jobs/DeleteConversationWorker.java +++ b/presentation/src/main/java/com/nextcloud/talk/jobs/DeleteConversationWorker.java @@ -26,25 +26,24 @@ import androidx.work.Data; import androidx.work.Worker; import androidx.work.WorkerParameters; import autodagger.AutoInjector; +import com.nextcloud.talk.models.json.generic.GenericOverall; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.events.EventStatus; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.generic.GenericOverall; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import java.net.CookieManager; +import javax.inject.Inject; import okhttp3.JavaNetCookieJar; import okhttp3.OkHttpClient; import org.greenrobot.eventbus.EventBus; import retrofit2.Retrofit; -import javax.inject.Inject; -import java.net.CookieManager; - @AutoInjector(NextcloudTalkApplication.class) public class DeleteConversationWorker extends Worker { @Inject diff --git a/presentation/src/main/java/com/nextcloud/talk/jobs/LeaveConversationWorker.java b/presentation/src/main/java/com/nextcloud/talk/jobs/LeaveConversationWorker.java index b1b61e29b..bee508c0c 100644 --- a/presentation/src/main/java/com/nextcloud/talk/jobs/LeaveConversationWorker.java +++ b/presentation/src/main/java/com/nextcloud/talk/jobs/LeaveConversationWorker.java @@ -26,25 +26,24 @@ import androidx.work.Data; import androidx.work.Worker; import androidx.work.WorkerParameters; import autodagger.AutoInjector; +import com.nextcloud.talk.models.json.generic.GenericOverall; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.events.EventStatus; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.generic.GenericOverall; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import java.net.CookieManager; +import javax.inject.Inject; import okhttp3.JavaNetCookieJar; import okhttp3.OkHttpClient; import org.greenrobot.eventbus.EventBus; import retrofit2.Retrofit; -import javax.inject.Inject; -import java.net.CookieManager; - @AutoInjector(NextcloudTalkApplication.class) public class LeaveConversationWorker extends Worker { @Inject diff --git a/presentation/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java b/presentation/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java index fa263475d..11143fb69 100644 --- a/presentation/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java +++ b/presentation/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java @@ -38,7 +38,6 @@ import android.service.notification.StatusBarNotification; import android.text.TextUtils; import android.util.Base64; import android.util.Log; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.app.NotificationCompat; @@ -49,7 +48,7 @@ import androidx.emoji.text.EmojiCompat; import androidx.work.Data; import androidx.work.Worker; import androidx.work.WorkerParameters; - +import autodagger.AutoInjector; import com.bluelinelabs.logansquare.LoganSquare; import com.facebook.common.executors.UiThreadImmediateExecutorService; import com.facebook.common.references.CloseableReference; @@ -65,16 +64,16 @@ import com.nextcloud.talk.activities.MagicCallActivity; import com.nextcloud.talk.activities.MainActivity; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; -import com.nextcloud.data.models.RingtoneSettings; -import com.nextcloud.data.models.SignatureVerification; +import com.nextcloud.talk.models.RingtoneSettings; +import com.nextcloud.talk.models.SignatureVerification; import com.nextcloud.talk.models.database.ArbitraryStorageEntity; import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.models.json.chat.ChatUtils; -import com.nextcloud.data.models.json.conversations.Conversation; -import com.nextcloud.data.models.json.conversations.RoomOverall; -import com.nextcloud.data.models.json.notifications.NotificationOverall; -import com.nextcloud.data.models.json.push.DecryptedPushMessage; -import com.nextcloud.data.models.json.push.NotificationUser; +import com.nextcloud.talk.models.json.conversations.Conversation; +import com.nextcloud.talk.models.json.conversations.RoomOverall; +import com.nextcloud.talk.models.json.notifications.NotificationOverall; +import com.nextcloud.talk.models.json.push.DecryptedPushMessage; +import com.nextcloud.talk.models.json.push.NotificationUser; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.DisplayUtils; import com.nextcloud.talk.utils.DoNotDisturbUtils; @@ -84,9 +83,8 @@ import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.arbitrarystorage.ArbitraryStorageUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder; - -import org.parceler.Parcels; - +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; import java.io.IOException; import java.net.CookieManager; import java.security.InvalidKeyException; @@ -94,559 +92,593 @@ import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.util.HashMap; import java.util.zip.CRC32; - import javax.crypto.Cipher; import javax.crypto.NoSuchPaddingException; import javax.inject.Inject; - -import autodagger.AutoInjector; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; import okhttp3.JavaNetCookieJar; import okhttp3.OkHttpClient; +import org.parceler.Parcels; import retrofit2.Retrofit; @AutoInjector(NextcloudTalkApplication.class) public class NotificationWorker extends Worker { - public static final String TAG = "NotificationWorker"; + public static final String TAG = "NotificationWorker"; - @Inject - AppPreferences appPreferences; + @Inject + AppPreferences appPreferences; - @Inject - ArbitraryStorageUtils arbitraryStorageUtils; + @Inject + ArbitraryStorageUtils arbitraryStorageUtils; - @Inject - Retrofit retrofit; + @Inject + Retrofit retrofit; - @Inject - OkHttpClient okHttpClient; + @Inject + OkHttpClient okHttpClient; - private NcApi ncApi; + private NcApi ncApi; - private DecryptedPushMessage decryptedPushMessage; - private Context context; - private SignatureVerification signatureVerification; - private String conversationType = "one2one"; + private DecryptedPushMessage decryptedPushMessage; + private Context context; + private SignatureVerification signatureVerification; + private String conversationType = "one2one"; - private String credentials; - private boolean muteCall = false; - private boolean importantConversation = false; + private String credentials; + private boolean muteCall = false; + private boolean importantConversation = false; - public NotificationWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { - super(context, workerParams); + public NotificationWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { + super(context, workerParams); + } + + private void showNotificationForCallWithNoPing(Intent intent) { + UserEntity userEntity = signatureVerification.getUserEntity(); + + ArbitraryStorageEntity arbitraryStorageEntity; + + if ((arbitraryStorageEntity = arbitraryStorageUtils.getStorageSetting(userEntity.getId(), + "mute_calls", intent.getExtras().getString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN()))) + != null) { + muteCall = Boolean.parseBoolean(arbitraryStorageEntity.getValue()); } - private void showNotificationForCallWithNoPing(Intent intent) { - UserEntity userEntity = signatureVerification.getUserEntity(); + if ((arbitraryStorageEntity = arbitraryStorageUtils.getStorageSetting(userEntity.getId(), + "important_conversation", + intent.getExtras().getString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN()))) != null) { + importantConversation = Boolean.parseBoolean(arbitraryStorageEntity.getValue()); + } - ArbitraryStorageEntity arbitraryStorageEntity; + if (DoNotDisturbUtils.INSTANCE.isDnDActive()) { + if (!DoNotDisturbUtils.INSTANCE.isInDoNotDisturbWithPriority() + || !importantConversation + || muteCall) { + return; + } + } - if ((arbitraryStorageEntity = arbitraryStorageUtils.getStorageSetting(userEntity.getId(), - "mute_calls", intent.getExtras().getString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN()))) != null) { - muteCall = Boolean.parseBoolean(arbitraryStorageEntity.getValue()); - } + ncApi.getRoom(credentials, ApiUtils.getRoom(userEntity.getBaseUrl(), + intent.getExtras().getString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN()))) + .blockingSubscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { - if ((arbitraryStorageEntity = arbitraryStorageUtils.getStorageSetting(userEntity.getId(), - "important_conversation", intent.getExtras().getString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN()))) != null) { - importantConversation = Boolean.parseBoolean(arbitraryStorageEntity.getValue()); - } + } + @Override + public void onNext(RoomOverall roomOverall) { + Conversation conversation = roomOverall.getOcs().getData(); - if (DoNotDisturbUtils.INSTANCE.isDnDActive()) { - if (!DoNotDisturbUtils.INSTANCE.isInDoNotDisturbWithPriority() || !importantConversation || muteCall) { - return; + intent.putExtra(BundleKeys.INSTANCE.getKEY_ROOM(), Parcels.wrap(conversation)); + if (conversation.getType() + .equals(Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) || + (!TextUtils.isEmpty(conversation.getObjectType()) && "share:password".equals + (conversation.getObjectType()))) { + context.startActivity(intent); + } else { + if (conversation.getType().equals(Conversation.ConversationType.ROOM_GROUP_CALL)) { + conversationType = "group"; + } else { + conversationType = "public"; + } + if (decryptedPushMessage.getNotificationId() != Long.MIN_VALUE) { + showNotificationWithObjectData(intent); + } else { + showNotification(intent); + } } - } + } - ncApi.getRoom(credentials, ApiUtils.getRoom(userEntity.getBaseUrl(), - intent.getExtras().getString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN()))) - .blockingSubscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { + @Override + public void onError(Throwable e) { + } - } + @Override + public void onComplete() { - @Override - public void onNext(RoomOverall roomOverall) { - Conversation conversation = roomOverall.getOcs().getData(); + } + }); + } - intent.putExtra(BundleKeys.INSTANCE.getKEY_ROOM(), Parcels.wrap(conversation)); - if (conversation.getType().equals(Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) || - (!TextUtils.isEmpty(conversation.getObjectType()) && "share:password".equals - (conversation.getObjectType()))) { - context.startActivity(intent); - } else { - if (conversation.getType().equals(Conversation.ConversationType.ROOM_GROUP_CALL)) { - conversationType = "group"; - } else { - conversationType = "public"; - } - if (decryptedPushMessage.getNotificationId() != Long.MIN_VALUE) { - showNotificationWithObjectData(intent); - } else { - showNotification(intent); - } - } - } + private void showNotificationWithObjectData(Intent intent) { + UserEntity userEntity = signatureVerification.getUserEntity(); + ncApi.getNotification(credentials, ApiUtils.getUrlForNotificationWithId(userEntity.getBaseUrl(), + Long.toString(decryptedPushMessage.getNotificationId()))) + .blockingSubscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { - @Override - public void onError(Throwable e) { - } + } - @Override - public void onComplete() { + @Override + public void onNext(NotificationOverall notificationOverall) { + com.nextcloud.talk.models.json.notifications.Notification notification = + notificationOverall.getOcs().getNotification(); - } - }); - } + if (notification.getMessageRichParameters() != null && + notification.getMessageRichParameters().size() > 0) { + decryptedPushMessage.setText(ChatUtils.getParsedMessage(notification.getMessageRich(), + notification.getMessageRichParameters())); + } else { + decryptedPushMessage.setText(notification.getMessage()); + } - private void showNotificationWithObjectData(Intent intent) { - UserEntity userEntity = signatureVerification.getUserEntity(); - ncApi.getNotification(credentials, ApiUtils.getUrlForNotificationWithId(userEntity.getBaseUrl(), - Long.toString(decryptedPushMessage.getNotificationId()))) - .blockingSubscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { + HashMap> subjectRichParameters = notification + .getSubjectRichParameters(); - } + decryptedPushMessage.setTimestamp(notification.getDatetime().getMillis()); - @Override - public void onNext(NotificationOverall notificationOverall) { - com.nextcloud.data.models.json.notifications.Notification notification = - notificationOverall.getOcs().getNotification(); + if (subjectRichParameters != null && subjectRichParameters.size() > 0) { + HashMap callHashMap = subjectRichParameters.get("call"); + HashMap userHashMap = subjectRichParameters.get("user"); + HashMap guestHashMap = subjectRichParameters.get("guest"); - if (notification.getMessageRichParameters() != null && - notification.getMessageRichParameters().size() > 0) { - decryptedPushMessage.setText(ChatUtils.INSTANCE.getParsedMessage(notification.getMessageRich(), - notification.getMessageRichParameters())); - } else { - decryptedPushMessage.setText(notification.getMessage()); - } - - HashMap> subjectRichParameters = notification - .getSubjectRichParameters(); - - decryptedPushMessage.setTimestamp(notification.getDatetime().getMillis()); - - if (subjectRichParameters != null && subjectRichParameters.size() > 0) { - HashMap callHashMap = subjectRichParameters.get("call"); - HashMap userHashMap = subjectRichParameters.get("user"); - HashMap guestHashMap = subjectRichParameters.get("guest"); - - if (callHashMap != null && callHashMap.size() > 0 && callHashMap.containsKey("name")) { - if (notification.getObjectType().equals("chat")) { - decryptedPushMessage.setSubject(callHashMap.get("name")); - } else { - decryptedPushMessage.setSubject(notification.getSubject()); - } - - if (callHashMap.containsKey("call-type")) { - conversationType = callHashMap.get("call-type"); - } - } - - NotificationUser notificationUser = new NotificationUser(); - if (userHashMap != null && !userHashMap.isEmpty()) { - notificationUser.setId(userHashMap.get("id")); - notificationUser.setType(userHashMap.get("type")); - notificationUser.setName(userHashMap.get("name")); - decryptedPushMessage.setNotificationUser(notificationUser); - } else if (guestHashMap != null && !guestHashMap.isEmpty()) { - notificationUser.setId(guestHashMap.get("id")); - notificationUser.setType(guestHashMap.get("type")); - notificationUser.setName(guestHashMap.get("name")); - decryptedPushMessage.setNotificationUser(notificationUser); - } - } - - showNotification(intent); - } - - @Override - public void onError(Throwable e) { - - } - - @Override - public void onComplete() { - } - }); - } - - private void showNotification(Intent intent) { - int smallIcon; - Bitmap largeIcon; - String category; - int priority = Notification.PRIORITY_HIGH; - - smallIcon = R.drawable.ic_logo; - - if (decryptedPushMessage.getType().equals("chat") || decryptedPushMessage.getType().equals("room")) { - category = Notification.CATEGORY_MESSAGE; - } else { - category = Notification.CATEGORY_CALL; - } - - switch (conversationType) { - case "group": - largeIcon = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_people_group_black_24px); - break; - case "public": - largeIcon = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_link_black_24px); - break; - default: - // assuming one2one - if (decryptedPushMessage.getType().equals("chat") || decryptedPushMessage.getType().equals("room")) { - largeIcon = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_chat_black_24dp); + if (callHashMap != null && callHashMap.size() > 0 && callHashMap.containsKey( + "name")) { + if (notification.getObjectType().equals("chat")) { + decryptedPushMessage.setSubject(callHashMap.get("name")); } else { - largeIcon = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_call_black_24dp); + decryptedPushMessage.setSubject(notification.getSubject()); } + + if (callHashMap.containsKey("call-type")) { + conversationType = callHashMap.get("call-type"); + } + } + + NotificationUser notificationUser = new NotificationUser(); + if (userHashMap != null && !userHashMap.isEmpty()) { + notificationUser.setId(userHashMap.get("id")); + notificationUser.setType(userHashMap.get("type")); + notificationUser.setName(userHashMap.get("name")); + decryptedPushMessage.setNotificationUser(notificationUser); + } else if (guestHashMap != null && !guestHashMap.isEmpty()) { + notificationUser.setId(guestHashMap.get("id")); + notificationUser.setType(guestHashMap.get("type")); + notificationUser.setName(guestHashMap.get("name")); + decryptedPushMessage.setNotificationUser(notificationUser); + } + } + + showNotification(intent); + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + } + }); + } + + private void showNotification(Intent intent) { + int smallIcon; + Bitmap largeIcon; + String category; + int priority = Notification.PRIORITY_HIGH; + + smallIcon = R.drawable.ic_logo; + + if (decryptedPushMessage.getType().equals("chat") || decryptedPushMessage.getType() + .equals("room")) { + category = Notification.CATEGORY_MESSAGE; + } else { + category = Notification.CATEGORY_CALL; + } + + switch (conversationType) { + case "group": + largeIcon = BitmapFactory.decodeResource(context.getResources(), + R.drawable.ic_people_group_black_24px); + break; + case "public": + largeIcon = + BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_link_black_24px); + break; + default: + // assuming one2one + if (decryptedPushMessage.getType().equals("chat") || decryptedPushMessage.getType() + .equals("room")) { + largeIcon = + BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_chat_black_24dp); + } else { + largeIcon = + BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_call_black_24dp); } + } - intent.setAction(Long.toString(System.currentTimeMillis())); + intent.setAction(Long.toString(System.currentTimeMillis())); - PendingIntent pendingIntent = PendingIntent.getActivity(context, - 0, intent, 0); + PendingIntent pendingIntent = PendingIntent.getActivity(context, + 0, intent, 0); - Uri uri = Uri.parse(signatureVerification.getUserEntity().getBaseUrl()); - String baseUrl = uri.getHost(); + Uri uri = Uri.parse(signatureVerification.getUserEntity().getBaseUrl()); + String baseUrl = uri.getHost(); - NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, "1") - .setLargeIcon(largeIcon) - .setSmallIcon(smallIcon) - .setCategory(category) - .setPriority(priority) - .setSubText(baseUrl) - .setWhen(decryptedPushMessage.getTimestamp()) - .setShowWhen(true) - .setContentTitle(EmojiCompat.get().process(decryptedPushMessage.getSubject())) - .setContentIntent(pendingIntent) - .setAutoCancel(true); + NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, "1") + .setLargeIcon(largeIcon) + .setSmallIcon(smallIcon) + .setCategory(category) + .setPriority(priority) + .setSubText(baseUrl) + .setWhen(decryptedPushMessage.getTimestamp()) + .setShowWhen(true) + .setContentTitle(EmojiCompat.get().process(decryptedPushMessage.getSubject())) + .setContentIntent(pendingIntent) + .setAutoCancel(true); - if (!TextUtils.isEmpty(decryptedPushMessage.getText())) { - notificationBuilder.setContentText(EmojiCompat.get().process(decryptedPushMessage.getText())); - } + if (!TextUtils.isEmpty(decryptedPushMessage.getText())) { + notificationBuilder.setContentText(EmojiCompat.get().process(decryptedPushMessage.getText())); + } - if (Build.VERSION.SDK_INT >= 23) { - // This method should exist since API 21, but some phones don't have it - // So as a safeguard, we don't use it until 23 - notificationBuilder.setColor(context.getResources().getColor(R.color.colorPrimary)); - } + if (Build.VERSION.SDK_INT >= 23) { + // This method should exist since API 21, but some phones don't have it + // So as a safeguard, we don't use it until 23 + notificationBuilder.setColor(context.getResources().getColor(R.color.colorPrimary)); + } - Bundle notificationInfo = new Bundle(); - notificationInfo.putLong(BundleKeys.INSTANCE.getKEY_INTERNAL_USER_ID(), signatureVerification.getUserEntity().getId()); - // could be an ID or a TOKEN - notificationInfo.putString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN(), decryptedPushMessage.getId()); - notificationInfo.putLong(BundleKeys.INSTANCE.getKEY_NOTIFICATION_ID(), decryptedPushMessage.getNotificationId()); - notificationBuilder.setExtras(notificationInfo); + Bundle notificationInfo = new Bundle(); + notificationInfo.putLong(BundleKeys.INSTANCE.getKEY_INTERNAL_USER_ID(), + signatureVerification.getUserEntity().getId()); + // could be an ID or a TOKEN + notificationInfo.putString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN(), + decryptedPushMessage.getId()); + notificationInfo.putLong(BundleKeys.INSTANCE.getKEY_NOTIFICATION_ID(), + decryptedPushMessage.getNotificationId()); + notificationBuilder.setExtras(notificationInfo); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { /*NotificationUtils.createNotificationChannelGroup(context, Long.toString(crc32.getValue()), groupName);*/ - if (decryptedPushMessage.getType().equals("chat") || decryptedPushMessage.getType().equals("room")) { - NotificationUtils.INSTANCE.createNotificationChannel(context, - NotificationUtils.INSTANCE.getNOTIFICATION_CHANNEL_MESSAGES_V3(), context.getResources() - .getString(R.string.nc_notification_channel_messages), context.getResources() - .getString(R.string.nc_notification_channel_messages), true, - NotificationManager.IMPORTANCE_HIGH); + if (decryptedPushMessage.getType().equals("chat") || decryptedPushMessage.getType() + .equals("room")) { + NotificationUtils.INSTANCE.createNotificationChannel(context, + NotificationUtils.INSTANCE.getNOTIFICATION_CHANNEL_MESSAGES_V3(), context.getResources() + .getString(R.string.nc_notification_channel_messages), context.getResources() + .getString(R.string.nc_notification_channel_messages), true, + NotificationManager.IMPORTANCE_HIGH); - notificationBuilder.setChannelId(NotificationUtils.INSTANCE.getNOTIFICATION_CHANNEL_MESSAGES_V3()); - } else { - NotificationUtils.INSTANCE.createNotificationChannel(context, - NotificationUtils.INSTANCE.getNOTIFICATION_CHANNEL_CALLS_V3(), context.getResources() - .getString(R.string.nc_notification_channel_calls), context.getResources() - .getString(R.string.nc_notification_channel_calls_description), true, - NotificationManager.IMPORTANCE_HIGH); + notificationBuilder.setChannelId( + NotificationUtils.INSTANCE.getNOTIFICATION_CHANNEL_MESSAGES_V3()); + } else { + NotificationUtils.INSTANCE.createNotificationChannel(context, + NotificationUtils.INSTANCE.getNOTIFICATION_CHANNEL_CALLS_V3(), context.getResources() + .getString(R.string.nc_notification_channel_calls), context.getResources() + .getString(R.string.nc_notification_channel_calls_description), true, + NotificationManager.IMPORTANCE_HIGH); - notificationBuilder.setChannelId(NotificationUtils.INSTANCE.getNOTIFICATION_CHANNEL_CALLS_V3()); - } + notificationBuilder.setChannelId( + NotificationUtils.INSTANCE.getNOTIFICATION_CHANNEL_CALLS_V3()); + } + } else { + // red color for the lights + notificationBuilder.setLights(0xFFFF0000, 200, 200); + } - } else { - // red color for the lights - notificationBuilder.setLights(0xFFFF0000, 200, 200); + notificationBuilder.setContentIntent(pendingIntent); + + CRC32 crc32 = new CRC32(); + + String groupName = + signatureVerification.getUserEntity().getId() + "@" + decryptedPushMessage.getId(); + crc32.update(groupName.getBytes()); + notificationBuilder.setGroup(Long.toString(crc32.getValue())); + + // notificationId + crc32 = new CRC32(); + String stringForCrc = String.valueOf(System.currentTimeMillis()); + crc32.update(stringForCrc.getBytes()); + + StatusBarNotification activeStatusBarNotification = + NotificationUtils.INSTANCE.findNotificationForRoom(context, + signatureVerification.getUserEntity(), decryptedPushMessage.getId()); + + int notificationId; + + if (activeStatusBarNotification != null) { + notificationId = activeStatusBarNotification.getId(); + } else { + notificationId = (int) crc32.getValue(); + } + + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N + && decryptedPushMessage.getNotificationUser() != null + && decryptedPushMessage.getType().equals("chat")) { + NotificationCompat.MessagingStyle style = null; + if (activeStatusBarNotification != null) { + Notification activeNotification = activeStatusBarNotification.getNotification(); + style = NotificationCompat.MessagingStyle.extractMessagingStyleFromNotification( + activeNotification); + } + + Person.Builder person = + new Person.Builder().setKey(signatureVerification.getUserEntity().getId() + + "@" + decryptedPushMessage.getNotificationUser().getId()) + .setName( + EmojiCompat.get().process(decryptedPushMessage.getNotificationUser().getName())) + .setBot(decryptedPushMessage.getNotificationUser().getType().equals("bot")); + + notificationBuilder.setOnlyAlertOnce(true); + + if (decryptedPushMessage.getNotificationUser().getType().equals("user") + || decryptedPushMessage.getNotificationUser().getType().equals("guest")) { + String avatarUrl = + ApiUtils.getUrlForAvatarWithName(signatureVerification.getUserEntity().getBaseUrl(), + decryptedPushMessage.getNotificationUser().getId(), R.dimen.avatar_size); + + if (decryptedPushMessage.getNotificationUser().getType().equals("guest")) { + avatarUrl = ApiUtils.getUrlForAvatarWithNameForGuests( + signatureVerification.getUserEntity().getBaseUrl(), + decryptedPushMessage.getNotificationUser().getName(), R.dimen.avatar_size); } - notificationBuilder.setContentIntent(pendingIntent); + ImageRequest imageRequest = + DisplayUtils.getImageRequestForUrl(avatarUrl, null); + ImagePipeline imagePipeline = Fresco.getImagePipeline(); + DataSource> dataSource = + imagePipeline.fetchDecodedImage(imageRequest, context); - - CRC32 crc32 = new CRC32(); - - String groupName = signatureVerification.getUserEntity().getId() + "@" + decryptedPushMessage.getId(); - crc32.update(groupName.getBytes()); - notificationBuilder.setGroup(Long.toString(crc32.getValue())); - - // notificationId - crc32 = new CRC32(); - String stringForCrc = String.valueOf(System.currentTimeMillis()); - crc32.update(stringForCrc.getBytes()); - - StatusBarNotification activeStatusBarNotification = - NotificationUtils.INSTANCE.findNotificationForRoom(context, - signatureVerification.getUserEntity(), decryptedPushMessage.getId()); - - int notificationId; - - if (activeStatusBarNotification != null) { - notificationId = activeStatusBarNotification.getId(); - } else { - notificationId = (int) crc32.getValue(); - } - - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N && decryptedPushMessage.getNotificationUser() != null && decryptedPushMessage.getType().equals("chat")) { - NotificationCompat.MessagingStyle style = null; - if (activeStatusBarNotification != null) { - Notification activeNotification = activeStatusBarNotification.getNotification(); - style = NotificationCompat.MessagingStyle.extractMessagingStyleFromNotification(activeNotification); - } - - Person.Builder person = - new Person.Builder().setKey(signatureVerification.getUserEntity().getId() + - "@" + decryptedPushMessage.getNotificationUser().getId()).setName(EmojiCompat.get().process(decryptedPushMessage.getNotificationUser().getName())).setBot(decryptedPushMessage.getNotificationUser().getType().equals("bot")); - - notificationBuilder.setOnlyAlertOnce(true); - - if (decryptedPushMessage.getNotificationUser().getType().equals("user") || decryptedPushMessage.getNotificationUser().getType().equals("guest")) { - String avatarUrl = ApiUtils.getUrlForAvatarWithName(signatureVerification.getUserEntity().getBaseUrl(), decryptedPushMessage.getNotificationUser().getId(), R.dimen.avatar_size); - - if (decryptedPushMessage.getNotificationUser().getType().equals("guest")) { - avatarUrl = ApiUtils.getUrlForAvatarWithNameForGuests(signatureVerification.getUserEntity().getBaseUrl(), - decryptedPushMessage.getNotificationUser().getName(), R.dimen.avatar_size); + NotificationCompat.MessagingStyle finalStyle = style; + dataSource.subscribe( + new BaseBitmapDataSubscriber() { + @Override + protected void onNewResultImpl(Bitmap bitmap) { + if (bitmap != null) { + new RoundAsCirclePostprocessor(true).process(bitmap); + person.setIcon(IconCompat.createWithBitmap(bitmap)); + notificationBuilder.setStyle(getStyle(person.build(), + finalStyle)); + sendNotificationWithId(notificationId, notificationBuilder.build()); } + } - ImageRequest imageRequest = - DisplayUtils.getImageRequestForUrl(avatarUrl, null); - ImagePipeline imagePipeline = Fresco.getImagePipeline(); - DataSource> dataSource = imagePipeline.fetchDecodedImage(imageRequest, context); - - NotificationCompat.MessagingStyle finalStyle = style; - dataSource.subscribe( - new BaseBitmapDataSubscriber() { - @Override - protected void onNewResultImpl(Bitmap bitmap) { - if (bitmap != null) { - new RoundAsCirclePostprocessor(true).process(bitmap); - person.setIcon(IconCompat.createWithBitmap(bitmap)); - notificationBuilder.setStyle(getStyle(person.build(), - finalStyle)); - sendNotificationWithId(notificationId, notificationBuilder.build()); - - } - } - - @Override - protected void onFailureImpl(DataSource> dataSource) { - notificationBuilder.setStyle(getStyle(person.build(), finalStyle)); - sendNotificationWithId(notificationId, notificationBuilder.build()); - } - }, - UiThreadImmediateExecutorService.getInstance()); - } else { - notificationBuilder.setStyle(getStyle(person.build(), style)); + @Override + protected void onFailureImpl( + DataSource> dataSource) { + notificationBuilder.setStyle(getStyle(person.build(), finalStyle)); sendNotificationWithId(notificationId, notificationBuilder.build()); - } - } else { - sendNotificationWithId(notificationId, notificationBuilder.build()); - } + } + }, + UiThreadImmediateExecutorService.getInstance()); + } else { + notificationBuilder.setStyle(getStyle(person.build(), style)); + sendNotificationWithId(notificationId, notificationBuilder.build()); + } + } else { + sendNotificationWithId(notificationId, notificationBuilder.build()); + } + } + private NotificationCompat.MessagingStyle getStyle(Person person, + @Nullable NotificationCompat.MessagingStyle style) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + NotificationCompat.MessagingStyle newStyle = + new NotificationCompat.MessagingStyle(person); + + newStyle.setConversationTitle(decryptedPushMessage.getSubject()); + newStyle.setGroupConversation(!conversationType.equals("one2one")); + + if (style != null) { + style.getMessages() + .forEach(message -> newStyle.addMessage( + new NotificationCompat.MessagingStyle.Message(message.getText(), + message.getTimestamp(), message.getPerson()))); + } + + newStyle.addMessage(decryptedPushMessage.getText(), decryptedPushMessage.getTimestamp(), + person); + return newStyle; } - private NotificationCompat.MessagingStyle getStyle(Person person, @Nullable NotificationCompat.MessagingStyle style) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - NotificationCompat.MessagingStyle newStyle = - new NotificationCompat.MessagingStyle(person); + // we'll never come here + return style; + } - newStyle.setConversationTitle(decryptedPushMessage.getSubject()); - newStyle.setGroupConversation(!conversationType.equals("one2one")); + private void sendNotificationWithId(int notificationId, Notification notification) { + NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context); + notificationManager.notify(notificationId, notification); - if (style != null) { - style.getMessages().forEach(message -> newStyle.addMessage(new NotificationCompat.MessagingStyle.Message(message.getText(), message.getTimestamp(), message.getPerson()))); - } - - newStyle.addMessage(decryptedPushMessage.getText(), decryptedPushMessage.getTimestamp(), person); - return newStyle; - } - - // we'll never come here - return style; - } - - private void sendNotificationWithId(int notificationId, Notification notification) { - NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context); - notificationManager.notify(notificationId, notification); - - - if (!notification.category.equals(Notification.CATEGORY_CALL)) { - String ringtonePreferencesString; - Uri soundUri; - - ringtonePreferencesString = appPreferences.getMessageRingtoneUri(); - if (TextUtils.isEmpty(ringtonePreferencesString)) { - soundUri = Uri.parse("android.resource://" + context.getPackageName() + - "/raw/librem_by_feandesign_message"); - } else { - try { - RingtoneSettings ringtoneSettings = LoganSquare.parse - (ringtonePreferencesString, RingtoneSettings.class); - soundUri = ringtoneSettings.getRingtoneUri(); - } catch (IOException exception) { - soundUri = Uri.parse("android.resource://" + context.getPackageName() + - "/raw/librem_by_feandesign_message"); - } - } - - if (soundUri != null && !ApplicationWideCurrentRoomHolder.getInstance().isInCall() && - (DoNotDisturbUtils.INSTANCE.shouldPlaySound() || importantConversation)) { - AudioAttributes.Builder audioAttributesBuilder = new AudioAttributes.Builder().setContentType - (AudioAttributes.CONTENT_TYPE_SONIFICATION); - - if (decryptedPushMessage.getType().equals("chat") || decryptedPushMessage.getType().equals("room")) { - audioAttributesBuilder.setUsage(AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_INSTANT); - } else { - audioAttributesBuilder.setUsage(AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_REQUEST); - } - - MediaPlayer mediaPlayer = new MediaPlayer(); - try { - mediaPlayer.setDataSource(context, soundUri); - mediaPlayer.setAudioAttributes(audioAttributesBuilder.build()); - - mediaPlayer.setOnPreparedListener(mp -> mediaPlayer.start()); - mediaPlayer.setOnCompletionListener(MediaPlayer::release); - - mediaPlayer.prepareAsync(); - } catch (IOException e) { - Log.e(TAG, "Failed to set data source"); - } - } - - - if (DoNotDisturbUtils.INSTANCE.shouldVibrate(appPreferences.getShouldVibrateSetting()) || importantConversation) { - Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); - - if (vibrator != null) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - vibrator.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE)); - } else { - vibrator.vibrate(500); - } - } - } - } - } - - @NonNull - @Override - public Result doWork() { - NextcloudTalkApplication.Companion.getSharedApplication().getComponentApplication().inject(this); - - context = getApplicationContext(); - Data data = getInputData(); - String subject = data.getString(BundleKeys.INSTANCE.getKEY_NOTIFICATION_SUBJECT()); - String signature = data.getString(BundleKeys.INSTANCE.getKEY_NOTIFICATION_SIGNATURE()); + if (!notification.category.equals(Notification.CATEGORY_CALL)) { + String ringtonePreferencesString; + Uri soundUri; + ringtonePreferencesString = appPreferences.getMessageRingtoneUri(); + if (TextUtils.isEmpty(ringtonePreferencesString)) { + soundUri = Uri.parse("android.resource://" + context.getPackageName() + + "/raw/librem_by_feandesign_message"); + } else { try { - byte[] base64DecodedSubject = Base64.decode(subject, Base64.DEFAULT); - byte[] base64DecodedSignature = Base64.decode(signature, Base64.DEFAULT); - PushUtils pushUtils = new PushUtils(); - PrivateKey privateKey = (PrivateKey) pushUtils.readKeyFromFile(false); - - try { - signatureVerification = pushUtils.verifySignature(base64DecodedSignature, - base64DecodedSubject); - - if (signatureVerification.isSignatureValid()) { - Cipher cipher = Cipher.getInstance("RSA/None/PKCS1Padding"); - cipher.init(Cipher.DECRYPT_MODE, privateKey); - byte[] decryptedSubject = cipher.doFinal(base64DecodedSubject); - decryptedPushMessage = LoganSquare.parse(new String(decryptedSubject), - DecryptedPushMessage.class); - - decryptedPushMessage.setTimestamp(System.currentTimeMillis()); - if (decryptedPushMessage.isDelete()) { - NotificationUtils.INSTANCE.cancelExistingNotificationWithId(context, signatureVerification.getUserEntity(), decryptedPushMessage.getNotificationId()); - } else if (decryptedPushMessage.isDeleteAll()) { - NotificationUtils.INSTANCE.cancelAllNotificationsForAccount(context, signatureVerification.getUserEntity()); - } else { - credentials = ApiUtils.getCredentials(signatureVerification.getUserEntity().getUsername(), - signatureVerification.getUserEntity().getToken()); - - ncApi = retrofit.newBuilder().client(okHttpClient.newBuilder().cookieJar(new - JavaNetCookieJar(new CookieManager())).build()).build().create(NcApi.class); - - boolean hasChatSupport = signatureVerification.getUserEntity(). - hasSpreedFeatureCapability("chat-v2"); - - boolean shouldShowNotification = decryptedPushMessage.getApp().equals("spreed"); - - if (shouldShowNotification) { - Intent intent; - Bundle bundle = new Bundle(); - - - boolean startACall = decryptedPushMessage.getType().equals("call") || !hasChatSupport; - if (startACall) { - intent = new Intent(context, MagicCallActivity.class); - } else { - intent = new Intent(context, MainActivity.class); - } - - intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); - - if (!signatureVerification.getUserEntity().hasSpreedFeatureCapability - ("no-ping")) { - bundle.putString(BundleKeys.INSTANCE.getKEY_ROOM_ID(), decryptedPushMessage.getId()); - } else { - bundle.putString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN(), decryptedPushMessage.getId()); - } - - bundle.putParcelable(BundleKeys.INSTANCE.getKEY_USER_ENTITY(), signatureVerification.getUserEntity()); - - bundle.putBoolean(BundleKeys.INSTANCE.getKEY_FROM_NOTIFICATION_START_CALL(), - startACall); - - intent.putExtras(bundle); - - switch (decryptedPushMessage.getType()) { - case "call": - if (!bundle.containsKey(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN())) { - context.startActivity(intent); - } else { - showNotificationForCallWithNoPing(intent); - } - break; - case "room": - if (bundle.containsKey(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN())) { - showNotificationWithObjectData(intent); - } - break; - case "chat": - if (decryptedPushMessage.getNotificationId() != Long.MIN_VALUE) { - showNotificationWithObjectData(intent); - } else { - showNotification(intent); - } - break; - default: - break; - } - - } - } - } - } catch (NoSuchAlgorithmException e1) { - Log.d(TAG, "No proper algorithm to decrypt the message " + e1.getLocalizedMessage()); - } catch (NoSuchPaddingException e1) { - Log.d(TAG, "No proper padding to decrypt the message " + e1.getLocalizedMessage()); - } catch (InvalidKeyException e1) { - Log.d(TAG, "Invalid private key " + e1.getLocalizedMessage()); - } - } catch (Exception exception) { - Log.d(TAG, "Something went very wrong " + exception.getLocalizedMessage()); + RingtoneSettings ringtoneSettings = LoganSquare.parse + (ringtonePreferencesString, RingtoneSettings.class); + soundUri = ringtoneSettings.getRingtoneUri(); + } catch (IOException exception) { + soundUri = Uri.parse("android.resource://" + context.getPackageName() + + "/raw/librem_by_feandesign_message"); } - return Result.success(); + } + + if (soundUri != null && !ApplicationWideCurrentRoomHolder.getInstance().isInCall() && + (DoNotDisturbUtils.INSTANCE.shouldPlaySound() || importantConversation)) { + AudioAttributes.Builder audioAttributesBuilder = + new AudioAttributes.Builder().setContentType + (AudioAttributes.CONTENT_TYPE_SONIFICATION); + + if (decryptedPushMessage.getType().equals("chat") || decryptedPushMessage.getType() + .equals("room")) { + audioAttributesBuilder.setUsage(AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_INSTANT); + } else { + audioAttributesBuilder.setUsage(AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_REQUEST); + } + + MediaPlayer mediaPlayer = new MediaPlayer(); + try { + mediaPlayer.setDataSource(context, soundUri); + mediaPlayer.setAudioAttributes(audioAttributesBuilder.build()); + + mediaPlayer.setOnPreparedListener(mp -> mediaPlayer.start()); + mediaPlayer.setOnCompletionListener(MediaPlayer::release); + + mediaPlayer.prepareAsync(); + } catch (IOException e) { + Log.e(TAG, "Failed to set data source"); + } + } + + if (DoNotDisturbUtils.INSTANCE.shouldVibrate(appPreferences.getShouldVibrateSetting()) + || importantConversation) { + Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); + + if (vibrator != null) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + vibrator.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE)); + } else { + vibrator.vibrate(500); + } + } + } } + } + + @NonNull + @Override + public Result doWork() { + NextcloudTalkApplication.Companion.getSharedApplication() + .getComponentApplication() + .inject(this); + + context = getApplicationContext(); + Data data = getInputData(); + String subject = data.getString(BundleKeys.INSTANCE.getKEY_NOTIFICATION_SUBJECT()); + String signature = data.getString(BundleKeys.INSTANCE.getKEY_NOTIFICATION_SIGNATURE()); + + try { + byte[] base64DecodedSubject = Base64.decode(subject, Base64.DEFAULT); + byte[] base64DecodedSignature = Base64.decode(signature, Base64.DEFAULT); + PushUtils pushUtils = new PushUtils(); + PrivateKey privateKey = (PrivateKey) pushUtils.readKeyFromFile(false); + + try { + signatureVerification = pushUtils.verifySignature(base64DecodedSignature, + base64DecodedSubject); + + if (signatureVerification.isSignatureValid()) { + Cipher cipher = Cipher.getInstance("RSA/None/PKCS1Padding"); + cipher.init(Cipher.DECRYPT_MODE, privateKey); + byte[] decryptedSubject = cipher.doFinal(base64DecodedSubject); + decryptedPushMessage = LoganSquare.parse(new String(decryptedSubject), + DecryptedPushMessage.class); + + decryptedPushMessage.setTimestamp(System.currentTimeMillis()); + if (decryptedPushMessage.isDelete()) { + NotificationUtils.INSTANCE.cancelExistingNotificationWithId(context, + signatureVerification.getUserEntity(), decryptedPushMessage.getNotificationId()); + } else if (decryptedPushMessage.isDeleteAll()) { + NotificationUtils.INSTANCE.cancelAllNotificationsForAccount(context, + signatureVerification.getUserEntity()); + } else { + credentials = + ApiUtils.getCredentials(signatureVerification.getUserEntity().getUsername(), + signatureVerification.getUserEntity().getToken()); + + ncApi = retrofit.newBuilder().client(okHttpClient.newBuilder().cookieJar(new + JavaNetCookieJar(new CookieManager())).build()).build().create(NcApi.class); + + boolean hasChatSupport = signatureVerification.getUserEntity(). + hasSpreedFeatureCapability("chat-v2"); + + boolean shouldShowNotification = decryptedPushMessage.getApp().equals("spreed"); + + if (shouldShowNotification) { + Intent intent; + Bundle bundle = new Bundle(); + + boolean startACall = decryptedPushMessage.getType().equals("call") || !hasChatSupport; + if (startACall) { + intent = new Intent(context, MagicCallActivity.class); + } else { + intent = new Intent(context, MainActivity.class); + } + + intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); + + if (!signatureVerification.getUserEntity().hasSpreedFeatureCapability + ("no-ping")) { + bundle.putString(BundleKeys.INSTANCE.getKEY_ROOM_ID(), + decryptedPushMessage.getId()); + } else { + bundle.putString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN(), + decryptedPushMessage.getId()); + } + + bundle.putParcelable(BundleKeys.INSTANCE.getKEY_USER_ENTITY(), + signatureVerification.getUserEntity()); + + bundle.putBoolean(BundleKeys.INSTANCE.getKEY_FROM_NOTIFICATION_START_CALL(), + startACall); + + intent.putExtras(bundle); + + switch (decryptedPushMessage.getType()) { + case "call": + if (!bundle.containsKey(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN())) { + context.startActivity(intent); + } else { + showNotificationForCallWithNoPing(intent); + } + break; + case "room": + if (bundle.containsKey(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN())) { + showNotificationWithObjectData(intent); + } + break; + case "chat": + if (decryptedPushMessage.getNotificationId() != Long.MIN_VALUE) { + showNotificationWithObjectData(intent); + } else { + showNotification(intent); + } + break; + default: + break; + } + } + } + } + } catch (NoSuchAlgorithmException e1) { + Log.d(TAG, "No proper algorithm to decrypt the message " + e1.getLocalizedMessage()); + } catch (NoSuchPaddingException e1) { + Log.d(TAG, "No proper padding to decrypt the message " + e1.getLocalizedMessage()); + } catch (InvalidKeyException e1) { + Log.d(TAG, "Invalid private key " + e1.getLocalizedMessage()); + } + } catch (Exception exception) { + Log.d(TAG, "Something went very wrong " + exception.getLocalizedMessage()); + } + return Result.success(); + } } diff --git a/presentation/src/main/java/com/nextcloud/talk/jobs/ShareOperationWorker.java b/presentation/src/main/java/com/nextcloud/talk/jobs/ShareOperationWorker.java index 908fcebc0..44b45113d 100644 --- a/presentation/src/main/java/com/nextcloud/talk/jobs/ShareOperationWorker.java +++ b/presentation/src/main/java/com/nextcloud/talk/jobs/ShareOperationWorker.java @@ -35,11 +35,10 @@ import com.nextcloud.talk.utils.database.user.UserUtils; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; - -import javax.inject.Inject; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import javax.inject.Inject; @AutoInjector(NextcloudTalkApplication.class) public class ShareOperationWorker extends Worker { diff --git a/presentation/src/main/java/com/nextcloud/talk/jobs/SignalingSettingsWorker.java b/presentation/src/main/java/com/nextcloud/talk/jobs/SignalingSettingsWorker.java index fa674aee9..893e7fcf6 100644 --- a/presentation/src/main/java/com/nextcloud/talk/jobs/SignalingSettingsWorker.java +++ b/presentation/src/main/java/com/nextcloud/talk/jobs/SignalingSettingsWorker.java @@ -23,26 +23,29 @@ package com.nextcloud.talk.jobs; import android.content.Context; import android.util.Log; import androidx.annotation.NonNull; -import androidx.work.*; +import androidx.work.Data; +import androidx.work.OneTimeWorkRequest; +import androidx.work.WorkManager; +import androidx.work.Worker; +import androidx.work.WorkerParameters; import autodagger.AutoInjector; import com.bluelinelabs.logansquare.LoganSquare; +import com.nextcloud.talk.models.ExternalSignalingServer; +import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.events.EventStatus; -import com.nextcloud.data.models.ExternalSignalingServer; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.signaling.settings.SignalingSettingsOverall; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; -import org.greenrobot.eventbus.EventBus; - -import javax.inject.Inject; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; +import org.greenrobot.eventbus.EventBus; @AutoInjector(NextcloudTalkApplication.class) public class SignalingSettingsWorker extends Worker { diff --git a/presentation/src/main/java/com/nextcloud/talk/jobs/WebsocketConnectionsWorker.java b/presentation/src/main/java/com/nextcloud/talk/jobs/WebsocketConnectionsWorker.java index 55c789c56..e5991b56d 100644 --- a/presentation/src/main/java/com/nextcloud/talk/jobs/WebsocketConnectionsWorker.java +++ b/presentation/src/main/java/com/nextcloud/talk/jobs/WebsocketConnectionsWorker.java @@ -29,15 +29,14 @@ import androidx.work.Worker; import androidx.work.WorkerParameters; import autodagger.AutoInjector; import com.bluelinelabs.logansquare.LoganSquare; +import com.nextcloud.talk.models.ExternalSignalingServer; import com.nextcloud.talk.application.NextcloudTalkApplication; -import com.nextcloud.data.models.ExternalSignalingServer; import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.webrtc.WebSocketConnectionHelper; - -import javax.inject.Inject; import java.io.IOException; import java.util.List; +import javax.inject.Inject; @AutoInjector(NextcloudTalkApplication.class) public class WebsocketConnectionsWorker extends Worker { diff --git a/presentation/src/main/java/com/nextcloud/talk/models/RetrofitBucket.java b/presentation/src/main/java/com/nextcloud/talk/models/RetrofitBucket.java index 8ea7a07e8..b36ab95b5 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/RetrofitBucket.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/RetrofitBucket.java @@ -19,11 +19,10 @@ */ package com.nextcloud.talk.models; +import java.util.Map; import lombok.Data; import org.parceler.Parcel; -import java.util.Map; - @Parcel @Data public class RetrofitBucket { diff --git a/presentation/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorage.java b/presentation/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorage.java index 4927c2986..5a02d350f 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorage.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorage.java @@ -24,7 +24,6 @@ import android.os.Parcelable; import io.requery.Entity; import io.requery.Key; import io.requery.Persistable; - import java.io.Serializable; @Entity diff --git a/presentation/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorageEntity.java b/presentation/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorageEntity.java deleted file mode 100644 index f9fcd425e..000000000 --- a/presentation/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorageEntity.java +++ /dev/null @@ -1,287 +0,0 @@ -// Generated file do not edit, generated by io.requery.processor.EntityProcessor -package com.nextcloud.talk.models.database; - -import android.os.Parcel; -import android.os.Parcelable; - -import io.requery.Persistable; -import io.requery.android.EntityParceler; -import io.requery.meta.AttributeBuilder; -import io.requery.meta.NumericAttribute; -import io.requery.meta.StringAttribute; -import io.requery.meta.Type; -import io.requery.meta.TypeBuilder; -import io.requery.proxy.EntityProxy; -import io.requery.proxy.LongProperty; -import io.requery.proxy.Property; -import io.requery.proxy.PropertyState; -import io.requery.util.function.Function; -import io.requery.util.function.Supplier; -import java.lang.Long; -import java.lang.Object; -import java.lang.Override; -import java.lang.String; -import javax.annotation.Generated; - -@Generated("io.requery.processor.EntityProcessor") -public class ArbitraryStorageEntity implements ArbitraryStorage, Persistable, Parcelable { - public static final NumericAttribute ACCOUNT_IDENTIFIER = - new AttributeBuilder("accountIdentifier", long.class) - .setProperty(new LongProperty() { - @Override - public Long get(ArbitraryStorageEntity entity) { - return entity.accountIdentifier; - } - - @Override - public void set(ArbitraryStorageEntity entity, Long value) { - entity.accountIdentifier = value; - } - - @Override - public long getLong(ArbitraryStorageEntity entity) { - return entity.accountIdentifier; - } - - @Override - public void setLong(ArbitraryStorageEntity entity, long value) { - entity.accountIdentifier = value; - } - }) - .setPropertyName("getAccountIdentifier") - .setPropertyState(new Property() { - @Override - public PropertyState get(ArbitraryStorageEntity entity) { - return entity.$accountIdentifier_state; - } - - @Override - public void set(ArbitraryStorageEntity entity, PropertyState value) { - entity.$accountIdentifier_state = value; - } - }) - .setKey(true) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(false) - .setUnique(false) - .buildNumeric(); - - public static final StringAttribute KEY = - new AttributeBuilder("key", String.class) - .setProperty(new Property() { - @Override - public String get(ArbitraryStorageEntity entity) { - return entity.key; - } - - @Override - public void set(ArbitraryStorageEntity entity, String value) { - entity.key = value; - } - }) - .setPropertyName("getKey") - .setPropertyState(new Property() { - @Override - public PropertyState get(ArbitraryStorageEntity entity) { - return entity.$key_state; - } - - @Override - public void set(ArbitraryStorageEntity entity, PropertyState value) { - entity.$key_state = value; - } - }) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(true) - .setUnique(false) - .buildString(); - - public static final StringAttribute OBJECT = - new AttributeBuilder("object", String.class) - .setProperty(new Property() { - @Override - public String get(ArbitraryStorageEntity entity) { - return entity.object; - } - - @Override - public void set(ArbitraryStorageEntity entity, String value) { - entity.object = value; - } - }) - .setPropertyName("getObject") - .setPropertyState(new Property() { - @Override - public PropertyState get(ArbitraryStorageEntity entity) { - return entity.$object_state; - } - - @Override - public void set(ArbitraryStorageEntity entity, PropertyState value) { - entity.$object_state = value; - } - }) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(true) - .setUnique(false) - .buildString(); - - public static final StringAttribute VALUE = - new AttributeBuilder("value", String.class) - .setProperty(new Property() { - @Override - public String get(ArbitraryStorageEntity entity) { - return entity.value; - } - - @Override - public void set(ArbitraryStorageEntity entity, String value) { - entity.value = value; - } - }) - .setPropertyName("getValue") - .setPropertyState(new Property() { - @Override - public PropertyState get(ArbitraryStorageEntity entity) { - return entity.$value_state; - } - - @Override - public void set(ArbitraryStorageEntity entity, PropertyState value) { - entity.$value_state = value; - } - }) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(true) - .setUnique(false) - .buildString(); - - public static final Type $TYPE = new TypeBuilder(ArbitraryStorageEntity.class, "ArbitraryStorage") - .setBaseType(ArbitraryStorage.class) - .setCacheable(true) - .setImmutable(false) - .setReadOnly(false) - .setStateless(false) - .setView(false) - .setFactory(new Supplier() { - @Override - public ArbitraryStorageEntity get() { - return new ArbitraryStorageEntity(); - } - }) - .setProxyProvider(new Function>() { - @Override - public EntityProxy apply(ArbitraryStorageEntity entity) { - return entity.$proxy; - } - }) - .addAttribute(ACCOUNT_IDENTIFIER) - .addAttribute(VALUE) - .addAttribute(OBJECT) - .addAttribute(KEY) - .build(); - - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - @Override - public ArbitraryStorageEntity createFromParcel(Parcel source) { - return PARCELER.readFromParcel(source); - } - - @Override - public ArbitraryStorageEntity[] newArray(int size) { - return new ArbitraryStorageEntity[size]; - } - }; - - static final EntityParceler PARCELER = new EntityParceler($TYPE); - - private PropertyState $accountIdentifier_state; - - private PropertyState $key_state; - - private PropertyState $object_state; - - private PropertyState $value_state; - - private long accountIdentifier; - - private String key; - - private String object; - - private String value; - - private final transient EntityProxy $proxy = new EntityProxy(this, $TYPE); - - public ArbitraryStorageEntity() { - } - - @Override - public long getAccountIdentifier() { - return $proxy.get(ACCOUNT_IDENTIFIER); - } - - public void setAccountIdentifier(long accountIdentifier) { - $proxy.set(ACCOUNT_IDENTIFIER, accountIdentifier); - } - - @Override - public String getKey() { - return $proxy.get(KEY); - } - - public void setKey(String key) { - $proxy.set(KEY, key); - } - - @Override - public String getObject() { - return $proxy.get(OBJECT); - } - - public void setObject(String object) { - $proxy.set(OBJECT, object); - } - - @Override - public String getValue() { - return $proxy.get(VALUE); - } - - public void setValue(String value) { - $proxy.set(VALUE, value); - } - - @Override - public boolean equals(Object obj) { - return obj instanceof ArbitraryStorageEntity && ((ArbitraryStorageEntity)obj).$proxy.equals(this.$proxy); - } - - @Override - public int hashCode() { - return $proxy.hashCode(); - } - - @Override - public String toString() { - return $proxy.toString(); - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - PARCELER.writeToParcel(this, dest); - } -} diff --git a/presentation/src/main/java/com/nextcloud/talk/models/database/Models.java b/presentation/src/main/java/com/nextcloud/talk/models/database/Models.java deleted file mode 100644 index e7444aa53..000000000 --- a/presentation/src/main/java/com/nextcloud/talk/models/database/Models.java +++ /dev/null @@ -1,17 +0,0 @@ -// Generated file do not edit, generated by io.requery.processor.EntityProcessor -package com.nextcloud.talk.models.database; - -import io.requery.meta.EntityModel; -import io.requery.meta.EntityModelBuilder; -import javax.annotation.Generated; - -@Generated("io.requery.processor.EntityProcessor") -public class Models { - public static final EntityModel DEFAULT = new EntityModelBuilder("default") - .addType(UserEntity.$TYPE) - .addType(ArbitraryStorageEntity.$TYPE) - .build(); - - private Models() { - } -} diff --git a/presentation/src/main/java/com/nextcloud/talk/models/database/User.java b/presentation/src/main/java/com/nextcloud/talk/models/database/User.java index 0bafe3f5f..dbc42879a 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/database/User.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/database/User.java @@ -22,12 +22,11 @@ package com.nextcloud.talk.models.database; import android.os.Parcelable; import android.util.Log; import com.bluelinelabs.logansquare.LoganSquare; -import com.nextcloud.data.models.json.capabilities.Capabilities; +import com.nextcloud.talk.models.json.capabilities.Capabilities; import io.requery.Entity; import io.requery.Generated; import io.requery.Key; import io.requery.Persistable; - import java.io.IOException; import java.io.Serializable; import java.util.HashMap; diff --git a/presentation/src/main/java/com/nextcloud/talk/models/database/UserEntity.java b/presentation/src/main/java/com/nextcloud/talk/models/database/UserEntity.java deleted file mode 100644 index 939de13bb..000000000 --- a/presentation/src/main/java/com/nextcloud/talk/models/database/UserEntity.java +++ /dev/null @@ -1,674 +0,0 @@ -// Generated file do not edit, generated by io.requery.processor.EntityProcessor -package com.nextcloud.talk.models.database; - -import android.os.Parcel; -import android.os.Parcelable; - -import io.requery.Persistable; -import io.requery.android.EntityParceler; -import io.requery.meta.AttributeBuilder; -import io.requery.meta.NumericAttribute; -import io.requery.meta.QueryAttribute; -import io.requery.meta.StringAttribute; -import io.requery.meta.Type; -import io.requery.meta.TypeBuilder; -import io.requery.proxy.BooleanProperty; -import io.requery.proxy.EntityProxy; -import io.requery.proxy.LongProperty; -import io.requery.proxy.Property; -import io.requery.proxy.PropertyState; -import io.requery.util.function.Function; -import io.requery.util.function.Supplier; -import java.lang.Boolean; -import java.lang.Long; -import java.lang.Object; -import java.lang.Override; -import java.lang.String; -import javax.annotation.Generated; - -@Generated("io.requery.processor.EntityProcessor") -public class UserEntity implements User, Persistable, Parcelable { - public static final NumericAttribute ID = - new AttributeBuilder("id", long.class) - .setProperty(new LongProperty() { - @Override - public Long get(UserEntity entity) { - return entity.id; - } - - @Override - public void set(UserEntity entity, Long value) { - entity.id = value; - } - - @Override - public long getLong(UserEntity entity) { - return entity.id; - } - - @Override - public void setLong(UserEntity entity, long value) { - entity.id = value; - } - }) - .setPropertyName("getId") - .setPropertyState(new Property() { - @Override - public PropertyState get(UserEntity entity) { - return entity.$id_state; - } - - @Override - public void set(UserEntity entity, PropertyState value) { - entity.$id_state = value; - } - }) - .setKey(true) - .setGenerated(true) - .setReadOnly(true) - .setLazy(false) - .setNullable(false) - .setUnique(false) - .buildNumeric(); - - public static final StringAttribute USER_ID = - new AttributeBuilder("userId", String.class) - .setProperty(new Property() { - @Override - public String get(UserEntity entity) { - return entity.userId; - } - - @Override - public void set(UserEntity entity, String value) { - entity.userId = value; - } - }) - .setPropertyName("getUserId") - .setPropertyState(new Property() { - @Override - public PropertyState get(UserEntity entity) { - return entity.$userId_state; - } - - @Override - public void set(UserEntity entity, PropertyState value) { - entity.$userId_state = value; - } - }) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(true) - .setUnique(false) - .buildString(); - - public static final StringAttribute USERNAME = - new AttributeBuilder("username", String.class) - .setProperty(new Property() { - @Override - public String get(UserEntity entity) { - return entity.username; - } - - @Override - public void set(UserEntity entity, String value) { - entity.username = value; - } - }) - .setPropertyName("getUsername") - .setPropertyState(new Property() { - @Override - public PropertyState get(UserEntity entity) { - return entity.$username_state; - } - - @Override - public void set(UserEntity entity, PropertyState value) { - entity.$username_state = value; - } - }) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(true) - .setUnique(false) - .buildString(); - - public static final StringAttribute BASE_URL = - new AttributeBuilder("baseUrl", String.class) - .setProperty(new Property() { - @Override - public String get(UserEntity entity) { - return entity.baseUrl; - } - - @Override - public void set(UserEntity entity, String value) { - entity.baseUrl = value; - } - }) - .setPropertyName("getBaseUrl") - .setPropertyState(new Property() { - @Override - public PropertyState get(UserEntity entity) { - return entity.$baseUrl_state; - } - - @Override - public void set(UserEntity entity, PropertyState value) { - entity.$baseUrl_state = value; - } - }) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(true) - .setUnique(false) - .buildString(); - - public static final StringAttribute TOKEN = - new AttributeBuilder("token", String.class) - .setProperty(new Property() { - @Override - public String get(UserEntity entity) { - return entity.token; - } - - @Override - public void set(UserEntity entity, String value) { - entity.token = value; - } - }) - .setPropertyName("getToken") - .setPropertyState(new Property() { - @Override - public PropertyState get(UserEntity entity) { - return entity.$token_state; - } - - @Override - public void set(UserEntity entity, PropertyState value) { - entity.$token_state = value; - } - }) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(true) - .setUnique(false) - .buildString(); - - public static final StringAttribute DISPLAY_NAME = - new AttributeBuilder("displayName", String.class) - .setProperty(new Property() { - @Override - public String get(UserEntity entity) { - return entity.displayName; - } - - @Override - public void set(UserEntity entity, String value) { - entity.displayName = value; - } - }) - .setPropertyName("getDisplayName") - .setPropertyState(new Property() { - @Override - public PropertyState get(UserEntity entity) { - return entity.$displayName_state; - } - - @Override - public void set(UserEntity entity, PropertyState value) { - entity.$displayName_state = value; - } - }) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(true) - .setUnique(false) - .buildString(); - - public static final StringAttribute PUSH_CONFIGURATION_STATE = - new AttributeBuilder("pushConfigurationState", String.class) - .setProperty(new Property() { - @Override - public String get(UserEntity entity) { - return entity.pushConfigurationState; - } - - @Override - public void set(UserEntity entity, String value) { - entity.pushConfigurationState = value; - } - }) - .setPropertyName("getPushConfigurationState") - .setPropertyState(new Property() { - @Override - public PropertyState get(UserEntity entity) { - return entity.$pushConfigurationState_state; - } - - @Override - public void set(UserEntity entity, PropertyState value) { - entity.$pushConfigurationState_state = value; - } - }) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(true) - .setUnique(false) - .buildString(); - - public static final StringAttribute CAPABILITIES = - new AttributeBuilder("capabilities", String.class) - .setProperty(new Property() { - @Override - public String get(UserEntity entity) { - return entity.capabilities; - } - - @Override - public void set(UserEntity entity, String value) { - entity.capabilities = value; - } - }) - .setPropertyName("getCapabilities") - .setPropertyState(new Property() { - @Override - public PropertyState get(UserEntity entity) { - return entity.$capabilities_state; - } - - @Override - public void set(UserEntity entity, PropertyState value) { - entity.$capabilities_state = value; - } - }) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(true) - .setUnique(false) - .buildString(); - - public static final StringAttribute CLIENT_CERTIFICATE = - new AttributeBuilder("clientCertificate", String.class) - .setProperty(new Property() { - @Override - public String get(UserEntity entity) { - return entity.clientCertificate; - } - - @Override - public void set(UserEntity entity, String value) { - entity.clientCertificate = value; - } - }) - .setPropertyName("getClientCertificate") - .setPropertyState(new Property() { - @Override - public PropertyState get(UserEntity entity) { - return entity.$clientCertificate_state; - } - - @Override - public void set(UserEntity entity, PropertyState value) { - entity.$clientCertificate_state = value; - } - }) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(true) - .setUnique(false) - .buildString(); - - public static final StringAttribute EXTERNAL_SIGNALING_SERVER = - new AttributeBuilder("externalSignalingServer", String.class) - .setProperty(new Property() { - @Override - public String get(UserEntity entity) { - return entity.externalSignalingServer; - } - - @Override - public void set(UserEntity entity, String value) { - entity.externalSignalingServer = value; - } - }) - .setPropertyName("getExternalSignalingServer") - .setPropertyState(new Property() { - @Override - public PropertyState get(UserEntity entity) { - return entity.$externalSignalingServer_state; - } - - @Override - public void set(UserEntity entity, PropertyState value) { - entity.$externalSignalingServer_state = value; - } - }) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(true) - .setUnique(false) - .buildString(); - - public static final QueryAttribute CURRENT = - new AttributeBuilder("current", boolean.class) - .setProperty(new BooleanProperty() { - @Override - public Boolean get(UserEntity entity) { - return entity.current; - } - - @Override - public void set(UserEntity entity, Boolean value) { - entity.current = value; - } - - @Override - public boolean getBoolean(UserEntity entity) { - return entity.current; - } - - @Override - public void setBoolean(UserEntity entity, boolean value) { - entity.current = value; - } - }) - .setPropertyName("getCurrent") - .setPropertyState(new Property() { - @Override - public PropertyState get(UserEntity entity) { - return entity.$current_state; - } - - @Override - public void set(UserEntity entity, PropertyState value) { - entity.$current_state = value; - } - }) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(false) - .setUnique(false) - .build(); - - public static final QueryAttribute SCHEDULED_FOR_DELETION = - new AttributeBuilder("scheduledForDeletion", boolean.class) - .setProperty(new BooleanProperty() { - @Override - public Boolean get(UserEntity entity) { - return entity.scheduledForDeletion; - } - - @Override - public void set(UserEntity entity, Boolean value) { - entity.scheduledForDeletion = value; - } - - @Override - public boolean getBoolean(UserEntity entity) { - return entity.scheduledForDeletion; - } - - @Override - public void setBoolean(UserEntity entity, boolean value) { - entity.scheduledForDeletion = value; - } - }) - .setPropertyName("getScheduledForDeletion") - .setPropertyState(new Property() { - @Override - public PropertyState get(UserEntity entity) { - return entity.$scheduledForDeletion_state; - } - - @Override - public void set(UserEntity entity, PropertyState value) { - entity.$scheduledForDeletion_state = value; - } - }) - .setGenerated(false) - .setReadOnly(false) - .setLazy(false) - .setNullable(false) - .setUnique(false) - .build(); - - public static final Type $TYPE = new TypeBuilder(UserEntity.class, "User") - .setBaseType(User.class) - .setCacheable(true) - .setImmutable(false) - .setReadOnly(false) - .setStateless(false) - .setView(false) - .setFactory(new Supplier() { - @Override - public UserEntity get() { - return new UserEntity(); - } - }) - .setProxyProvider(new Function>() { - @Override - public EntityProxy apply(UserEntity entity) { - return entity.$proxy; - } - }) - .addAttribute(PUSH_CONFIGURATION_STATE) - .addAttribute(CAPABILITIES) - .addAttribute(USER_ID) - .addAttribute(USERNAME) - .addAttribute(ID) - .addAttribute(CLIENT_CERTIFICATE) - .addAttribute(EXTERNAL_SIGNALING_SERVER) - .addAttribute(BASE_URL) - .addAttribute(TOKEN) - .addAttribute(DISPLAY_NAME) - .addAttribute(CURRENT) - .addAttribute(SCHEDULED_FOR_DELETION) - .build(); - - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - @Override - public UserEntity createFromParcel(Parcel source) { - return PARCELER.readFromParcel(source); - } - - @Override - public UserEntity[] newArray(int size) { - return new UserEntity[size]; - } - }; - - static final EntityParceler PARCELER = new EntityParceler($TYPE); - - private PropertyState $id_state; - - private PropertyState $userId_state; - - private PropertyState $username_state; - - private PropertyState $baseUrl_state; - - private PropertyState $token_state; - - private PropertyState $displayName_state; - - private PropertyState $pushConfigurationState_state; - - private PropertyState $capabilities_state; - - private PropertyState $clientCertificate_state; - - private PropertyState $externalSignalingServer_state; - - private PropertyState $current_state; - - private PropertyState $scheduledForDeletion_state; - - private long id; - - private String userId; - - private String username; - - private String baseUrl; - - private String token; - - private String displayName; - - private String pushConfigurationState; - - private String capabilities; - - private String clientCertificate; - - private String externalSignalingServer; - - private boolean current; - - private boolean scheduledForDeletion; - - private final transient EntityProxy $proxy = new EntityProxy(this, $TYPE); - - public UserEntity() { - } - - @Override - public long getId() { - return $proxy.get(ID); - } - - @Override - public String getUserId() { - return $proxy.get(USER_ID); - } - - public void setUserId(String userId) { - $proxy.set(USER_ID, userId); - } - - @Override - public String getUsername() { - return $proxy.get(USERNAME); - } - - public void setUsername(String username) { - $proxy.set(USERNAME, username); - } - - @Override - public String getBaseUrl() { - return $proxy.get(BASE_URL); - } - - public void setBaseUrl(String baseUrl) { - $proxy.set(BASE_URL, baseUrl); - } - - @Override - public String getToken() { - return $proxy.get(TOKEN); - } - - public void setToken(String token) { - $proxy.set(TOKEN, token); - } - - @Override - public String getDisplayName() { - return $proxy.get(DISPLAY_NAME); - } - - public void setDisplayName(String displayName) { - $proxy.set(DISPLAY_NAME, displayName); - } - - @Override - public String getPushConfigurationState() { - return $proxy.get(PUSH_CONFIGURATION_STATE); - } - - public void setPushConfigurationState(String pushConfigurationState) { - $proxy.set(PUSH_CONFIGURATION_STATE, pushConfigurationState); - } - - @Override - public String getCapabilities() { - return $proxy.get(CAPABILITIES); - } - - public void setCapabilities(String capabilities) { - $proxy.set(CAPABILITIES, capabilities); - } - - @Override - public String getClientCertificate() { - return $proxy.get(CLIENT_CERTIFICATE); - } - - public void setClientCertificate(String clientCertificate) { - $proxy.set(CLIENT_CERTIFICATE, clientCertificate); - } - - @Override - public String getExternalSignalingServer() { - return $proxy.get(EXTERNAL_SIGNALING_SERVER); - } - - public void setExternalSignalingServer(String externalSignalingServer) { - $proxy.set(EXTERNAL_SIGNALING_SERVER, externalSignalingServer); - } - - @Override - public boolean getCurrent() { - return $proxy.get(CURRENT); - } - - public void setCurrent(boolean current) { - $proxy.set(CURRENT, current); - } - - @Override - public boolean getScheduledForDeletion() { - return $proxy.get(SCHEDULED_FOR_DELETION); - } - - public void setScheduledForDeletion(boolean scheduledForDeletion) { - $proxy.set(SCHEDULED_FOR_DELETION, scheduledForDeletion); - } - - @Override - public boolean equals(Object obj) { - return obj instanceof UserEntity && ((UserEntity)obj).$proxy.equals(this.$proxy); - } - - @Override - public int hashCode() { - return $proxy.hashCode(); - } - - @Override - public String toString() { - return $proxy.toString(); - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - PARCELER.writeToParcel(this, dest); - } -} diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOCS.java b/presentation/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOCS.java index 934911627..e75e8fd98 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOCS.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOCS.java @@ -23,11 +23,10 @@ package com.nextcloud.talk.models.json.autocomplete; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; import com.nextcloud.talk.models.json.generic.GenericOCS; +import java.util.List; import lombok.Data; import org.parceler.Parcel; -import java.util.List; - @Parcel @Data @JsonObject diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/capabilities/Capabilities.java b/presentation/src/main/java/com/nextcloud/talk/models/json/capabilities/Capabilities.java index a96787056..fb93a7aef 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/capabilities/Capabilities.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/capabilities/Capabilities.java @@ -22,11 +22,10 @@ package com.nextcloud.talk.models.json.capabilities; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; -import lombok.Data; -import org.parceler.Parcel; - import java.util.HashMap; import java.util.List; +import lombok.Data; +import org.parceler.Parcel; @Parcel @Data diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/capabilities/NotificationsCapability.java b/presentation/src/main/java/com/nextcloud/talk/models/json/capabilities/NotificationsCapability.java index 1e413cfee..04716c0ba 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/capabilities/NotificationsCapability.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/capabilities/NotificationsCapability.java @@ -22,11 +22,10 @@ package com.nextcloud.talk.models.json.capabilities; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; +import java.util.List; import lombok.Data; import org.parceler.Parcel; -import java.util.List; - @Parcel @Data @JsonObject diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/capabilities/SpreedCapability.java b/presentation/src/main/java/com/nextcloud/talk/models/json/capabilities/SpreedCapability.java index 8a15515f6..10764c0fc 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/capabilities/SpreedCapability.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/capabilities/SpreedCapability.java @@ -22,11 +22,10 @@ package com.nextcloud.talk.models.json.capabilities; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; -import lombok.Data; -import org.parceler.Parcel; - import java.util.HashMap; import java.util.List; +import lombok.Data; +import org.parceler.Parcel; @Parcel @Data diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java b/presentation/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java index 798974d10..73654e79f 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java @@ -33,11 +33,14 @@ import com.nextcloud.talk.utils.TextMatchers; import com.stfalcon.chatkit.commons.models.IMessage; import com.stfalcon.chatkit.commons.models.IUser; import com.stfalcon.chatkit.commons.models.MessageContentType; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import lombok.Data; import org.parceler.Parcel; -import java.util.*; - @Parcel @Data @JsonObject diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCS.java b/presentation/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCS.java index b5cf0cd7d..c43ae2780 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCS.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCS.java @@ -22,11 +22,10 @@ package com.nextcloud.talk.models.json.chat; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; import com.nextcloud.talk.models.json.generic.GenericOCS; +import java.util.List; import lombok.Data; import org.parceler.Parcel; -import java.util.List; - @Data @Parcel @JsonObject diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.java b/presentation/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.java index a63dd149f..f974a32e6 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.java @@ -21,7 +21,6 @@ package com.nextcloud.talk.models.json.conversations; import android.content.res.Resources; - import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; import com.nextcloud.talk.R; @@ -34,12 +33,9 @@ import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter; import com.nextcloud.talk.models.json.converters.EnumReadOnlyConversationConverter; import com.nextcloud.talk.models.json.converters.EnumRoomTypeConverter; import com.nextcloud.talk.models.json.participants.Participant; - -import org.parceler.Parcel; - import java.util.HashMap; - import lombok.Data; +import org.parceler.Parcel; @Parcel @Data diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/conversations/RoomsOCS.java b/presentation/src/main/java/com/nextcloud/talk/models/json/conversations/RoomsOCS.java index 2aa2b35a6..070242718 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/conversations/RoomsOCS.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/conversations/RoomsOCS.java @@ -23,11 +23,10 @@ package com.nextcloud.talk.models.json.conversations; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; import com.nextcloud.talk.models.json.generic.GenericOCS; +import java.util.List; import lombok.Data; import org.parceler.Parcel; -import java.util.List; - @Data @Parcel @JsonObject diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/converters/EnumSystemMessageTypeConverter.kt b/presentation/src/main/java/com/nextcloud/talk/models/json/converters/EnumSystemMessageTypeConverter.kt index 48205eff3..bca1a8066 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/converters/EnumSystemMessageTypeConverter.kt +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/converters/EnumSystemMessageTypeConverter.kt @@ -22,8 +22,25 @@ package com.nextcloud.talk.models.json.converters import com.bluelinelabs.logansquare.typeconverters.StringBasedTypeConverter import com.nextcloud.talk.models.json.chat.ChatMessage - -import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.* +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_ENDED +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_JOINED +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_LEFT +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_STARTED +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CONVERSATION_CREATED +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CONVERSATION_RENAMED +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.DUMMY +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.FILE_SHARED +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.GUESTS_ALLOWED +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.GUESTS_DISALLOWED +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.LOBBY_NONE +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.LOBBY_NON_MODERATORS +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.LOBBY_OPEN_TO_EVERYONE +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.MODERATOR_DEMOTED +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.MODERATOR_PROMOTED +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.PASSWORD_REMOVED +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.PASSWORD_SET +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.USER_ADDED +import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.USER_REMOVED /* diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/converters/LoganSquareJodaTimeConverter.java b/presentation/src/main/java/com/nextcloud/talk/models/json/converters/LoganSquareJodaTimeConverter.java index 65f5d792a..9e8709224 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/converters/LoganSquareJodaTimeConverter.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/converters/LoganSquareJodaTimeConverter.java @@ -19,16 +19,12 @@ package com.nextcloud.talk.models.json.converters; - import android.util.Log; - import com.bluelinelabs.logansquare.typeconverters.TypeConverter; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; - -import org.joda.time.DateTime; - import java.io.IOException; +import org.joda.time.DateTime; public class LoganSquareJodaTimeConverter implements TypeConverter { diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/mention/MentionOCS.java b/presentation/src/main/java/com/nextcloud/talk/models/json/mention/MentionOCS.java index 5180635c1..7883e44ef 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/mention/MentionOCS.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/mention/MentionOCS.java @@ -22,11 +22,10 @@ package com.nextcloud.talk.models.json.mention; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; import com.nextcloud.talk.models.json.generic.GenericOCS; +import java.util.List; import lombok.Data; import org.parceler.Parcel; -import java.util.List; - @Data @Parcel @JsonObject diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.java b/presentation/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.java index e14c5bfd5..ff4b23ca8 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.java @@ -23,15 +23,11 @@ package com.nextcloud.talk.models.json.notifications; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; import com.nextcloud.talk.models.json.converters.LoganSquareJodaTimeConverter; - -import org.joda.time.DateTime; -import org.parceler.Parcel; - -import java.util.Date; import java.util.HashMap; import java.util.List; - import lombok.Data; +import org.joda.time.DateTime; +import org.parceler.Parcel; @Data @Parcel diff --git a/domain/src/test/java/com/nextcloud/domain/ExampleUnitTest.kt b/presentation/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOverall.java similarity index 69% rename from domain/src/test/java/com/nextcloud/domain/ExampleUnitTest.kt rename to presentation/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOverall.java index c8fcd1d0e..c6d319433 100644 --- a/domain/src/test/java/com/nextcloud/domain/ExampleUnitTest.kt +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOverall.java @@ -18,20 +18,15 @@ * along with this program. If not, see . */ -package com.nextcloud.domain +package com.nextcloud.talk.models.json.notifications; -import org.junit.Test +import com.bluelinelabs.logansquare.annotation.JsonField; +import com.bluelinelabs.logansquare.annotation.JsonObject; +import lombok.Data; -import org.junit.Assert.* - -/** - * Example local unit test, which will execute on the development machine (host). - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -class ExampleUnitTest { - @Test - fun addition_isCorrect() { - assertEquals(4, 2 + 2) - } +@Data +@JsonObject +public class NotificationOverall { + @JsonField(name = "ocs") + NotificationOCS ocs; } diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOCS.java b/presentation/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOCS.java index f2e792326..fa7956dc2 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOCS.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOCS.java @@ -23,11 +23,10 @@ package com.nextcloud.talk.models.json.notifications; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; import com.nextcloud.talk.models.json.generic.GenericOCS; +import java.util.List; import lombok.Data; import org.parceler.Parcel; -import java.util.List; - @Data @Parcel @JsonObject diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOCS.java b/presentation/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOCS.java index 443abdc0d..8402b75e9 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOCS.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOCS.java @@ -22,8 +22,8 @@ package com.nextcloud.talk.models.json.participants; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; -import com.nextcloud.talk.models.json.generic.GenericOCS; import com.nextcloud.talk.models.json.conversations.Conversation; +import com.nextcloud.talk.models.json.generic.GenericOCS; @JsonObject public class AddParticipantOCS extends GenericOCS { diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOCS.java b/presentation/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOCS.java index b27fdd088..b1d5a2add 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOCS.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOCS.java @@ -23,11 +23,10 @@ package com.nextcloud.talk.models.json.participants; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; import com.nextcloud.talk.models.json.generic.GenericOCS; +import java.util.List; import lombok.Data; import org.parceler.Parcel; -import java.util.List; - @Parcel @Data @JsonObject diff --git a/data/src/test/java/com/nextcloud/data/ExampleUnitTest.kt b/presentation/src/main/java/com/nextcloud/talk/models/json/push/NotificationUser.java similarity index 65% rename from data/src/test/java/com/nextcloud/data/ExampleUnitTest.kt rename to presentation/src/main/java/com/nextcloud/talk/models/json/push/NotificationUser.java index 37e9b45e8..81e8e7a46 100644 --- a/data/src/test/java/com/nextcloud/data/ExampleUnitTest.kt +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/push/NotificationUser.java @@ -1,37 +1,40 @@ /* * Nextcloud Talk application - * + * * @author Mario Danic * Copyright (C) 2017-2019 Mario Danic - * + * * 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 . */ -package com.nextcloud.data +package com.nextcloud.talk.models.json.push; -import org.junit.Test +import com.bluelinelabs.logansquare.annotation.JsonField; +import com.bluelinelabs.logansquare.annotation.JsonObject; +import lombok.Data; +import org.parceler.Parcel; -import org.junit.Assert.* +@Data +@Parcel +@JsonObject +public class NotificationUser { + @JsonField(name = "type") + String type; -/** - * Example local unit test, which will execute on the development machine (host). - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -class ExampleUnitTest { - @Test - fun addition_isCorrect() { - assertEquals(4, 2 + 2) - } + @JsonField(name = "id") + String id; + + @JsonField(name = "name") + String name; } diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/sharees/ExactSharees.java b/presentation/src/main/java/com/nextcloud/talk/models/json/sharees/ExactSharees.java index eae480402..b96cda6af 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/sharees/ExactSharees.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/sharees/ExactSharees.java @@ -22,11 +22,10 @@ package com.nextcloud.talk.models.json.sharees; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; +import java.util.List; import lombok.Data; import org.parceler.Parcel; -import java.util.List; - @Parcel @Data @JsonObject diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/sharees/SharesData.java b/presentation/src/main/java/com/nextcloud/talk/models/json/sharees/SharesData.java index 37dd23821..952b235ab 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/sharees/SharesData.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/sharees/SharesData.java @@ -22,11 +22,10 @@ package com.nextcloud.talk.models.json.sharees; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; +import java.util.List; import lombok.Data; import org.parceler.Parcel; -import java.util.List; - @Parcel @Data @JsonObject diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/DataChannelMessageNick.java b/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/DataChannelMessageNick.java index 4e5cffc20..12e67a60b 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/DataChannelMessageNick.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/DataChannelMessageNick.java @@ -23,11 +23,10 @@ package com.nextcloud.talk.models.json.signaling; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; import com.nextcloud.talk.models.json.converters.ObjectParcelConverter; +import java.util.HashMap; import lombok.Data; import org.parceler.ParcelPropertyConverter; -import java.util.HashMap; - @Data @JsonObject public class DataChannelMessageNick { diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/SignalingOCS.java b/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/SignalingOCS.java index a8c44dfe2..619fa12cf 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/SignalingOCS.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/SignalingOCS.java @@ -23,9 +23,8 @@ package com.nextcloud.talk.models.json.signaling; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; import com.nextcloud.talk.models.json.generic.GenericOCS; -import lombok.Data; - import java.util.List; +import lombok.Data; @Data @JsonObject diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/settings/IceServer.java b/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/settings/IceServer.java index 1bad04a55..6b793a543 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/settings/IceServer.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/settings/IceServer.java @@ -22,9 +22,8 @@ package com.nextcloud.talk.models.json.signaling.settings; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; -import lombok.Data; - import java.util.List; +import lombok.Data; @Data @JsonObject diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/settings/Settings.java b/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/settings/Settings.java index c07e1a365..a723d4c9d 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/settings/Settings.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/signaling/settings/Settings.java @@ -22,9 +22,8 @@ package com.nextcloud.talk.models.json.signaling.settings; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; -import lombok.Data; - import java.util.List; +import lombok.Data; @Data @JsonObject diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/ByeWebSocketMessage.java b/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/ByeWebSocketMessage.java index 57f5ccee5..a534031ef 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/ByeWebSocketMessage.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/ByeWebSocketMessage.java @@ -22,11 +22,10 @@ package com.nextcloud.talk.models.json.websocket; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; +import java.util.HashMap; import lombok.Data; import org.parceler.Parcel; -import java.util.HashMap; - @JsonObject @Parcel @Data diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/EventOverallWebSocketMessage.java b/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/EventOverallWebSocketMessage.java index c131fce6c..d61f6de9b 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/EventOverallWebSocketMessage.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/EventOverallWebSocketMessage.java @@ -22,11 +22,10 @@ package com.nextcloud.talk.models.json.websocket; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; +import java.util.HashMap; import lombok.Data; import org.parceler.Parcel; -import java.util.HashMap; - @Data @Parcel @JsonObject diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/RoomPropertiesWebSocketMessage.java b/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/RoomPropertiesWebSocketMessage.java index 7e4372a11..15d5b1b15 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/RoomPropertiesWebSocketMessage.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/RoomPropertiesWebSocketMessage.java @@ -22,8 +22,8 @@ package com.nextcloud.talk.models.json.websocket; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; -import com.nextcloud.talk.models.json.converters.EnumRoomTypeConverter; import com.nextcloud.talk.models.json.conversations.Conversation; +import com.nextcloud.talk.models.json.converters.EnumRoomTypeConverter; import lombok.Data; import org.parceler.Parcel; diff --git a/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/ServerHelloResponseFeaturesWebSocketMessage.java b/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/ServerHelloResponseFeaturesWebSocketMessage.java index 7c5927c71..67b3ce3b6 100644 --- a/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/ServerHelloResponseFeaturesWebSocketMessage.java +++ b/presentation/src/main/java/com/nextcloud/talk/models/json/websocket/ServerHelloResponseFeaturesWebSocketMessage.java @@ -22,11 +22,10 @@ package com.nextcloud.talk.models.json.websocket; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; +import java.util.List; import lombok.Data; import org.parceler.Parcel; -import java.util.List; - @JsonObject @Parcel @Data diff --git a/presentation/src/main/java/com/nextcloud/talk/features/conversationsList/ConversationsListContract.kt b/presentation/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListContract.kt similarity index 89% rename from presentation/src/main/java/com/nextcloud/talk/features/conversationsList/ConversationsListContract.kt rename to presentation/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListContract.kt index fbba22a99..755afe5a5 100644 --- a/presentation/src/main/java/com/nextcloud/talk/features/conversationsList/ConversationsListContract.kt +++ b/presentation/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListContract.kt @@ -18,9 +18,9 @@ * along with this program. If not, see . */ -package com.nextcloud.talk.features.conversationsList +package com.nextcloud.talk.newarch.conversationsList -import com.nextcloud.data.models.json.conversations.Conversation +import com.nextcloud.talk.models.json.conversations.Conversation class ConversationsListContract { interface View { diff --git a/presentation/src/main/java/com/nextcloud/talk/mvp/BaseMvpView.kt b/presentation/src/main/java/com/nextcloud/talk/newarch/mvp/BaseMvpView.kt similarity index 95% rename from presentation/src/main/java/com/nextcloud/talk/mvp/BaseMvpView.kt rename to presentation/src/main/java/com/nextcloud/talk/newarch/mvp/BaseMvpView.kt index 10a7969ab..25683f96b 100644 --- a/presentation/src/main/java/com/nextcloud/talk/mvp/BaseMvpView.kt +++ b/presentation/src/main/java/com/nextcloud/talk/newarch/mvp/BaseMvpView.kt @@ -18,9 +18,8 @@ * along with this program. If not, see . */ -package com.nextcloud.talk.mvp +package com.nextcloud.talk.newarch.conversationsList.mvp -import android.content.Context import android.view.View import androidx.annotation.LayoutRes import autodagger.AutoInjector diff --git a/presentation/src/main/java/com/nextcloud/talk/mvp/BasePresenter.kt b/presentation/src/main/java/com/nextcloud/talk/newarch/mvp/BasePresenter.kt similarity index 95% rename from presentation/src/main/java/com/nextcloud/talk/mvp/BasePresenter.kt rename to presentation/src/main/java/com/nextcloud/talk/newarch/mvp/BasePresenter.kt index 71f9e595e..150d4b1cd 100644 --- a/presentation/src/main/java/com/nextcloud/talk/mvp/BasePresenter.kt +++ b/presentation/src/main/java/com/nextcloud/talk/newarch/mvp/BasePresenter.kt @@ -18,7 +18,7 @@ * along with this program. If not, see . */ -package com.nextcloud.talk.mvp +package com.nextcloud.talk.newarch.conversationsList.mvp import io.reactivex.disposables.CompositeDisposable diff --git a/presentation/src/main/java/com/nextcloud/talk/mvp/MvpPresenter.kt b/presentation/src/main/java/com/nextcloud/talk/newarch/mvp/MvpPresenter.kt similarity index 93% rename from presentation/src/main/java/com/nextcloud/talk/mvp/MvpPresenter.kt rename to presentation/src/main/java/com/nextcloud/talk/newarch/mvp/MvpPresenter.kt index 45c0c29fb..1eb140889 100644 --- a/presentation/src/main/java/com/nextcloud/talk/mvp/MvpPresenter.kt +++ b/presentation/src/main/java/com/nextcloud/talk/newarch/mvp/MvpPresenter.kt @@ -18,7 +18,7 @@ * along with this program. If not, see . */ -package com.nextcloud.talk.mvp +package com.nextcloud.talk.newarch.conversationsList.mvp interface MvpPresenter { fun stop() diff --git a/presentation/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java b/presentation/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java index d26a19baa..3e429a69b 100644 --- a/presentation/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java +++ b/presentation/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java @@ -25,12 +25,12 @@ import android.view.View; import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; import autodagger.AutoInjector; +import com.nextcloud.talk.models.json.mention.Mention; +import com.nextcloud.talk.models.json.mention.MentionOverall; import com.nextcloud.talk.adapters.items.MentionAutocompleteItem; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.mention.Mention; -import com.nextcloud.data.models.json.mention.MentionOverall; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.database.user.UserUtils; import com.otaliastudios.autocomplete.RecyclerViewPresenter; @@ -40,10 +40,9 @@ import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; - -import javax.inject.Inject; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; @AutoInjector(NextcloudTalkApplication.class) public class MentionAutocompletePresenter extends RecyclerViewPresenter implements FlexibleAdapter.OnItemClickListener { diff --git a/presentation/src/main/java/com/nextcloud/talk/receivers/PackageReplacedReceiver.kt b/presentation/src/main/java/com/nextcloud/talk/receivers/PackageReplacedReceiver.kt index c0c77303e..232d31322 100644 --- a/presentation/src/main/java/com/nextcloud/talk/receivers/PackageReplacedReceiver.kt +++ b/presentation/src/main/java/com/nextcloud/talk/receivers/PackageReplacedReceiver.kt @@ -20,12 +20,10 @@ package com.nextcloud.talk.receivers -import android.app.NotificationChannelGroup import android.app.NotificationManager import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.os.Build import android.util.Log @@ -34,7 +32,6 @@ import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.utils.NotificationUtils import com.nextcloud.talk.utils.database.user.UserUtils import com.nextcloud.talk.utils.preferences.AppPreferences - import javax.inject.Inject @AutoInjector(NextcloudTalkApplication::class) diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt b/presentation/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt index e2173ed2a..b8ce1cd12 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt +++ b/presentation/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt @@ -28,11 +28,12 @@ import android.accounts.AccountManager import android.content.Context import android.content.pm.PackageManager import android.util.Log +import com.nextcloud.talk.models.ImportAccount import com.nextcloud.talk.R import com.nextcloud.talk.application.NextcloudTalkApplication -import com.nextcloud.data.models.ImportAccount import com.nextcloud.talk.models.database.UserEntity -import java.util.* +import java.util.ArrayList +import java.util.Arrays object AccountUtils { diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/ApiUtils.java b/presentation/src/main/java/com/nextcloud/talk/utils/ApiUtils.java index ec967b016..6ed0b0f8d 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/ApiUtils.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/ApiUtils.java @@ -22,15 +22,14 @@ package com.nextcloud.talk.utils; import android.net.Uri; import android.text.TextUtils; import androidx.annotation.DimenRes; +import com.nextcloud.talk.models.RetrofitBucket; import com.nextcloud.talk.BuildConfig; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; -import com.nextcloud.data.models.RetrofitBucket; -import okhttp3.Credentials; - -import javax.annotation.Nullable; import java.util.HashMap; import java.util.Map; +import javax.annotation.Nullable; +import okhttp3.Credentials; public class ApiUtils { private static String ocsApiVersion = "/ocs/v2.php"; diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/DateUtils.kt b/presentation/src/main/java/com/nextcloud/talk/utils/DateUtils.kt index 20fceb297..883c0e2a3 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/DateUtils.kt +++ b/presentation/src/main/java/com/nextcloud/talk/utils/DateUtils.kt @@ -21,8 +21,9 @@ package com.nextcloud.talk.utils import java.text.DateFormat -import java.util.* - +import java.util.Calendar +import java.util.Date +import java.util.Locale object DateUtils { fun getLocalDateTimeStringFromTimestamp(timestamp: Long): String { diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/DeviceUtils.java b/presentation/src/main/java/com/nextcloud/talk/utils/DeviceUtils.java index e53149078..8a67ec13f 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/DeviceUtils.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/DeviceUtils.java @@ -25,7 +25,6 @@ import android.content.Context; import android.os.Build; import android.util.Log; import com.nextcloud.talk.application.NextcloudTalkApplication; - import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java b/presentation/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java index 6f848c7a9..cca77b5b7 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java @@ -51,7 +51,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.TextView; - import androidx.annotation.ColorInt; import androidx.annotation.ColorRes; import androidx.annotation.DrawableRes; @@ -61,7 +60,6 @@ import androidx.appcompat.widget.AppCompatDrawableManager; import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.emoji.text.EmojiCompat; - import com.facebook.common.executors.UiThreadImmediateExecutorService; import com.facebook.common.references.CloseableReference; import com.facebook.datasource.DataSource; @@ -85,9 +83,6 @@ import com.nextcloud.talk.events.UserMentionClickEvent; import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.utils.preferences.AppPreferences; import com.nextcloud.talk.utils.text.Spans; - -import org.greenrobot.eventbus.EventBus; - import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -95,9 +90,9 @@ import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; - import javax.annotation.Nonnull; import javax.annotation.Nullable; +import org.greenrobot.eventbus.EventBus; public class DisplayUtils { diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/EmojiTextInputEditText.java b/presentation/src/main/java/com/nextcloud/talk/utils/EmojiTextInputEditText.java index e1111ec83..a1bfd0998 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/EmojiTextInputEditText.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/EmojiTextInputEditText.java @@ -24,9 +24,7 @@ import android.content.Context; import android.util.AttributeSet; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; - import androidx.emoji.widget.EmojiEditTextHelper; - import com.google.android.material.textfield.TextInputEditText; public class EmojiTextInputEditText extends TextInputEditText { diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/FABAwareScrollingViewBehavior.java b/presentation/src/main/java/com/nextcloud/talk/utils/FABAwareScrollingViewBehavior.java index da66c2707..d756778f7 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/FABAwareScrollingViewBehavior.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/FABAwareScrollingViewBehavior.java @@ -22,7 +22,6 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.core.view.ViewCompat; import com.google.android.material.appbar.AppBarLayout; import com.google.android.material.floatingactionbutton.FloatingActionButton; - import java.util.List; public class FABAwareScrollingViewBehavior extends AppBarLayout.ScrollingViewBehavior { diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/LoggingUtils.kt b/presentation/src/main/java/com/nextcloud/talk/utils/LoggingUtils.kt index 051eac362..130885cc9 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/LoggingUtils.kt +++ b/presentation/src/main/java/com/nextcloud/talk/utils/LoggingUtils.kt @@ -26,12 +26,8 @@ import android.net.Uri import android.os.Build import androidx.core.content.FileProvider import com.nextcloud.talk.BuildConfig - -import java.io.File import java.io.FileNotFoundException -import java.io.FileOutputStream import java.io.IOException -import java.text.DateFormat import java.text.SimpleDateFormat import java.util.Date diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/MagicCharPolicy.java b/presentation/src/main/java/com/nextcloud/talk/utils/MagicCharPolicy.java index e63d58184..f1b8c6eab 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/MagicCharPolicy.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/MagicCharPolicy.java @@ -24,7 +24,6 @@ import android.text.Spannable; import android.text.Spanned; import androidx.annotation.Nullable; import com.otaliastudios.autocomplete.AutocompletePolicy; - import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/OkHttpNetworkFetcherWithCache.java b/presentation/src/main/java/com/nextcloud/talk/utils/OkHttpNetworkFetcherWithCache.java index 82e483cf0..9f4875f17 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/OkHttpNetworkFetcherWithCache.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/OkHttpNetworkFetcherWithCache.java @@ -21,11 +21,10 @@ package com.nextcloud.talk.utils; import com.facebook.imagepipeline.backends.okhttp3.OkHttpNetworkFetcher; +import java.util.concurrent.Executor; import okhttp3.Call; import okhttp3.OkHttpClient; -import java.util.concurrent.Executor; - public class OkHttpNetworkFetcherWithCache extends OkHttpNetworkFetcher { public OkHttpNetworkFetcherWithCache(OkHttpClient okHttpClient) { super(okHttpClient); diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/PushUtils.java b/presentation/src/main/java/com/nextcloud/talk/utils/PushUtils.java index 194291900..f9a717f38 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/PushUtils.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/PushUtils.java @@ -26,30 +26,42 @@ import android.util.Base64; import android.util.Log; import autodagger.AutoInjector; import com.bluelinelabs.logansquare.LoganSquare; +import com.nextcloud.talk.models.SignatureVerification; +import com.nextcloud.talk.models.json.push.PushConfigurationState; +import com.nextcloud.talk.models.json.push.PushRegistrationOverall; import com.nextcloud.talk.R; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.events.EventStatus; -import com.nextcloud.data.models.SignatureVerification; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.push.PushConfigurationState; -import com.nextcloud.data.models.json.push.PushRegistrationOverall; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; -import org.greenrobot.eventbus.EventBus; - -import javax.inject.Inject; -import java.io.*; -import java.security.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.security.InvalidKeyException; +import java.security.Key; +import java.security.KeyFactory; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.PublicKey; +import java.security.Signature; +import java.security.SignatureException; import java.security.spec.InvalidKeySpecException; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.inject.Inject; +import org.greenrobot.eventbus.EventBus; @AutoInjector(NextcloudTalkApplication.class) public class PushUtils { diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/SecurityUtils.java b/presentation/src/main/java/com/nextcloud/talk/utils/SecurityUtils.java index 2542086d6..da00c15c3 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/SecurityUtils.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/SecurityUtils.java @@ -31,13 +31,23 @@ import androidx.annotation.RequiresApi; import androidx.biometric.BiometricPrompt; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; - -import javax.crypto.*; import java.io.IOException; -import java.security.*; +import java.security.InvalidAlgorithmParameterException; +import java.security.InvalidKeyException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.NoSuchProviderException; +import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; import java.util.Arrays; import java.util.List; +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.KeyGenerator; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.SecretKey; public class SecurityUtils { private static final String TAG = "SecurityUtils"; diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/ShareUtils.java b/presentation/src/main/java/com/nextcloud/talk/utils/ShareUtils.java index dfe8a680b..fd684a50c 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/ShareUtils.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/ShareUtils.java @@ -33,9 +33,8 @@ import androidx.annotation.Nullable; import com.kennyc.bottomsheet.adapters.AppAdapter; import com.nextcloud.talk.R; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.conversations.Conversation; +import com.nextcloud.talk.models.json.conversations.Conversation; import com.nextcloud.talk.utils.database.user.UserUtils; - import java.util.ArrayList; import java.util.List; import java.util.Set; diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/TextMatchers.java b/presentation/src/main/java/com/nextcloud/talk/utils/TextMatchers.java index 3988f6e31..edc1991fa 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/TextMatchers.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/TextMatchers.java @@ -32,7 +32,6 @@ import eu.medsea.mimeutil.MimeUtil; import eu.medsea.mimeutil.detector.ExtensionMimeDetector; import eu.medsea.mimeutil.detector.MagicMimeMimeDetector; import eu.medsea.mimeutil.detector.OpendesktopMimeDetector; - import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/animations/SharedElementTransition.java b/presentation/src/main/java/com/nextcloud/talk/utils/animations/SharedElementTransition.java index 351adaafa..3dfea2eeb 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/animations/SharedElementTransition.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/animations/SharedElementTransition.java @@ -21,13 +21,17 @@ package com.nextcloud.talk.utils.animations; import android.os.Bundle; -import android.transition.*; +import android.transition.ChangeBounds; +import android.transition.ChangeClipBounds; +import android.transition.ChangeTransform; +import android.transition.Fade; +import android.transition.Transition; +import android.transition.TransitionSet; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.bluelinelabs.conductor.changehandler.SharedElementTransitionChangeHandler; - import java.util.ArrayList; import java.util.List; diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java b/presentation/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java index b54c358b4..2d5bedcd6 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java @@ -26,7 +26,6 @@ import dagger.Module; import dagger.Provides; import io.requery.Persistable; import io.requery.reactivex.ReactiveEntityStore; - import javax.inject.Inject; @Module(includes = DatabaseModule.class) diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/database/user/UserModule.java b/presentation/src/main/java/com/nextcloud/talk/utils/database/user/UserModule.java index a2bfee62c..d24b61832 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/database/user/UserModule.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/database/user/UserModule.java @@ -26,7 +26,6 @@ import dagger.Module; import dagger.Provides; import io.requery.Persistable; import io.requery.reactivex.ReactiveEntityStore; - import javax.inject.Inject; @Module(includes = DatabaseModule.class) diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/database/user/UserUtils.java b/presentation/src/main/java/com/nextcloud/talk/utils/database/user/UserUtils.java index bf6b174ad..295b5bbd9 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/database/user/UserUtils.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/database/user/UserUtils.java @@ -31,7 +31,6 @@ import io.reactivex.schedulers.Schedulers; import io.requery.Persistable; import io.requery.query.Result; import io.requery.reactivex.ReactiveEntityStore; - import java.util.List; public class UserUtils { diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/power/PowerManagerUtils.java b/presentation/src/main/java/com/nextcloud/talk/utils/power/PowerManagerUtils.java index b01d87884..0f13b25cc 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/power/PowerManagerUtils.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/power/PowerManagerUtils.java @@ -32,7 +32,6 @@ import android.os.PowerManager; import android.provider.Settings; import autodagger.AutoInjector; import com.nextcloud.talk.application.NextcloudTalkApplication; - import javax.inject.Inject; @AutoInjector(NextcloudTalkApplication.class) diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/power/ProximityLock.java b/presentation/src/main/java/com/nextcloud/talk/utils/power/ProximityLock.java index 425f8eb30..bf3f7088d 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/power/ProximityLock.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/power/ProximityLock.java @@ -24,7 +24,6 @@ import android.annotation.SuppressLint; import android.os.Build; import android.os.PowerManager; import androidx.annotation.RequiresApi; - import java.util.Optional; class ProximityLock { diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java b/presentation/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java index 455da289b..a3f573e2e 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java @@ -21,7 +21,13 @@ package com.nextcloud.talk.utils.preferences; import com.nextcloud.talk.R; -import net.orange_box.storebox.annotations.method.*; +import net.orange_box.storebox.annotations.method.ClearMethod; +import net.orange_box.storebox.annotations.method.DefaultValue; +import net.orange_box.storebox.annotations.method.KeyByResource; +import net.orange_box.storebox.annotations.method.KeyByString; +import net.orange_box.storebox.annotations.method.RegisterChangeListenerMethod; +import net.orange_box.storebox.annotations.method.RemoveMethod; +import net.orange_box.storebox.annotations.method.UnregisterChangeListenerMethod; import net.orange_box.storebox.annotations.option.SaveOption; import net.orange_box.storebox.enums.SaveMode; import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener; diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/preferences/MagicUserInputModule.java b/presentation/src/main/java/com/nextcloud/talk/utils/preferences/MagicUserInputModule.java index d33dd52c5..101ac26fe 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/preferences/MagicUserInputModule.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/preferences/MagicUserInputModule.java @@ -33,10 +33,9 @@ import autodagger.AutoInjector; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.yarolegovich.mp.io.StandardUserInputModule; - -import javax.inject.Inject; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; @AutoInjector(NextcloudTalkApplication.class) public class MagicUserInputModule extends StandardUserInputModule { diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/preferences/preferencestorage/DatabaseStorageModule.java b/presentation/src/main/java/com/nextcloud/talk/utils/preferences/preferencestorage/DatabaseStorageModule.java index d7a64f0c3..cd97a13ae 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/preferences/preferencestorage/DatabaseStorageModule.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/preferences/preferencestorage/DatabaseStorageModule.java @@ -23,20 +23,19 @@ package com.nextcloud.talk.utils.preferences.preferencestorage; import android.os.Bundle; import android.text.TextUtils; import autodagger.AutoInjector; +import com.nextcloud.talk.models.json.generic.GenericOverall; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.models.database.ArbitraryStorageEntity; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.generic.GenericOverall; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.database.arbitrarystorage.ArbitraryStorageUtils; import com.yarolegovich.mp.io.StorageModule; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; - -import javax.inject.Inject; import java.util.Set; +import javax.inject.Inject; @AutoInjector(NextcloudTalkApplication.class) public class DatabaseStorageModule implements StorageModule { diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/ssl/MagicKeyManager.java b/presentation/src/main/java/com/nextcloud/talk/utils/ssl/MagicKeyManager.java index ec05763ff..43a6bcc65 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/ssl/MagicKeyManager.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/ssl/MagicKeyManager.java @@ -30,13 +30,16 @@ import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; - -import javax.net.ssl.X509KeyManager; import java.net.Socket; import java.security.Principal; import java.security.PrivateKey; import java.security.cert.X509Certificate; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import javax.net.ssl.X509KeyManager; public class MagicKeyManager implements X509KeyManager { private static final String TAG = "MagicKeyManager"; diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/ssl/MagicTrustManager.java b/presentation/src/main/java/com/nextcloud/talk/utils/ssl/MagicTrustManager.java index 74484d0df..8264a8ee7 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/ssl/MagicTrustManager.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/ssl/MagicTrustManager.java @@ -26,9 +26,6 @@ import android.content.Context; import android.util.Log; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.events.CertificateEvent; -import org.greenrobot.eventbus.EventBus; - -import javax.net.ssl.*; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -36,6 +33,13 @@ import java.security.KeyStore; import java.security.KeyStoreException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.SSLPeerUnverifiedException; +import javax.net.ssl.SSLSession; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509TrustManager; +import org.greenrobot.eventbus.EventBus; public class MagicTrustManager implements X509TrustManager { diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/ssl/SSLSocketFactoryCompat.kt b/presentation/src/main/java/com/nextcloud/talk/utils/ssl/SSLSocketFactoryCompat.kt index 699e558e7..6d42f0755 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/ssl/SSLSocketFactoryCompat.kt +++ b/presentation/src/main/java/com/nextcloud/talk/utils/ssl/SSLSocketFactoryCompat.kt @@ -13,8 +13,12 @@ import java.io.IOException import java.net.InetAddress import java.net.Socket import java.security.GeneralSecurityException -import java.util.* -import javax.net.ssl.* +import java.util.LinkedList +import javax.net.ssl.KeyManager +import javax.net.ssl.SSLContext +import javax.net.ssl.SSLSocket +import javax.net.ssl.SSLSocketFactory +import javax.net.ssl.X509TrustManager class SSLSocketFactoryCompat(keyManager: KeyManager?, trustManager: X509TrustManager) : SSLSocketFactory() { diff --git a/presentation/src/main/java/com/nextcloud/talk/utils/ui/MaterialPreferenceCategoryWithRightLink.java b/presentation/src/main/java/com/nextcloud/talk/utils/ui/MaterialPreferenceCategoryWithRightLink.java index 4e4f4996b..fd6346ecf 100644 --- a/presentation/src/main/java/com/nextcloud/talk/utils/ui/MaterialPreferenceCategoryWithRightLink.java +++ b/presentation/src/main/java/com/nextcloud/talk/utils/ui/MaterialPreferenceCategoryWithRightLink.java @@ -28,14 +28,12 @@ import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.TextView; - -import com.nextcloud.talk.R; -import com.yarolegovich.mp.util.Utils; - import androidx.annotation.ColorInt; import androidx.annotation.ColorRes; import androidx.cardview.widget.CardView; import androidx.core.content.ContextCompat; +import com.nextcloud.talk.R; +import com.yarolegovich.mp.util.Utils; public class MaterialPreferenceCategoryWithRightLink extends CardView { diff --git a/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicAudioManager.java b/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicAudioManager.java index a631d7d05..3cbfcd60e 100644 --- a/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicAudioManager.java +++ b/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicAudioManager.java @@ -42,12 +42,11 @@ import android.os.Build; import android.util.Log; import com.nextcloud.talk.events.PeerConnectionEvent; import com.nextcloud.talk.utils.power.PowerManagerUtils; -import org.greenrobot.eventbus.EventBus; -import org.webrtc.ThreadUtils; - import java.util.Collections; import java.util.HashSet; import java.util.Set; +import org.greenrobot.eventbus.EventBus; +import org.webrtc.ThreadUtils; /** * MagicAudioManager manages all audio related parts of the AppRTC demo. diff --git a/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicBluetoothManager.java b/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicBluetoothManager.java index 8820457df..5f49c0705 100644 --- a/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicBluetoothManager.java +++ b/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicBluetoothManager.java @@ -46,10 +46,9 @@ import android.os.Handler; import android.os.Looper; import android.os.Process; import android.util.Log; -import org.webrtc.ThreadUtils; - import java.util.List; import java.util.Set; +import org.webrtc.ThreadUtils; public class MagicBluetoothManager { private static final String TAG = "MagicBluetoothManager"; diff --git a/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java b/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java index c8ec7fce9..2a916510a 100644 --- a/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java +++ b/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java @@ -27,25 +27,32 @@ import android.util.Log; import androidx.annotation.Nullable; import autodagger.AutoInjector; import com.bluelinelabs.logansquare.LoganSquare; +import com.nextcloud.talk.models.json.signaling.DataChannelMessage; +import com.nextcloud.talk.models.json.signaling.DataChannelMessageNick; +import com.nextcloud.talk.models.json.signaling.NCIceCandidate; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.events.MediaStreamEvent; import com.nextcloud.talk.events.PeerConnectionEvent; import com.nextcloud.talk.events.SessionDescriptionSendEvent; import com.nextcloud.talk.events.WebSocketCommunicationEvent; -import com.nextcloud.data.models.json.signaling.DataChannelMessage; -import com.nextcloud.data.models.json.signaling.DataChannelMessageNick; -import com.nextcloud.data.models.json.signaling.NCIceCandidate; import com.nextcloud.talk.utils.LoggingUtils; -import org.greenrobot.eventbus.EventBus; -import org.webrtc.*; - -import javax.inject.Inject; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import javax.inject.Inject; +import org.greenrobot.eventbus.EventBus; +import org.webrtc.DataChannel; +import org.webrtc.IceCandidate; +import org.webrtc.MediaConstraints; +import org.webrtc.MediaStream; +import org.webrtc.PeerConnection; +import org.webrtc.PeerConnectionFactory; +import org.webrtc.RtpReceiver; +import org.webrtc.SdpObserver; +import org.webrtc.SessionDescription; @AutoInjector(NextcloudTalkApplication.class) public class MagicPeerConnectionWrapper { diff --git a/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicWebRTCUtils.java b/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicWebRTCUtils.java index 9989203e5..cad85ca5b 100644 --- a/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicWebRTCUtils.java +++ b/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicWebRTCUtils.java @@ -33,8 +33,12 @@ package com.nextcloud.talk.webrtc; import android.os.Build; import android.util.Log; - -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java b/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java index d3257cea5..aafcd9b0e 100644 --- a/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java +++ b/presentation/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java @@ -30,26 +30,34 @@ import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.events.NetworkEvent; import com.nextcloud.talk.events.WebSocketCommunicationEvent; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.participants.Participant; -import com.nextcloud.data.models.json.signaling.NCMessageWrapper; -import com.nextcloud.data.models.json.signaling.NCSignalingMessage; -import com.nextcloud.data.models.json.websocket.*; +import com.nextcloud.talk.models.json.participants.Participant; +import com.nextcloud.talk.models.json.signaling.NCMessageWrapper; +import com.nextcloud.talk.models.json.signaling.NCSignalingMessage; +import com.nextcloud.talk.models.json.websocket.BaseWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.ByeWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.CallOverallWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.ErrorOverallWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.EventOverallWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.HelloResponseOverallWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.JoinedRoomOverallWebSocketMessage; import com.nextcloud.talk.utils.LoggingUtils; import com.nextcloud.talk.utils.MagicMap; import com.nextcloud.talk.utils.bundle.BundleKeys; - -import okhttp3.*; -import okio.ByteString; -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; - -import javax.inject.Inject; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.inject.Inject; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.WebSocket; +import okhttp3.WebSocketListener; +import okio.ByteString; +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; @AutoInjector(NextcloudTalkApplication.class) public class MagicWebSocketInstance extends WebSocketListener { diff --git a/presentation/src/main/java/com/nextcloud/talk/webrtc/WebSocketConnectionHelper.java b/presentation/src/main/java/com/nextcloud/talk/webrtc/WebSocketConnectionHelper.java index cb5358b47..1be7a785f 100644 --- a/presentation/src/main/java/com/nextcloud/talk/webrtc/WebSocketConnectionHelper.java +++ b/presentation/src/main/java/com/nextcloud/talk/webrtc/WebSocketConnectionHelper.java @@ -23,14 +23,24 @@ package com.nextcloud.talk.webrtc; import autodagger.AutoInjector; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.data.models.json.signaling.NCMessageWrapper; -import com.nextcloud.data.models.json.websocket.*; +import com.nextcloud.talk.models.json.signaling.NCMessageWrapper; +import com.nextcloud.talk.models.json.websocket.ActorWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.AuthParametersWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.AuthWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.CallOverallWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.CallWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.HelloOverallWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.HelloWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.RequestOfferOverallWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.RequestOfferSignalingMessage; +import com.nextcloud.talk.models.json.websocket.RoomOverallWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.RoomWebSocketMessage; +import com.nextcloud.talk.models.json.websocket.SignalingDataWebSocketMessageForOffer; import com.nextcloud.talk.utils.ApiUtils; -import okhttp3.OkHttpClient; - -import javax.inject.Inject; import java.util.HashMap; import java.util.Map; +import javax.inject.Inject; +import okhttp3.OkHttpClient; @AutoInjector(NextcloudTalkApplication.class) public class WebSocketConnectionHelper { diff --git a/settings.gradle b/settings.gradle index f160f7db5..1ccac1a4f 100644 --- a/settings.gradle +++ b/settings.gradle @@ -18,4 +18,4 @@ * along with this program. If not, see . */ -include ':presentation', ':data', ':domain' +include ':presentation', ':data'