diff --git a/.drone.yml b/.drone.yml
index 37631c3e0..6fcfa226e 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -1,6 +1,6 @@
pipeline:
compile:
- image: nextcloudci/android:android-35
+ image: nextcloudci/android:android-44
commands:
# build app and assemble APK
- sh -c "if [ '${FLAVOR}' != 'Analysis' ]; then ./gradlew assemble${FLAVOR}; fi"
@@ -9,7 +9,7 @@ pipeline:
FLAVOR: [Generic, Gplay]
analysis:
- image: nextcloudci/android:android-37
+ image: nextcloudci/android:android-44
commands:
- export BRANCH=$(scripts/analysis/getBranchName.sh $GIT_USERNAME $GIT_TOKEN $DRONE_PULL_REQUEST)
- scripts/analysis/analysis-wrapper.sh $GIT_USERNAME $GIT_TOKEN $BRANCH $LOG_USERNAME $LOG_PASSWORD $DRONE_BUILD_NUMBER $DRONE_PULL_REQUEST
diff --git a/app/build.gradle b/app/build.gradle
index 8e5c15368..140e9e606 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -17,7 +17,7 @@ android {
targetSdkVersion 28
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- versionCode 82
+ versionCode 120
versionName "3.2.3"
flavorDimensions "default"
@@ -39,8 +39,8 @@ android {
lintOptions {
disable 'InvalidPackage'
disable 'MissingTranslation'
- disable "ValidController",
- "ValidControllerChangeHandler"
+ disable "ValidController"
+ disable "ValidControllerChangeHandler"
}
}
@@ -122,7 +122,7 @@ dependencies {
implementation "android.arch.work:work-rxjava2:${workVersion}"
androidTestImplementation "android.arch.work:work-testing:${workVersion}"
-
+ implementation 'androidx.biometric:biometric:1.0.0-alpha03'
implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"
implementation 'androidx.multidex:multidex:2.0.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 31e9392d2..78dbc8c2c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -34,6 +34,10 @@
+
+
+
+
= Build.VERSION_CODES.M) {
+ SecurityUtils.createKey(appPreferences.getScreenLockTimeout());
+ }
+ }
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ if (appPreferences.getIsScreenSecured()) {
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ } else {
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
}
public void showCertificateDialog(X509Certificate cert, MagicTrustManager magicTrustManager,
diff --git a/app/src/main/java/com/nextcloud/talk/activities/MagicCallActivity.java b/app/src/main/java/com/nextcloud/talk/activities/MagicCallActivity.java
index b350d4d10..51d52a877 100644
--- a/app/src/main/java/com/nextcloud/talk/activities/MagicCallActivity.java
+++ b/app/src/main/java/com/nextcloud/talk/activities/MagicCallActivity.java
@@ -26,7 +26,9 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
-
+import autodagger.AutoInjector;
+import butterknife.BindView;
+import butterknife.ButterKnife;
import com.bluelinelabs.conductor.Conductor;
import com.bluelinelabs.conductor.Router;
import com.bluelinelabs.conductor.RouterTransaction;
@@ -37,15 +39,10 @@ import com.nextcloud.talk.controllers.CallController;
import com.nextcloud.talk.controllers.CallNotificationController;
import com.nextcloud.talk.events.ConfigurationChangeEvent;
import com.nextcloud.talk.utils.bundle.BundleKeys;
-
import org.greenrobot.eventbus.EventBus;
import javax.inject.Inject;
-import autodagger.AutoInjector;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
@AutoInjector(NextcloudTalkApplication.class)
public class MagicCallActivity extends BaseActivity {
private static final String TAG = "MagicCallActivity";
diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.java b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.java
index 47498f002..4797a0ed9 100644
--- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.java
+++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.java
@@ -20,37 +20,37 @@
*/
package com.nextcloud.talk.activities;
+import android.app.KeyguardManager;
+import android.content.Context;
import android.content.Intent;
+import android.os.Build;
import android.os.Bundle;
import android.view.ViewGroup;
-
-import com.bluelinelabs.conductor.Conductor;
-import com.bluelinelabs.conductor.Router;
-import com.bluelinelabs.conductor.RouterTransaction;
-import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
-import com.nextcloud.talk.R;
-import com.nextcloud.talk.application.NextcloudTalkApplication;
-import com.nextcloud.talk.controllers.CallNotificationController;
-import com.nextcloud.talk.controllers.ChatController;
-import com.nextcloud.talk.controllers.ConversationsListController;
-import com.nextcloud.talk.controllers.ServerSelectionController;
-import com.nextcloud.talk.controllers.base.providers.ActionBarProvider;
-import com.nextcloud.talk.utils.bundle.BundleKeys;
-import com.nextcloud.talk.utils.database.user.UserUtils;
-
-import javax.inject.Inject;
-
+import androidx.annotation.RequiresApi;
import androidx.appcompat.widget.Toolbar;
import autodagger.AutoInjector;
import butterknife.BindView;
import butterknife.ButterKnife;
+import com.bluelinelabs.conductor.Conductor;
+import com.bluelinelabs.conductor.Router;
+import com.bluelinelabs.conductor.RouterTransaction;
+import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
+import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler;
+import com.nextcloud.talk.R;
+import com.nextcloud.talk.application.NextcloudTalkApplication;
+import com.nextcloud.talk.controllers.*;
+import com.nextcloud.talk.controllers.base.providers.ActionBarProvider;
+import com.nextcloud.talk.utils.SecurityUtils;
+import com.nextcloud.talk.utils.bundle.BundleKeys;
+import com.nextcloud.talk.utils.database.user.UserUtils;
import io.requery.Persistable;
import io.requery.android.sqlcipher.SqlCipherDatabaseSource;
import io.requery.reactivex.ReactiveEntityStore;
+import javax.inject.Inject;
+
@AutoInjector(NextcloudTalkApplication.class)
public final class MainActivity extends BaseActivity implements ActionBarProvider {
-
private static final String TAG = "MainActivity";
@BindView(R.id.toolbar)
@@ -115,6 +115,30 @@ public final class MainActivity extends BaseActivity implements ActionBarProvide
}
}
+ @Override
+ public void onResume() {
+ super.onResume();
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ checkIfWeAreSecure();
+ }
+ }
+
+
+ @RequiresApi(api = Build.VERSION_CODES.M)
+ public void checkIfWeAreSecure() {
+ KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
+ if (keyguardManager != null && keyguardManager.isKeyguardSecure() && appPreferences.getIsScreenLocked()) {
+ if (!SecurityUtils.checkIfWeAreAuthenticated(appPreferences.getScreenLockTimeout())) {
+ if (router != null && router.getControllerWithTag(LockedController.TAG) == null) {
+ router.pushController(RouterTransaction.with(new LockedController())
+ .pushChangeHandler(new VerticalChangeHandler())
+ .popChangeHandler(new VerticalChangeHandler())
+ .tag(LockedController.TAG));
+ }
+ }
+ }
+ }
+
@Override
protected void onNewIntent(Intent intent) {
@@ -135,6 +159,10 @@ public final class MainActivity extends BaseActivity implements ActionBarProvide
@Override
public void onBackPressed() {
+ if (router.getControllerWithTag(LockedController.TAG) != null) {
+ return;
+ }
+
if (!router.handleBack()) {
super.onBackPressed();
}
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java
index a1fac6322..848a3602f 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java
@@ -22,12 +22,10 @@ package com.nextcloud.talk.adapters.items;
import android.accounts.Account;
import android.view.View;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
+import android.widget.*;
+import androidx.annotation.Nullable;
+import butterknife.BindView;
+import butterknife.ButterKnife;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.model.LazyHeaders;
@@ -39,20 +37,15 @@ import com.nextcloud.talk.models.database.UserEntity;
import com.nextcloud.talk.models.json.participants.Participant;
import com.nextcloud.talk.utils.ApiUtils;
import com.nextcloud.talk.utils.glide.GlideApp;
-
-import org.apache.commons.lang3.StringUtils;
-
-import java.util.List;
-
-import androidx.annotation.Nullable;
-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.utils.FlexibleUtils;
import eu.davidea.flipview.FlipView;
import eu.davidea.viewholders.FlexibleViewHolder;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
public class AdvancedUserItem extends AbstractFlexibleItem implements
IFilterable {
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/AppItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/AppItem.java
index 1fb6d1717..55c18aebf 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/items/AppItem.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/items/AppItem.java
@@ -27,20 +27,18 @@ import android.text.style.ForegroundColorSpan;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
-
-import com.nextcloud.talk.R;
-import com.nextcloud.talk.application.NextcloudTalkApplication;
-
-import java.util.List;
-
import androidx.annotation.Nullable;
import butterknife.BindView;
import butterknife.ButterKnife;
+import com.nextcloud.talk.R;
+import com.nextcloud.talk.application.NextcloudTalkApplication;
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 {
private String title;
private String packageName;
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/CallItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/CallItem.java
index c0547095e..638d3541a 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/items/CallItem.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/items/CallItem.java
@@ -27,7 +27,8 @@ import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
-
+import butterknife.BindView;
+import butterknife.ButterKnife;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.model.LazyHeaders;
@@ -41,20 +42,16 @@ import com.nextcloud.talk.models.json.rooms.Conversation;
import com.nextcloud.talk.utils.ApiUtils;
import com.nextcloud.talk.utils.DisplayUtils;
import com.nextcloud.talk.utils.glide.GlideApp;
-
-import org.apache.commons.lang3.StringUtils;
-import org.greenrobot.eventbus.EventBus;
-
-import java.util.List;
-
-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.utils.FlexibleUtils;
import eu.davidea.flipview.FlipView;
import eu.davidea.viewholders.FlexibleViewHolder;
+import org.apache.commons.lang3.StringUtils;
+import org.greenrobot.eventbus.EventBus;
+
+import java.util.List;
public class CallItem extends AbstractFlexibleItem implements IFilterable {
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java
index 09a8b4bb1..1f0433c50 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java
@@ -26,7 +26,8 @@ import android.text.format.DateUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
-
+import butterknife.BindView;
+import butterknife.ButterKnife;
import com.amulyakhare.textdrawable.TextDrawable;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.model.GlideUrl;
@@ -42,19 +43,15 @@ import com.nextcloud.talk.utils.ApiUtils;
import com.nextcloud.talk.utils.DisplayUtils;
import com.nextcloud.talk.utils.glide.GlideApp;
import com.vanniktech.emoji.EmojiTextView;
-
-import org.apache.commons.lang3.StringUtils;
-
-import java.util.List;
-
-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.IFlexible;
import eu.davidea.flexibleadapter.utils.FlexibleUtils;
import eu.davidea.viewholders.FlexibleViewHolder;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
public class ConversationItem extends AbstractFlexibleItem implements
IFilterable {
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/GenericTextHeaderItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/GenericTextHeaderItem.java
index a722efd76..a78ab5faf 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/items/GenericTextHeaderItem.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/items/GenericTextHeaderItem.java
@@ -23,20 +23,17 @@ package com.nextcloud.talk.adapters.items;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
-
-import com.nextcloud.talk.R;
-
-import org.apache.commons.lang3.StringUtils;
-
-import java.util.List;
-
import butterknife.BindView;
import butterknife.ButterKnife;
+import com.nextcloud.talk.R;
import eu.davidea.flexibleadapter.FlexibleAdapter;
import eu.davidea.flexibleadapter.items.AbstractHeaderItem;
import eu.davidea.flexibleadapter.items.IFilterable;
import eu.davidea.flexibleadapter.items.IFlexible;
import eu.davidea.viewholders.FlexibleViewHolder;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
public class GenericTextHeaderItem extends AbstractHeaderItem implements IFilterable {
private static final String TAG = "GenericTextHeaderItem";
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/MentionAutocompleteItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/MentionAutocompleteItem.java
index 1519e9ef0..df49f5293 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/items/MentionAutocompleteItem.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/items/MentionAutocompleteItem.java
@@ -21,7 +21,6 @@
package com.nextcloud.talk.adapters.items;
import android.view.View;
-
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.model.LazyHeaders;
@@ -32,16 +31,14 @@ import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.models.database.UserEntity;
import com.nextcloud.talk.utils.ApiUtils;
import com.nextcloud.talk.utils.glide.GlideApp;
-
-import org.apache.commons.lang3.StringUtils;
-
-import java.util.List;
-
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 org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
public class MentionAutocompleteItem extends AbstractFlexibleItem
implements IFilterable {
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/MenuItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/MenuItem.java
index c264fd8aa..6868ccbe6 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/items/MenuItem.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/items/MenuItem.java
@@ -29,19 +29,17 @@ import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.view.View;
import android.widget.TextView;
-
+import butterknife.BindView;
+import butterknife.ButterKnife;
import com.nextcloud.talk.R;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.utils.DisplayUtils;
-
-import java.util.List;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
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 {
private String title;
private Drawable icon;
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/NotificationSoundItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/NotificationSoundItem.java
index d8119893a..3c7070997 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/items/NotificationSoundItem.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/items/NotificationSoundItem.java
@@ -22,19 +22,17 @@ package com.nextcloud.talk.adapters.items;
import android.view.View;
import android.widget.TextView;
-
-import com.nextcloud.talk.R;
-import com.nextcloud.talk.utils.MagicFlipView;
-
-import java.util.List;
-
import butterknife.BindView;
import butterknife.ButterKnife;
+import com.nextcloud.talk.R;
+import com.nextcloud.talk.utils.MagicFlipView;
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 {
private String notificationSoundName;
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/ProgressItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/ProgressItem.java
index 56c954f7d..6af2fb468 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/items/ProgressItem.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/items/ProgressItem.java
@@ -29,14 +29,10 @@ import android.content.Context;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
-
-import com.nextcloud.talk.R;
-
-import java.util.List;
-
import androidx.annotation.NonNull;
import butterknife.BindView;
import butterknife.ButterKnife;
+import com.nextcloud.talk.R;
import eu.davidea.flexibleadapter.FlexibleAdapter;
import eu.davidea.flexibleadapter.Payload;
import eu.davidea.flexibleadapter.helpers.AnimatorHelper;
@@ -44,6 +40,8 @@ import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
import eu.davidea.flexibleadapter.items.IFlexible;
import eu.davidea.viewholders.FlexibleViewHolder;
+import java.util.List;
+
/**
* @author Davide Steduto
* @since 22/04/2016
@@ -115,6 +113,14 @@ public class ProgressItem extends AbstractFlexibleItem implements
ISectionable, IFilterable {
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.java
index bc4e545b3..c891571fa 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.java
@@ -30,7 +30,10 @@ import android.text.SpannableString;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
-
+import androidx.core.view.ViewCompat;
+import autodagger.AutoInjector;
+import butterknife.BindView;
+import butterknife.ButterKnife;
import com.amulyakhare.textdrawable.TextDrawable;
import com.facebook.drawee.view.SimpleDraweeView;
import com.google.android.flexbox.FlexboxLayout;
@@ -43,16 +46,10 @@ import com.nextcloud.talk.utils.database.user.UserUtils;
import com.stfalcon.chatkit.messages.MessageHolders;
import com.vanniktech.emoji.EmojiTextView;
+import javax.inject.Inject;
import java.util.HashMap;
import java.util.Map;
-import javax.inject.Inject;
-
-import androidx.core.view.ViewCompat;
-import autodagger.AutoInjector;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
@AutoInjector(NextcloudTalkApplication.class)
public class MagicIncomingTextMessageViewHolder
extends MessageHolders.IncomingTextMessageViewHolder {
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.java
index 818c88803..d7a725a39 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.java
@@ -29,7 +29,10 @@ import android.text.Spannable;
import android.text.SpannableString;
import android.view.View;
import android.widget.TextView;
-
+import androidx.core.view.ViewCompat;
+import autodagger.AutoInjector;
+import butterknife.BindView;
+import butterknife.ButterKnife;
import com.google.android.flexbox.FlexboxLayout;
import com.nextcloud.talk.R;
import com.nextcloud.talk.application.NextcloudTalkApplication;
@@ -40,16 +43,10 @@ import com.nextcloud.talk.utils.database.user.UserUtils;
import com.stfalcon.chatkit.messages.MessageHolders;
import com.vanniktech.emoji.EmojiTextView;
+import javax.inject.Inject;
import java.util.HashMap;
import java.util.Map;
-import javax.inject.Inject;
-
-import androidx.core.view.ViewCompat;
-import autodagger.AutoInjector;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
@AutoInjector(NextcloudTalkApplication.class)
public class MagicOutcomingTextMessageViewHolder extends MessageHolders.OutcomingTextMessageViewHolder {
@BindView(R.id.messageText)
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java
index 285713171..5c3a370a6 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java
@@ -24,7 +24,8 @@ import android.annotation.SuppressLint;
import android.content.Intent;
import android.net.Uri;
import android.view.View;
-
+import butterknife.BindView;
+import butterknife.ButterKnife;
import com.nextcloud.talk.R;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.models.json.chat.ChatMessage;
@@ -32,9 +33,6 @@ import com.nextcloud.talk.utils.DisplayUtils;
import com.stfalcon.chatkit.messages.MessageHolders;
import com.vanniktech.emoji.EmojiTextView;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
public class MagicPreviewMessageViewHolder extends MessageHolders.IncomingImageMessageViewHolder {
@BindView(R.id.messageText)
@@ -67,7 +65,7 @@ public class MagicPreviewMessageViewHolder extends MessageHolders.IncomingImageM
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
NextcloudTalkApplication.getSharedApplication().getApplicationContext().startActivity(browserIntent);
});
- } else if (message.getMessageType() == ChatMessage.MessageType.SINGLE_LINK_GIPHY_MESSAGE){
+ } else if (message.getMessageType() == ChatMessage.MessageType.SINGLE_LINK_GIPHY_MESSAGE) {
messageText.setText("GIPHY");
DisplayUtils.setClickableString("GIPHY", "https://giphy.com", messageText);
} else if (message.getMessageType() == ChatMessage.MessageType.SINGLE_LINK_TENOR_MESSAGE) {
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicSystemMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicSystemMessageViewHolder.java
index acda3e14e..30ca90f47 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicSystemMessageViewHolder.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicSystemMessageViewHolder.java
@@ -26,7 +26,7 @@ import android.graphics.drawable.Drawable;
import android.text.Spannable;
import android.text.SpannableString;
import android.view.View;
-
+import androidx.core.view.ViewCompat;
import com.nextcloud.talk.R;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.models.json.chat.ChatMessage;
@@ -35,8 +35,6 @@ import com.stfalcon.chatkit.messages.MessageHolders;
import java.util.Map;
-import androidx.core.view.ViewCompat;
-
public class MagicSystemMessageViewHolder extends MessageHolders.IncomingTextMessageViewHolder {
public MagicSystemMessageViewHolder(View itemView) {
diff --git a/app/src/main/java/com/nextcloud/talk/api/NcApi.java b/app/src/main/java/com/nextcloud/talk/api/NcApi.java
index 40d6c8a67..cc3eac224 100644
--- a/app/src/main/java/com/nextcloud/talk/api/NcApi.java
+++ b/app/src/main/java/com/nextcloud/talk/api/NcApi.java
@@ -20,6 +20,7 @@
*/
package com.nextcloud.talk.api;
+import androidx.annotation.Nullable;
import com.nextcloud.talk.models.json.call.CallOverall;
import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall;
import com.nextcloud.talk.models.json.chat.ChatOverall;
@@ -35,25 +36,13 @@ import com.nextcloud.talk.models.json.rooms.RoomsOverall;
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 java.util.List;
-import java.util.Map;
-
-import androidx.annotation.Nullable;
import io.reactivex.Observable;
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;
+import retrofit2.http.*;
+
+import java.util.List;
+import java.util.Map;
public interface NcApi {
diff --git a/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.java b/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.java
index e5185c22f..a26dabf82 100644
--- a/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.java
+++ b/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.java
@@ -23,7 +23,14 @@ package com.nextcloud.talk.application;
import android.content.Context;
import android.os.Build;
import android.util.Log;
-
+import androidx.lifecycle.LifecycleObserver;
+import androidx.multidex.MultiDex;
+import androidx.multidex.MultiDexApplication;
+import androidx.work.OneTimeWorkRequest;
+import androidx.work.PeriodicWorkRequest;
+import androidx.work.WorkManager;
+import autodagger.AutoComponent;
+import autodagger.AutoInjector;
import com.facebook.cache.disk.DiskCacheConfig;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.imagepipeline.core.ImagePipelineConfig;
@@ -44,25 +51,14 @@ import com.nextcloud.talk.utils.database.user.UserModule;
import com.nextcloud.talk.webrtc.MagicWebRTCUtils;
import com.vanniktech.emoji.EmojiManager;
import com.vanniktech.emoji.twitter.TwitterEmojiProvider;
-
+import okhttp3.OkHttpClient;
import org.webrtc.PeerConnectionFactory;
import org.webrtc.voiceengine.WebRtcAudioManager;
import org.webrtc.voiceengine.WebRtcAudioUtils;
-import java.util.concurrent.TimeUnit;
-
import javax.inject.Inject;
import javax.inject.Singleton;
-
-import androidx.lifecycle.LifecycleObserver;
-import androidx.multidex.MultiDex;
-import androidx.multidex.MultiDexApplication;
-import androidx.work.OneTimeWorkRequest;
-import androidx.work.PeriodicWorkRequest;
-import androidx.work.WorkManager;
-import autodagger.AutoComponent;
-import autodagger.AutoInjector;
-import okhttp3.OkHttpClient;
+import java.util.concurrent.TimeUnit;
@AutoComponent(
modules = {
@@ -78,15 +74,13 @@ import okhttp3.OkHttpClient;
@Singleton
@AutoInjector(NextcloudTalkApplication.class)
public class NextcloudTalkApplication extends MultiDexApplication implements LifecycleObserver {
- @Inject
- OkHttpClient okHttpClient;
-
private static final String TAG = NextcloudTalkApplication.class.getSimpleName();
-
//region Singleton
protected static NextcloudTalkApplication sharedApplication;
//region Fields (components)
protected NextcloudTalkApplicationComponent componentApplication;
+ @Inject
+ OkHttpClient okHttpClient;
//endregion
public static NextcloudTalkApplication getSharedApplication() {
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java b/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java
index e4da8a204..bfd45c736 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java
@@ -28,7 +28,12 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
-
+import androidx.annotation.NonNull;
+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.nextcloud.talk.R;
@@ -49,29 +54,20 @@ import com.nextcloud.talk.utils.bundle.BundleKeys;
import com.nextcloud.talk.utils.database.user.UserUtils;
import com.nextcloud.talk.utils.preferences.AppPreferences;
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder;
-
+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 org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
+import javax.inject.Inject;
import java.net.CookieManager;
import java.util.ArrayList;
import java.util.List;
-import javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import androidx.work.Data;
-import androidx.work.OneTimeWorkRequest;
-import androidx.work.WorkManager;
-import autodagger.AutoInjector;
-import butterknife.BindView;
-import io.reactivex.CompletableObserver;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-
@AutoInjector(NextcloudTalkApplication.class)
public class AccountVerificationController extends BaseController {
@@ -157,7 +153,6 @@ public class AccountVerificationController extends BaseController {
} else {
checkEverything();
}
-
}
private void checkEverything() {
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java
index fcbdf2d14..0283d246d 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java
@@ -39,7 +39,13 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
-
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import autodagger.AutoInjector;
+import butterknife.BindView;
+import butterknife.OnClick;
+import butterknife.OnLongClick;
import com.bluelinelabs.logansquare.LoganSquare;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
@@ -48,11 +54,7 @@ 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.talk.events.MediaStreamEvent;
-import com.nextcloud.talk.events.PeerConnectionEvent;
-import com.nextcloud.talk.events.SessionDescriptionSendEvent;
-import com.nextcloud.talk.events.WebSocketCommunicationEvent;
+import com.nextcloud.talk.events.*;
import com.nextcloud.talk.models.ExternalSignalingServer;
import com.nextcloud.talk.models.database.UserEntity;
import com.nextcloud.talk.models.json.call.CallOverall;
@@ -62,13 +64,7 @@ import com.nextcloud.talk.models.json.participants.Participant;
import com.nextcloud.talk.models.json.participants.ParticipantsOverall;
import com.nextcloud.talk.models.json.rooms.Conversation;
import com.nextcloud.talk.models.json.rooms.RoomsOverall;
-import com.nextcloud.talk.models.json.signaling.DataChannelMessage;
-import com.nextcloud.talk.models.json.signaling.NCIceCandidate;
-import com.nextcloud.talk.models.json.signaling.NCMessagePayload;
-import com.nextcloud.talk.models.json.signaling.NCMessageWrapper;
-import com.nextcloud.talk.models.json.signaling.NCSignalingMessage;
-import com.nextcloud.talk.models.json.signaling.Signaling;
-import com.nextcloud.talk.models.json.signaling.SignalingOverall;
+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.utils.ApiUtils;
@@ -80,56 +76,8 @@ import com.nextcloud.talk.utils.database.user.UserUtils;
import com.nextcloud.talk.utils.glide.GlideApp;
import com.nextcloud.talk.utils.preferences.AppPreferences;
import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder;
-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.nextcloud.talk.webrtc.*;
import com.wooplr.spotlight.SpotlightView;
-
-import org.apache.commons.lang3.StringEscapeUtils;
-import org.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-import org.parceler.Parcels;
-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 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.Set;
-import java.util.concurrent.TimeUnit;
-
-import javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
-import autodagger.AutoInjector;
-import butterknife.BindView;
-import butterknife.OnClick;
-import butterknife.OnLongClick;
import eu.davidea.flipview.FlipView;
import io.reactivex.Observable;
import io.reactivex.Observer;
@@ -140,8 +88,19 @@ import me.zhanghai.android.effortlesspermissions.AfterPermissionDenied;
import me.zhanghai.android.effortlesspermissions.EffortlessPermissions;
import me.zhanghai.android.effortlesspermissions.OpenAppDetailsDialogFragment;
import okhttp3.Cache;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+import org.parceler.Parcels;
+import org.webrtc.*;
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/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java
index 8dd6f18a6..d1abe243f 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java
@@ -29,11 +29,7 @@ import android.graphics.drawable.ColorDrawable;
import android.media.AudioAttributes;
import android.media.MediaPlayer;
import android.net.Uri;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.VibrationEffect;
-import android.os.Vibrator;
+import android.os.*;
import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.RenderScript;
@@ -46,7 +42,11 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
-
+import androidx.annotation.NonNull;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import autodagger.AutoInjector;
+import butterknife.BindView;
+import butterknife.OnClick;
import com.bluelinelabs.conductor.RouterTransaction;
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
import com.bluelinelabs.logansquare.LoganSquare;
@@ -76,30 +76,22 @@ import com.nextcloud.talk.utils.bundle.BundleKeys;
import com.nextcloud.talk.utils.glide.GlideApp;
import com.nextcloud.talk.utils.preferences.AppPreferences;
import com.nextcloud.talk.utils.singletons.AvatarStatusCodeHolder;
-
+import io.reactivex.Observer;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.Cache;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import org.michaelevans.colorart.library.ColorArt;
import org.parceler.Parcels;
+import javax.inject.Inject;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import androidx.constraintlayout.widget.ConstraintLayout;
-import autodagger.AutoInjector;
-import butterknife.BindView;
-import butterknife.OnClick;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-import okhttp3.Cache;
-
@AutoInjector(NextcloudTalkApplication.class)
public class CallNotificationController extends BaseController {
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java
index 029d57e06..953365f2d 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java
@@ -73,6 +73,7 @@ import com.nextcloud.talk.presenters.MentionAutocompletePresenter;
import com.nextcloud.talk.utils.*;
import com.nextcloud.talk.utils.bundle.BundleKeys;
import com.nextcloud.talk.utils.database.user.UserUtils;
+import com.nextcloud.talk.utils.preferences.AppPreferences;
import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder;
import com.otaliastudios.autocomplete.Autocomplete;
import com.otaliastudios.autocomplete.AutocompleteCallback;
@@ -109,10 +110,13 @@ import java.util.concurrent.TimeUnit;
public class ChatController extends BaseController implements MessagesListAdapter.OnLoadMoreListener,
MessagesListAdapter.Formatter, MessagesListAdapter.OnMessageLongClickListener, MessageHolders.ContentChecker {
private static final String TAG = "ChatController";
+ private static final byte CONTENT_TYPE_SYSTEM_MESSAGE = 1;
@Inject
NcApi ncApi;
@Inject
UserUtils userUtils;
+ @Inject
+ AppPreferences appPreferences;
@BindView(R.id.messagesListView)
MessagesList messagesListView;
@BindView(R.id.messageInputView)
@@ -151,9 +155,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
private boolean isFirstMessagesProcessing = true;
private boolean isHelloClicked;
private boolean isLeavingForConversation;
-
- private static final byte CONTENT_TYPE_SYSTEM_MESSAGE = 1;
-
+ private boolean isLinkPreviewAllowed;
private boolean wasDetached;
private EmojiPopup emojiPopup;
@@ -443,6 +445,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
ApplicationWideCurrentRoomHolder.getInstance().setInCall(false);
ApplicationWideCurrentRoomHolder.getInstance().setUserInRoom(conversationUser);
+ isLinkPreviewAllowed = appPreferences.getAreLinkPreviewsAllowed();
emojiPopup = EmojiPopup.Builder.fromRootView(view).setOnEmojiPopupShownListener(new OnEmojiPopupShownListener() {
@Override
@@ -621,7 +624,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
private void leaveRoom() {
ncApi.leaveRoom(credentials,
ApiUtils.getUrlForSettingMyselfAsActiveParticipant(conversationUser.getBaseUrl(),
- roomToken))
+ roomToken))
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
@@ -666,7 +669,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
ncApi.sendChatMessage(credentials, ApiUtils.getUrlForChat(conversationUser.getBaseUrl(), roomToken),
message, conversationUser
- .getDisplayName())
+ .getDisplayName())
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
@@ -856,8 +859,11 @@ public class ChatController extends BaseController implements MessagesListAdapte
countGroupedMessages = 0;
}
}
- chatMessageList.get(i).setBaseUrl(conversationUser.getBaseUrl());
- chatMessageList.get(i).setActiveUserId(conversationUser.getUserId());
+
+ ChatMessage chatMessage = chatMessageList.get(i);
+ chatMessage.setLinkPreviewAllowed(isLinkPreviewAllowed);
+ chatMessage.setBaseUrl(conversationUser.getBaseUrl());
+ chatMessage.setActiveUserId(conversationUser.getUserId());
if (globalLastKnownPastMessageId == -1 || chatMessageList.get(i).getJsonMessageId() <
globalLastKnownPastMessageId) {
globalLastKnownPastMessageId = chatMessageList.get(i).getJsonMessageId();
@@ -882,7 +888,8 @@ public class ChatController extends BaseController implements MessagesListAdapte
chatMessage = chatMessageList.get(i);
chatMessage.setBaseUrl(conversationUser.getBaseUrl());
- chatMessageList.get(i).setActiveUserId(conversationUser.getUserId());
+ chatMessage.setActiveUserId(conversationUser.getUserId());
+ chatMessage.setLinkPreviewAllowed(isLinkPreviewAllowed);
// if credentials are empty, we're acting as a guest
if (TextUtils.isEmpty(credentials) && !TextUtils.isEmpty(myFirstMessage.toString())) {
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java
index d78285a38..90f4f6052 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java
@@ -23,21 +23,27 @@ package com.nextcloud.talk.controllers;
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.text.InputType;
import android.text.TextUtils;
import android.util.Log;
-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.view.*;
import android.view.inputmethod.EditorInfo;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
-
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.SearchView;
+import androidx.coordinatorlayout.widget.CoordinatorLayout;
+import androidx.core.view.MenuItemCompat;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+import autodagger.AutoInjector;
+import butterknife.BindView;
+import butterknife.OnClick;
+import butterknife.Optional;
import com.bluelinelabs.conductor.RouterTransaction;
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler;
@@ -67,33 +73,7 @@ import com.nextcloud.talk.utils.ApiUtils;
import com.nextcloud.talk.utils.KeyboardUtils;
import com.nextcloud.talk.utils.bundle.BundleKeys;
import com.nextcloud.talk.utils.database.user.UserUtils;
-
-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;
-import androidx.coordinatorlayout.widget.CoordinatorLayout;
-import androidx.core.view.MenuItemCompat;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
-import autodagger.AutoInjector;
-import butterknife.BindView;
-import butterknife.OnClick;
-import butterknife.Optional;
+import com.nextcloud.talk.utils.preferences.AppPreferences;
import eu.davidea.fastscroller.FastScroller;
import eu.davidea.flexibleadapter.FlexibleAdapter;
import eu.davidea.flexibleadapter.SelectableAdapter;
@@ -106,8 +86,15 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import okhttp3.ResponseBody;
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+import org.parceler.Parcels;
import retrofit2.HttpException;
+import javax.inject.Inject;
+import java.util.*;
+
@AutoInjector(NextcloudTalkApplication.class)
public class ContactsController extends BaseController implements SearchView.OnQueryTextListener,
FlexibleAdapter.OnItemClickListener, FastScroller.OnScrollStateChangeListener, FlexibleAdapter.EndlessScrollListener {
@@ -125,6 +112,8 @@ public class ContactsController extends BaseController implements SearchView.OnQ
UserUtils userUtils;
@Inject
EventBus eventBus;
+ @Inject
+ AppPreferences appPreferences;
@BindView(R.id.progressBar)
ProgressBar progressBar;
@BindView(R.id.recycler_view)
@@ -355,7 +344,11 @@ public class ContactsController extends BaseController implements SearchView.OnQ
searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
searchView.setMaxWidth(Integer.MAX_VALUE);
searchView.setInputType(InputType.TYPE_TEXT_VARIATION_FILTER);
- searchView.setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_FULLSCREEN);
+ int imeOptions = EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_FULLSCREEN;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && appPreferences.getIsKeyboardIncognito()) {
+ imeOptions |= EditorInfo.IME_FLAG_NO_PERSONALIZED_LEARNING;
+ }
+ searchView.setImeOptions(imeOptions);
searchView.setQueryHint(getResources().getString(R.string.nc_search));
if (searchManager != null) {
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java
index 2d8825524..7c7da2e17 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java
@@ -28,7 +28,10 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
-
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+import autodagger.AutoInjector;
+import butterknife.BindView;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.interfaces.DraweeController;
import com.facebook.drawee.view.SimpleDraweeView;
@@ -51,18 +54,6 @@ import com.vanniktech.emoji.EmojiTextView;
import com.yarolegovich.mp.MaterialChoicePreference;
import com.yarolegovich.mp.MaterialPreferenceCategory;
import com.yarolegovich.mp.MaterialPreferenceScreen;
-
-import org.parceler.Parcels;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-import autodagger.AutoInjector;
-import butterknife.BindView;
import eu.davidea.flexibleadapter.FlexibleAdapter;
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager;
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
@@ -70,43 +61,38 @@ import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
+import org.parceler.Parcels;
+
+import javax.inject.Inject;
+import java.util.ArrayList;
+import java.util.List;
@AutoInjector(NextcloudTalkApplication.class)
public class ConversationInfoController extends BaseController {
+ @BindView(R.id.notification_settings)
+ MaterialPreferenceScreen materialPreferenceScreen;
+ @BindView(R.id.progressBar)
+ ProgressBar progressBar;
+ @BindView(R.id.conversation_info_message_notifications)
+ MaterialChoicePreference messageNotificationLevel;
+ @BindView(R.id.conversation_info_name)
+ MaterialPreferenceCategory nameCategoryView;
+ @BindView(R.id.avatar_image)
+ SimpleDraweeView conversationAvatarImageView;
+ @BindView(R.id.display_name_text)
+ EmojiTextView conversationDisplayName;
+ @BindView(R.id.participants_list_category)
+ MaterialPreferenceCategory participantsListCategory;
+ @BindView(R.id.recycler_view)
+ RecyclerView recyclerView;
+ @Inject
+ NcApi ncApi;
private String baseUrl;
private String conversationToken;
private UserEntity conversationUser;
private String credentials;
-
- @BindView(R.id.notification_settings)
- MaterialPreferenceScreen materialPreferenceScreen;
-
- @BindView(R.id.progressBar)
- ProgressBar progressBar;
-
- @BindView(R.id.conversation_info_message_notifications)
- MaterialChoicePreference messageNotificationLevel;
-
- @BindView(R.id.conversation_info_name)
- MaterialPreferenceCategory nameCategoryView;
-
- @BindView(R.id.avatar_image)
- SimpleDraweeView conversationAvatarImageView;
-
- @BindView(R.id.display_name_text)
- EmojiTextView conversationDisplayName;
-
- @BindView(R.id.participants_list_category)
- MaterialPreferenceCategory participantsListCategory;
-
- @BindView(R.id.recycler_view)
- RecyclerView recyclerView;
-
- @Inject
- NcApi ncApi;
-
private Disposable roomDisposable;
private Disposable participantsDisposable;
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java b/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java
index ae762afbb..c273a4790 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java
@@ -25,20 +25,24 @@ import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.text.InputType;
import android.text.TextUtils;
-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.view.*;
import android.view.inputmethod.EditorInfo;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
-
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.SearchView;
+import androidx.core.view.MenuItemCompat;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+import autodagger.AutoInjector;
+import butterknife.BindView;
import com.bluelinelabs.conductor.RouterTransaction;
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
import com.bluelinelabs.conductor.changehandler.TransitionChangeHandlerCompat;
@@ -73,28 +77,7 @@ import com.nextcloud.talk.utils.animations.SharedElementTransition;
import com.nextcloud.talk.utils.bundle.BundleKeys;
import com.nextcloud.talk.utils.database.user.UserUtils;
import com.nextcloud.talk.utils.glide.GlideApp;
-
-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 androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.widget.SearchView;
-import androidx.core.view.MenuItemCompat;
-import androidx.recyclerview.widget.DividerItemDecoration;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
-import autodagger.AutoInjector;
-import butterknife.BindView;
+import com.nextcloud.talk.utils.preferences.AppPreferences;
import eu.davidea.fastscroller.FastScroller;
import eu.davidea.flexibleadapter.FlexibleAdapter;
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager;
@@ -102,8 +85,18 @@ import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
+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;
+import javax.inject.Inject;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
@AutoInjector(NextcloudTalkApplication.class)
public class ConversationsListController extends BaseController implements SearchView.OnQueryTextListener,
FlexibleAdapter.OnItemClickListener, FlexibleAdapter.OnItemLongClickListener, FastScroller
@@ -122,6 +115,9 @@ public class ConversationsListController extends BaseController implements Searc
@Inject
NcApi ncApi;
+ @Inject
+ AppPreferences appPreferences;
+
@BindView(R.id.recycler_view)
RecyclerView recyclerView;
@@ -240,7 +236,11 @@ public class ConversationsListController extends BaseController implements Searc
searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
searchView.setMaxWidth(Integer.MAX_VALUE);
searchView.setInputType(InputType.TYPE_TEXT_VARIATION_FILTER);
- searchView.setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_FULLSCREEN);
+ int imeOptions = EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_FULLSCREEN;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && appPreferences.getIsKeyboardIncognito()) {
+ imeOptions |= EditorInfo.IME_FLAG_NO_PERSONALIZED_LEARNING;
+ }
+ searchView.setImeOptions(imeOptions);
searchView.setQueryHint(getResources().getString(R.string.nc_search));
if (searchManager != null) {
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/LockedController.java b/app/src/main/java/com/nextcloud/talk/controllers/LockedController.java
new file mode 100644
index 000000000..903fb3810
--- /dev/null
+++ b/app/src/main/java/com/nextcloud/talk/controllers/LockedController.java
@@ -0,0 +1,157 @@
+/*
+ * Nextcloud Talk application
+ *
+ * @author Mario Danic
+ * Copyright (C) 2017-2018 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.talk.controllers;
+
+import android.app.Activity;
+import android.app.KeyguardManager;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.biometric.BiometricPrompt;
+import autodagger.AutoInjector;
+import butterknife.OnClick;
+import com.nextcloud.talk.R;
+import com.nextcloud.talk.activities.MainActivity;
+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;
+
+@AutoInjector(NextcloudTalkApplication.class)
+public class LockedController extends BaseController {
+ public static final String TAG = "LockedController";
+ private static final int REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS = 112;
+
+ @Inject
+ AppPreferences appPreferences;
+
+ @Override
+ protected View inflateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup container) {
+ return inflater.inflate(R.layout.controller_locked, container, false);
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.M)
+ @Override
+ protected void onViewBound(@NonNull View view) {
+ super.onViewBound(view);
+ NextcloudTalkApplication.getSharedApplication().getComponentApplication().inject(this);
+ if (getActionBar() != null) {
+ getActionBar().hide();
+ }
+
+ showBiometricDialog();
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.M)
+ @OnClick(R.id.unlockTextView)
+ void unlock() {
+ checkIfWeAreSecure();
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.M)
+ private void showBiometricDialog() {
+ Context context = getActivity();
+
+ if (context != null) {
+ final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder()
+ .setTitle(String.format(context.getString(R.string.nc_biometric_unlock), context.getString(R.string.nc_app_name)))
+ .setNegativeButtonText(context.getString(R.string.nc_cancel))
+ .build();
+
+ Executor executor = Executors.newSingleThreadExecutor();
+
+ final BiometricPrompt biometricPrompt = new BiometricPrompt((MainActivity) context, executor,
+ new BiometricPrompt.AuthenticationCallback() {
+ @Override
+ public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) {
+ super.onAuthenticationSucceeded(result);
+ Log.d(TAG, "Fingerprint recognised successfully");
+ getRouter().popCurrentController();
+ }
+
+ @Override
+ public void onAuthenticationFailed() {
+ super.onAuthenticationFailed();
+ Log.d(TAG, "Fingerprint not recognised");
+ }
+
+ @Override
+ public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) {
+ super.onAuthenticationError(errorCode, errString);
+ showAuthenticationScreen();
+ }
+ }
+ );
+
+ biometricPrompt.authenticate(promptInfo, SecurityUtils.getCryptoObject());
+ }
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.M)
+ private void checkIfWeAreSecure() {
+ if (getActivity() != null) {
+ KeyguardManager keyguardManager = (KeyguardManager) getActivity().getSystemService(Context.KEYGUARD_SERVICE);
+ if (keyguardManager != null && keyguardManager.isKeyguardSecure() && appPreferences.getIsScreenLocked()) {
+ if (!SecurityUtils.checkIfWeAreAuthenticated(appPreferences.getScreenLockTimeout())) {
+ showBiometricDialog();
+ }
+ }
+ }
+ }
+
+ private void showAuthenticationScreen() {
+ if (getActivity() != null) {
+ KeyguardManager keyguardManager = (KeyguardManager) getActivity().getSystemService(Context.KEYGUARD_SERVICE);
+ Intent intent = keyguardManager.createConfirmDeviceCredentialIntent(null, null);
+ if (intent != null) {
+ startActivityForResult(intent, REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS);
+ }
+ }
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+
+ if (requestCode == REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS ) {
+ if (resultCode == Activity.RESULT_OK) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ if (SecurityUtils.checkIfWeAreAuthenticated(appPreferences.getScreenLockTimeout())) {
+ Log.d(TAG, "All went well, dismiss locked controller");
+ getRouter().popCurrentController();
+ }
+ }
+ } else {
+ Log.d(TAG, "Authorization failed");
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.java b/app/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.java
index 6af994121..2dedbcc2e 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.java
@@ -33,7 +33,11 @@ import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+import autodagger.AutoInjector;
+import butterknife.BindView;
import com.bluelinelabs.logansquare.LoganSquare;
import com.nextcloud.talk.R;
import com.nextcloud.talk.adapters.items.NotificationSoundItem;
@@ -42,23 +46,16 @@ import com.nextcloud.talk.controllers.base.BaseController;
import com.nextcloud.talk.models.RingtoneSettings;
import com.nextcloud.talk.utils.bundle.BundleKeys;
import com.nextcloud.talk.utils.preferences.AppPreferences;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
-import autodagger.AutoInjector;
-import butterknife.BindView;
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;
+
@AutoInjector(NextcloudTalkApplication.class)
public class RingtoneSelectionController extends BaseController implements FlexibleAdapter.OnItemClickListener {
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.java b/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.java
index 50384456b..6f1833dad 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.java
@@ -35,7 +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;
@@ -48,21 +51,15 @@ import com.nextcloud.talk.utils.bundle.BundleKeys;
import com.nextcloud.talk.utils.database.user.UserUtils;
import com.nextcloud.talk.utils.preferences.AppPreferences;
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder;
-
-import java.security.cert.CertificateException;
-
-import javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import autodagger.AutoInjector;
-import butterknife.BindView;
-import butterknife.OnClick;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import studio.carbonylgroup.textfieldboxes.ExtendedEditText;
import studio.carbonylgroup.textfieldboxes.TextFieldBoxes;
+import javax.inject.Inject;
+import java.security.cert.CertificateException;
+
@AutoInjector(NextcloudTalkApplication.class)
public class ServerSelectionController extends BaseController {
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java
index 9a1aa4d66..b8ac8b14f 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java
@@ -22,8 +22,11 @@ package com.nextcloud.talk.controllers;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
+import android.app.KeyguardManager;
+import android.content.Context;
import android.content.Intent;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.security.KeyChain;
import android.text.TextUtils;
@@ -31,10 +34,17 @@ import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowManager;
import android.widget.Checkable;
import android.widget.ImageView;
import android.widget.TextView;
-
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.view.ViewCompat;
+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.VerticalChangeHandler;
@@ -53,43 +63,25 @@ import com.nextcloud.talk.models.RingtoneSettings;
import com.nextcloud.talk.models.database.UserEntity;
import com.nextcloud.talk.utils.ApiUtils;
import com.nextcloud.talk.utils.DoNotDisturbUtils;
+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.glide.GlideApp;
import com.nextcloud.talk.utils.preferences.AppPreferences;
import com.nextcloud.talk.utils.preferences.MagicUserInputModule;
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder;
-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 net.orange_box.storebox.listeners.OnPreferenceValueChangedListener;
-
-import org.greenrobot.eventbus.EventBus;
-
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
-
-import javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.core.view.ViewCompat;
-import androidx.work.OneTimeWorkRequest;
-import androidx.work.WorkManager;
-import autodagger.AutoInjector;
-import butterknife.BindView;
+import com.yarolegovich.mp.*;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
+import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener;
+import org.greenrobot.eventbus.EventBus;
+
+import javax.inject.Inject;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.*;
@AutoInjector(NextcloudTalkApplication.class)
public class SettingsController extends BaseController {
@@ -153,6 +145,21 @@ public class SettingsController extends BaseController {
@BindView(R.id.settings_always_vibrate)
MaterialSwitchPreference shouldVibrateSwitchPreference;
+ @BindView(R.id.settings_incognito_keyboard)
+ MaterialSwitchPreference incognitoKeyboardSwitchPreference;
+
+ @BindView(R.id.settings_screen_security)
+ MaterialSwitchPreference screenSecuritySwitchPreference;
+
+ @BindView(R.id.settings_link_previews)
+ MaterialSwitchPreference linkPreviewsSwitchPreference;
+
+ @BindView(R.id.settings_screen_lock)
+ MaterialSwitchPreference screenLockSwitchPreference;
+
+ @BindView(R.id.settings_screen_lock_timeout)
+ MaterialChoicePreference screenLockTimeoutChoicePreference;
+
@BindView(R.id.message_text)
TextView messageText;
@@ -168,11 +175,17 @@ public class SettingsController extends BaseController {
@Inject
UserUtils userUtils;
+ @Inject
+ Context context;
+
private UserEntity currentUser;
private String credentials;
private OnPreferenceValueChangedListener proxyTypeChangeListener;
private OnPreferenceValueChangedListener proxyCredentialsChangeListener;
+ private OnPreferenceValueChangedListener screenSecurityChangeListener;
+ private OnPreferenceValueChangedListener screenLockChangeListener;
+ private OnPreferenceValueChangedListener screenLockTimeoutChangeListener;
private Disposable profileQueryDisposable;
private Disposable dbQueryDisposable;
@@ -198,8 +211,10 @@ public class SettingsController extends BaseController {
getCurrentUser();
appPreferences.registerProxyTypeListener(proxyTypeChangeListener = new ProxyTypeChangeListener());
- appPreferences.registerProxyCredentialsListener(proxyCredentialsChangeListener = new
- ProxyCredentialsChangeListener());
+ appPreferences.registerProxyCredentialsListener(proxyCredentialsChangeListener = new ProxyCredentialsChangeListener());
+ appPreferences.registerScreenSecurityListener(screenSecurityChangeListener = new ScreenSecurityChangeListener());
+ appPreferences.registerScreenLockListener(screenLockChangeListener = new ScreenLockListener());
+ appPreferences.registerScreenLockTimeoutListener(screenLockTimeoutChangeListener = new ScreenLockTimeoutListener());
List listWithIntFields = new ArrayList<>();
listWithIntFields.add("proxy_port");
@@ -223,6 +238,20 @@ public class SettingsController extends BaseController {
shouldVibrateSwitchPreference.setVisibility(View.GONE);
}
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+ incognitoKeyboardSwitchPreference.setVisibility(View.GONE);
+ }
+
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+ screenLockSwitchPreference.setVisibility(View.GONE);
+ screenLockTimeoutChoicePreference.setVisibility(View.GONE);
+ } else {
+ screenLockSwitchPreference.setSummary(String.format(Locale.getDefault(),
+ getResources().getString(R.string.nc_settings_screen_lock_desc),
+ getResources().getString(R.string.nc_app_name)));
+ }
+
+
if (!TextUtils.isEmpty(getResources().getString(R.string.nc_privacy_url))) {
privacyButton.addPreferenceClickListener(view12 -> {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getResources().
@@ -327,7 +356,46 @@ public class SettingsController extends BaseController {
}
if (shouldVibrateSwitchPreference.getVisibility() == View.VISIBLE) {
- ((Checkable)shouldVibrateSwitchPreference.findViewById(R.id.mp_checkable)).setChecked(appPreferences.getShouldVibrateSetting());
+ ((Checkable) shouldVibrateSwitchPreference.findViewById(R.id.mp_checkable)).setChecked(appPreferences.getShouldVibrateSetting());
+ }
+
+ ((Checkable) screenSecuritySwitchPreference.findViewById(R.id.mp_checkable)).setChecked(appPreferences.getIsScreenSecured());
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ ((Checkable) incognitoKeyboardSwitchPreference.findViewById(R.id.mp_checkable)).setChecked(appPreferences.getIsKeyboardIncognito());
+ }
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ ((Checkable) incognitoKeyboardSwitchPreference.findViewById(R.id.mp_checkable)).setChecked(appPreferences.getIsKeyboardIncognito());
+ }
+
+ ((Checkable) linkPreviewsSwitchPreference.findViewById(R.id.mp_checkable)).setChecked(appPreferences.getAreLinkPreviewsAllowed());
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
+
+ if (keyguardManager.isKeyguardSecure()) {
+ screenLockSwitchPreference.setEnabled(true);
+ screenLockTimeoutChoicePreference.setEnabled(true);
+ ((Checkable) screenLockSwitchPreference.findViewById(R.id.mp_checkable)).setChecked(appPreferences.getIsScreenLocked());
+
+ screenLockTimeoutChoicePreference.setEnabled(appPreferences.getIsScreenLocked());
+
+ if (appPreferences.getIsScreenLocked()) {
+ screenLockTimeoutChoicePreference.setAlpha(1.0f);
+ } else {
+ screenLockTimeoutChoicePreference.setAlpha(0.38f);
+ }
+
+ screenLockSwitchPreference.setAlpha(1.0f);
+ } else {
+ screenLockSwitchPreference.setEnabled(false);
+ screenLockTimeoutChoicePreference.setEnabled(false);
+ appPreferences.removeScreenLock();
+ appPreferences.removeScreenLockTimeout();
+ ((Checkable) screenLockSwitchPreference.findViewById(R.id.mp_checkable)).setChecked(false);
+ screenLockSwitchPreference.setAlpha(0.38f);
+ screenLockTimeoutChoicePreference.setAlpha(0.38f);
+ }
}
String ringtoneName = "";
@@ -532,6 +600,9 @@ public class SettingsController extends BaseController {
if (appPreferences != null) {
appPreferences.unregisterProxyTypeListener(proxyTypeChangeListener);
appPreferences.unregisterProxyCredentialsListener(proxyCredentialsChangeListener);
+ appPreferences.unregisterScreenSecurityListener(screenSecurityChangeListener);
+ appPreferences.unregisterScreenLockListener(screenLockChangeListener);
+ appPreferences.unregisterScreenLockTimeoutListener(screenLockTimeoutChangeListener);
}
super.onDestroy();
}
@@ -594,6 +665,46 @@ public class SettingsController extends BaseController {
return getResources().getString(R.string.nc_app_name);
}
+ private class ScreenLockTimeoutListener implements OnPreferenceValueChangedListener {
+
+ @Override
+ public void onChanged(String newValue) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ SecurityUtils.createKey(appPreferences.getScreenLockTimeout());
+ }
+ }
+ }
+
+ private class ScreenLockListener implements OnPreferenceValueChangedListener {
+
+ @Override
+ public void onChanged(Boolean newValue) {
+ screenLockTimeoutChoicePreference.setEnabled(newValue);
+
+ if (newValue) {
+ screenLockTimeoutChoicePreference.setAlpha(1.0f);
+ } else {
+ screenLockTimeoutChoicePreference.setAlpha(0.38f);
+ }
+ }
+ }
+
+ private class ScreenSecurityChangeListener implements OnPreferenceValueChangedListener {
+
+ @Override
+ public void onChanged(Boolean newValue) {
+ if (newValue) {
+ if (getActivity() != null) {
+ getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+ } else {
+ if (getActivity() != null) {
+ getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+ }
+ }
+ }
+
private class ProxyCredentialsChangeListener implements OnPreferenceValueChangedListener {
@Override
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.java b/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.java
index a3be161fc..7837bfa01 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.java
@@ -29,7 +29,13 @@ import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+import autodagger.AutoInjector;
+import butterknife.BindView;
import com.bluelinelabs.conductor.RouterTransaction;
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
import com.nextcloud.talk.R;
@@ -42,26 +48,17 @@ import com.nextcloud.talk.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 java.net.CookieManager;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.DividerItemDecoration;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
-import autodagger.AutoInjector;
-import butterknife.BindView;
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;
+
@AutoInjector(NextcloudTalkApplication.class)
public class SwitchAccountController extends BaseController {
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java b/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java
index e986d7349..0870adfc4 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java
@@ -32,14 +32,11 @@ import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.webkit.ClientCertRequest;
-import android.webkit.CookieSyncManager;
-import android.webkit.SslErrorHandler;
-import android.webkit.WebSettings;
-import android.webkit.WebView;
-import android.webkit.WebViewClient;
+import android.webkit.*;
import android.widget.ProgressBar;
-
+import androidx.annotation.NonNull;
+import autodagger.AutoInjector;
+import butterknife.BindView;
import com.bluelinelabs.conductor.RouterTransaction;
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
import com.nextcloud.talk.R;
@@ -53,9 +50,14 @@ import com.nextcloud.talk.utils.database.user.UserUtils;
import com.nextcloud.talk.utils.preferences.AppPreferences;
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder;
import com.nextcloud.talk.utils.ssl.MagicTrustManager;
-
+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;
@@ -66,17 +68,6 @@ import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
-import javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import autodagger.AutoInjector;
-import butterknife.BindView;
-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;
-
@AutoInjector(NextcloudTalkApplication.class)
public class WebViewLoginController extends BaseController {
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.java b/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.java
index 36a995fa4..c2504590c 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.java
@@ -19,12 +19,19 @@
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;
-
+import android.view.ViewGroup;
+import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.appcompat.app.ActionBar;
+import autodagger.AutoInjector;
import com.bluelinelabs.conductor.Controller;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.controllers.AccountVerificationController;
@@ -34,15 +41,10 @@ import com.nextcloud.talk.controllers.WebViewLoginController;
import com.nextcloud.talk.controllers.base.providers.ActionBarProvider;
import com.nextcloud.talk.utils.preferences.AppPreferences;
+import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
-import javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import androidx.appcompat.app.ActionBar;
-import autodagger.AutoInjector;
-
@AutoInjector(NextcloudTalkApplication.class)
public abstract class BaseController extends ButterKnifeController {
@@ -90,6 +92,10 @@ public abstract class BaseController extends ButterKnifeController {
@Override
protected void onViewBound(@NonNull View view) {
super.onViewBound(view);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && appPreferences.getIsKeyboardIncognito()) {
+ disableKeyboardPersonalisedLearning((ViewGroup) view);
+ }
}
// Note: This is just a quick demo of how an ActionBar *can* be accessed, not necessarily how it *should*
@@ -106,11 +112,12 @@ public abstract class BaseController extends ButterKnifeController {
@Override
protected void onAttach(@NonNull View view) {
+ super.onAttach(view);
+
setTitle();
if (getActionBar() != null) {
getActionBar().setDisplayHomeAsUpEnabled(getParentController() != null || getRouter().getBackstackSize() > 1);
}
- super.onAttach(view);
}
@Override
@@ -141,4 +148,20 @@ public abstract class BaseController extends ButterKnifeController {
protected String getTitle() {
return null;
}
+
+ @RequiresApi(api = Build.VERSION_CODES.O)
+ private void disableKeyboardPersonalisedLearning(final ViewGroup viewGroup) {
+ View view;
+ EditText editText;
+
+ for (int i = 0; i < viewGroup.getChildCount(); i++) {
+ view = viewGroup.getChildAt(i);
+ if (view instanceof EditText) {
+ editText = (EditText) view;
+ editText.setImeOptions(editText.getImeOptions() | EditorInfo.IME_FLAG_NO_PERSONALIZED_LEARNING);
+ } else if (view instanceof ViewGroup) {
+ disableKeyboardPersonalisedLearning((ViewGroup) view);
+ }
+ }
+ }
}
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/base/ButterKnifeController.java b/app/src/main/java/com/nextcloud/talk/controllers/base/ButterKnifeController.java
index 738b4cdbd..54ee017f8 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/base/ButterKnifeController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/base/ButterKnifeController.java
@@ -22,12 +22,10 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-
-import com.bluelinelabs.conductor.Controller;
-
import androidx.annotation.NonNull;
import butterknife.ButterKnife;
import butterknife.Unbinder;
+import com.bluelinelabs.conductor.Controller;
public abstract class ButterKnifeController extends Controller {
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java
index 92fb228e2..a62477be9 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java
@@ -27,7 +27,11 @@ import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import autodagger.AutoInjector;
+import butterknife.BindView;
import com.bluelinelabs.conductor.RouterTransaction;
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
import com.kennyc.bottomsheet.adapters.AppAdapter;
@@ -42,25 +46,17 @@ import com.nextcloud.talk.models.json.rooms.Conversation;
import com.nextcloud.talk.utils.ShareUtils;
import com.nextcloud.talk.utils.bundle.BundleKeys;
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 org.greenrobot.eventbus.EventBus;
import org.parceler.Parcel;
import org.parceler.Parcels;
+import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
-import javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import autodagger.AutoInjector;
-import butterknife.BindView;
-import eu.davidea.flexibleadapter.FlexibleAdapter;
-import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager;
-import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
-
@AutoInjector(NextcloudTalkApplication.class)
public class CallMenuController extends BaseController implements FlexibleAdapter.OnItemClickListener {
@BindView(R.id.recycler_view)
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.java b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.java
index 06d680623..c7feafe2b 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.java
@@ -32,7 +32,10 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
-
+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;
@@ -44,19 +47,13 @@ import com.nextcloud.talk.utils.ShareUtils;
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 javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import autodagger.AutoInjector;
-import butterknife.BindView;
-import butterknife.OnClick;
import studio.carbonylgroup.textfieldboxes.ExtendedEditText;
import studio.carbonylgroup.textfieldboxes.TextFieldBoxes;
+import javax.inject.Inject;
+
@AutoInjector(NextcloudTalkApplication.class)
public class EntryMenuController extends BaseController {
@@ -131,7 +128,8 @@ public class EntryMenuController extends BaseController {
bundle.putString(BundleKeys.KEY_CALL_URL, callUrl);
bundle.putString(BundleKeys.KEY_CONVERSATION_PASSWORD, editText.getText().toString());
bundle.putInt(BundleKeys.KEY_OPERATION_CODE, operationCode);
- if (originalBundle.containsKey(BundleKeys.KEY_SERVER_CAPABILITIES)) { bundle.putParcelable(BundleKeys.KEY_SERVER_CAPABILITIES, originalBundle.getParcelable(BundleKeys.KEY_SERVER_CAPABILITIES));
+ if (originalBundle.containsKey(BundleKeys.KEY_SERVER_CAPABILITIES)) {
+ bundle.putParcelable(BundleKeys.KEY_SERVER_CAPABILITIES, originalBundle.getParcelable(BundleKeys.KEY_SERVER_CAPABILITIES));
}
getRouter().pushController(RouterTransaction.with(new OperationsMenuController(bundle))
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java
index ac7a97eb4..8077f0584 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java
@@ -35,7 +35,10 @@ 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;
@@ -61,25 +64,18 @@ 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 androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-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 org.greenrobot.eventbus.EventBus;
+import org.parceler.Parcels;
import retrofit2.HttpException;
+import javax.inject.Inject;
+import java.io.IOException;
+import java.util.ArrayList;
+
@AutoInjector(NextcloudTalkApplication.class)
public class OperationsMenuController extends BaseController {
@@ -614,7 +610,7 @@ public class OperationsMenuController extends BaseController {
if (baseUrl != null && !baseUrl.equals(currentUser.getBaseUrl())) {
isGuestUser = true;
- hasChatCapability = capabilities != null && capabilities.getSpreedCapability() != null && capabilities.getSpreedCapability().getFeatures() != null && capabilities.getSpreedCapability().getFeatures().contains("chat-v2");
+ hasChatCapability = capabilities != null && capabilities.getSpreedCapability() != null && capabilities.getSpreedCapability().getFeatures() != null && capabilities.getSpreedCapability().getFeatures().contains("chat-v2");
} else {
hasChatCapability = currentUser.hasSpreedCapabilityWithName("chat-v2");
}
diff --git a/app/src/main/java/com/nextcloud/talk/dagger/modules/BusModule.java b/app/src/main/java/com/nextcloud/talk/dagger/modules/BusModule.java
index bf4c22964..a8817229a 100644
--- a/app/src/main/java/com/nextcloud/talk/dagger/modules/BusModule.java
+++ b/app/src/main/java/com/nextcloud/talk/dagger/modules/BusModule.java
@@ -20,13 +20,12 @@
*/
package com.nextcloud.talk.dagger.modules;
+import dagger.Module;
+import dagger.Provides;
import org.greenrobot.eventbus.EventBus;
import javax.inject.Singleton;
-import dagger.Module;
-import dagger.Provides;
-
@Module
public class BusModule {
diff --git a/app/src/main/java/com/nextcloud/talk/dagger/modules/ContextModule.java b/app/src/main/java/com/nextcloud/talk/dagger/modules/ContextModule.java
index 56663c057..94e61603c 100644
--- a/app/src/main/java/com/nextcloud/talk/dagger/modules/ContextModule.java
+++ b/app/src/main/java/com/nextcloud/talk/dagger/modules/ContextModule.java
@@ -21,7 +21,6 @@
package com.nextcloud.talk.dagger.modules;
import android.content.Context;
-
import androidx.annotation.NonNull;
import dagger.Module;
import dagger.Provides;
diff --git a/app/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java b/app/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java
index 1f723893b..3ff5643a5 100644
--- a/app/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java
+++ b/app/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java
@@ -21,16 +21,10 @@
package com.nextcloud.talk.dagger.modules;
import android.content.Context;
-
+import androidx.annotation.NonNull;
import com.nextcloud.talk.R;
import com.nextcloud.talk.models.database.Models;
import com.nextcloud.talk.utils.preferences.AppPreferences;
-
-import net.orange_box.storebox.StoreBox;
-
-import javax.inject.Singleton;
-
-import androidx.annotation.NonNull;
import dagger.Module;
import dagger.Provides;
import io.requery.Persistable;
@@ -39,6 +33,9 @@ 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;
@Module
public class DatabaseModule {
diff --git a/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java b/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java
index 595a20fae..d7f69ce79 100644
--- a/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java
+++ b/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java
@@ -22,7 +22,8 @@ package com.nextcloud.talk.dagger.modules;
import android.text.TextUtils;
import android.util.Log;
-
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import com.github.aurae.retrofit2.LoganSquareConverterFactory;
import com.nextcloud.talk.BuildConfig;
import com.nextcloud.talk.api.NcApi;
@@ -34,7 +35,18 @@ import com.nextcloud.talk.utils.singletons.AvatarStatusCodeHolder;
import com.nextcloud.talk.utils.ssl.MagicKeyManager;
import com.nextcloud.talk.utils.ssl.MagicTrustManager;
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;
@@ -46,30 +58,6 @@ 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 androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import dagger.Module;
-import dagger.Provides;
-import io.reactivex.schedulers.Schedulers;
-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 {
@@ -220,6 +208,29 @@ public class RestModule {
return httpClient.build();
}
+ public static class HeadersInterceptor implements Interceptor {
+
+ @Override
+ public Response intercept(@NonNull Chain chain) throws IOException {
+ Request original = chain.request();
+
+ Request request = original.newBuilder()
+ .header("User-Agent", ApiUtils.getUserAgent())
+ .header("Accept", "application/json")
+ .header("OCS-APIRequest", "true")
+ .method(original.method(), original.body())
+ .build();
+
+ Response response = chain.proceed(request);
+
+ if (request.url().encodedPath().contains("/avatar/")) {
+ AvatarStatusCodeHolder.getInstance().setStatusCode(response.code());
+ }
+
+ return response;
+ }
+ }
+
private class ProxyAuthenticator implements Authenticator {
private String credentials;
@@ -251,29 +262,6 @@ public class RestModule {
}
}
- public static class HeadersInterceptor implements Interceptor {
-
- @Override
- public Response intercept(@NonNull Chain chain) throws IOException {
- Request original = chain.request();
-
- Request request = original.newBuilder()
- .header("User-Agent", ApiUtils.getUserAgent())
- .header("Accept", "application/json")
- .header("OCS-APIRequest", "true")
- .method(original.method(), original.body())
- .build();
-
- Response response = chain.proceed(request);
-
- if (request.url().encodedPath().contains("/avatar/")) {
- AvatarStatusCodeHolder.getInstance().setStatusCode(response.code());
- }
-
- return response;
- }
- }
-
private class GetProxyRunnable implements Runnable {
private volatile Proxy proxy;
private AppPreferences appPreferences;
diff --git a/app/src/main/java/com/nextcloud/talk/events/CertificateEvent.java b/app/src/main/java/com/nextcloud/talk/events/CertificateEvent.java
index 08d9bc43b..f23f63c55 100644
--- a/app/src/main/java/com/nextcloud/talk/events/CertificateEvent.java
+++ b/app/src/main/java/com/nextcloud/talk/events/CertificateEvent.java
@@ -21,13 +21,11 @@
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;
-import androidx.annotation.Nullable;
-
public class CertificateEvent {
private final X509Certificate x509Certificate;
private final MagicTrustManager magicTrustManager;
diff --git a/app/src/main/java/com/nextcloud/talk/events/MediaStreamEvent.java b/app/src/main/java/com/nextcloud/talk/events/MediaStreamEvent.java
index e5a2ba67e..3b9afaad7 100644
--- a/app/src/main/java/com/nextcloud/talk/events/MediaStreamEvent.java
+++ b/app/src/main/java/com/nextcloud/talk/events/MediaStreamEvent.java
@@ -20,10 +20,9 @@
package com.nextcloud.talk.events;
-import org.webrtc.MediaStream;
-
import androidx.annotation.Nullable;
import lombok.Data;
+import org.webrtc.MediaStream;
@Data
public class MediaStreamEvent {
diff --git a/app/src/main/java/com/nextcloud/talk/events/MoreMenuClickEvent.java b/app/src/main/java/com/nextcloud/talk/events/MoreMenuClickEvent.java
index 04b51bc45..28c2b0dc9 100644
--- a/app/src/main/java/com/nextcloud/talk/events/MoreMenuClickEvent.java
+++ b/app/src/main/java/com/nextcloud/talk/events/MoreMenuClickEvent.java
@@ -21,7 +21,6 @@
package com.nextcloud.talk.events;
import com.nextcloud.talk.models.json.rooms.Conversation;
-
import lombok.Data;
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/events/SessionDescriptionSendEvent.java b/app/src/main/java/com/nextcloud/talk/events/SessionDescriptionSendEvent.java
index 5925b47ba..4fd81563f 100644
--- a/app/src/main/java/com/nextcloud/talk/events/SessionDescriptionSendEvent.java
+++ b/app/src/main/java/com/nextcloud/talk/events/SessionDescriptionSendEvent.java
@@ -20,12 +20,10 @@
package com.nextcloud.talk.events;
-import com.nextcloud.talk.models.json.signaling.NCIceCandidate;
-
-import org.webrtc.SessionDescription;
-
import androidx.annotation.Nullable;
+import com.nextcloud.talk.models.json.signaling.NCIceCandidate;
import lombok.Data;
+import org.webrtc.SessionDescription;
@Data
public class SessionDescriptionSendEvent {
diff --git a/app/src/main/java/com/nextcloud/talk/events/WebSocketCommunicationEvent.java b/app/src/main/java/com/nextcloud/talk/events/WebSocketCommunicationEvent.java
index 7ffdd56a1..b6190c6c2 100644
--- a/app/src/main/java/com/nextcloud/talk/events/WebSocketCommunicationEvent.java
+++ b/app/src/main/java/com/nextcloud/talk/events/WebSocketCommunicationEvent.java
@@ -20,11 +20,11 @@
package com.nextcloud.talk.events;
-import java.util.HashMap;
-
import androidx.annotation.Nullable;
import lombok.Data;
+import java.util.HashMap;
+
@Data
public class WebSocketCommunicationEvent {
public final String type;
diff --git a/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java
index 424682bc3..a70128029 100644
--- a/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java
+++ b/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java
@@ -26,7 +26,10 @@ import android.content.Context;
import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
-
+import androidx.annotation.NonNull;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+import autodagger.AutoInjector;
import com.bluelinelabs.logansquare.LoganSquare;
import com.nextcloud.talk.R;
import com.nextcloud.talk.api.NcApi;
@@ -38,18 +41,6 @@ import com.nextcloud.talk.utils.ApiUtils;
import com.nextcloud.talk.utils.database.arbitrarystorage.ArbitraryStorageUtils;
import com.nextcloud.talk.utils.database.user.UserUtils;
import com.nextcloud.talk.webrtc.WebSocketConnectionHelper;
-
-import java.io.IOException;
-import java.net.CookieManager;
-import java.util.HashMap;
-import java.util.zip.CRC32;
-
-import javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import androidx.work.Worker;
-import androidx.work.WorkerParameters;
-import autodagger.AutoInjector;
import io.reactivex.CompletableObserver;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
@@ -57,6 +48,12 @@ 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;
+
@AutoInjector(NextcloudTalkApplication.class)
public class AccountRemovalWorker extends Worker {
public static final String TAG = "AccountRemovalWorker";
diff --git a/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java
index c6698f69a..3c0dc8675 100644
--- a/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java
+++ b/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java
@@ -22,7 +22,11 @@ package com.nextcloud.talk.jobs;
import android.content.Context;
import android.util.Log;
-
+import androidx.annotation.NonNull;
+import androidx.work.Data;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+import autodagger.AutoInjector;
import com.bluelinelabs.logansquare.LoganSquare;
import com.nextcloud.talk.api.NcApi;
import com.nextcloud.talk.application.NextcloudTalkApplication;
@@ -32,27 +36,19 @@ import com.nextcloud.talk.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 org.greenrobot.eventbus.EventBus;
-
-import java.io.IOException;
-import java.net.CookieManager;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import androidx.work.Data;
-import androidx.work.Worker;
-import androidx.work.WorkerParameters;
-import autodagger.AutoInjector;
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;
+
@AutoInjector(NextcloudTalkApplication.class)
public class CapabilitiesWorker extends Worker {
public static final String TAG = "CapabilitiesWorker";
diff --git a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java
index 46512a884..a64140f2f 100644
--- a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java
+++ b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java
@@ -37,7 +37,13 @@ import android.os.Vibrator;
import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;
-
+import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationManagerCompat;
+import androidx.work.Data;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+import autodagger.AutoInjector;
import com.bluelinelabs.logansquare.LoganSquare;
import com.nextcloud.talk.R;
import com.nextcloud.talk.activities.MagicCallActivity;
@@ -61,9 +67,16 @@ 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 io.reactivex.Observer;
+import io.reactivex.disposables.Disposable;
+import okhttp3.JavaNetCookieJar;
+import okhttp3.OkHttpClient;
import org.parceler.Parcels;
+import retrofit2.Retrofit;
+import javax.crypto.Cipher;
+import javax.crypto.NoSuchPaddingException;
+import javax.inject.Inject;
import java.io.IOException;
import java.net.CookieManager;
import java.security.InvalidKeyException;
@@ -73,23 +86,6 @@ import java.util.Calendar;
import java.util.HashMap;
import java.util.zip.CRC32;
-import javax.crypto.Cipher;
-import javax.crypto.NoSuchPaddingException;
-import javax.inject.Inject;
-
-import androidx.annotation.NonNull;
-import androidx.core.app.NotificationCompat;
-import androidx.core.app.NotificationManagerCompat;
-import androidx.work.Data;
-import androidx.work.Worker;
-import androidx.work.WorkerParameters;
-import autodagger.AutoInjector;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-import okhttp3.JavaNetCookieJar;
-import okhttp3.OkHttpClient;
-import retrofit2.Retrofit;
-
@AutoInjector(NextcloudTalkApplication.class)
public class NotificationWorker extends Worker {
public static final String TAG = "NotificationWorker";
diff --git a/app/src/main/java/com/nextcloud/talk/jobs/PushRegistrationWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/PushRegistrationWorker.java
index 6a908ed21..ae6ccc3af 100644
--- a/app/src/main/java/com/nextcloud/talk/jobs/PushRegistrationWorker.java
+++ b/app/src/main/java/com/nextcloud/talk/jobs/PushRegistrationWorker.java
@@ -21,12 +21,10 @@
package com.nextcloud.talk.jobs;
import android.content.Context;
-
-import com.nextcloud.talk.utils.PushUtils;
-
import androidx.annotation.NonNull;
import androidx.work.Worker;
import androidx.work.WorkerParameters;
+import com.nextcloud.talk.utils.PushUtils;
public class PushRegistrationWorker extends Worker {
public static final String TAG = "PushRegistrationWorker";
diff --git a/app/src/main/java/com/nextcloud/talk/jobs/SignalingSettingsJob.java b/app/src/main/java/com/nextcloud/talk/jobs/SignalingSettingsJob.java
index 74719c72c..04acf328b 100644
--- a/app/src/main/java/com/nextcloud/talk/jobs/SignalingSettingsJob.java
+++ b/app/src/main/java/com/nextcloud/talk/jobs/SignalingSettingsJob.java
@@ -23,7 +23,9 @@ package com.nextcloud.talk.jobs;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
-
+import androidx.annotation.NonNull;
+import androidx.work.*;
+import autodagger.AutoInjector;
import com.bluelinelabs.logansquare.LoganSquare;
import com.nextcloud.talk.api.NcApi;
import com.nextcloud.talk.application.NextcloudTalkApplication;
@@ -34,25 +36,15 @@ import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOveral
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 androidx.annotation.NonNull;
-import androidx.work.Data;
-import androidx.work.OneTimeWorkRequest;
-import androidx.work.WorkManager;
-import androidx.work.Worker;
-import androidx.work.WorkerParameters;
-import autodagger.AutoInjector;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-
@AutoInjector(NextcloudTalkApplication.class)
public class SignalingSettingsJob extends Worker {
private static final String TAG = "SignalingSettingsJob";
diff --git a/app/src/main/java/com/nextcloud/talk/jobs/WebsocketConnectionsWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/WebsocketConnectionsWorker.java
index 529f85257..31a84f805 100644
--- a/app/src/main/java/com/nextcloud/talk/jobs/WebsocketConnectionsWorker.java
+++ b/app/src/main/java/com/nextcloud/talk/jobs/WebsocketConnectionsWorker.java
@@ -24,7 +24,10 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
-
+import androidx.annotation.NonNull;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+import autodagger.AutoInjector;
import com.bluelinelabs.logansquare.LoganSquare;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.models.ExternalSignalingServer;
@@ -32,16 +35,10 @@ 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;
-
-import androidx.annotation.NonNull;
-import androidx.work.Worker;
-import androidx.work.WorkerParameters;
-import autodagger.AutoInjector;
-
@AutoInjector(NextcloudTalkApplication.class)
public class WebsocketConnectionsWorker extends Worker {
diff --git a/app/src/main/java/com/nextcloud/talk/models/ExternalSignalingServer.java b/app/src/main/java/com/nextcloud/talk/models/ExternalSignalingServer.java
index 8aeb1c17b..4871421b2 100644
--- a/app/src/main/java/com/nextcloud/talk/models/ExternalSignalingServer.java
+++ b/app/src/main/java/com/nextcloud/talk/models/ExternalSignalingServer.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/LoginData.java b/app/src/main/java/com/nextcloud/talk/models/LoginData.java
index 01b1da931..74b4b56e9 100644
--- a/app/src/main/java/com/nextcloud/talk/models/LoginData.java
+++ b/app/src/main/java/com/nextcloud/talk/models/LoginData.java
@@ -20,9 +20,8 @@
*/
package com.nextcloud.talk.models;
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/RetrofitBucket.java b/app/src/main/java/com/nextcloud/talk/models/RetrofitBucket.java
index 2b53ed61c..63c3c6659 100644
--- a/app/src/main/java/com/nextcloud/talk/models/RetrofitBucket.java
+++ b/app/src/main/java/com/nextcloud/talk/models/RetrofitBucket.java
@@ -19,12 +19,11 @@
*/
package com.nextcloud.talk.models;
+import lombok.Data;
import org.parceler.Parcel;
import java.util.Map;
-import lombok.Data;
-
@Parcel
@Data
public class RetrofitBucket {
diff --git a/app/src/main/java/com/nextcloud/talk/models/RingtoneSettings.java b/app/src/main/java/com/nextcloud/talk/models/RingtoneSettings.java
index 1be6a9ead..029948ef2 100644
--- a/app/src/main/java/com/nextcloud/talk/models/RingtoneSettings.java
+++ b/app/src/main/java/com/nextcloud/talk/models/RingtoneSettings.java
@@ -21,15 +21,12 @@
package com.nextcloud.talk.models;
import android.net.Uri;
-
+import androidx.annotation.Nullable;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.converters.UriTypeConverter;
-
-import org.parceler.Parcel;
-
-import androidx.annotation.Nullable;
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/SignatureVerification.java b/app/src/main/java/com/nextcloud/talk/models/SignatureVerification.java
index 9ed6f28c1..8a979c604 100644
--- a/app/src/main/java/com/nextcloud/talk/models/SignatureVerification.java
+++ b/app/src/main/java/com/nextcloud/talk/models/SignatureVerification.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models;
import com.nextcloud.talk.models.database.UserEntity;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorage.java b/app/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorage.java
index c095f0e53..4927c2986 100644
--- a/app/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorage.java
@@ -21,13 +21,12 @@
package com.nextcloud.talk.models.database;
import android.os.Parcelable;
-
-import java.io.Serializable;
-
import io.requery.Entity;
import io.requery.Key;
import io.requery.Persistable;
+import java.io.Serializable;
+
@Entity
public interface ArbitraryStorage extends Parcelable, Persistable, Serializable {
@Key
diff --git a/app/src/main/java/com/nextcloud/talk/models/database/User.java b/app/src/main/java/com/nextcloud/talk/models/database/User.java
index 44003c64f..b3de7024e 100644
--- a/app/src/main/java/com/nextcloud/talk/models/database/User.java
+++ b/app/src/main/java/com/nextcloud/talk/models/database/User.java
@@ -21,18 +21,16 @@ package com.nextcloud.talk.models.database;
import android.os.Parcelable;
import android.util.Log;
-
import com.bluelinelabs.logansquare.LoganSquare;
import com.nextcloud.talk.models.json.capabilities.Capabilities;
-
-import java.io.IOException;
-import java.io.Serializable;
-
import io.requery.Entity;
import io.requery.Generated;
import io.requery.Key;
import io.requery.Persistable;
+import java.io.IOException;
+import java.io.Serializable;
+
@Entity
public interface User extends Parcelable, Persistable, Serializable {
static final String TAG = "UserEntity";
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOCS.java
index 5a44616d7..934911627 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOCS.java
@@ -23,13 +23,11 @@ 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 lombok.Data;
import org.parceler.Parcel;
import java.util.List;
-import lombok.Data;
-
@Parcel
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOverall.java
index 99ff016b1..eaeb87aca 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteOverall.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.autocomplete;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteUser.java b/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteUser.java
index 525ff0223..271563233 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteUser.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/autocomplete/AutocompleteUser.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.autocomplete;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/call/Call.java b/app/src/main/java/com/nextcloud/talk/models/json/call/Call.java
index 97c5b3223..c80dc2e20 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/call/Call.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/call/Call.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.call;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/call/CallOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/call/CallOCS.java
index 92e23aaeb..9c6dd6678 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/call/CallOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/call/CallOCS.java
@@ -23,10 +23,8 @@ package com.nextcloud.talk.models.json.call;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/call/CallOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/call/CallOverall.java
index 29f80e1b2..05693563e 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/call/CallOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/call/CallOverall.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.call;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/Capabilities.java b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/Capabilities.java
index 8db91189f..d7256e1b5 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/Capabilities.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/Capabilities.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.capabilities;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesList.java b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesList.java
index 02332aae5..056610225 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesList.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesList.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.capabilities;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOCS.java
index dad460433..c2a43fd0a 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOCS.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.capabilities;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOverall.java
index 68e5ae789..673aebbdf 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CapabilitiesOverall.java
@@ -21,10 +21,8 @@ package com.nextcloud.talk.models.json.capabilities;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/NotificationsCapability.java b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/NotificationsCapability.java
index bb22d988c..1e413cfee 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/NotificationsCapability.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/NotificationsCapability.java
@@ -22,13 +22,11 @@ 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.List;
-import lombok.Data;
-
@Parcel
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/SpreedCapability.java b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/SpreedCapability.java
index 30d12aea8..b1d548d00 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/SpreedCapability.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/SpreedCapability.java
@@ -22,13 +22,11 @@ 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.List;
-import lombok.Data;
-
@Parcel
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java
index 8a618c045..9c2fef0ea 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java
@@ -20,8 +20,7 @@
package com.nextcloud.talk.models.json.chat;
import android.text.TextUtils;
-import android.util.Log;
-
+import androidx.annotation.Nullable;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonIgnore;
import com.bluelinelabs.logansquare.annotation.JsonObject;
@@ -33,26 +32,48 @@ 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 lombok.Data;
import org.parceler.Parcel;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import androidx.annotation.Nullable;
-import lombok.Data;
+import java.util.*;
@Parcel
@Data
@JsonObject
public class ChatMessage implements IMessage, MessageContentType, MessageContentType.Image {
+ @JsonIgnore
+ public boolean isGrouped;
+ @JsonIgnore
+ public String activeUserId;
+ @JsonIgnore
+ public Map selectedIndividualHashMap;
+ @JsonIgnore
+ public boolean isLinkPreviewAllowed;
List messageTypesToIgnore = Arrays.asList(MessageType.REGULAR_TEXT_MESSAGE,
MessageType.SYSTEM_MESSAGE, MessageType.SINGLE_LINK_VIDEO_MESSAGE,
MessageType.SINGLE_LINK_AUDIO_MESSAGE, MessageType.SINGLE_LINK_MESSAGE);
+ String baseUrl;
+ @JsonField(name = "id")
+ int jsonMessageId;
+ @JsonField(name = "token")
+ String token;
+ // guests or users
+ @JsonField(name = "actorType")
+ String actorType;
+ @JsonField(name = "actorId")
+ String actorId;
+ // send when crafting a message
+ @JsonField(name = "actorDisplayName")
+ String actorDisplayName;
+ @JsonField(name = "timestamp")
+ long timestamp;
+ // send when crafting a message, max 1000 lines
+ @JsonField(name = "message")
+ String message;
+ @JsonField(name = "messageParameters")
+ HashMap> messageParameters;
+ @JsonField(name = "systemMessage", typeConverter = EnumSystemMessageTypeConverter.class)
+ SystemMessageType systemMessageType;
private boolean hasFileAttachment() {
if (messageParameters != null && messageParameters.size() > 0) {
@@ -82,7 +103,7 @@ public class ChatMessage implements IMessage, MessageContentType, MessageContent
}
}
- if (!messageTypesToIgnore.contains(getMessageType())) {
+ if (!messageTypesToIgnore.contains(getMessageType()) && isLinkPreviewAllowed) {
return getMessage().trim();
}
@@ -101,70 +122,6 @@ public class ChatMessage implements IMessage, MessageContentType, MessageContent
return TextMatchers.getMessageTypeFromString(getText());
}
- public enum MessageType {
- REGULAR_TEXT_MESSAGE,
- SYSTEM_MESSAGE,
- SINGLE_LINK_GIPHY_MESSAGE,
- SINGLE_LINK_TENOR_MESSAGE,
- SINGLE_LINK_GIF_MESSAGE,
- SINGLE_LINK_MESSAGE,
- SINGLE_LINK_VIDEO_MESSAGE,
- SINGLE_LINK_IMAGE_MESSAGE,
- SINGLE_LINK_AUDIO_MESSAGE,
- SINGLE_NC_ATTACHMENT_MESSAGE,
- }
-
- public enum SystemMessageType {
- DUMMY,
- CONVERSATION_CREATED,
- CONVERSATION_RENAMED,
- CALL_STARTED,
- CALL_JOINED,
- CALL_LEFT,
- CALL_ENDED,
- GUESTS_ALLOWED,
- GUESTS_DISALLOWED,
- PASSWORD_SET,
- PASSWORD_REMOVED,
- USER_ADDED,
- USER_REMOVED,
- MODERATOR_PROMOTED,
- MODERATOR_DEMOTED,
- FILE_SHARED,
- }
-
- String baseUrl;
- @JsonField(name = "id")
- int jsonMessageId;
- @JsonField(name = "token")
- String token;
- // guests or users
- @JsonField(name = "actorType")
- String actorType;
- @JsonField(name = "actorId")
- String actorId;
- // send when crafting a message
- @JsonField(name = "actorDisplayName")
- String actorDisplayName;
- @JsonField(name = "timestamp")
- long timestamp;
- // send when crafting a message, max 1000 lines
- @JsonField(name = "message")
- String message;
- @JsonField(name = "messageParameters")
- HashMap> messageParameters;
-
- @JsonField(name = "systemMessage", typeConverter = EnumSystemMessageTypeConverter.class)
- SystemMessageType systemMessageType;
-
- @JsonIgnore
- public boolean isGrouped;
- @JsonIgnore
- public String activeUserId;
- @JsonIgnore
- public Map selectedIndividualHashMap;
-
-
public Map getSelectedIndividualHashMap() {
return selectedIndividualHashMap;
}
@@ -278,4 +235,36 @@ public class ChatMessage implements IMessage, MessageContentType, MessageContent
public String getSystemMessage() {
return new EnumSystemMessageTypeConverter().convertToString(getSystemMessageType());
}
+
+ public enum MessageType {
+ REGULAR_TEXT_MESSAGE,
+ SYSTEM_MESSAGE,
+ SINGLE_LINK_GIPHY_MESSAGE,
+ SINGLE_LINK_TENOR_MESSAGE,
+ SINGLE_LINK_GIF_MESSAGE,
+ SINGLE_LINK_MESSAGE,
+ SINGLE_LINK_VIDEO_MESSAGE,
+ SINGLE_LINK_IMAGE_MESSAGE,
+ SINGLE_LINK_AUDIO_MESSAGE,
+ SINGLE_NC_ATTACHMENT_MESSAGE,
+ }
+
+ public enum SystemMessageType {
+ DUMMY,
+ CONVERSATION_CREATED,
+ CONVERSATION_RENAMED,
+ CALL_STARTED,
+ CALL_JOINED,
+ CALL_LEFT,
+ CALL_ENDED,
+ GUESTS_ALLOWED,
+ GUESTS_DISALLOWED,
+ PASSWORD_SET,
+ PASSWORD_REMOVED,
+ USER_ADDED,
+ USER_REMOVED,
+ MODERATOR_PROMOTED,
+ MODERATOR_DEMOTED,
+ FILE_SHARED,
+ }
}
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCS.java
index b39952570..7945e3e4d 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOCS.java
@@ -22,13 +22,11 @@ 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 lombok.Data;
import org.parceler.Parcel;
import java.util.List;
-import lombok.Data;
-
@Data
@Parcel
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOverall.java
index ea348d49d..a8c088245 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatOverall.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.chat;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumSystemMessageTypeConverter.java b/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumSystemMessageTypeConverter.java
index 0e8b5349c..59e1855f7 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumSystemMessageTypeConverter.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumSystemMessageTypeConverter.java
@@ -23,22 +23,7 @@ package com.nextcloud.talk.models.json.converters;
import com.bluelinelabs.logansquare.typeconverters.StringBasedTypeConverter;
import com.nextcloud.talk.models.json.chat.ChatMessage;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_ENDED;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_JOINED;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_LEFT;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CALL_STARTED;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CONVERSATION_CREATED;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.CONVERSATION_RENAMED;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.DUMMY;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.FILE_SHARED;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.GUESTS_ALLOWED;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.GUESTS_DISALLOWED;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.MODERATOR_DEMOTED;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.MODERATOR_PROMOTED;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.PASSWORD_REMOVED;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.PASSWORD_SET;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.USER_ADDED;
-import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.USER_REMOVED;
+import static com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.*;
/*
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/converters/ObjectParcelConverter.java b/app/src/main/java/com/nextcloud/talk/models/json/converters/ObjectParcelConverter.java
index d536d8816..99f42075b 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/converters/ObjectParcelConverter.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/converters/ObjectParcelConverter.java
@@ -21,7 +21,6 @@
package com.nextcloud.talk.models.json.converters;
import android.os.Parcel;
-
import org.parceler.ParcelConverter;
import org.parceler.Parcels;
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/converters/UriTypeConverter.java b/app/src/main/java/com/nextcloud/talk/models/json/converters/UriTypeConverter.java
index d3d738887..7bfd2e962 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/converters/UriTypeConverter.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/converters/UriTypeConverter.java
@@ -22,7 +22,6 @@ package com.nextcloud.talk.models.json.converters;
import android.net.Uri;
import android.text.TextUtils;
-
import com.bluelinelabs.logansquare.typeconverters.StringBasedTypeConverter;
public class UriTypeConverter extends StringBasedTypeConverter {
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericMeta.java b/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericMeta.java
index ef375d3c9..d977c9edc 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericMeta.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericMeta.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.generic;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOCS.java
index 7725735c1..920a1bae1 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOCS.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.generic;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOverall.java
index e6c8959ac..e8b9043c9 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/generic/GenericOverall.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.generic;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/generic/Status.java b/app/src/main/java/com/nextcloud/talk/models/json/generic/Status.java
index 58958aa51..11904b76d 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/generic/Status.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/generic/Status.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.generic;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/mention/Mention.java b/app/src/main/java/com/nextcloud/talk/models/json/mention/Mention.java
index a5b264aa0..4d02460ea 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/mention/Mention.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/mention/Mention.java
@@ -21,10 +21,8 @@ package com.nextcloud.talk.models.json.mention;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOCS.java
index 2d5faf7bf..5180635c1 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOCS.java
@@ -22,13 +22,11 @@ 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 lombok.Data;
import org.parceler.Parcel;
import java.util.List;
-import lombok.Data;
-
@Data
@Parcel
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOverall.java
index b8b4e8afa..beecb50d3 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/mention/MentionOverall.java
@@ -21,10 +21,8 @@ package com.nextcloud.talk.models.json.mention;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.java b/app/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.java
index 6a425679c..5adcacdad 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.java
@@ -22,61 +22,45 @@ package com.nextcloud.talk.models.json.notifications;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
+import lombok.Data;
import org.parceler.Parcel;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
-import lombok.Data;
-
@Data
@Parcel
@JsonObject
public class Notification {
- @JsonField(name = "notification_id")
- int notificationId;
-
- @JsonField(name = "app")
- String app;
-
- @JsonField(name = "user")
- String user;
-
- @JsonField(name = "datetime")
- Date datetime;
-
- @JsonField(name = "object_type")
- String objectType;
-
- @JsonField(name = "object_id")
- String objectId;
-
- @JsonField(name = "subject")
- String subject;
-
- @JsonField(name = "subjectRich")
- String subjectRich;
-
- @JsonField(name = "subjectRichParameters")
- HashMap> subjectRichParameters;
-
- @JsonField(name = "message")
- String message;
-
- @JsonField(name = "messageRich")
- String messageRich;
-
- @JsonField(name = "messageRichParameters")
- HashMap> messageRichParameters;
-
- @JsonField(name = "link")
- String link;
-
@JsonField(name = "icon")
public String icon;
-
+ @JsonField(name = "notification_id")
+ int notificationId;
+ @JsonField(name = "app")
+ String app;
+ @JsonField(name = "user")
+ String user;
+ @JsonField(name = "datetime")
+ Date datetime;
+ @JsonField(name = "object_type")
+ String objectType;
+ @JsonField(name = "object_id")
+ String objectId;
+ @JsonField(name = "subject")
+ String subject;
+ @JsonField(name = "subjectRich")
+ String subjectRich;
+ @JsonField(name = "subjectRichParameters")
+ HashMap> subjectRichParameters;
+ @JsonField(name = "message")
+ String message;
+ @JsonField(name = "messageRich")
+ String messageRich;
+ @JsonField(name = "messageRichParameters")
+ HashMap> messageRichParameters;
+ @JsonField(name = "link")
+ String link;
@JsonField(name = "actions")
List actions;
}
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationAction.java b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationAction.java
index 0bad1cfb3..dcca6db0a 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationAction.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationAction.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.notifications;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOCS.java
index 261021a50..1a20d2f72 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOCS.java
@@ -23,10 +23,8 @@ 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 org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOverall.java
index b96961aa0..46bcd828d 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationOverall.java
@@ -21,7 +21,6 @@ package com.nextcloud.talk.models.json.notifications;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
import lombok.Data;
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationRichObject.java b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationRichObject.java
index b341ee79b..6c42ece1b 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationRichObject.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationRichObject.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.notifications;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOCS.java
index b400ca5a6..f2e792326 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOCS.java
@@ -23,13 +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.generic.GenericOCS;
-
+import lombok.Data;
import org.parceler.Parcel;
import java.util.List;
-import lombok.Data;
-
@Data
@Parcel
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOverall.java
index 934ee1ed9..88a77c51d 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/NotificationsOverall.java
@@ -21,7 +21,6 @@ package com.nextcloud.talk.models.json.notifications;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
import lombok.Data;
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOverall.java
index b61f7eeb9..696d31422 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/participants/AddParticipantOverall.java
@@ -23,7 +23,6 @@ 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.rooms.RoomsOCS;
-
import lombok.Data;
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.java b/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.java
index 07bbec190..069f9b721 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.java
@@ -24,12 +24,10 @@ import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter;
import com.nextcloud.talk.models.json.converters.ObjectParcelConverter;
-
+import lombok.Data;
import org.parceler.Parcel;
import org.parceler.ParcelPropertyConverter;
-import lombok.Data;
-
@Parcel
@Data
@JsonObject
@@ -58,6 +56,7 @@ public class Participant {
@ParcelPropertyConverter(ObjectParcelConverter.class)
@JsonField(name = "inCall")
Object inCall;
+ String source;
public ParticipantFlags getParticipantFlags() {
ParticipantFlags participantFlags = ParticipantFlags.NOT_IN_CALL;
@@ -75,7 +74,6 @@ public class Participant {
return participantFlags;
}
- String source;
public enum ParticipantType {
DUMMY,
@@ -87,11 +85,11 @@ public class Participant {
}
public enum ParticipantFlags {
- NOT_IN_CALL (0),
- IN_CALL (1),
- IN_CALL_WITH_AUDIO (3),
- IN_CALL_WITH_VIDEO (5),
- IN_CALL_WITH_AUDIO_AND_VIDEO (7);
+ NOT_IN_CALL(0),
+ IN_CALL(1),
+ IN_CALL_WITH_AUDIO(3),
+ IN_CALL_WITH_VIDEO(5),
+ IN_CALL_WITH_AUDIO_AND_VIDEO(7);
private long value;
@@ -99,10 +97,6 @@ public class Participant {
this.value = value;
}
- public long getValue() {
- return value;
- }
-
public static ParticipantFlags fromValue(long value) {
if (value == 0) {
return NOT_IN_CALL;
@@ -119,5 +113,9 @@ public class Participant {
}
}
+ public long getValue() {
+ return value;
+ }
+
}
}
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOCS.java
index 7d82e9f12..26c336a9f 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOCS.java
@@ -23,13 +23,11 @@ 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 lombok.Data;
import org.parceler.Parcel;
import java.util.List;
-import lombok.Data;
-
@Parcel
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOverall.java
index 86bc51b48..6a0bcc1d3 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/participants/ParticipantsOverall.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.participants;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/push/DecryptedPushMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/push/DecryptedPushMessage.java
index 3b077d8bd..de79d261e 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/push/DecryptedPushMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/push/DecryptedPushMessage.java
@@ -23,10 +23,8 @@ package com.nextcloud.talk.models.json.push;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonIgnore;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/push/PushConfigurationState.java b/app/src/main/java/com/nextcloud/talk/models/json/push/PushConfigurationState.java
index c8038dc60..5b78951b0 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/push/PushConfigurationState.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/push/PushConfigurationState.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.push;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistration.java b/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistration.java
index 0e9d5b65b..0d494ebff 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistration.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistration.java
@@ -23,10 +23,8 @@ package com.nextcloud.talk.models.json.push;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOCS.java
index e52d5e3c6..e16eae402 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOCS.java
@@ -23,10 +23,8 @@ package com.nextcloud.talk.models.json.push;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOverall.java
index 572daaafc..6e33d175c 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/push/PushRegistrationOverall.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.push;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/rooms/Conversation.java b/app/src/main/java/com/nextcloud/talk/models/json/rooms/Conversation.java
index 39806c67e..e2603814a 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/rooms/Conversation.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/rooms/Conversation.java
@@ -27,13 +27,11 @@ import com.nextcloud.talk.models.json.converters.EnumNotificationLevelConverter;
import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter;
import com.nextcloud.talk.models.json.converters.EnumRoomTypeConverter;
import com.nextcloud.talk.models.json.participants.Participant;
-
+import lombok.Data;
import org.parceler.Parcel;
import java.util.HashMap;
-import lombok.Data;
-
@Parcel
@Data
@JsonObject
@@ -80,13 +78,6 @@ public class Conversation {
@JsonField(name = "notificationLevel", typeConverter = EnumNotificationLevelConverter.class)
NotificationLevel notificationLevel;
- public enum NotificationLevel {
- DEFAULT,
- ALWAYS,
- MENTION,
- NEVER
- }
-
public boolean isPublic() {
return (RoomType.ROOM_PUBLIC_CALL.equals(type));
}
@@ -109,6 +100,13 @@ public class Conversation {
return (canModerate() && ((participants != null && participants.size() > 2) || numberOfGuests > 0));
}
+ public enum NotificationLevel {
+ DEFAULT,
+ ALWAYS,
+ MENTION,
+ NEVER
+ }
+
@Parcel
public enum RoomType {
DUMMY,
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomOCS.java
index e6d3d6255..ee6741c04 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomOCS.java
@@ -23,7 +23,6 @@ package com.nextcloud.talk.models.json.rooms;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
-
import lombok.Data;
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomOverall.java
index 5030262b1..0a158cb15 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomOverall.java
@@ -22,7 +22,6 @@ package com.nextcloud.talk.models.json.rooms;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
import lombok.Data;
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomsOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomsOCS.java
index a2ee7a38d..f8d5aa291 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomsOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomsOCS.java
@@ -23,13 +23,11 @@ package com.nextcloud.talk.models.json.rooms;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
-
+import lombok.Data;
import org.parceler.Parcel;
import java.util.List;
-import lombok.Data;
-
@Data
@Parcel
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomsOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomsOverall.java
index ff63df4b1..0ef326f14 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomsOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/rooms/RoomsOverall.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.rooms;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/sharees/ExactSharees.java b/app/src/main/java/com/nextcloud/talk/models/json/sharees/ExactSharees.java
index f1a453309..eae480402 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/sharees/ExactSharees.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/sharees/ExactSharees.java
@@ -22,13 +22,11 @@ package com.nextcloud.talk.models.json.sharees;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
+import lombok.Data;
import org.parceler.Parcel;
import java.util.List;
-import lombok.Data;
-
@Parcel
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/sharees/Sharee.java b/app/src/main/java/com/nextcloud/talk/models/json/sharees/Sharee.java
index 81c519566..550117f5c 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/sharees/Sharee.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/sharees/Sharee.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.sharees;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOCS.java
index e79a18584..f20bcc6b9 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOCS.java
@@ -23,10 +23,8 @@ package com.nextcloud.talk.models.json.sharees;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOverall.java
index eccf496a9..59f0c3a02 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/sharees/ShareesOverall.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.sharees;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/sharees/SharesData.java b/app/src/main/java/com/nextcloud/talk/models/json/sharees/SharesData.java
index acdd5102d..37dd23821 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/sharees/SharesData.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/sharees/SharesData.java
@@ -22,13 +22,11 @@ package com.nextcloud.talk.models.json.sharees;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
+import lombok.Data;
import org.parceler.Parcel;
import java.util.List;
-import lombok.Data;
-
@Parcel
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/sharees/Value.java b/app/src/main/java/com/nextcloud/talk/models/json/sharees/Value.java
index 6eac35196..25a5f933d 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/sharees/Value.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/sharees/Value.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.sharees;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/DataChannelMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/signaling/DataChannelMessage.java
index ca1e88c19..97c4594f4 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/DataChannelMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/DataChannelMessage.java
@@ -22,7 +22,6 @@ package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
import lombok.Data;
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCIceCandidate.java b/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCIceCandidate.java
index 2085cce9d..c92e8ebc8 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCIceCandidate.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCIceCandidate.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCMessagePayload.java b/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCMessagePayload.java
index b940d261e..7db2e7ccd 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCMessagePayload.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCMessagePayload.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCMessageWrapper.java b/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCMessageWrapper.java
index b2f9a5245..b40093bf6 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCMessageWrapper.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCMessageWrapper.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCSignalingMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCSignalingMessage.java
index 2aed2a6d1..d4e92503b 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCSignalingMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/NCSignalingMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/Signaling.java b/app/src/main/java/com/nextcloud/talk/models/json/signaling/Signaling.java
index c62e76dc8..82f19549d 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/Signaling.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/Signaling.java
@@ -22,7 +22,6 @@ package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
import lombok.Data;
/**
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/SignalingOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/signaling/SignalingOCS.java
index 495314972..a8c44dfe2 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/SignalingOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/SignalingOCS.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.generic.GenericOCS;
+import lombok.Data;
import java.util.List;
-import lombok.Data;
-
@Data
@JsonObject
public class SignalingOCS extends GenericOCS {
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/SignalingOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/signaling/SignalingOverall.java
index 25fa42fe5..fc9bfc916 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/SignalingOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/SignalingOverall.java
@@ -22,7 +22,6 @@ package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
import lombok.Data;
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/IceServer.java b/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/IceServer.java
index 412e8d998..1bad04a55 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/IceServer.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/IceServer.java
@@ -22,11 +22,10 @@ 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
public class IceServer {
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/Settings.java b/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/Settings.java
index 23a387846..c07e1a365 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/Settings.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/Settings.java
@@ -22,11 +22,10 @@ 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
public class Settings {
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/SignalingSettingsOcs.java b/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/SignalingSettingsOcs.java
index 258295466..d2db1314f 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/SignalingSettingsOcs.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/SignalingSettingsOcs.java
@@ -23,7 +23,6 @@ package com.nextcloud.talk.models.json.signaling.settings;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
-
import lombok.Data;
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/SignalingSettingsOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/SignalingSettingsOverall.java
index fbe7c5098..10d680c4e 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/SignalingSettingsOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/SignalingSettingsOverall.java
@@ -22,7 +22,6 @@ package com.nextcloud.talk.models.json.signaling.settings;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
import lombok.Data;
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/userprofile/UserProfileData.java b/app/src/main/java/com/nextcloud/talk/models/json/userprofile/UserProfileData.java
index 9b62f093c..fa2978617 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/userprofile/UserProfileData.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/userprofile/UserProfileData.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.userprofile;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/userprofile/UserProfileOCS.java b/app/src/main/java/com/nextcloud/talk/models/json/userprofile/UserProfileOCS.java
index 132f12442..ca58bcd09 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/userprofile/UserProfileOCS.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/userprofile/UserProfileOCS.java
@@ -23,10 +23,8 @@ package com.nextcloud.talk.models.json.userprofile;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/userprofile/UserProfileOverall.java b/app/src/main/java/com/nextcloud/talk/models/json/userprofile/UserProfileOverall.java
index 4ced43f8c..4edd9c531 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/userprofile/UserProfileOverall.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/userprofile/UserProfileOverall.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.userprofile;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/ActorWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/ActorWebSocketMessage.java
index b8c931e72..2784f98fb 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/ActorWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/ActorWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/AuthParametersWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/AuthParametersWebSocketMessage.java
index 129b387f0..cdf53b8c5 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/AuthParametersWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/AuthParametersWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/AuthWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/AuthWebSocketMessage.java
index 7a17273ca..578e68d38 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/AuthWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/AuthWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/BaseWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/BaseWebSocketMessage.java
index 2b2c06b39..b950d6cba 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/BaseWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/BaseWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/ByeWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/ByeWebSocketMessage.java
index 368f6aed3..57f5ccee5 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/ByeWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/ByeWebSocketMessage.java
@@ -22,13 +22,11 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
+import lombok.Data;
import org.parceler.Parcel;
import java.util.HashMap;
-import lombok.Data;
-
@JsonObject
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/CallOverallWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/CallOverallWebSocketMessage.java
index d7c27b617..39b887b80 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/CallOverallWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/CallOverallWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/CallWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/CallWebSocketMessage.java
index fff246477..7ff5d9880 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/CallWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/CallWebSocketMessage.java
@@ -23,10 +23,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.signaling.NCSignalingMessage;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/ErrorOverallWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/ErrorOverallWebSocketMessage.java
index 587e55466..0d8fee0ad 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/ErrorOverallWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/ErrorOverallWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/ErrorWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/ErrorWebSocketMessage.java
index 253c85688..14c11b9e8 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/ErrorWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/ErrorWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/EventOverallWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/EventOverallWebSocketMessage.java
index 05dec7750..c131fce6c 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/EventOverallWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/EventOverallWebSocketMessage.java
@@ -22,13 +22,11 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
+import lombok.Data;
import org.parceler.Parcel;
import java.util.HashMap;
-import lombok.Data;
-
@Data
@Parcel
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloOverallWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloOverallWebSocketMessage.java
index a39af616a..f5d9a40fb 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloOverallWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloOverallWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloResponseOverallWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloResponseOverallWebSocketMessage.java
index 870c75f1a..aabf0aab7 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloResponseOverallWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloResponseOverallWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloResponseWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloResponseWebSocketMessage.java
index 2368780a9..2ea35db88 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloResponseWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloResponseWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloWebSocketMessage.java
index af2ff3831..1d4f2ebca 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/HelloWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/JoinedRoomOverallWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/JoinedRoomOverallWebSocketMessage.java
index 64cdc790d..cebdc2af7 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/JoinedRoomOverallWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/JoinedRoomOverallWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/RequestOfferOverallWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/RequestOfferOverallWebSocketMessage.java
index 983624b60..aed7d2a95 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/RequestOfferOverallWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/RequestOfferOverallWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/RequestOfferSignalingMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/RequestOfferSignalingMessage.java
index 3395f64eb..2aeddb94e 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/RequestOfferSignalingMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/RequestOfferSignalingMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomOverallWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomOverallWebSocketMessage.java
index 36950c6b3..0a076ecfb 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomOverallWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomOverallWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomPropertiesWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomPropertiesWebSocketMessage.java
index 48b4c76f4..2e3fe77f3 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomPropertiesWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomPropertiesWebSocketMessage.java
@@ -24,10 +24,8 @@ 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.rooms.Conversation;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@Parcel
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomWebSocketMessage.java
index 7bc3ce454..e2b499038 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomWebSocketMessage.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/ServerHelloResponseFeaturesWebSocketMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/ServerHelloResponseFeaturesWebSocketMessage.java
index c4406211d..7c5927c71 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/ServerHelloResponseFeaturesWebSocketMessage.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/ServerHelloResponseFeaturesWebSocketMessage.java
@@ -22,13 +22,11 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
+import lombok.Data;
import org.parceler.Parcel;
import java.util.List;
-import lombok.Data;
-
@JsonObject
@Parcel
@Data
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/websocket/SignalingDataWebSocketMessageForOffer.java b/app/src/main/java/com/nextcloud/talk/models/json/websocket/SignalingDataWebSocketMessageForOffer.java
index 50118ee2c..4553ef5c6 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/websocket/SignalingDataWebSocketMessageForOffer.java
+++ b/app/src/main/java/com/nextcloud/talk/models/json/websocket/SignalingDataWebSocketMessageForOffer.java
@@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.websocket;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
-
-import org.parceler.Parcel;
-
import lombok.Data;
+import org.parceler.Parcel;
@Data
@JsonObject
diff --git a/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java b/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java
index 3993e6a32..7d1d2204a 100644
--- a/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java
+++ b/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java
@@ -49,12 +49,9 @@ import java.util.List;
public class MentionAutocompletePresenter extends RecyclerViewPresenter implements FlexibleAdapter.OnItemClickListener {
@Inject
NcApi ncApi;
-
- private UserEntity currentUser;
-
@Inject
UserUtils userUtils;
-
+ private UserEntity currentUser;
private FlexibleAdapter adapter;
private Context context;
diff --git a/app/src/main/java/com/nextcloud/talk/receivers/PackageReplacedReceiver.java b/app/src/main/java/com/nextcloud/talk/receivers/PackageReplacedReceiver.java
index 46e1deb00..93c89b1d8 100644
--- a/app/src/main/java/com/nextcloud/talk/receivers/PackageReplacedReceiver.java
+++ b/app/src/main/java/com/nextcloud/talk/receivers/PackageReplacedReceiver.java
@@ -29,7 +29,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.util.Log;
-
+import autodagger.AutoInjector;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.utils.NotificationUtils;
import com.nextcloud.talk.utils.database.user.UserUtils;
@@ -37,8 +37,6 @@ import com.nextcloud.talk.utils.preferences.AppPreferences;
import javax.inject.Inject;
-import autodagger.AutoInjector;
-
@AutoInjector(NextcloudTalkApplication.class)
public class PackageReplacedReceiver extends BroadcastReceiver {
private static final String TAG = "PackageReplacedReceiver";
diff --git a/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.java b/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.java
index d1885aa14..0c39041f2 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.java
@@ -28,7 +28,6 @@ import android.accounts.AccountManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.util.Log;
-
import com.nextcloud.talk.R;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.models.ImportAccount;
diff --git a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java
index 2a71a2bcc..dc96530f4 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java
@@ -20,19 +20,17 @@
package com.nextcloud.talk.utils;
import android.net.Uri;
-
+import androidx.annotation.DimenRes;
+import androidx.annotation.Nullable;
import com.nextcloud.talk.BuildConfig;
import com.nextcloud.talk.R;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.models.RetrofitBucket;
+import okhttp3.Credentials;
import java.util.HashMap;
import java.util.Map;
-import androidx.annotation.DimenRes;
-import androidx.annotation.Nullable;
-import okhttp3.Credentials;
-
public class ApiUtils {
private static String ocsApiVersion = "/ocs/v2.php";
private static String spreedApiVersion = "/apps/spreed/api/v1";
diff --git a/app/src/main/java/com/nextcloud/talk/utils/DeviceUtils.java b/app/src/main/java/com/nextcloud/talk/utils/DeviceUtils.java
index a4c6dce13..8d56bd091 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/DeviceUtils.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/DeviceUtils.java
@@ -24,7 +24,6 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Build;
import android.util.Log;
-
import com.nextcloud.talk.application.NextcloudTalkApplication;
import java.lang.reflect.InvocationTargetException;
diff --git a/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java b/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java
index 5d905a79b..97e05b267 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java
@@ -35,23 +35,21 @@ import android.graphics.drawable.Drawable;
import android.graphics.drawable.VectorDrawable;
import android.net.Uri;
import android.os.Build;
-import android.text.Spannable;
-import android.text.SpannableString;
-import android.text.Spanned;
-import android.text.TextPaint;
-import android.text.TextUtils;
+import android.text.*;
import android.text.method.LinkMovementMethod;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.ClickableSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.StyleSpan;
-import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
-
+import androidx.annotation.*;
+import androidx.appcompat.widget.AppCompatDrawableManager;
+import androidx.core.content.ContextCompat;
+import androidx.core.graphics.drawable.DrawableCompat;
import com.facebook.drawee.controller.ControllerListener;
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.imagepipeline.common.RotationOptions;
@@ -69,20 +67,11 @@ import java.lang.reflect.Method;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import androidx.annotation.ColorInt;
-import androidx.annotation.ColorRes;
-import androidx.annotation.DrawableRes;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.widget.AppCompatDrawableManager;
-import androidx.core.content.ContextCompat;
-import androidx.core.graphics.drawable.DrawableCompat;
-
public class DisplayUtils {
private static final String TAG = "DisplayUtils";
- public static void setClickableString(String string, String url, TextView textView){
+ public static void setClickableString(String string, String url, TextView textView) {
SpannableString spannableString = new SpannableString(string);
spannableString.setSpan(new ClickableSpan() {
@Override
@@ -153,7 +142,7 @@ public class DisplayUtils {
@Override
public void onFinalImageSet(String id, @javax.annotation.Nullable Object imageInfo, @javax.annotation.Nullable Animatable animatable) {
- updateViewSize((ImageInfo)imageInfo, draweeView);
+ updateViewSize((ImageInfo) imageInfo, draweeView);
}
@Override
diff --git a/app/src/main/java/com/nextcloud/talk/utils/DoNotDisturbUtils.java b/app/src/main/java/com/nextcloud/talk/utils/DoNotDisturbUtils.java
index 6d875e0d1..1cd6bcae8 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/DoNotDisturbUtils.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/DoNotDisturbUtils.java
@@ -25,7 +25,6 @@ import android.content.Context;
import android.media.AudioManager;
import android.os.Build;
import android.os.Vibrator;
-
import com.nextcloud.talk.application.NextcloudTalkApplication;
public class DoNotDisturbUtils {
diff --git a/app/src/main/java/com/nextcloud/talk/utils/EmojiToolbar.java b/app/src/main/java/com/nextcloud/talk/utils/EmojiToolbar.java
index ddbbbc822..0c435ed40 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/EmojiToolbar.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/EmojiToolbar.java
@@ -23,12 +23,10 @@ package com.nextcloud.talk.utils;
import android.content.Context;
import android.text.TextUtils;
import android.util.AttributeSet;
-
-import com.nextcloud.talk.R;
-import com.vanniktech.emoji.EmojiTextView;
-
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
+import com.nextcloud.talk.R;
+import com.vanniktech.emoji.EmojiTextView;
public class EmojiToolbar extends Toolbar {
private EmojiTextView emojiTitleTextView;
diff --git a/app/src/main/java/com/nextcloud/talk/utils/FABAwareScrollingViewBehavior.java b/app/src/main/java/com/nextcloud/talk/utils/FABAwareScrollingViewBehavior.java
index 77841302c..da66c2707 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/FABAwareScrollingViewBehavior.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/FABAwareScrollingViewBehavior.java
@@ -18,15 +18,13 @@ package com.nextcloud.talk.utils;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
-
+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;
-import androidx.coordinatorlayout.widget.CoordinatorLayout;
-import androidx.core.view.ViewCompat;
-
public class FABAwareScrollingViewBehavior extends AppBarLayout.ScrollingViewBehavior {
public FABAwareScrollingViewBehavior(Context context, AttributeSet attrs) {
diff --git a/app/src/main/java/com/nextcloud/talk/utils/MagicCharPolicy.java b/app/src/main/java/com/nextcloud/talk/utils/MagicCharPolicy.java
index de64d4781..e63d58184 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/MagicCharPolicy.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/MagicCharPolicy.java
@@ -36,6 +36,17 @@ public class MagicCharPolicy implements AutocompletePolicy {
this.character = character;
}
+ @Nullable
+ public static int[] getQueryRange(Spannable text) {
+ QuerySpan[] span = text.getSpans(0, text.length(), QuerySpan.class);
+ if (span == null || span.length == 0) return null;
+ if (span.length > 1) {
+ // Do absolutely nothing
+ }
+ QuerySpan sp = span[0];
+ return new int[]{text.getSpanStart(sp), text.getSpanEnd(sp)};
+ }
+
private int[] checkText(Spannable text, int cursorPos) {
if (text.length() == 0) {
return null;
@@ -84,7 +95,6 @@ public class MagicCharPolicy implements AutocompletePolicy {
return text.subSequence(text.getSpanStart(sp), text.getSpanEnd(sp));
}
-
@Override
public void onDismiss(Spannable text) {
// Remove any span added by shouldShow. Should be useless, but anyway.
@@ -96,15 +106,4 @@ public class MagicCharPolicy implements AutocompletePolicy {
private static class QuerySpan {
}
-
- @Nullable
- public static int[] getQueryRange(Spannable text) {
- QuerySpan[] span = text.getSpans(0, text.length(), QuerySpan.class);
- if (span == null || span.length == 0) return null;
- if (span.length > 1) {
- // Do absolutely nothing
- }
- QuerySpan sp = span[0];
- return new int[]{text.getSpanStart(sp), text.getSpanEnd(sp)};
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/nextcloud/talk/utils/MagicFlipView.java b/app/src/main/java/com/nextcloud/talk/utils/MagicFlipView.java
index 547c924d5..b86637bce 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/MagicFlipView.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/MagicFlipView.java
@@ -22,7 +22,6 @@ package com.nextcloud.talk.utils;
import android.content.Context;
import android.util.AttributeSet;
-
import eu.davidea.flipview.FlipView;
public class MagicFlipView extends FlipView {
diff --git a/app/src/main/java/com/nextcloud/talk/utils/NotificationUtils.java b/app/src/main/java/com/nextcloud/talk/utils/NotificationUtils.java
index a5852b260..178d16ba7 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/NotificationUtils.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/NotificationUtils.java
@@ -29,7 +29,6 @@ import android.graphics.Color;
import android.os.Build;
import android.service.notification.StatusBarNotification;
import android.text.TextUtils;
-
import com.nextcloud.talk.R;
import com.nextcloud.talk.models.database.UserEntity;
diff --git a/app/src/main/java/com/nextcloud/talk/utils/OkHttpNetworkFetcherWithCache.java b/app/src/main/java/com/nextcloud/talk/utils/OkHttpNetworkFetcherWithCache.java
index 0f923f92f..82e483cf0 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/OkHttpNetworkFetcherWithCache.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/OkHttpNetworkFetcherWithCache.java
@@ -21,12 +21,11 @@
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/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java b/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java
index 4d7302cfe..576599c3d 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java
@@ -24,7 +24,7 @@ import android.content.Context;
import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;
-
+import autodagger.AutoInjector;
import com.bluelinelabs.logansquare.LoganSquare;
import com.nextcloud.talk.R;
import com.nextcloud.talk.api.NcApi;
@@ -36,24 +36,14 @@ import com.nextcloud.talk.models.json.push.PushConfigurationState;
import com.nextcloud.talk.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 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 javax.inject.Inject;
+import java.io.*;
+import java.security.*;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
@@ -61,13 +51,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import javax.inject.Inject;
-
-import autodagger.AutoInjector;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-
@AutoInjector(NextcloudTalkApplication.class)
public class PushUtils {
private static final String TAG = "PushUtils";
diff --git a/app/src/main/java/com/nextcloud/talk/utils/SecurityUtils.java b/app/src/main/java/com/nextcloud/talk/utils/SecurityUtils.java
new file mode 100644
index 000000000..87cb3c03e
--- /dev/null
+++ b/app/src/main/java/com/nextcloud/talk/utils/SecurityUtils.java
@@ -0,0 +1,131 @@
+/*
+ * Nextcloud Talk application
+ *
+ * @author Mario Danic
+ * Copyright (C) 2017-2018 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.talk.utils;
+
+import android.content.res.Resources;
+import android.os.Build;
+import android.security.keystore.KeyGenParameterSpec;
+import android.security.keystore.KeyPermanentlyInvalidatedException;
+import android.security.keystore.KeyProperties;
+import android.security.keystore.UserNotAuthenticatedException;
+import android.util.Log;
+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.cert.CertificateException;
+import java.util.Arrays;
+import java.util.List;
+
+public class SecurityUtils {
+ private static final String TAG = "SecurityUtils";
+ private static final String CREDENTIALS_KEY = "KEY_CREDENTIALS";
+ private static final byte[] SECRET_BYTE_ARRAY = new byte[]{1, 2, 3, 4, 5, 6};
+
+ @RequiresApi(api = Build.VERSION_CODES.M)
+ public static boolean checkIfWeAreAuthenticated(String screenLockTimeout) {
+ try {
+ KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
+ keyStore.load(null);
+ SecretKey secretKey = (SecretKey) keyStore.getKey(CREDENTIALS_KEY, null);
+ Cipher cipher =
+ Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/" + KeyProperties.BLOCK_MODE_GCM + "/" + KeyProperties.ENCRYPTION_PADDING_NONE);
+
+ // Try encrypting something, it will only work if the user authenticated within
+ // the last AUTHENTICATION_DURATION_SECONDS seconds.
+ cipher.init(Cipher.ENCRYPT_MODE, secretKey);
+ cipher.doFinal(SECRET_BYTE_ARRAY);
+
+ // If the user has recently authenticated, we will reach here
+ return true;
+ } catch (UserNotAuthenticatedException e) {
+ // User is not authenticated, let's authenticate with device credentials.
+ return false;
+ } catch (KeyPermanentlyInvalidatedException e) {
+ // This happens if the lock screen has been disabled or reset after the key was
+ // generated after the key was generated.
+ // Shouldnt really happen because we regenerate the key every time an activity
+ // is created, but oh well
+ // Create key, and attempt again
+ createKey(screenLockTimeout);
+ return false;
+ } catch (BadPaddingException | IllegalBlockSizeException | KeyStoreException |
+ CertificateException | UnrecoverableKeyException | IOException
+ | NoSuchPaddingException | NoSuchAlgorithmException | InvalidKeyException e) {
+ return false;
+ }
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.M)
+ public static BiometricPrompt.CryptoObject getCryptoObject() {
+ Cipher cipher = null;
+ try {
+ cipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/" + KeyProperties.BLOCK_MODE_GCM + "/" + KeyProperties.ENCRYPTION_PADDING_NONE);
+ } catch (NoSuchAlgorithmException e) {
+ Log.w(TAG, e.getLocalizedMessage());
+ } catch (NoSuchPaddingException e) {
+ Log.w(TAG, e.getLocalizedMessage());
+ }
+
+ BiometricPrompt.CryptoObject cryptoObject = null;
+ if (cipher != null) {
+ cryptoObject = new BiometricPrompt.CryptoObject(cipher);
+ }
+
+ return cryptoObject;
+ }
+ @RequiresApi(api = Build.VERSION_CODES.M)
+ public static void createKey(String validity) {
+ try {
+ KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
+ keyStore.load(null);
+ KeyGenerator keyGenerator = KeyGenerator.getInstance(
+ KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
+
+ keyGenerator.init(new KeyGenParameterSpec.Builder(CREDENTIALS_KEY,
+ KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
+ .setRandomizedEncryptionRequired(true)
+ .setBlockModes(KeyProperties.BLOCK_MODE_GCM)
+ .setUserAuthenticationRequired(true)
+ .setUserAuthenticationValidityDurationSeconds(getIntegerFromStringTimeout(validity))
+ .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
+ .build());
+
+ keyGenerator.generateKey();
+ } catch (NoSuchAlgorithmException | NoSuchProviderException
+ | InvalidAlgorithmParameterException | KeyStoreException
+ | CertificateException | IOException e) {
+ Log.e(TAG, "Failed to create a symmetric key");
+ }
+ }
+
+ private static int getIntegerFromStringTimeout(String validity) {
+ Resources resources = NextcloudTalkApplication.getSharedApplication().getResources();
+ List entryValues = Arrays.asList(resources.getStringArray(R.array.screen_lock_timeout_entry_values));
+ int[] entryIntValues = resources.getIntArray(R.array.screen_lock_timeout_entry_int_values);
+ int indexOfValidity = entryValues.indexOf(validity);
+ return entryIntValues[indexOfValidity];
+ }
+}
diff --git a/app/src/main/java/com/nextcloud/talk/utils/ShareUtils.java b/app/src/main/java/com/nextcloud/talk/utils/ShareUtils.java
index 2b1416422..1eabb54fe 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/ShareUtils.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/ShareUtils.java
@@ -29,7 +29,7 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
-
+import androidx.annotation.Nullable;
import com.kennyc.bottomsheet.adapters.AppAdapter;
import com.nextcloud.talk.R;
import com.nextcloud.talk.models.database.UserEntity;
@@ -40,8 +40,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
-import androidx.annotation.Nullable;
-
public class ShareUtils {
public static String getStringForIntent(Context context, @Nullable String password, UserUtils userUtils, Conversation
diff --git a/app/src/main/java/com/nextcloud/talk/utils/TextMatchers.java b/app/src/main/java/com/nextcloud/talk/utils/TextMatchers.java
index 583f42c63..7c9126e43 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/TextMatchers.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/TextMatchers.java
@@ -23,23 +23,21 @@
package com.nextcloud.talk.utils;
import android.util.Patterns;
-
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import com.nextcloud.talk.models.json.chat.ChatMessage;
import com.vanniktech.emoji.EmojiInformation;
import com.vanniktech.emoji.EmojiUtils;
+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;
import java.util.regex.Pattern;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import eu.medsea.mimeutil.MimeUtil;
-import eu.medsea.mimeutil.detector.ExtensionMimeDetector;
-import eu.medsea.mimeutil.detector.MagicMimeMimeDetector;
-import eu.medsea.mimeutil.detector.OpendesktopMimeDetector;
-
public final class TextMatchers {
private static final String TAG = "TextMatchers";
diff --git a/app/src/main/java/com/nextcloud/talk/utils/animations/PulseAnimation.java b/app/src/main/java/com/nextcloud/talk/utils/animations/PulseAnimation.java
index d068f2fad..d0538d77e 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/animations/PulseAnimation.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/animations/PulseAnimation.java
@@ -27,7 +27,6 @@ import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.animation.ValueAnimator;
import android.view.View;
-
import androidx.annotation.NonNull;
public class PulseAnimation {
diff --git a/app/src/main/java/com/nextcloud/talk/utils/animations/SharedElementTransition.java b/app/src/main/java/com/nextcloud/talk/utils/animations/SharedElementTransition.java
index 0e4fdea03..351adaafa 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/animations/SharedElementTransition.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/animations/SharedElementTransition.java
@@ -21,23 +21,16 @@
package com.nextcloud.talk.utils.animations;
import android.os.Bundle;
-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.transition.*;
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;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
public class SharedElementTransition extends SharedElementTransitionChangeHandler {
private static final String KEY_WAIT_FOR_TRANSITION_NAMES = "SharedElementTransition.names";
diff --git a/app/src/main/java/com/nextcloud/talk/utils/animations/ViewHidingBehaviourAnimation.java b/app/src/main/java/com/nextcloud/talk/utils/animations/ViewHidingBehaviourAnimation.java
index beffd3419..caa0ad04e 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/animations/ViewHidingBehaviourAnimation.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/animations/ViewHidingBehaviourAnimation.java
@@ -25,7 +25,6 @@
package com.nextcloud.talk.utils.animations;
import android.view.View;
-
import androidx.annotation.NonNull;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.view.ViewCompat;
diff --git a/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java b/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java
index c239b197d..b54c358b4 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java
@@ -19,17 +19,16 @@
*/
package com.nextcloud.talk.utils.database.arbitrarystorage;
+import autodagger.AutoInjector;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.dagger.modules.DatabaseModule;
-
-import javax.inject.Inject;
-
-import autodagger.AutoInjector;
import dagger.Module;
import dagger.Provides;
import io.requery.Persistable;
import io.requery.reactivex.ReactiveEntityStore;
+import javax.inject.Inject;
+
@Module(includes = DatabaseModule.class)
@AutoInjector(NextcloudTalkApplication.class)
public class ArbitraryStorageModule {
diff --git a/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageUtils.java b/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageUtils.java
index 94ead9dab..afb33a331 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageUtils.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageUtils.java
@@ -19,10 +19,9 @@
*/
package com.nextcloud.talk.utils.database.arbitrarystorage;
+import androidx.annotation.Nullable;
import com.nextcloud.talk.models.database.ArbitraryStorage;
import com.nextcloud.talk.models.database.ArbitraryStorageEntity;
-
-import androidx.annotation.Nullable;
import io.reactivex.Observable;
import io.reactivex.schedulers.Schedulers;
import io.requery.Persistable;
diff --git a/app/src/main/java/com/nextcloud/talk/utils/database/user/UserModule.java b/app/src/main/java/com/nextcloud/talk/utils/database/user/UserModule.java
index 00d90fd4c..a2bfee62c 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/database/user/UserModule.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/database/user/UserModule.java
@@ -19,17 +19,16 @@
*/
package com.nextcloud.talk.utils.database.user;
+import autodagger.AutoInjector;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.dagger.modules.DatabaseModule;
-
-import javax.inject.Inject;
-
-import autodagger.AutoInjector;
import dagger.Module;
import dagger.Provides;
import io.requery.Persistable;
import io.requery.reactivex.ReactiveEntityStore;
+import javax.inject.Inject;
+
@Module(includes = DatabaseModule.class)
@AutoInjector(NextcloudTalkApplication.class)
public class UserModule {
diff --git a/app/src/main/java/com/nextcloud/talk/utils/database/user/UserUtils.java b/app/src/main/java/com/nextcloud/talk/utils/database/user/UserUtils.java
index 4c9f28ddb..531351e17 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/database/user/UserUtils.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/database/user/UserUtils.java
@@ -21,13 +21,9 @@
package com.nextcloud.talk.utils.database.user;
import android.text.TextUtils;
-
+import androidx.annotation.Nullable;
import com.nextcloud.talk.models.database.User;
import com.nextcloud.talk.models.database.UserEntity;
-
-import java.util.List;
-
-import androidx.annotation.Nullable;
import io.reactivex.Completable;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -36,6 +32,8 @@ import io.requery.Persistable;
import io.requery.query.Result;
import io.requery.reactivex.ReactiveEntityStore;
+import java.util.List;
+
public class UserUtils {
private ReactiveEntityStore dataStore;
diff --git a/app/src/main/java/com/nextcloud/talk/utils/glide/CachingGlideModule.java b/app/src/main/java/com/nextcloud/talk/utils/glide/CachingGlideModule.java
index 5ff5133f9..59deda82e 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/glide/CachingGlideModule.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/glide/CachingGlideModule.java
@@ -22,7 +22,7 @@ package com.nextcloud.talk.utils.glide;
import android.content.Context;
-
+import autodagger.AutoInjector;
import com.bumptech.glide.Glide;
import com.bumptech.glide.GlideBuilder;
import com.bumptech.glide.Registry;
@@ -31,13 +31,10 @@ import com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.module.AppGlideModule;
import com.nextcloud.talk.application.NextcloudTalkApplication;
-
-import java.io.InputStream;
+import okhttp3.OkHttpClient;
import javax.inject.Inject;
-
-import autodagger.AutoInjector;
-import okhttp3.OkHttpClient;
+import java.io.InputStream;
@AutoInjector(NextcloudTalkApplication.class)
@GlideModule
diff --git a/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java b/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java
index 078160dbb..b141ba523 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java
@@ -21,13 +21,7 @@
package com.nextcloud.talk.utils.preferences;
import com.nextcloud.talk.R;
-
-import net.orange_box.storebox.annotations.method.ClearMethod;
-import net.orange_box.storebox.annotations.method.DefaultValue;
-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.method.*;
import net.orange_box.storebox.annotations.option.SaveOption;
import net.orange_box.storebox.enums.SaveMode;
import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener;
@@ -192,6 +186,86 @@ public interface AppPreferences {
@RemoveMethod
void removeVibrateSetting();
+ @KeyByString("screen_security")
+ @DefaultValue(R.bool.value_false)
+ boolean getIsScreenSecured();
+
+ @KeyByString("screen_security")
+ void setScreenSecurity(boolean value);
+
+ @KeyByString("screen_security")
+ @RemoveMethod
+ void removeScreenSecurity();
+
+ @KeyByString("screen_security")
+ @RegisterChangeListenerMethod
+ void registerScreenSecurityListener(OnPreferenceValueChangedListener listener);
+
+ @KeyByString("screen_security")
+ @UnregisterChangeListenerMethod
+ void unregisterScreenSecurityListener(OnPreferenceValueChangedListener listener);
+
+ @KeyByString("screen_lock")
+ @DefaultValue(R.bool.value_false)
+ boolean getIsScreenLocked();
+
+ @KeyByString("screen_lock")
+ void setScreenLock(boolean value);
+
+ @KeyByString("screen_lock")
+ @RemoveMethod
+ void removeScreenLock();
+
+ @KeyByString("screen_lock")
+ @RegisterChangeListenerMethod
+ void registerScreenLockListener(OnPreferenceValueChangedListener listener);
+
+ @KeyByString("screen_lock")
+ @UnregisterChangeListenerMethod
+ void unregisterScreenLockListener(OnPreferenceValueChangedListener listener);
+
+ @KeyByString("incognito_keyboard")
+ @DefaultValue(R.bool.value_true)
+ boolean getIsKeyboardIncognito();
+
+ @KeyByString("incognito_keyboard")
+ void setIncognitoKeyboard(boolean value);
+
+ @KeyByString("incognito_keyboard")
+ @RemoveMethod
+ void removeIncognitoKeyboard();
+
+ @KeyByString("link_previews")
+ @DefaultValue(R.bool.value_true)
+ boolean getAreLinkPreviewsAllowed();
+
+ @KeyByString("link_previews")
+ void setLinkPreviewsAllowed(boolean value);
+
+ @KeyByString("link_previews")
+ @RemoveMethod
+ void removeLinkPreviews();
+
+ @KeyByString("screen_lock_timeout")
+ @DefaultValue(R.string.nc_screen_lock_timeout_sixty)
+ String getScreenLockTimeout();
+
+ @KeyByString("screen_lock_timeout")
+ void setScreenLockTimeout(int value);
+
+ @KeyByString("screen_lock_timeout")
+ @RemoveMethod
+ void removeScreenLockTimeout();
+
+ @KeyByString("screen_lock_timeout")
+ @RegisterChangeListenerMethod
+ void registerScreenLockTimeoutListener(OnPreferenceValueChangedListener listener);
+
+ @KeyByString("screen_lock_timeout")
+ @UnregisterChangeListenerMethod
+ void unregisterScreenLockTimeoutListener(OnPreferenceValueChangedListener listener);
+
+
@ClearMethod
void clear();
}
diff --git a/app/src/main/java/com/nextcloud/talk/utils/preferences/MagicUserInputModule.java b/app/src/main/java/com/nextcloud/talk/utils/preferences/MagicUserInputModule.java
index 9c48c9afd..292c9ab02 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/preferences/MagicUserInputModule.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/preferences/MagicUserInputModule.java
@@ -22,29 +22,38 @@ package com.nextcloud.talk.utils.preferences;
import android.app.Dialog;
import android.content.Context;
+import android.os.Build;
import android.text.InputType;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
-
+import androidx.appcompat.app.AlertDialog;
+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 androidx.appcompat.app.AlertDialog;
-
+@AutoInjector(NextcloudTalkApplication.class)
public class MagicUserInputModule extends StandardUserInputModule {
+ @Inject
+ AppPreferences appPreferences;
+
private List keysWithIntegerInput = new ArrayList<>();
public MagicUserInputModule(Context context) {
super(context);
+ NextcloudTalkApplication.getSharedApplication().getComponentApplication().inject(this);
}
public MagicUserInputModule(Context context, List keysWithIntegerInput) {
super(context);
+ NextcloudTalkApplication.getSharedApplication().getComponentApplication().inject(this);
this.keysWithIntegerInput = keysWithIntegerInput;
}
@@ -55,7 +64,11 @@ public class MagicUserInputModule extends StandardUserInputModule {
CharSequence defaultValue,
final Listener listener) {
final View view = LayoutInflater.from(context).inflate(R.layout.dialog_edittext, null);
- final EditText inputField = (EditText) view.findViewById(R.id.mp_text_input);
+ final EditText inputField = view.findViewById(R.id.mp_text_input);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && appPreferences.getIsKeyboardIncognito()) {
+ inputField.setImeOptions(inputField.getImeOptions() | EditorInfo.IME_FLAG_NO_PERSONALIZED_LEARNING);
+ }
if (defaultValue != null) {
inputField.setText(defaultValue);
diff --git a/app/src/main/java/com/nextcloud/talk/utils/preferencestorage/DatabaseStorageFactory.java b/app/src/main/java/com/nextcloud/talk/utils/preferencestorage/DatabaseStorageFactory.java
index c0f6e26d0..54bf7ee02 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/preferencestorage/DatabaseStorageFactory.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/preferencestorage/DatabaseStorageFactory.java
@@ -21,7 +21,6 @@
package com.nextcloud.talk.utils.preferencestorage;
import android.content.Context;
-
import com.nextcloud.talk.models.database.UserEntity;
import com.yarolegovich.mp.io.StorageModule;
diff --git a/app/src/main/java/com/nextcloud/talk/utils/preferencestorage/DatabaseStorageModule.java b/app/src/main/java/com/nextcloud/talk/utils/preferencestorage/DatabaseStorageModule.java
index 88ed85611..87d0bf8be 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/preferencestorage/DatabaseStorageModule.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/preferencestorage/DatabaseStorageModule.java
@@ -21,7 +21,7 @@
package com.nextcloud.talk.utils.preferencestorage;
import android.os.Bundle;
-
+import autodagger.AutoInjector;
import com.nextcloud.talk.api.NcApi;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.models.database.ArbitraryStorageEntity;
@@ -30,16 +30,13 @@ import com.nextcloud.talk.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 java.util.Set;
-
-import javax.inject.Inject;
-
-import autodagger.AutoInjector;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
+import javax.inject.Inject;
+import java.util.Set;
+
@AutoInjector(NextcloudTalkApplication.class)
public class DatabaseStorageModule implements StorageModule {
@Inject
diff --git a/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java b/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java
index 4676b183c..6ce60d386 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java
@@ -23,14 +23,13 @@ package com.nextcloud.talk.utils.singletons;
import com.nextcloud.talk.models.database.UserEntity;
public class ApplicationWideCurrentRoomHolder {
+ private static final ApplicationWideCurrentRoomHolder holder = new ApplicationWideCurrentRoomHolder();
private String currentRoomId = "";
private String currentRoomToken = "";
private UserEntity userInRoom = new UserEntity();
private boolean inCall = false;
private String session = "";
- private static final ApplicationWideCurrentRoomHolder holder = new ApplicationWideCurrentRoomHolder();
-
public static ApplicationWideCurrentRoomHolder getInstance() {
return holder;
}
diff --git a/app/src/main/java/com/nextcloud/talk/utils/singletons/AvatarStatusCodeHolder.java b/app/src/main/java/com/nextcloud/talk/utils/singletons/AvatarStatusCodeHolder.java
index 50db4f971..25729f79f 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/singletons/AvatarStatusCodeHolder.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/singletons/AvatarStatusCodeHolder.java
@@ -21,9 +21,8 @@
package com.nextcloud.talk.utils.singletons;
public class AvatarStatusCodeHolder {
- private int statusCode;
-
private static final AvatarStatusCodeHolder holder = new AvatarStatusCodeHolder();
+ private int statusCode;
public static AvatarStatusCodeHolder getInstance() {
return holder;
diff --git a/app/src/main/java/com/nextcloud/talk/utils/ssl/MagicKeyManager.java b/app/src/main/java/com/nextcloud/talk/utils/ssl/MagicKeyManager.java
index 5b36f5c34..488338a28 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/ssl/MagicKeyManager.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/ssl/MagicKeyManager.java
@@ -25,25 +25,18 @@ import android.security.KeyChain;
import android.security.KeyChainException;
import android.text.TextUtils;
import android.util.Log;
-
+import androidx.annotation.Nullable;
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.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.net.ssl.X509KeyManager;
-
-import androidx.annotation.Nullable;
+import java.util.*;
public class MagicKeyManager implements X509KeyManager {
private static final String TAG = "MagicKeyManager";
diff --git a/app/src/main/java/com/nextcloud/talk/utils/ssl/MagicTrustManager.java b/app/src/main/java/com/nextcloud/talk/utils/ssl/MagicTrustManager.java
index fd158a561..c24c4049c 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/ssl/MagicTrustManager.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/ssl/MagicTrustManager.java
@@ -24,12 +24,11 @@ package com.nextcloud.talk.utils.ssl;
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;
@@ -38,13 +37,6 @@ 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;
-
public class MagicTrustManager implements X509TrustManager {
private static final String TAG = "MagicTrustManager";
diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicAudioManager.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicAudioManager.java
index 3fe9fed5b..6dcfd06ef 100644
--- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicAudioManager.java
+++ b/app/src/main/java/com/nextcloud/talk/webrtc/MagicAudioManager.java
@@ -40,9 +40,7 @@ import android.media.AudioDeviceInfo;
import android.media.AudioManager;
import android.os.Build;
import android.util.Log;
-
import com.nextcloud.talk.events.PeerConnectionEvent;
-
import org.greenrobot.eventbus.EventBus;
import org.webrtc.ThreadUtils;
@@ -58,10 +56,10 @@ public class MagicAudioManager {
private static final String SPEAKERPHONE_AUTO = "auto";
private static final String SPEAKERPHONE_FALSE = "false";
private final Context magicContext;
- // Contains speakerphone setting: auto, true or false
- private String useSpeakerphone;
// Handles all tasks related to Bluetooth headset devices.
private final MagicBluetoothManager bluetoothManager;
+ // Contains speakerphone setting: auto, true or false
+ private String useSpeakerphone;
private AudioManager audioManager;
private AudioManagerEvents audioManagerEvents;
private AudioManagerState amState;
@@ -96,22 +94,6 @@ public class MagicAudioManager {
// Callback method for changes in audio focus.
private AudioManager.OnAudioFocusChangeListener audioFocusChangeListener;
- public void toggleUseSpeakerphone() {
- if (useSpeakerphone.equals(SPEAKERPHONE_FALSE)) {
- useSpeakerphone = SPEAKERPHONE_AUTO;
- setDefaultAudioDevice(AudioDevice.SPEAKER_PHONE);
- } else {
- useSpeakerphone = SPEAKERPHONE_FALSE;
- setDefaultAudioDevice(AudioDevice.EARPIECE);
- }
-
- updateAudioDeviceState();
- }
-
- public boolean isSpeakerphoneAutoOn() {
- return (useSpeakerphone.equals(SPEAKERPHONE_AUTO));
- }
-
private MagicAudioManager(Context context, boolean useProximitySensor) {
Log.d(TAG, "ctor");
ThreadUtils.checkIsOnMainThread();
@@ -156,6 +138,22 @@ public class MagicAudioManager {
return new MagicAudioManager(context, useProximitySensor);
}
+ public void toggleUseSpeakerphone() {
+ if (useSpeakerphone.equals(SPEAKERPHONE_FALSE)) {
+ useSpeakerphone = SPEAKERPHONE_AUTO;
+ setDefaultAudioDevice(AudioDevice.SPEAKER_PHONE);
+ } else {
+ useSpeakerphone = SPEAKERPHONE_FALSE;
+ setDefaultAudioDevice(AudioDevice.EARPIECE);
+ }
+
+ updateAudioDeviceState();
+ }
+
+ public boolean isSpeakerphoneAutoOn() {
+ return (useSpeakerphone.equals(SPEAKERPHONE_AUTO));
+ }
+
/**
* This method is called when the proximity sensor reports a state change,
* e.g. from "NEAR to FAR" or from "FAR to NEAR".
diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicBluetoothManager.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicBluetoothManager.java
index 4ca6c0678..8820457df 100644
--- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicBluetoothManager.java
+++ b/app/src/main/java/com/nextcloud/talk/webrtc/MagicBluetoothManager.java
@@ -46,7 +46,6 @@ import android.os.Handler;
import android.os.Looper;
import android.os.Process;
import android.util.Log;
-
import org.webrtc.ThreadUtils;
import java.util.List;
diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java
index 38ca9efe0..dca7e940e 100644
--- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java
+++ b/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java
@@ -23,7 +23,7 @@ package com.nextcloud.talk.webrtc;
import android.text.TextUtils;
import android.util.Log;
-
+import androidx.annotation.Nullable;
import com.bluelinelabs.logansquare.LoganSquare;
import com.nextcloud.talk.R;
import com.nextcloud.talk.application.NextcloudTalkApplication;
@@ -33,17 +33,8 @@ import com.nextcloud.talk.events.SessionDescriptionSendEvent;
import com.nextcloud.talk.events.WebSocketCommunicationEvent;
import com.nextcloud.talk.models.json.signaling.DataChannelMessage;
import com.nextcloud.talk.models.json.signaling.NCIceCandidate;
-
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;
+import org.webrtc.*;
import java.io.IOException;
import java.nio.ByteBuffer;
@@ -51,8 +42,6 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-import androidx.annotation.Nullable;
-
public class MagicPeerConnectionWrapper {
private static String TAG = "MagicPeerConnectionWrapper";
private List iceCandidates = new ArrayList<>();
@@ -211,6 +200,10 @@ public class MagicPeerConnectionWrapper {
}
}
+ public boolean isMCUPublisher() {
+ return isMCUPublisher;
+ }
+
private class MagicDataChannelObserver implements DataChannel.Observer {
@Override
@@ -409,8 +402,4 @@ public class MagicPeerConnectionWrapper {
}
}
}
-
- public boolean isMCUPublisher() {
- return isMCUPublisher;
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicProximitySensor.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicProximitySensor.java
index 27e167d08..364820e06 100644
--- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicProximitySensor.java
+++ b/app/src/main/java/com/nextcloud/talk/webrtc/MagicProximitySensor.java
@@ -38,7 +38,6 @@ import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Build;
import android.util.Log;
-
import org.webrtc.ThreadUtils;
/**
diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebRTCUtils.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebRTCUtils.java
index e0e866a82..a9f029106 100644
--- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebRTCUtils.java
+++ b/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebRTCUtils.java
@@ -34,12 +34,7 @@ package com.nextcloud.talk.webrtc;
import android.os.Build;
import android.util.Log;
-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.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java
index 83f2eaf43..dee3ce695 100644
--- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java
+++ b/app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java
@@ -22,7 +22,7 @@ package com.nextcloud.talk.webrtc;
import android.text.TextUtils;
import android.util.Log;
-
+import autodagger.AutoInjector;
import com.bluelinelabs.logansquare.LoganSquare;
import com.nextcloud.talk.R;
import com.nextcloud.talk.application.NextcloudTalkApplication;
@@ -30,32 +30,18 @@ import com.nextcloud.talk.events.WebSocketCommunicationEvent;
import com.nextcloud.talk.models.database.UserEntity;
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.models.json.websocket.*;
import com.nextcloud.talk.utils.MagicMap;
-
+import okhttp3.*;
+import okio.ByteString;
import org.greenrobot.eventbus.EventBus;
+import javax.inject.Inject;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import javax.inject.Inject;
-
-import autodagger.AutoInjector;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.Response;
-import okhttp3.WebSocket;
-import okhttp3.WebSocketListener;
-import okio.ByteString;
-
@AutoInjector(NextcloudTalkApplication.class)
public class MagicWebSocketInstance extends WebSocketListener {
private static final String TAG = "MagicWebSocketInstance";
diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/WebSocketConnectionHelper.java b/app/src/main/java/com/nextcloud/talk/webrtc/WebSocketConnectionHelper.java
index 73f4d4f98..3fdc35f89 100644
--- a/app/src/main/java/com/nextcloud/talk/webrtc/WebSocketConnectionHelper.java
+++ b/app/src/main/java/com/nextcloud/talk/webrtc/WebSocketConnectionHelper.java
@@ -20,30 +20,17 @@
package com.nextcloud.talk.webrtc;
+import autodagger.AutoInjector;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.models.database.UserEntity;
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.models.json.websocket.*;
import com.nextcloud.talk.utils.ApiUtils;
-
-import java.util.HashMap;
-import java.util.Map;
+import okhttp3.OkHttpClient;
import javax.inject.Inject;
-
-import autodagger.AutoInjector;
-import okhttp3.OkHttpClient;
+import java.util.HashMap;
+import java.util.Map;
@AutoInjector(NextcloudTalkApplication.class)
public class WebSocketConnectionHelper {
diff --git a/app/src/main/res/layout/controller_locked.xml b/app/src/main/res/layout/controller_locked.xml
new file mode 100644
index 000000000..5df9f7ea1
--- /dev/null
+++ b/app/src/main/res/layout/controller_locked.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/controller_settings.xml b/app/src/main/res/layout/controller_settings.xml
index cb0fb571b..ea75eb8e4 100644
--- a/app/src/main/res/layout/controller_settings.xml
+++ b/app/src/main/res/layout/controller_settings.xml
@@ -142,6 +142,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
-
always
-
\ No newline at end of file
+
+ - @string/nc_screen_lock_timeout_30
+ - @string/nc_screen_lock_timeout_60
+ - @string/nc_screen_lock_timeout_300
+ - @string/nc_screen_lock_timeout_600
+
+
+
+ - @string/nc_screen_lock_timeout_thirty
+ - @string/nc_screen_lock_timeout_sixty
+ - @string/nc_screen_lock_timeout_three_hundred
+ - @string/nc_screen_lock_timeout_six_hundred
+
+
+
+ - 30
+ - 60
+ - 300
+ - 600
+
+
+
diff --git a/app/src/main/res/values/bool.xml b/app/src/main/res/values/bool.xml
index 12ba02096..b623a68b5 100644
--- a/app/src/main/res/values/bool.xml
+++ b/app/src/main/res/values/bool.xml
@@ -21,4 +21,5 @@
true
-
\ No newline at end of file
+ false
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c4f8d1a17..61b1cb9c5 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -83,9 +83,38 @@
Librem by feandesign
No sound
Vibrate
- Your phone will vibrate unless it\'s silenced
+ Phone will unless it\'s silenced
notifications_vibrate
+ Privacy
+ Screen lock
+ Lock %1$s with Android screen lock or fingerprint
+ screen_lock
+ Screen lock inactivity timeout
+ None
+ screen_lock_timeout
+ Screen security
+ Prevents screenshots in the recent list and inside the app
+ screen_security
+ Incognito keyboard
+ Instructs keyboard to disable personalized learning (without guarantees)
+ incognito_keyboard
+ Show link previews
+ Allows previews of content from received links for supported services
+ link_previews
+ Tap to unlock
+
+ 30 seconds
+ 1 minute
+ 5 minutes
+ 10 minutes
+ 30
+ 60
+ 300
+ 600
+
+ Unlock %1$s
+ Cancel
No proxy
Username