mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 20:19:42 +01:00
Merge pull request #468 from nextcloud/privacy-improvements
Privacy improvements
This commit is contained in:
commit
e8bf2f95b6
@ -1,6 +1,6 @@
|
|||||||
pipeline:
|
pipeline:
|
||||||
compile:
|
compile:
|
||||||
image: nextcloudci/android:android-35
|
image: nextcloudci/android:android-44
|
||||||
commands:
|
commands:
|
||||||
# build app and assemble APK
|
# build app and assemble APK
|
||||||
- sh -c "if [ '${FLAVOR}' != 'Analysis' ]; then ./gradlew assemble${FLAVOR}; fi"
|
- sh -c "if [ '${FLAVOR}' != 'Analysis' ]; then ./gradlew assemble${FLAVOR}; fi"
|
||||||
@ -9,7 +9,7 @@ pipeline:
|
|||||||
FLAVOR: [Generic, Gplay]
|
FLAVOR: [Generic, Gplay]
|
||||||
|
|
||||||
analysis:
|
analysis:
|
||||||
image: nextcloudci/android:android-37
|
image: nextcloudci/android:android-44
|
||||||
commands:
|
commands:
|
||||||
- export BRANCH=$(scripts/analysis/getBranchName.sh $GIT_USERNAME $GIT_TOKEN $DRONE_PULL_REQUEST)
|
- 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
|
- scripts/analysis/analysis-wrapper.sh $GIT_USERNAME $GIT_TOKEN $BRANCH $LOG_USERNAME $LOG_PASSWORD $DRONE_BUILD_NUMBER $DRONE_PULL_REQUEST
|
||||||
|
@ -17,7 +17,7 @@ android {
|
|||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|
||||||
versionCode 82
|
versionCode 120
|
||||||
versionName "3.2.3"
|
versionName "3.2.3"
|
||||||
|
|
||||||
flavorDimensions "default"
|
flavorDimensions "default"
|
||||||
@ -39,8 +39,8 @@ android {
|
|||||||
lintOptions {
|
lintOptions {
|
||||||
disable 'InvalidPackage'
|
disable 'InvalidPackage'
|
||||||
disable 'MissingTranslation'
|
disable 'MissingTranslation'
|
||||||
disable "ValidController",
|
disable "ValidController"
|
||||||
"ValidControllerChangeHandler"
|
disable "ValidControllerChangeHandler"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,7 +122,7 @@ dependencies {
|
|||||||
implementation "android.arch.work:work-rxjava2:${workVersion}"
|
implementation "android.arch.work:work-rxjava2:${workVersion}"
|
||||||
androidTestImplementation "android.arch.work:work-testing:${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.lifecycle:lifecycle-extensions:2.0.0"
|
||||||
|
|
||||||
implementation 'androidx.multidex:multidex:2.0.0'
|
implementation 'androidx.multidex:multidex:2.0.0'
|
||||||
|
@ -34,6 +34,10 @@
|
|||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
|
||||||
|
<!-- This permission is deprecated in Android P -->
|
||||||
|
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".application.NextcloudTalkApplication"
|
android:name=".application.NextcloudTalkApplication"
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
|
@ -21,31 +21,32 @@
|
|||||||
package com.nextcloud.talk.activities;
|
package com.nextcloud.talk.activities;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.WindowManager;
|
||||||
import android.webkit.SslErrorHandler;
|
import android.webkit.SslErrorHandler;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import autodagger.AutoInjector;
|
||||||
import com.nextcloud.talk.R;
|
import com.nextcloud.talk.R;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
import com.nextcloud.talk.events.CertificateEvent;
|
import com.nextcloud.talk.events.CertificateEvent;
|
||||||
|
import com.nextcloud.talk.utils.SecurityUtils;
|
||||||
|
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
||||||
import com.nextcloud.talk.utils.ssl.MagicTrustManager;
|
import com.nextcloud.talk.utils.ssl.MagicTrustManager;
|
||||||
import com.yarolegovich.lovelydialog.LovelyStandardDialog;
|
import com.yarolegovich.lovelydialog.LovelyStandardDialog;
|
||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
import org.greenrobot.eventbus.ThreadMode;
|
import org.greenrobot.eventbus.ThreadMode;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
import java.security.cert.CertificateParsingException;
|
import java.security.cert.CertificateParsingException;
|
||||||
import java.security.cert.X509Certificate;
|
import java.security.cert.X509Certificate;
|
||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
|
||||||
import autodagger.AutoInjector;
|
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class BaseActivity extends AppCompatActivity {
|
public class BaseActivity extends AppCompatActivity {
|
||||||
private static final String TAG = "BaseActivity";
|
private static final String TAG = "BaseActivity";
|
||||||
@ -53,10 +54,31 @@ public class BaseActivity extends AppCompatActivity {
|
|||||||
@Inject
|
@Inject
|
||||||
EventBus eventBus;
|
EventBus eventBus;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
AppPreferences appPreferences;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
Context context;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
NextcloudTalkApplication.getSharedApplication().getComponentApplication().inject(this);
|
NextcloudTalkApplication.getSharedApplication().getComponentApplication().inject(this);
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
if (appPreferences.getIsScreenLocked()) {
|
||||||
|
if (Build.VERSION.SDK_INT >= 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,
|
public void showCertificateDialog(X509Certificate cert, MagicTrustManager magicTrustManager,
|
||||||
|
@ -26,7 +26,9 @@ import android.view.View;
|
|||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
import autodagger.AutoInjector;
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
import com.bluelinelabs.conductor.Conductor;
|
import com.bluelinelabs.conductor.Conductor;
|
||||||
import com.bluelinelabs.conductor.Router;
|
import com.bluelinelabs.conductor.Router;
|
||||||
import com.bluelinelabs.conductor.RouterTransaction;
|
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.controllers.CallNotificationController;
|
||||||
import com.nextcloud.talk.events.ConfigurationChangeEvent;
|
import com.nextcloud.talk.events.ConfigurationChangeEvent;
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import autodagger.AutoInjector;
|
|
||||||
import butterknife.BindView;
|
|
||||||
import butterknife.ButterKnife;
|
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class MagicCallActivity extends BaseActivity {
|
public class MagicCallActivity extends BaseActivity {
|
||||||
private static final String TAG = "MagicCallActivity";
|
private static final String TAG = "MagicCallActivity";
|
||||||
|
@ -20,37 +20,37 @@
|
|||||||
*/
|
*/
|
||||||
package com.nextcloud.talk.activities;
|
package com.nextcloud.talk.activities;
|
||||||
|
|
||||||
|
import android.app.KeyguardManager;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import androidx.annotation.RequiresApi;
|
||||||
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.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import autodagger.AutoInjector;
|
import autodagger.AutoInjector;
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
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.Persistable;
|
||||||
import io.requery.android.sqlcipher.SqlCipherDatabaseSource;
|
import io.requery.android.sqlcipher.SqlCipherDatabaseSource;
|
||||||
import io.requery.reactivex.ReactiveEntityStore;
|
import io.requery.reactivex.ReactiveEntityStore;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public final class MainActivity extends BaseActivity implements ActionBarProvider {
|
public final class MainActivity extends BaseActivity implements ActionBarProvider {
|
||||||
|
|
||||||
private static final String TAG = "MainActivity";
|
private static final String TAG = "MainActivity";
|
||||||
|
|
||||||
@BindView(R.id.toolbar)
|
@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
|
@Override
|
||||||
protected void onNewIntent(Intent intent) {
|
protected void onNewIntent(Intent intent) {
|
||||||
@ -135,6 +159,10 @@ public final class MainActivity extends BaseActivity implements ActionBarProvide
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBackPressed() {
|
public void onBackPressed() {
|
||||||
|
if (router.getControllerWithTag(LockedController.TAG) != null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!router.handleBack()) {
|
if (!router.handleBack()) {
|
||||||
super.onBackPressed();
|
super.onBackPressed();
|
||||||
}
|
}
|
||||||
|
@ -22,12 +22,10 @@ package com.nextcloud.talk.adapters.items;
|
|||||||
|
|
||||||
import android.accounts.Account;
|
import android.accounts.Account;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageButton;
|
import android.widget.*;
|
||||||
import android.widget.ImageView;
|
import androidx.annotation.Nullable;
|
||||||
import android.widget.LinearLayout;
|
import butterknife.BindView;
|
||||||
import android.widget.RelativeLayout;
|
import butterknife.ButterKnife;
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||||
import com.bumptech.glide.load.model.GlideUrl;
|
import com.bumptech.glide.load.model.GlideUrl;
|
||||||
import com.bumptech.glide.load.model.LazyHeaders;
|
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.models.json.participants.Participant;
|
||||||
import com.nextcloud.talk.utils.ApiUtils;
|
import com.nextcloud.talk.utils.ApiUtils;
|
||||||
import com.nextcloud.talk.utils.glide.GlideApp;
|
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.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
||||||
import eu.davidea.flexibleadapter.items.IFilterable;
|
import eu.davidea.flexibleadapter.items.IFilterable;
|
||||||
import eu.davidea.flexibleadapter.utils.FlexibleUtils;
|
import eu.davidea.flexibleadapter.utils.FlexibleUtils;
|
||||||
import eu.davidea.flipview.FlipView;
|
import eu.davidea.flipview.FlipView;
|
||||||
import eu.davidea.viewholders.FlexibleViewHolder;
|
import eu.davidea.viewholders.FlexibleViewHolder;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class AdvancedUserItem extends AbstractFlexibleItem<AdvancedUserItem.UserItemViewHolder> implements
|
public class AdvancedUserItem extends AbstractFlexibleItem<AdvancedUserItem.UserItemViewHolder> implements
|
||||||
IFilterable<String> {
|
IFilterable<String> {
|
||||||
|
@ -27,20 +27,18 @@ import android.text.style.ForegroundColorSpan;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.nextcloud.talk.R;
|
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
|
import com.nextcloud.talk.R;
|
||||||
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible;
|
import eu.davidea.flexibleadapter.items.IFlexible;
|
||||||
import eu.davidea.viewholders.FlexibleViewHolder;
|
import eu.davidea.viewholders.FlexibleViewHolder;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class AppItem extends AbstractFlexibleItem<AppItem.AppItemViewHolder> {
|
public class AppItem extends AbstractFlexibleItem<AppItem.AppItemViewHolder> {
|
||||||
private String title;
|
private String title;
|
||||||
private String packageName;
|
private String packageName;
|
||||||
|
@ -27,7 +27,8 @@ import android.view.View;
|
|||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||||
import com.bumptech.glide.load.model.GlideUrl;
|
import com.bumptech.glide.load.model.GlideUrl;
|
||||||
import com.bumptech.glide.load.model.LazyHeaders;
|
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.ApiUtils;
|
||||||
import com.nextcloud.talk.utils.DisplayUtils;
|
import com.nextcloud.talk.utils.DisplayUtils;
|
||||||
import com.nextcloud.talk.utils.glide.GlideApp;
|
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.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
||||||
import eu.davidea.flexibleadapter.items.IFilterable;
|
import eu.davidea.flexibleadapter.items.IFilterable;
|
||||||
import eu.davidea.flexibleadapter.utils.FlexibleUtils;
|
import eu.davidea.flexibleadapter.utils.FlexibleUtils;
|
||||||
import eu.davidea.flipview.FlipView;
|
import eu.davidea.flipview.FlipView;
|
||||||
import eu.davidea.viewholders.FlexibleViewHolder;
|
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<CallItem.RoomItemViewHolder> implements IFilterable<String> {
|
public class CallItem extends AbstractFlexibleItem<CallItem.RoomItemViewHolder> implements IFilterable<String> {
|
||||||
|
|
||||||
|
@ -26,7 +26,8 @@ import android.text.format.DateUtils;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
import com.amulyakhare.textdrawable.TextDrawable;
|
import com.amulyakhare.textdrawable.TextDrawable;
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||||
import com.bumptech.glide.load.model.GlideUrl;
|
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.DisplayUtils;
|
||||||
import com.nextcloud.talk.utils.glide.GlideApp;
|
import com.nextcloud.talk.utils.glide.GlideApp;
|
||||||
import com.vanniktech.emoji.EmojiTextView;
|
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.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
||||||
import eu.davidea.flexibleadapter.items.IFilterable;
|
import eu.davidea.flexibleadapter.items.IFilterable;
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible;
|
import eu.davidea.flexibleadapter.items.IFlexible;
|
||||||
import eu.davidea.flexibleadapter.utils.FlexibleUtils;
|
import eu.davidea.flexibleadapter.utils.FlexibleUtils;
|
||||||
import eu.davidea.viewholders.FlexibleViewHolder;
|
import eu.davidea.viewholders.FlexibleViewHolder;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class ConversationItem extends AbstractFlexibleItem<ConversationItem.ConversationItemViewHolder> implements
|
public class ConversationItem extends AbstractFlexibleItem<ConversationItem.ConversationItemViewHolder> implements
|
||||||
IFilterable<String> {
|
IFilterable<String> {
|
||||||
|
@ -23,20 +23,17 @@ package com.nextcloud.talk.adapters.items;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.nextcloud.talk.R;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
|
import com.nextcloud.talk.R;
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractHeaderItem;
|
import eu.davidea.flexibleadapter.items.AbstractHeaderItem;
|
||||||
import eu.davidea.flexibleadapter.items.IFilterable;
|
import eu.davidea.flexibleadapter.items.IFilterable;
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible;
|
import eu.davidea.flexibleadapter.items.IFlexible;
|
||||||
import eu.davidea.viewholders.FlexibleViewHolder;
|
import eu.davidea.viewholders.FlexibleViewHolder;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class GenericTextHeaderItem extends AbstractHeaderItem<GenericTextHeaderItem.HeaderViewHolder> implements IFilterable<String> {
|
public class GenericTextHeaderItem extends AbstractHeaderItem<GenericTextHeaderItem.HeaderViewHolder> implements IFilterable<String> {
|
||||||
private static final String TAG = "GenericTextHeaderItem";
|
private static final String TAG = "GenericTextHeaderItem";
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
package com.nextcloud.talk.adapters.items;
|
package com.nextcloud.talk.adapters.items;
|
||||||
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||||
import com.bumptech.glide.load.model.GlideUrl;
|
import com.bumptech.glide.load.model.GlideUrl;
|
||||||
import com.bumptech.glide.load.model.LazyHeaders;
|
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.models.database.UserEntity;
|
||||||
import com.nextcloud.talk.utils.ApiUtils;
|
import com.nextcloud.talk.utils.ApiUtils;
|
||||||
import com.nextcloud.talk.utils.glide.GlideApp;
|
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.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
||||||
import eu.davidea.flexibleadapter.items.IFilterable;
|
import eu.davidea.flexibleadapter.items.IFilterable;
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible;
|
import eu.davidea.flexibleadapter.items.IFlexible;
|
||||||
import eu.davidea.flexibleadapter.utils.FlexibleUtils;
|
import eu.davidea.flexibleadapter.utils.FlexibleUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class MentionAutocompleteItem extends AbstractFlexibleItem<UserItem.UserItemViewHolder>
|
public class MentionAutocompleteItem extends AbstractFlexibleItem<UserItem.UserItemViewHolder>
|
||||||
implements IFilterable<String> {
|
implements IFilterable<String> {
|
||||||
|
@ -29,19 +29,17 @@ import android.text.SpannableString;
|
|||||||
import android.text.style.ForegroundColorSpan;
|
import android.text.style.ForegroundColorSpan;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
import com.nextcloud.talk.R;
|
import com.nextcloud.talk.R;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
import com.nextcloud.talk.utils.DisplayUtils;
|
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.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
||||||
import eu.davidea.viewholders.FlexibleViewHolder;
|
import eu.davidea.viewholders.FlexibleViewHolder;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class MenuItem extends AbstractFlexibleItem<MenuItem.MenuItemViewHolder> {
|
public class MenuItem extends AbstractFlexibleItem<MenuItem.MenuItemViewHolder> {
|
||||||
private String title;
|
private String title;
|
||||||
private Drawable icon;
|
private Drawable icon;
|
||||||
|
@ -22,19 +22,17 @@ package com.nextcloud.talk.adapters.items;
|
|||||||
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.nextcloud.talk.R;
|
|
||||||
import com.nextcloud.talk.utils.MagicFlipView;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
|
import com.nextcloud.talk.R;
|
||||||
|
import com.nextcloud.talk.utils.MagicFlipView;
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible;
|
import eu.davidea.flexibleadapter.items.IFlexible;
|
||||||
import eu.davidea.viewholders.FlexibleViewHolder;
|
import eu.davidea.viewholders.FlexibleViewHolder;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class NotificationSoundItem extends AbstractFlexibleItem<NotificationSoundItem.NotificationSoundItemViewHolder> {
|
public class NotificationSoundItem extends AbstractFlexibleItem<NotificationSoundItem.NotificationSoundItemViewHolder> {
|
||||||
|
|
||||||
private String notificationSoundName;
|
private String notificationSoundName;
|
||||||
|
@ -29,14 +29,10 @@ import android.content.Context;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.nextcloud.talk.R;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
|
import com.nextcloud.talk.R;
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.Payload;
|
import eu.davidea.flexibleadapter.Payload;
|
||||||
import eu.davidea.flexibleadapter.helpers.AnimatorHelper;
|
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.flexibleadapter.items.IFlexible;
|
||||||
import eu.davidea.viewholders.FlexibleViewHolder;
|
import eu.davidea.viewholders.FlexibleViewHolder;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Davide Steduto
|
* @author Davide Steduto
|
||||||
* @since 22/04/2016
|
* @since 22/04/2016
|
||||||
@ -115,6 +113,14 @@ public class ProgressItem extends AbstractFlexibleItem<ProgressItem.ProgressView
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public enum StatusEnum {
|
||||||
|
MORE_TO_LOAD, //Default = should have an empty Payload
|
||||||
|
DISABLE_ENDLESS, //Endless is disabled because user has set limits
|
||||||
|
NO_MORE_LOAD, //Non-empty Payload = Payload.NO_MORE_LOAD
|
||||||
|
ON_CANCEL,
|
||||||
|
ON_ERROR
|
||||||
|
}
|
||||||
|
|
||||||
static class ProgressViewHolder extends FlexibleViewHolder {
|
static class ProgressViewHolder extends FlexibleViewHolder {
|
||||||
|
|
||||||
@BindView(R.id.progress_bar)
|
@BindView(R.id.progress_bar)
|
||||||
@ -133,12 +139,4 @@ public class ProgressItem extends AbstractFlexibleItem<ProgressItem.ProgressView
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum StatusEnum {
|
|
||||||
MORE_TO_LOAD, //Default = should have an empty Payload
|
|
||||||
DISABLE_ENDLESS, //Endless is disabled because user has set limits
|
|
||||||
NO_MORE_LOAD, //Non-empty Payload = Payload.NO_MORE_LOAD
|
|
||||||
ON_CANCEL,
|
|
||||||
ON_ERROR
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
@ -25,7 +25,8 @@ import android.text.TextUtils;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||||
import com.bumptech.glide.load.model.GlideUrl;
|
import com.bumptech.glide.load.model.GlideUrl;
|
||||||
import com.bumptech.glide.load.model.LazyHeaders;
|
import com.bumptech.glide.load.model.LazyHeaders;
|
||||||
@ -39,15 +40,6 @@ import com.nextcloud.talk.models.json.participants.Participant;
|
|||||||
import com.nextcloud.talk.utils.ApiUtils;
|
import com.nextcloud.talk.utils.ApiUtils;
|
||||||
import com.nextcloud.talk.utils.DisplayUtils;
|
import com.nextcloud.talk.utils.DisplayUtils;
|
||||||
import com.nextcloud.talk.utils.glide.GlideApp;
|
import com.nextcloud.talk.utils.glide.GlideApp;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
import butterknife.BindView;
|
|
||||||
import butterknife.ButterKnife;
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
||||||
import eu.davidea.flexibleadapter.items.IFilterable;
|
import eu.davidea.flexibleadapter.items.IFilterable;
|
||||||
@ -55,6 +47,10 @@ import eu.davidea.flexibleadapter.items.ISectionable;
|
|||||||
import eu.davidea.flexibleadapter.utils.FlexibleUtils;
|
import eu.davidea.flexibleadapter.utils.FlexibleUtils;
|
||||||
import eu.davidea.flipview.FlipView;
|
import eu.davidea.flipview.FlipView;
|
||||||
import eu.davidea.viewholders.FlexibleViewHolder;
|
import eu.davidea.viewholders.FlexibleViewHolder;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class UserItem extends AbstractFlexibleItem<UserItem.UserItemViewHolder> implements
|
public class UserItem extends AbstractFlexibleItem<UserItem.UserItemViewHolder> implements
|
||||||
ISectionable<UserItem.UserItemViewHolder, GenericTextHeaderItem>, IFilterable<String> {
|
ISectionable<UserItem.UserItemViewHolder, GenericTextHeaderItem>, IFilterable<String> {
|
||||||
|
@ -30,7 +30,10 @@ import android.text.SpannableString;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.TextView;
|
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.amulyakhare.textdrawable.TextDrawable;
|
||||||
import com.facebook.drawee.view.SimpleDraweeView;
|
import com.facebook.drawee.view.SimpleDraweeView;
|
||||||
import com.google.android.flexbox.FlexboxLayout;
|
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.stfalcon.chatkit.messages.MessageHolders;
|
||||||
import com.vanniktech.emoji.EmojiTextView;
|
import com.vanniktech.emoji.EmojiTextView;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
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)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class MagicIncomingTextMessageViewHolder
|
public class MagicIncomingTextMessageViewHolder
|
||||||
extends MessageHolders.IncomingTextMessageViewHolder<ChatMessage> {
|
extends MessageHolders.IncomingTextMessageViewHolder<ChatMessage> {
|
||||||
|
@ -29,7 +29,10 @@ import android.text.Spannable;
|
|||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.TextView;
|
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.google.android.flexbox.FlexboxLayout;
|
||||||
import com.nextcloud.talk.R;
|
import com.nextcloud.talk.R;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
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.stfalcon.chatkit.messages.MessageHolders;
|
||||||
import com.vanniktech.emoji.EmojiTextView;
|
import com.vanniktech.emoji.EmojiTextView;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
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)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class MagicOutcomingTextMessageViewHolder extends MessageHolders.OutcomingTextMessageViewHolder<ChatMessage> {
|
public class MagicOutcomingTextMessageViewHolder extends MessageHolders.OutcomingTextMessageViewHolder<ChatMessage> {
|
||||||
@BindView(R.id.messageText)
|
@BindView(R.id.messageText)
|
||||||
|
@ -24,7 +24,8 @@ import android.annotation.SuppressLint;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
import com.nextcloud.talk.R;
|
import com.nextcloud.talk.R;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
import com.nextcloud.talk.models.json.chat.ChatMessage;
|
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.stfalcon.chatkit.messages.MessageHolders;
|
||||||
import com.vanniktech.emoji.EmojiTextView;
|
import com.vanniktech.emoji.EmojiTextView;
|
||||||
|
|
||||||
import butterknife.BindView;
|
|
||||||
import butterknife.ButterKnife;
|
|
||||||
|
|
||||||
public class MagicPreviewMessageViewHolder extends MessageHolders.IncomingImageMessageViewHolder<ChatMessage> {
|
public class MagicPreviewMessageViewHolder extends MessageHolders.IncomingImageMessageViewHolder<ChatMessage> {
|
||||||
|
|
||||||
@BindView(R.id.messageText)
|
@BindView(R.id.messageText)
|
||||||
@ -67,7 +65,7 @@ public class MagicPreviewMessageViewHolder extends MessageHolders.IncomingImageM
|
|||||||
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
NextcloudTalkApplication.getSharedApplication().getApplicationContext().startActivity(browserIntent);
|
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");
|
messageText.setText("GIPHY");
|
||||||
DisplayUtils.setClickableString("GIPHY", "https://giphy.com", messageText);
|
DisplayUtils.setClickableString("GIPHY", "https://giphy.com", messageText);
|
||||||
} else if (message.getMessageType() == ChatMessage.MessageType.SINGLE_LINK_TENOR_MESSAGE) {
|
} else if (message.getMessageType() == ChatMessage.MessageType.SINGLE_LINK_TENOR_MESSAGE) {
|
||||||
|
@ -26,7 +26,7 @@ import android.graphics.drawable.Drawable;
|
|||||||
import android.text.Spannable;
|
import android.text.Spannable;
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import androidx.core.view.ViewCompat;
|
||||||
import com.nextcloud.talk.R;
|
import com.nextcloud.talk.R;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
import com.nextcloud.talk.models.json.chat.ChatMessage;
|
import com.nextcloud.talk.models.json.chat.ChatMessage;
|
||||||
@ -35,8 +35,6 @@ import com.stfalcon.chatkit.messages.MessageHolders;
|
|||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import androidx.core.view.ViewCompat;
|
|
||||||
|
|
||||||
public class MagicSystemMessageViewHolder extends MessageHolders.IncomingTextMessageViewHolder<ChatMessage> {
|
public class MagicSystemMessageViewHolder extends MessageHolders.IncomingTextMessageViewHolder<ChatMessage> {
|
||||||
|
|
||||||
public MagicSystemMessageViewHolder(View itemView) {
|
public MagicSystemMessageViewHolder(View itemView) {
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.nextcloud.talk.api;
|
package com.nextcloud.talk.api;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import com.nextcloud.talk.models.json.call.CallOverall;
|
import com.nextcloud.talk.models.json.call.CallOverall;
|
||||||
import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall;
|
import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall;
|
||||||
import com.nextcloud.talk.models.json.chat.ChatOverall;
|
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.SignalingOverall;
|
||||||
import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall;
|
import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall;
|
||||||
import com.nextcloud.talk.models.json.userprofile.UserProfileOverall;
|
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 io.reactivex.Observable;
|
||||||
import okhttp3.ResponseBody;
|
import okhttp3.ResponseBody;
|
||||||
import retrofit2.Response;
|
import retrofit2.Response;
|
||||||
import retrofit2.http.DELETE;
|
import retrofit2.http.*;
|
||||||
import retrofit2.http.Field;
|
|
||||||
import retrofit2.http.FieldMap;
|
import java.util.List;
|
||||||
import retrofit2.http.FormUrlEncoded;
|
import java.util.Map;
|
||||||
import retrofit2.http.GET;
|
|
||||||
import retrofit2.http.Header;
|
|
||||||
import retrofit2.http.POST;
|
|
||||||
import retrofit2.http.PUT;
|
|
||||||
import retrofit2.http.Query;
|
|
||||||
import retrofit2.http.QueryMap;
|
|
||||||
import retrofit2.http.Url;
|
|
||||||
|
|
||||||
public interface NcApi {
|
public interface NcApi {
|
||||||
|
|
||||||
|
@ -23,7 +23,14 @@ package com.nextcloud.talk.application;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.util.Log;
|
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.cache.disk.DiskCacheConfig;
|
||||||
import com.facebook.drawee.backends.pipeline.Fresco;
|
import com.facebook.drawee.backends.pipeline.Fresco;
|
||||||
import com.facebook.imagepipeline.core.ImagePipelineConfig;
|
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.nextcloud.talk.webrtc.MagicWebRTCUtils;
|
||||||
import com.vanniktech.emoji.EmojiManager;
|
import com.vanniktech.emoji.EmojiManager;
|
||||||
import com.vanniktech.emoji.twitter.TwitterEmojiProvider;
|
import com.vanniktech.emoji.twitter.TwitterEmojiProvider;
|
||||||
|
import okhttp3.OkHttpClient;
|
||||||
import org.webrtc.PeerConnectionFactory;
|
import org.webrtc.PeerConnectionFactory;
|
||||||
import org.webrtc.voiceengine.WebRtcAudioManager;
|
import org.webrtc.voiceengine.WebRtcAudioManager;
|
||||||
import org.webrtc.voiceengine.WebRtcAudioUtils;
|
import org.webrtc.voiceengine.WebRtcAudioUtils;
|
||||||
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
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;
|
|
||||||
|
|
||||||
@AutoComponent(
|
@AutoComponent(
|
||||||
modules = {
|
modules = {
|
||||||
@ -78,15 +74,13 @@ import okhttp3.OkHttpClient;
|
|||||||
@Singleton
|
@Singleton
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class NextcloudTalkApplication extends MultiDexApplication implements LifecycleObserver {
|
public class NextcloudTalkApplication extends MultiDexApplication implements LifecycleObserver {
|
||||||
@Inject
|
|
||||||
OkHttpClient okHttpClient;
|
|
||||||
|
|
||||||
private static final String TAG = NextcloudTalkApplication.class.getSimpleName();
|
private static final String TAG = NextcloudTalkApplication.class.getSimpleName();
|
||||||
|
|
||||||
//region Singleton
|
//region Singleton
|
||||||
protected static NextcloudTalkApplication sharedApplication;
|
protected static NextcloudTalkApplication sharedApplication;
|
||||||
//region Fields (components)
|
//region Fields (components)
|
||||||
protected NextcloudTalkApplicationComponent componentApplication;
|
protected NextcloudTalkApplicationComponent componentApplication;
|
||||||
|
@Inject
|
||||||
|
OkHttpClient okHttpClient;
|
||||||
//endregion
|
//endregion
|
||||||
|
|
||||||
public static NextcloudTalkApplication getSharedApplication() {
|
public static NextcloudTalkApplication getSharedApplication() {
|
||||||
|
@ -28,7 +28,12 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.TextView;
|
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.RouterTransaction;
|
||||||
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
||||||
import com.nextcloud.talk.R;
|
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.database.user.UserUtils;
|
||||||
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
||||||
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder;
|
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder;
|
||||||
|
import io.reactivex.CompletableObserver;
|
||||||
|
import io.reactivex.Observer;
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
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.EventBus;
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
import org.greenrobot.eventbus.ThreadMode;
|
import org.greenrobot.eventbus.ThreadMode;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
import java.net.CookieManager;
|
import java.net.CookieManager;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
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)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class AccountVerificationController extends BaseController {
|
public class AccountVerificationController extends BaseController {
|
||||||
@ -157,7 +153,6 @@ public class AccountVerificationController extends BaseController {
|
|||||||
} else {
|
} else {
|
||||||
checkEverything();
|
checkEverything();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkEverything() {
|
private void checkEverything() {
|
||||||
|
@ -39,7 +39,13 @@ import android.widget.ImageView;
|
|||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
import android.widget.TextView;
|
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.bluelinelabs.logansquare.LoganSquare;
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||||
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
|
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.api.NcApi;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
import com.nextcloud.talk.controllers.base.BaseController;
|
import com.nextcloud.talk.controllers.base.BaseController;
|
||||||
import com.nextcloud.talk.events.ConfigurationChangeEvent;
|
import com.nextcloud.talk.events.*;
|
||||||
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.models.ExternalSignalingServer;
|
import com.nextcloud.talk.models.ExternalSignalingServer;
|
||||||
import com.nextcloud.talk.models.database.UserEntity;
|
import com.nextcloud.talk.models.database.UserEntity;
|
||||||
import com.nextcloud.talk.models.json.call.CallOverall;
|
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.participants.ParticipantsOverall;
|
||||||
import com.nextcloud.talk.models.json.rooms.Conversation;
|
import com.nextcloud.talk.models.json.rooms.Conversation;
|
||||||
import com.nextcloud.talk.models.json.rooms.RoomsOverall;
|
import com.nextcloud.talk.models.json.rooms.RoomsOverall;
|
||||||
import com.nextcloud.talk.models.json.signaling.DataChannelMessage;
|
import com.nextcloud.talk.models.json.signaling.*;
|
||||||
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.settings.IceServer;
|
import com.nextcloud.talk.models.json.signaling.settings.IceServer;
|
||||||
import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall;
|
import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall;
|
||||||
import com.nextcloud.talk.utils.ApiUtils;
|
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.glide.GlideApp;
|
||||||
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
||||||
import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder;
|
import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder;
|
||||||
import com.nextcloud.talk.webrtc.MagicAudioManager;
|
import com.nextcloud.talk.webrtc.*;
|
||||||
import com.nextcloud.talk.webrtc.MagicPeerConnectionWrapper;
|
|
||||||
import com.nextcloud.talk.webrtc.MagicWebRTCUtils;
|
|
||||||
import com.nextcloud.talk.webrtc.MagicWebSocketInstance;
|
|
||||||
import com.nextcloud.talk.webrtc.WebSocketConnectionHelper;
|
|
||||||
import com.wooplr.spotlight.SpotlightView;
|
import 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 eu.davidea.flipview.FlipView;
|
||||||
import io.reactivex.Observable;
|
import io.reactivex.Observable;
|
||||||
import io.reactivex.Observer;
|
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.EffortlessPermissions;
|
||||||
import me.zhanghai.android.effortlesspermissions.OpenAppDetailsDialogFragment;
|
import me.zhanghai.android.effortlesspermissions.OpenAppDetailsDialogFragment;
|
||||||
import okhttp3.Cache;
|
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 pub.devrel.easypermissions.AfterPermissionGranted;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class CallController extends BaseController {
|
public class CallController extends BaseController {
|
||||||
|
|
||||||
|
@ -29,11 +29,7 @@ import android.graphics.drawable.ColorDrawable;
|
|||||||
import android.media.AudioAttributes;
|
import android.media.AudioAttributes;
|
||||||
import android.media.MediaPlayer;
|
import android.media.MediaPlayer;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.*;
|
||||||
import android.os.Bundle;
|
|
||||||
import android.os.Handler;
|
|
||||||
import android.os.VibrationEffect;
|
|
||||||
import android.os.Vibrator;
|
|
||||||
import android.renderscript.Allocation;
|
import android.renderscript.Allocation;
|
||||||
import android.renderscript.Element;
|
import android.renderscript.Element;
|
||||||
import android.renderscript.RenderScript;
|
import android.renderscript.RenderScript;
|
||||||
@ -46,7 +42,11 @@ import android.view.ViewGroup;
|
|||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
import android.widget.TextView;
|
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.RouterTransaction;
|
||||||
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
||||||
import com.bluelinelabs.logansquare.LoganSquare;
|
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.glide.GlideApp;
|
||||||
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
||||||
import com.nextcloud.talk.utils.singletons.AvatarStatusCodeHolder;
|
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.EventBus;
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
import org.greenrobot.eventbus.ThreadMode;
|
import org.greenrobot.eventbus.ThreadMode;
|
||||||
import org.michaelevans.colorart.library.ColorArt;
|
import org.michaelevans.colorart.library.ColorArt;
|
||||||
import org.parceler.Parcels;
|
import org.parceler.Parcels;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
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)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class CallNotificationController extends BaseController {
|
public class CallNotificationController extends BaseController {
|
||||||
|
|
||||||
|
@ -73,6 +73,7 @@ import com.nextcloud.talk.presenters.MentionAutocompletePresenter;
|
|||||||
import com.nextcloud.talk.utils.*;
|
import com.nextcloud.talk.utils.*;
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
import com.nextcloud.talk.utils.database.user.UserUtils;
|
||||||
|
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
||||||
import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder;
|
import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder;
|
||||||
import com.otaliastudios.autocomplete.Autocomplete;
|
import com.otaliastudios.autocomplete.Autocomplete;
|
||||||
import com.otaliastudios.autocomplete.AutocompleteCallback;
|
import com.otaliastudios.autocomplete.AutocompleteCallback;
|
||||||
@ -109,10 +110,13 @@ import java.util.concurrent.TimeUnit;
|
|||||||
public class ChatController extends BaseController implements MessagesListAdapter.OnLoadMoreListener,
|
public class ChatController extends BaseController implements MessagesListAdapter.OnLoadMoreListener,
|
||||||
MessagesListAdapter.Formatter<Date>, MessagesListAdapter.OnMessageLongClickListener, MessageHolders.ContentChecker {
|
MessagesListAdapter.Formatter<Date>, MessagesListAdapter.OnMessageLongClickListener, MessageHolders.ContentChecker {
|
||||||
private static final String TAG = "ChatController";
|
private static final String TAG = "ChatController";
|
||||||
|
private static final byte CONTENT_TYPE_SYSTEM_MESSAGE = 1;
|
||||||
@Inject
|
@Inject
|
||||||
NcApi ncApi;
|
NcApi ncApi;
|
||||||
@Inject
|
@Inject
|
||||||
UserUtils userUtils;
|
UserUtils userUtils;
|
||||||
|
@Inject
|
||||||
|
AppPreferences appPreferences;
|
||||||
@BindView(R.id.messagesListView)
|
@BindView(R.id.messagesListView)
|
||||||
MessagesList messagesListView;
|
MessagesList messagesListView;
|
||||||
@BindView(R.id.messageInputView)
|
@BindView(R.id.messageInputView)
|
||||||
@ -151,9 +155,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
|||||||
private boolean isFirstMessagesProcessing = true;
|
private boolean isFirstMessagesProcessing = true;
|
||||||
private boolean isHelloClicked;
|
private boolean isHelloClicked;
|
||||||
private boolean isLeavingForConversation;
|
private boolean isLeavingForConversation;
|
||||||
|
private boolean isLinkPreviewAllowed;
|
||||||
private static final byte CONTENT_TYPE_SYSTEM_MESSAGE = 1;
|
|
||||||
|
|
||||||
private boolean wasDetached;
|
private boolean wasDetached;
|
||||||
private EmojiPopup emojiPopup;
|
private EmojiPopup emojiPopup;
|
||||||
|
|
||||||
@ -443,6 +445,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
|||||||
ApplicationWideCurrentRoomHolder.getInstance().setInCall(false);
|
ApplicationWideCurrentRoomHolder.getInstance().setInCall(false);
|
||||||
ApplicationWideCurrentRoomHolder.getInstance().setUserInRoom(conversationUser);
|
ApplicationWideCurrentRoomHolder.getInstance().setUserInRoom(conversationUser);
|
||||||
|
|
||||||
|
isLinkPreviewAllowed = appPreferences.getAreLinkPreviewsAllowed();
|
||||||
|
|
||||||
emojiPopup = EmojiPopup.Builder.fromRootView(view).setOnEmojiPopupShownListener(new OnEmojiPopupShownListener() {
|
emojiPopup = EmojiPopup.Builder.fromRootView(view).setOnEmojiPopupShownListener(new OnEmojiPopupShownListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -621,7 +624,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
|||||||
private void leaveRoom() {
|
private void leaveRoom() {
|
||||||
ncApi.leaveRoom(credentials,
|
ncApi.leaveRoom(credentials,
|
||||||
ApiUtils.getUrlForSettingMyselfAsActiveParticipant(conversationUser.getBaseUrl(),
|
ApiUtils.getUrlForSettingMyselfAsActiveParticipant(conversationUser.getBaseUrl(),
|
||||||
roomToken))
|
roomToken))
|
||||||
.subscribeOn(Schedulers.newThread())
|
.subscribeOn(Schedulers.newThread())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(new Observer<GenericOverall>() {
|
.subscribe(new Observer<GenericOverall>() {
|
||||||
@ -666,7 +669,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
|||||||
|
|
||||||
ncApi.sendChatMessage(credentials, ApiUtils.getUrlForChat(conversationUser.getBaseUrl(), roomToken),
|
ncApi.sendChatMessage(credentials, ApiUtils.getUrlForChat(conversationUser.getBaseUrl(), roomToken),
|
||||||
message, conversationUser
|
message, conversationUser
|
||||||
.getDisplayName())
|
.getDisplayName())
|
||||||
.subscribeOn(Schedulers.newThread())
|
.subscribeOn(Schedulers.newThread())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(new Observer<GenericOverall>() {
|
.subscribe(new Observer<GenericOverall>() {
|
||||||
@ -856,8 +859,11 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
|||||||
countGroupedMessages = 0;
|
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() <
|
if (globalLastKnownPastMessageId == -1 || chatMessageList.get(i).getJsonMessageId() <
|
||||||
globalLastKnownPastMessageId) {
|
globalLastKnownPastMessageId) {
|
||||||
globalLastKnownPastMessageId = chatMessageList.get(i).getJsonMessageId();
|
globalLastKnownPastMessageId = chatMessageList.get(i).getJsonMessageId();
|
||||||
@ -882,7 +888,8 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
|||||||
chatMessage = chatMessageList.get(i);
|
chatMessage = chatMessageList.get(i);
|
||||||
|
|
||||||
chatMessage.setBaseUrl(conversationUser.getBaseUrl());
|
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 credentials are empty, we're acting as a guest
|
||||||
if (TextUtils.isEmpty(credentials) && !TextUtils.isEmpty(myFirstMessage.toString())) {
|
if (TextUtils.isEmpty(credentials) && !TextUtils.isEmpty(myFirstMessage.toString())) {
|
||||||
|
@ -23,21 +23,27 @@ package com.nextcloud.talk.controllers;
|
|||||||
import android.app.SearchManager;
|
import android.app.SearchManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.text.InputType;
|
import android.text.InputType;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.*;
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuInflater;
|
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.view.inputmethod.EditorInfo;
|
import android.view.inputmethod.EditorInfo;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.RelativeLayout;
|
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.RouterTransaction;
|
||||||
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
||||||
import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler;
|
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.KeyboardUtils;
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
import com.nextcloud.talk.utils.database.user.UserUtils;
|
||||||
|
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
||||||
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 eu.davidea.fastscroller.FastScroller;
|
import eu.davidea.fastscroller.FastScroller;
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.SelectableAdapter;
|
import eu.davidea.flexibleadapter.SelectableAdapter;
|
||||||
@ -106,8 +86,15 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
|
|||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
import okhttp3.ResponseBody;
|
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 retrofit2.HttpException;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class ContactsController extends BaseController implements SearchView.OnQueryTextListener,
|
public class ContactsController extends BaseController implements SearchView.OnQueryTextListener,
|
||||||
FlexibleAdapter.OnItemClickListener, FastScroller.OnScrollStateChangeListener, FlexibleAdapter.EndlessScrollListener {
|
FlexibleAdapter.OnItemClickListener, FastScroller.OnScrollStateChangeListener, FlexibleAdapter.EndlessScrollListener {
|
||||||
@ -125,6 +112,8 @@ public class ContactsController extends BaseController implements SearchView.OnQ
|
|||||||
UserUtils userUtils;
|
UserUtils userUtils;
|
||||||
@Inject
|
@Inject
|
||||||
EventBus eventBus;
|
EventBus eventBus;
|
||||||
|
@Inject
|
||||||
|
AppPreferences appPreferences;
|
||||||
@BindView(R.id.progressBar)
|
@BindView(R.id.progressBar)
|
||||||
ProgressBar progressBar;
|
ProgressBar progressBar;
|
||||||
@BindView(R.id.recycler_view)
|
@BindView(R.id.recycler_view)
|
||||||
@ -355,7 +344,11 @@ public class ContactsController extends BaseController implements SearchView.OnQ
|
|||||||
searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
|
searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
|
||||||
searchView.setMaxWidth(Integer.MAX_VALUE);
|
searchView.setMaxWidth(Integer.MAX_VALUE);
|
||||||
searchView.setInputType(InputType.TYPE_TEXT_VARIATION_FILTER);
|
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));
|
searchView.setQueryHint(getResources().getString(R.string.nc_search));
|
||||||
if (searchManager != null) {
|
if (searchManager != null) {
|
||||||
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
|
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
|
||||||
|
@ -28,7 +28,10 @@ import android.view.MenuItem;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.ProgressBar;
|
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.backends.pipeline.Fresco;
|
||||||
import com.facebook.drawee.interfaces.DraweeController;
|
import com.facebook.drawee.interfaces.DraweeController;
|
||||||
import com.facebook.drawee.view.SimpleDraweeView;
|
import com.facebook.drawee.view.SimpleDraweeView;
|
||||||
@ -51,18 +54,6 @@ import com.vanniktech.emoji.EmojiTextView;
|
|||||||
import com.yarolegovich.mp.MaterialChoicePreference;
|
import com.yarolegovich.mp.MaterialChoicePreference;
|
||||||
import com.yarolegovich.mp.MaterialPreferenceCategory;
|
import com.yarolegovich.mp.MaterialPreferenceCategory;
|
||||||
import com.yarolegovich.mp.MaterialPreferenceScreen;
|
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.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager;
|
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
||||||
@ -70,43 +61,38 @@ import io.reactivex.Observer;
|
|||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
import org.parceler.Parcels;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class ConversationInfoController extends BaseController {
|
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 baseUrl;
|
||||||
private String conversationToken;
|
private String conversationToken;
|
||||||
private UserEntity conversationUser;
|
private UserEntity conversationUser;
|
||||||
private String credentials;
|
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 roomDisposable;
|
||||||
private Disposable participantsDisposable;
|
private Disposable participantsDisposable;
|
||||||
|
|
||||||
|
@ -25,20 +25,24 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.drawable.BitmapDrawable;
|
import android.graphics.drawable.BitmapDrawable;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.text.InputType;
|
import android.text.InputType;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.view.LayoutInflater;
|
import android.view.*;
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuInflater;
|
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.view.inputmethod.EditorInfo;
|
import android.view.inputmethod.EditorInfo;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.RelativeLayout;
|
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.RouterTransaction;
|
||||||
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
||||||
import com.bluelinelabs.conductor.changehandler.TransitionChangeHandlerCompat;
|
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.bundle.BundleKeys;
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
import com.nextcloud.talk.utils.database.user.UserUtils;
|
||||||
import com.nextcloud.talk.utils.glide.GlideApp;
|
import com.nextcloud.talk.utils.glide.GlideApp;
|
||||||
|
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
||||||
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 eu.davidea.fastscroller.FastScroller;
|
import eu.davidea.fastscroller.FastScroller;
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
import eu.davidea.flexibleadapter.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager;
|
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.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
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 retrofit2.HttpException;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class ConversationsListController extends BaseController implements SearchView.OnQueryTextListener,
|
public class ConversationsListController extends BaseController implements SearchView.OnQueryTextListener,
|
||||||
FlexibleAdapter.OnItemClickListener, FlexibleAdapter.OnItemLongClickListener, FastScroller
|
FlexibleAdapter.OnItemClickListener, FlexibleAdapter.OnItemLongClickListener, FastScroller
|
||||||
@ -122,6 +115,9 @@ public class ConversationsListController extends BaseController implements Searc
|
|||||||
@Inject
|
@Inject
|
||||||
NcApi ncApi;
|
NcApi ncApi;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
AppPreferences appPreferences;
|
||||||
|
|
||||||
@BindView(R.id.recycler_view)
|
@BindView(R.id.recycler_view)
|
||||||
RecyclerView recyclerView;
|
RecyclerView recyclerView;
|
||||||
|
|
||||||
@ -240,7 +236,11 @@ public class ConversationsListController extends BaseController implements Searc
|
|||||||
searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
|
searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
|
||||||
searchView.setMaxWidth(Integer.MAX_VALUE);
|
searchView.setMaxWidth(Integer.MAX_VALUE);
|
||||||
searchView.setInputType(InputType.TYPE_TEXT_VARIATION_FILTER);
|
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));
|
searchView.setQueryHint(getResources().getString(R.string.nc_search));
|
||||||
if (searchManager != null) {
|
if (searchManager != null) {
|
||||||
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
|
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
|
||||||
|
@ -0,0 +1,157 @@
|
|||||||
|
/*
|
||||||
|
* Nextcloud Talk application
|
||||||
|
*
|
||||||
|
* @author Mario Danic
|
||||||
|
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.nextcloud.talk.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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -33,7 +33,11 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
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.bluelinelabs.logansquare.LoganSquare;
|
||||||
import com.nextcloud.talk.R;
|
import com.nextcloud.talk.R;
|
||||||
import com.nextcloud.talk.adapters.items.NotificationSoundItem;
|
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.models.RingtoneSettings;
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
||||||
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
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.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.SelectableAdapter;
|
import eu.davidea.flexibleadapter.SelectableAdapter;
|
||||||
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager;
|
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
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)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class RingtoneSelectionController extends BaseController implements FlexibleAdapter.OnItemClickListener {
|
public class RingtoneSelectionController extends BaseController implements FlexibleAdapter.OnItemClickListener {
|
||||||
|
|
||||||
|
@ -35,7 +35,10 @@ import android.view.ViewGroup;
|
|||||||
import android.view.inputmethod.EditorInfo;
|
import android.view.inputmethod.EditorInfo;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
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.RouterTransaction;
|
||||||
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
||||||
import com.nextcloud.talk.R;
|
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.database.user.UserUtils;
|
||||||
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
||||||
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder;
|
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.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
import studio.carbonylgroup.textfieldboxes.ExtendedEditText;
|
import studio.carbonylgroup.textfieldboxes.ExtendedEditText;
|
||||||
import studio.carbonylgroup.textfieldboxes.TextFieldBoxes;
|
import studio.carbonylgroup.textfieldboxes.TextFieldBoxes;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import java.security.cert.CertificateException;
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class ServerSelectionController extends BaseController {
|
public class ServerSelectionController extends BaseController {
|
||||||
|
|
||||||
|
@ -22,8 +22,11 @@ package com.nextcloud.talk.controllers;
|
|||||||
|
|
||||||
import android.animation.Animator;
|
import android.animation.Animator;
|
||||||
import android.animation.AnimatorListenerAdapter;
|
import android.animation.AnimatorListenerAdapter;
|
||||||
|
import android.app.KeyguardManager;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.security.KeyChain;
|
import android.security.KeyChain;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
@ -31,10 +34,17 @@ import android.util.Log;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.view.WindowManager;
|
||||||
import android.widget.Checkable;
|
import android.widget.Checkable;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
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.RouterTransaction;
|
||||||
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
||||||
import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler;
|
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.models.database.UserEntity;
|
||||||
import com.nextcloud.talk.utils.ApiUtils;
|
import com.nextcloud.talk.utils.ApiUtils;
|
||||||
import com.nextcloud.talk.utils.DoNotDisturbUtils;
|
import com.nextcloud.talk.utils.DoNotDisturbUtils;
|
||||||
|
import com.nextcloud.talk.utils.SecurityUtils;
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
import com.nextcloud.talk.utils.database.user.UserUtils;
|
||||||
import com.nextcloud.talk.utils.glide.GlideApp;
|
import com.nextcloud.talk.utils.glide.GlideApp;
|
||||||
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
||||||
import com.nextcloud.talk.utils.preferences.MagicUserInputModule;
|
import com.nextcloud.talk.utils.preferences.MagicUserInputModule;
|
||||||
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder;
|
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder;
|
||||||
import com.yarolegovich.mp.MaterialChoicePreference;
|
import com.yarolegovich.mp.*;
|
||||||
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 io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
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)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class SettingsController extends BaseController {
|
public class SettingsController extends BaseController {
|
||||||
@ -153,6 +145,21 @@ public class SettingsController extends BaseController {
|
|||||||
@BindView(R.id.settings_always_vibrate)
|
@BindView(R.id.settings_always_vibrate)
|
||||||
MaterialSwitchPreference shouldVibrateSwitchPreference;
|
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)
|
@BindView(R.id.message_text)
|
||||||
TextView messageText;
|
TextView messageText;
|
||||||
|
|
||||||
@ -168,11 +175,17 @@ public class SettingsController extends BaseController {
|
|||||||
@Inject
|
@Inject
|
||||||
UserUtils userUtils;
|
UserUtils userUtils;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
Context context;
|
||||||
|
|
||||||
private UserEntity currentUser;
|
private UserEntity currentUser;
|
||||||
private String credentials;
|
private String credentials;
|
||||||
|
|
||||||
private OnPreferenceValueChangedListener<String> proxyTypeChangeListener;
|
private OnPreferenceValueChangedListener<String> proxyTypeChangeListener;
|
||||||
private OnPreferenceValueChangedListener<Boolean> proxyCredentialsChangeListener;
|
private OnPreferenceValueChangedListener<Boolean> proxyCredentialsChangeListener;
|
||||||
|
private OnPreferenceValueChangedListener<Boolean> screenSecurityChangeListener;
|
||||||
|
private OnPreferenceValueChangedListener<Boolean> screenLockChangeListener;
|
||||||
|
private OnPreferenceValueChangedListener<String> screenLockTimeoutChangeListener;
|
||||||
|
|
||||||
private Disposable profileQueryDisposable;
|
private Disposable profileQueryDisposable;
|
||||||
private Disposable dbQueryDisposable;
|
private Disposable dbQueryDisposable;
|
||||||
@ -198,8 +211,10 @@ public class SettingsController extends BaseController {
|
|||||||
getCurrentUser();
|
getCurrentUser();
|
||||||
|
|
||||||
appPreferences.registerProxyTypeListener(proxyTypeChangeListener = new ProxyTypeChangeListener());
|
appPreferences.registerProxyTypeListener(proxyTypeChangeListener = new ProxyTypeChangeListener());
|
||||||
appPreferences.registerProxyCredentialsListener(proxyCredentialsChangeListener = new
|
appPreferences.registerProxyCredentialsListener(proxyCredentialsChangeListener = new ProxyCredentialsChangeListener());
|
||||||
ProxyCredentialsChangeListener());
|
appPreferences.registerScreenSecurityListener(screenSecurityChangeListener = new ScreenSecurityChangeListener());
|
||||||
|
appPreferences.registerScreenLockListener(screenLockChangeListener = new ScreenLockListener());
|
||||||
|
appPreferences.registerScreenLockTimeoutListener(screenLockTimeoutChangeListener = new ScreenLockTimeoutListener());
|
||||||
|
|
||||||
List<String> listWithIntFields = new ArrayList<>();
|
List<String> listWithIntFields = new ArrayList<>();
|
||||||
listWithIntFields.add("proxy_port");
|
listWithIntFields.add("proxy_port");
|
||||||
@ -223,6 +238,20 @@ public class SettingsController extends BaseController {
|
|||||||
shouldVibrateSwitchPreference.setVisibility(View.GONE);
|
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))) {
|
if (!TextUtils.isEmpty(getResources().getString(R.string.nc_privacy_url))) {
|
||||||
privacyButton.addPreferenceClickListener(view12 -> {
|
privacyButton.addPreferenceClickListener(view12 -> {
|
||||||
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getResources().
|
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getResources().
|
||||||
@ -327,7 +356,46 @@ public class SettingsController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (shouldVibrateSwitchPreference.getVisibility() == View.VISIBLE) {
|
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 = "";
|
String ringtoneName = "";
|
||||||
@ -532,6 +600,9 @@ public class SettingsController extends BaseController {
|
|||||||
if (appPreferences != null) {
|
if (appPreferences != null) {
|
||||||
appPreferences.unregisterProxyTypeListener(proxyTypeChangeListener);
|
appPreferences.unregisterProxyTypeListener(proxyTypeChangeListener);
|
||||||
appPreferences.unregisterProxyCredentialsListener(proxyCredentialsChangeListener);
|
appPreferences.unregisterProxyCredentialsListener(proxyCredentialsChangeListener);
|
||||||
|
appPreferences.unregisterScreenSecurityListener(screenSecurityChangeListener);
|
||||||
|
appPreferences.unregisterScreenLockListener(screenLockChangeListener);
|
||||||
|
appPreferences.unregisterScreenLockTimeoutListener(screenLockTimeoutChangeListener);
|
||||||
}
|
}
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
@ -594,6 +665,46 @@ public class SettingsController extends BaseController {
|
|||||||
return getResources().getString(R.string.nc_app_name);
|
return getResources().getString(R.string.nc_app_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class ScreenLockTimeoutListener implements OnPreferenceValueChangedListener<String> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChanged(String newValue) {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
SecurityUtils.createKey(appPreferences.getScreenLockTimeout());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class ScreenLockListener implements OnPreferenceValueChangedListener<Boolean> {
|
||||||
|
|
||||||
|
@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<Boolean> {
|
||||||
|
|
||||||
|
@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<Boolean> {
|
private class ProxyCredentialsChangeListener implements OnPreferenceValueChangedListener<Boolean> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -29,7 +29,13 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
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.RouterTransaction;
|
||||||
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
||||||
import com.nextcloud.talk.R;
|
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.AccountUtils;
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
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.FlexibleAdapter;
|
||||||
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager;
|
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager;
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
||||||
import io.reactivex.Observer;
|
import io.reactivex.Observer;
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import java.net.CookieManager;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class SwitchAccountController extends BaseController {
|
public class SwitchAccountController extends BaseController {
|
||||||
|
|
||||||
|
@ -32,14 +32,11 @@ import android.text.TextUtils;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.webkit.ClientCertRequest;
|
import android.webkit.*;
|
||||||
import android.webkit.CookieSyncManager;
|
|
||||||
import android.webkit.SslErrorHandler;
|
|
||||||
import android.webkit.WebSettings;
|
|
||||||
import android.webkit.WebView;
|
|
||||||
import android.webkit.WebViewClient;
|
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import autodagger.AutoInjector;
|
||||||
|
import butterknife.BindView;
|
||||||
import com.bluelinelabs.conductor.RouterTransaction;
|
import com.bluelinelabs.conductor.RouterTransaction;
|
||||||
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
||||||
import com.nextcloud.talk.R;
|
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.preferences.AppPreferences;
|
||||||
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder;
|
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder;
|
||||||
import com.nextcloud.talk.utils.ssl.MagicTrustManager;
|
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 org.greenrobot.eventbus.EventBus;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.net.CookieManager;
|
import java.net.CookieManager;
|
||||||
import java.net.URLDecoder;
|
import java.net.URLDecoder;
|
||||||
@ -66,17 +68,6 @@ import java.util.HashMap;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
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)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class WebViewLoginController extends BaseController {
|
public class WebViewLoginController extends BaseController {
|
||||||
|
|
||||||
|
@ -19,12 +19,19 @@
|
|||||||
package com.nextcloud.talk.controllers.base;
|
package com.nextcloud.talk.controllers.base;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.view.inputmethod.EditorInfo;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
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.bluelinelabs.conductor.Controller;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
import com.nextcloud.talk.controllers.AccountVerificationController;
|
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.controllers.base.providers.ActionBarProvider;
|
||||||
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.appcompat.app.ActionBar;
|
|
||||||
import autodagger.AutoInjector;
|
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public abstract class BaseController extends ButterKnifeController {
|
public abstract class BaseController extends ButterKnifeController {
|
||||||
|
|
||||||
@ -90,6 +92,10 @@ public abstract class BaseController extends ButterKnifeController {
|
|||||||
@Override
|
@Override
|
||||||
protected void onViewBound(@NonNull View view) {
|
protected void onViewBound(@NonNull View view) {
|
||||||
super.onViewBound(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*
|
// 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
|
@Override
|
||||||
protected void onAttach(@NonNull View view) {
|
protected void onAttach(@NonNull View view) {
|
||||||
|
super.onAttach(view);
|
||||||
|
|
||||||
setTitle();
|
setTitle();
|
||||||
if (getActionBar() != null) {
|
if (getActionBar() != null) {
|
||||||
getActionBar().setDisplayHomeAsUpEnabled(getParentController() != null || getRouter().getBackstackSize() > 1);
|
getActionBar().setDisplayHomeAsUpEnabled(getParentController() != null || getRouter().getBackstackSize() > 1);
|
||||||
}
|
}
|
||||||
super.onAttach(view);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -141,4 +148,20 @@ public abstract class BaseController extends ButterKnifeController {
|
|||||||
protected String getTitle() {
|
protected String getTitle() {
|
||||||
return null;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,12 +22,10 @@ import android.os.Bundle;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
import com.bluelinelabs.conductor.Controller;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import butterknife.Unbinder;
|
import butterknife.Unbinder;
|
||||||
|
import com.bluelinelabs.conductor.Controller;
|
||||||
|
|
||||||
public abstract class ButterKnifeController extends Controller {
|
public abstract class ButterKnifeController extends Controller {
|
||||||
|
|
||||||
|
@ -27,7 +27,11 @@ import android.text.TextUtils;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
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.RouterTransaction;
|
||||||
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
||||||
import com.kennyc.bottomsheet.adapters.AppAdapter;
|
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.ShareUtils;
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
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.greenrobot.eventbus.EventBus;
|
||||||
import org.parceler.Parcel;
|
import org.parceler.Parcel;
|
||||||
import org.parceler.Parcels;
|
import org.parceler.Parcels;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
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)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class CallMenuController extends BaseController implements FlexibleAdapter.OnItemClickListener {
|
public class CallMenuController extends BaseController implements FlexibleAdapter.OnItemClickListener {
|
||||||
@BindView(R.id.recycler_view)
|
@BindView(R.id.recycler_view)
|
||||||
|
@ -32,7 +32,10 @@ import android.view.View;
|
|||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.inputmethod.EditorInfo;
|
import android.view.inputmethod.EditorInfo;
|
||||||
import android.widget.Button;
|
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.RouterTransaction;
|
||||||
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
||||||
import com.nextcloud.talk.R;
|
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.bundle.BundleKeys;
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
import com.nextcloud.talk.utils.database.user.UserUtils;
|
||||||
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder;
|
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder;
|
||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
import org.parceler.Parcels;
|
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.ExtendedEditText;
|
||||||
import studio.carbonylgroup.textfieldboxes.TextFieldBoxes;
|
import studio.carbonylgroup.textfieldboxes.TextFieldBoxes;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class EntryMenuController extends BaseController {
|
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_CALL_URL, callUrl);
|
||||||
bundle.putString(BundleKeys.KEY_CONVERSATION_PASSWORD, editText.getText().toString());
|
bundle.putString(BundleKeys.KEY_CONVERSATION_PASSWORD, editText.getText().toString());
|
||||||
bundle.putInt(BundleKeys.KEY_OPERATION_CODE, operationCode);
|
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))
|
getRouter().pushController(RouterTransaction.with(new OperationsMenuController(bundle))
|
||||||
|
@ -35,7 +35,10 @@ import android.widget.Button;
|
|||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
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.RouterTransaction;
|
||||||
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
||||||
import com.bluelinelabs.logansquare.LoganSquare;
|
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.bundle.BundleKeys;
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
import com.nextcloud.talk.utils.database.user.UserUtils;
|
||||||
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder;
|
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.Observer;
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
import org.parceler.Parcels;
|
||||||
import retrofit2.HttpException;
|
import retrofit2.HttpException;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class OperationsMenuController extends BaseController {
|
public class OperationsMenuController extends BaseController {
|
||||||
|
|
||||||
@ -614,7 +610,7 @@ public class OperationsMenuController extends BaseController {
|
|||||||
|
|
||||||
if (baseUrl != null && !baseUrl.equals(currentUser.getBaseUrl())) {
|
if (baseUrl != null && !baseUrl.equals(currentUser.getBaseUrl())) {
|
||||||
isGuestUser = true;
|
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 {
|
} else {
|
||||||
hasChatCapability = currentUser.hasSpreedCapabilityWithName("chat-v2");
|
hasChatCapability = currentUser.hasSpreedCapabilityWithName("chat-v2");
|
||||||
}
|
}
|
||||||
|
@ -20,13 +20,12 @@
|
|||||||
*/
|
*/
|
||||||
package com.nextcloud.talk.dagger.modules;
|
package com.nextcloud.talk.dagger.modules;
|
||||||
|
|
||||||
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import dagger.Module;
|
|
||||||
import dagger.Provides;
|
|
||||||
|
|
||||||
@Module
|
@Module
|
||||||
public class BusModule {
|
public class BusModule {
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
package com.nextcloud.talk.dagger.modules;
|
package com.nextcloud.talk.dagger.modules;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
import dagger.Provides;
|
import dagger.Provides;
|
||||||
|
@ -21,16 +21,10 @@
|
|||||||
package com.nextcloud.talk.dagger.modules;
|
package com.nextcloud.talk.dagger.modules;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import com.nextcloud.talk.R;
|
import com.nextcloud.talk.R;
|
||||||
import com.nextcloud.talk.models.database.Models;
|
import com.nextcloud.talk.models.database.Models;
|
||||||
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
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.Module;
|
||||||
import dagger.Provides;
|
import dagger.Provides;
|
||||||
import io.requery.Persistable;
|
import io.requery.Persistable;
|
||||||
@ -39,6 +33,9 @@ import io.requery.reactivex.ReactiveEntityStore;
|
|||||||
import io.requery.reactivex.ReactiveSupport;
|
import io.requery.reactivex.ReactiveSupport;
|
||||||
import io.requery.sql.Configuration;
|
import io.requery.sql.Configuration;
|
||||||
import io.requery.sql.EntityDataStore;
|
import io.requery.sql.EntityDataStore;
|
||||||
|
import net.orange_box.storebox.StoreBox;
|
||||||
|
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
@Module
|
@Module
|
||||||
public class DatabaseModule {
|
public class DatabaseModule {
|
||||||
|
@ -22,7 +22,8 @@ package com.nextcloud.talk.dagger.modules;
|
|||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import com.github.aurae.retrofit2.LoganSquareConverterFactory;
|
import com.github.aurae.retrofit2.LoganSquareConverterFactory;
|
||||||
import com.nextcloud.talk.BuildConfig;
|
import com.nextcloud.talk.BuildConfig;
|
||||||
import com.nextcloud.talk.api.NcApi;
|
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.MagicKeyManager;
|
||||||
import com.nextcloud.talk.utils.ssl.MagicTrustManager;
|
import com.nextcloud.talk.utils.ssl.MagicTrustManager;
|
||||||
import com.nextcloud.talk.utils.ssl.SSLSocketFactoryCompat;
|
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.io.IOException;
|
||||||
import java.net.CookieManager;
|
import java.net.CookieManager;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
@ -46,30 +58,6 @@ import java.security.UnrecoverableKeyException;
|
|||||||
import java.security.cert.CertificateException;
|
import java.security.cert.CertificateException;
|
||||||
import java.util.concurrent.TimeUnit;
|
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)
|
@Module(includes = DatabaseModule.class)
|
||||||
public class RestModule {
|
public class RestModule {
|
||||||
|
|
||||||
@ -220,6 +208,29 @@ public class RestModule {
|
|||||||
return httpClient.build();
|
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 class ProxyAuthenticator implements Authenticator {
|
||||||
|
|
||||||
private String credentials;
|
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 class GetProxyRunnable implements Runnable {
|
||||||
private volatile Proxy proxy;
|
private volatile Proxy proxy;
|
||||||
private AppPreferences appPreferences;
|
private AppPreferences appPreferences;
|
||||||
|
@ -21,13 +21,11 @@
|
|||||||
package com.nextcloud.talk.events;
|
package com.nextcloud.talk.events;
|
||||||
|
|
||||||
import android.webkit.SslErrorHandler;
|
import android.webkit.SslErrorHandler;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import com.nextcloud.talk.utils.ssl.MagicTrustManager;
|
import com.nextcloud.talk.utils.ssl.MagicTrustManager;
|
||||||
|
|
||||||
import java.security.cert.X509Certificate;
|
import java.security.cert.X509Certificate;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
|
|
||||||
public class CertificateEvent {
|
public class CertificateEvent {
|
||||||
private final X509Certificate x509Certificate;
|
private final X509Certificate x509Certificate;
|
||||||
private final MagicTrustManager magicTrustManager;
|
private final MagicTrustManager magicTrustManager;
|
||||||
|
@ -20,10 +20,9 @@
|
|||||||
|
|
||||||
package com.nextcloud.talk.events;
|
package com.nextcloud.talk.events;
|
||||||
|
|
||||||
import org.webrtc.MediaStream;
|
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.webrtc.MediaStream;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class MediaStreamEvent {
|
public class MediaStreamEvent {
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
package com.nextcloud.talk.events;
|
package com.nextcloud.talk.events;
|
||||||
|
|
||||||
import com.nextcloud.talk.models.json.rooms.Conversation;
|
import com.nextcloud.talk.models.json.rooms.Conversation;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@ -20,12 +20,10 @@
|
|||||||
|
|
||||||
package com.nextcloud.talk.events;
|
package com.nextcloud.talk.events;
|
||||||
|
|
||||||
import com.nextcloud.talk.models.json.signaling.NCIceCandidate;
|
|
||||||
|
|
||||||
import org.webrtc.SessionDescription;
|
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import com.nextcloud.talk.models.json.signaling.NCIceCandidate;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.webrtc.SessionDescription;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class SessionDescriptionSendEvent {
|
public class SessionDescriptionSendEvent {
|
||||||
|
@ -20,11 +20,11 @@
|
|||||||
|
|
||||||
package com.nextcloud.talk.events;
|
package com.nextcloud.talk.events;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class WebSocketCommunicationEvent {
|
public class WebSocketCommunicationEvent {
|
||||||
public final String type;
|
public final String type;
|
||||||
|
@ -26,7 +26,10 @@ import android.content.Context;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
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.bluelinelabs.logansquare.LoganSquare;
|
||||||
import com.nextcloud.talk.R;
|
import com.nextcloud.talk.R;
|
||||||
import com.nextcloud.talk.api.NcApi;
|
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.arbitrarystorage.ArbitraryStorageUtils;
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
import com.nextcloud.talk.utils.database.user.UserUtils;
|
||||||
import com.nextcloud.talk.webrtc.WebSocketConnectionHelper;
|
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.CompletableObserver;
|
||||||
import io.reactivex.Observer;
|
import io.reactivex.Observer;
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
@ -57,6 +48,12 @@ import okhttp3.JavaNetCookieJar;
|
|||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
import retrofit2.Retrofit;
|
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)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class AccountRemovalWorker extends Worker {
|
public class AccountRemovalWorker extends Worker {
|
||||||
public static final String TAG = "AccountRemovalWorker";
|
public static final String TAG = "AccountRemovalWorker";
|
||||||
|
@ -22,7 +22,11 @@ package com.nextcloud.talk.jobs;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Log;
|
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.bluelinelabs.logansquare.LoganSquare;
|
||||||
import com.nextcloud.talk.api.NcApi;
|
import com.nextcloud.talk.api.NcApi;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
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.ApiUtils;
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
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.Observer;
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import okhttp3.JavaNetCookieJar;
|
import okhttp3.JavaNetCookieJar;
|
||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
|
import org.greenrobot.eventbus.EventBus;
|
||||||
import retrofit2.Retrofit;
|
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)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class CapabilitiesWorker extends Worker {
|
public class CapabilitiesWorker extends Worker {
|
||||||
public static final String TAG = "CapabilitiesWorker";
|
public static final String TAG = "CapabilitiesWorker";
|
||||||
|
@ -37,7 +37,13 @@ import android.os.Vibrator;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
import android.util.Log;
|
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.bluelinelabs.logansquare.LoganSquare;
|
||||||
import com.nextcloud.talk.R;
|
import com.nextcloud.talk.R;
|
||||||
import com.nextcloud.talk.activities.MagicCallActivity;
|
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.database.arbitrarystorage.ArbitraryStorageUtils;
|
||||||
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
||||||
import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder;
|
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 org.parceler.Parcels;
|
||||||
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
|
import javax.crypto.Cipher;
|
||||||
|
import javax.crypto.NoSuchPaddingException;
|
||||||
|
import javax.inject.Inject;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.CookieManager;
|
import java.net.CookieManager;
|
||||||
import java.security.InvalidKeyException;
|
import java.security.InvalidKeyException;
|
||||||
@ -73,23 +86,6 @@ import java.util.Calendar;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.zip.CRC32;
|
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)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class NotificationWorker extends Worker {
|
public class NotificationWorker extends Worker {
|
||||||
public static final String TAG = "NotificationWorker";
|
public static final String TAG = "NotificationWorker";
|
||||||
|
@ -21,12 +21,10 @@
|
|||||||
package com.nextcloud.talk.jobs;
|
package com.nextcloud.talk.jobs;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import com.nextcloud.talk.utils.PushUtils;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.work.Worker;
|
import androidx.work.Worker;
|
||||||
import androidx.work.WorkerParameters;
|
import androidx.work.WorkerParameters;
|
||||||
|
import com.nextcloud.talk.utils.PushUtils;
|
||||||
|
|
||||||
public class PushRegistrationWorker extends Worker {
|
public class PushRegistrationWorker extends Worker {
|
||||||
public static final String TAG = "PushRegistrationWorker";
|
public static final String TAG = "PushRegistrationWorker";
|
||||||
|
@ -23,7 +23,9 @@ package com.nextcloud.talk.jobs;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.work.*;
|
||||||
|
import autodagger.AutoInjector;
|
||||||
import com.bluelinelabs.logansquare.LoganSquare;
|
import com.bluelinelabs.logansquare.LoganSquare;
|
||||||
import com.nextcloud.talk.api.NcApi;
|
import com.nextcloud.talk.api.NcApi;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
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.ApiUtils;
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
import com.nextcloud.talk.utils.database.user.UserUtils;
|
||||||
|
import io.reactivex.Observer;
|
||||||
|
import io.reactivex.disposables.Disposable;
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
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)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class SignalingSettingsJob extends Worker {
|
public class SignalingSettingsJob extends Worker {
|
||||||
private static final String TAG = "SignalingSettingsJob";
|
private static final String TAG = "SignalingSettingsJob";
|
||||||
|
@ -24,7 +24,10 @@ import android.annotation.SuppressLint;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
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.bluelinelabs.logansquare.LoganSquare;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
import com.nextcloud.talk.models.ExternalSignalingServer;
|
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.utils.database.user.UserUtils;
|
||||||
import com.nextcloud.talk.webrtc.WebSocketConnectionHelper;
|
import com.nextcloud.talk.webrtc.WebSocketConnectionHelper;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
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)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class WebsocketConnectionsWorker extends Worker {
|
public class WebsocketConnectionsWorker extends Worker {
|
||||||
|
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
|
@ -20,9 +20,8 @@
|
|||||||
*/
|
*/
|
||||||
package com.nextcloud.talk.models;
|
package com.nextcloud.talk.models;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
|
@ -19,12 +19,11 @@
|
|||||||
*/
|
*/
|
||||||
package com.nextcloud.talk.models;
|
package com.nextcloud.talk.models;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
import org.parceler.Parcel;
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
public class RetrofitBucket {
|
public class RetrofitBucket {
|
||||||
|
@ -21,15 +21,12 @@
|
|||||||
package com.nextcloud.talk.models;
|
package com.nextcloud.talk.models;
|
||||||
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
import com.nextcloud.talk.models.json.converters.UriTypeConverter;
|
import com.nextcloud.talk.models.json.converters.UriTypeConverter;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@JsonObject
|
@JsonObject
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models;
|
|||||||
|
|
||||||
|
|
||||||
import com.nextcloud.talk.models.database.UserEntity;
|
import com.nextcloud.talk.models.database.UserEntity;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
|
@ -21,13 +21,12 @@
|
|||||||
package com.nextcloud.talk.models.database;
|
package com.nextcloud.talk.models.database;
|
||||||
|
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
import io.requery.Entity;
|
import io.requery.Entity;
|
||||||
import io.requery.Key;
|
import io.requery.Key;
|
||||||
import io.requery.Persistable;
|
import io.requery.Persistable;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
public interface ArbitraryStorage extends Parcelable, Persistable, Serializable {
|
public interface ArbitraryStorage extends Parcelable, Persistable, Serializable {
|
||||||
@Key
|
@Key
|
||||||
|
@ -21,18 +21,16 @@ package com.nextcloud.talk.models.database;
|
|||||||
|
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.bluelinelabs.logansquare.LoganSquare;
|
import com.bluelinelabs.logansquare.LoganSquare;
|
||||||
import com.nextcloud.talk.models.json.capabilities.Capabilities;
|
import com.nextcloud.talk.models.json.capabilities.Capabilities;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
import io.requery.Entity;
|
import io.requery.Entity;
|
||||||
import io.requery.Generated;
|
import io.requery.Generated;
|
||||||
import io.requery.Key;
|
import io.requery.Key;
|
||||||
import io.requery.Persistable;
|
import io.requery.Persistable;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
public interface User extends Parcelable, Persistable, Serializable {
|
public interface User extends Parcelable, Persistable, Serializable {
|
||||||
static final String TAG = "UserEntity";
|
static final String TAG = "UserEntity";
|
||||||
|
@ -23,13 +23,11 @@ package com.nextcloud.talk.models.json.autocomplete;
|
|||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
||||||
|
import lombok.Data;
|
||||||
import org.parceler.Parcel;
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
@JsonObject
|
@JsonObject
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.autocomplete;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.autocomplete;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.call;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
|
@ -23,10 +23,8 @@ package com.nextcloud.talk.models.json.call;
|
|||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.call;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.capabilities;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.capabilities;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.capabilities;
|
|||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
|
@ -21,10 +21,8 @@ package com.nextcloud.talk.models.json.capabilities;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
|
@ -22,13 +22,11 @@ package com.nextcloud.talk.models.json.capabilities;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
import lombok.Data;
|
||||||
import org.parceler.Parcel;
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
@JsonObject
|
@JsonObject
|
||||||
|
@ -22,13 +22,11 @@ package com.nextcloud.talk.models.json.capabilities;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
import lombok.Data;
|
||||||
import org.parceler.Parcel;
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
@JsonObject
|
@JsonObject
|
||||||
|
@ -20,8 +20,7 @@
|
|||||||
package com.nextcloud.talk.models.json.chat;
|
package com.nextcloud.talk.models.json.chat;
|
||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonIgnore;
|
import com.bluelinelabs.logansquare.annotation.JsonIgnore;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
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.IMessage;
|
||||||
import com.stfalcon.chatkit.commons.models.IUser;
|
import com.stfalcon.chatkit.commons.models.IUser;
|
||||||
import com.stfalcon.chatkit.commons.models.MessageContentType;
|
import com.stfalcon.chatkit.commons.models.MessageContentType;
|
||||||
|
import lombok.Data;
|
||||||
import org.parceler.Parcel;
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
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;
|
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
@JsonObject
|
@JsonObject
|
||||||
public class ChatMessage implements IMessage, MessageContentType, MessageContentType.Image {
|
public class ChatMessage implements IMessage, MessageContentType, MessageContentType.Image {
|
||||||
|
@JsonIgnore
|
||||||
|
public boolean isGrouped;
|
||||||
|
@JsonIgnore
|
||||||
|
public String activeUserId;
|
||||||
|
@JsonIgnore
|
||||||
|
public Map<String, String> selectedIndividualHashMap;
|
||||||
|
@JsonIgnore
|
||||||
|
public boolean isLinkPreviewAllowed;
|
||||||
List<MessageType> messageTypesToIgnore = Arrays.asList(MessageType.REGULAR_TEXT_MESSAGE,
|
List<MessageType> messageTypesToIgnore = Arrays.asList(MessageType.REGULAR_TEXT_MESSAGE,
|
||||||
MessageType.SYSTEM_MESSAGE, MessageType.SINGLE_LINK_VIDEO_MESSAGE,
|
MessageType.SYSTEM_MESSAGE, MessageType.SINGLE_LINK_VIDEO_MESSAGE,
|
||||||
MessageType.SINGLE_LINK_AUDIO_MESSAGE, MessageType.SINGLE_LINK_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<String, HashMap<String, String>> messageParameters;
|
||||||
|
@JsonField(name = "systemMessage", typeConverter = EnumSystemMessageTypeConverter.class)
|
||||||
|
SystemMessageType systemMessageType;
|
||||||
|
|
||||||
private boolean hasFileAttachment() {
|
private boolean hasFileAttachment() {
|
||||||
if (messageParameters != null && messageParameters.size() > 0) {
|
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();
|
return getMessage().trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,70 +122,6 @@ public class ChatMessage implements IMessage, MessageContentType, MessageContent
|
|||||||
return TextMatchers.getMessageTypeFromString(getText());
|
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<String, HashMap<String, String>> messageParameters;
|
|
||||||
|
|
||||||
@JsonField(name = "systemMessage", typeConverter = EnumSystemMessageTypeConverter.class)
|
|
||||||
SystemMessageType systemMessageType;
|
|
||||||
|
|
||||||
@JsonIgnore
|
|
||||||
public boolean isGrouped;
|
|
||||||
@JsonIgnore
|
|
||||||
public String activeUserId;
|
|
||||||
@JsonIgnore
|
|
||||||
public Map<String, String> selectedIndividualHashMap;
|
|
||||||
|
|
||||||
|
|
||||||
public Map<String, String> getSelectedIndividualHashMap() {
|
public Map<String, String> getSelectedIndividualHashMap() {
|
||||||
return selectedIndividualHashMap;
|
return selectedIndividualHashMap;
|
||||||
}
|
}
|
||||||
@ -278,4 +235,36 @@ public class ChatMessage implements IMessage, MessageContentType, MessageContent
|
|||||||
public String getSystemMessage() {
|
public String getSystemMessage() {
|
||||||
return new EnumSystemMessageTypeConverter().convertToString(getSystemMessageType());
|
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,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,13 +22,11 @@ package com.nextcloud.talk.models.json.chat;
|
|||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
||||||
|
import lombok.Data;
|
||||||
import org.parceler.Parcel;
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
@JsonObject
|
@JsonObject
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.chat;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
|
@ -23,22 +23,7 @@ package com.nextcloud.talk.models.json.converters;
|
|||||||
import com.bluelinelabs.logansquare.typeconverters.StringBasedTypeConverter;
|
import com.bluelinelabs.logansquare.typeconverters.StringBasedTypeConverter;
|
||||||
import com.nextcloud.talk.models.json.chat.ChatMessage;
|
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.*;
|
||||||
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;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
package com.nextcloud.talk.models.json.converters;
|
package com.nextcloud.talk.models.json.converters;
|
||||||
|
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
|
|
||||||
import org.parceler.ParcelConverter;
|
import org.parceler.ParcelConverter;
|
||||||
import org.parceler.Parcels;
|
import org.parceler.Parcels;
|
||||||
|
|
||||||
|
@ -22,7 +22,6 @@ package com.nextcloud.talk.models.json.converters;
|
|||||||
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import com.bluelinelabs.logansquare.typeconverters.StringBasedTypeConverter;
|
import com.bluelinelabs.logansquare.typeconverters.StringBasedTypeConverter;
|
||||||
|
|
||||||
public class UriTypeConverter extends StringBasedTypeConverter<Uri> {
|
public class UriTypeConverter extends StringBasedTypeConverter<Uri> {
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.generic;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.generic;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.generic;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.generic;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
|
@ -21,10 +21,8 @@ package com.nextcloud.talk.models.json.mention;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
|
@ -22,13 +22,11 @@ package com.nextcloud.talk.models.json.mention;
|
|||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
||||||
|
import lombok.Data;
|
||||||
import org.parceler.Parcel;
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
@JsonObject
|
@JsonObject
|
||||||
|
@ -21,10 +21,8 @@ package com.nextcloud.talk.models.json.mention;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
|
@ -22,61 +22,45 @@ package com.nextcloud.talk.models.json.notifications;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
import lombok.Data;
|
||||||
import org.parceler.Parcel;
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
@JsonObject
|
@JsonObject
|
||||||
public class Notification {
|
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<String, HashMap<String, String>> subjectRichParameters;
|
|
||||||
|
|
||||||
@JsonField(name = "message")
|
|
||||||
String message;
|
|
||||||
|
|
||||||
@JsonField(name = "messageRich")
|
|
||||||
String messageRich;
|
|
||||||
|
|
||||||
@JsonField(name = "messageRichParameters")
|
|
||||||
HashMap<String, HashMap<String, String>> messageRichParameters;
|
|
||||||
|
|
||||||
@JsonField(name = "link")
|
|
||||||
String link;
|
|
||||||
|
|
||||||
@JsonField(name = "icon")
|
@JsonField(name = "icon")
|
||||||
public String 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<String, HashMap<String, String>> subjectRichParameters;
|
||||||
|
@JsonField(name = "message")
|
||||||
|
String message;
|
||||||
|
@JsonField(name = "messageRich")
|
||||||
|
String messageRich;
|
||||||
|
@JsonField(name = "messageRichParameters")
|
||||||
|
HashMap<String, HashMap<String, String>> messageRichParameters;
|
||||||
|
@JsonField(name = "link")
|
||||||
|
String link;
|
||||||
@JsonField(name = "actions")
|
@JsonField(name = "actions")
|
||||||
List<NotificationAction> actions;
|
List<NotificationAction> actions;
|
||||||
}
|
}
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.notifications;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
|
@ -23,10 +23,8 @@ package com.nextcloud.talk.models.json.notifications;
|
|||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
|
@ -21,7 +21,6 @@ package com.nextcloud.talk.models.json.notifications;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.notifications;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
|
@ -23,13 +23,11 @@ package com.nextcloud.talk.models.json.notifications;
|
|||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
||||||
|
import lombok.Data;
|
||||||
import org.parceler.Parcel;
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
@JsonObject
|
@JsonObject
|
||||||
|
@ -21,7 +21,6 @@ package com.nextcloud.talk.models.json.notifications;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@ -23,7 +23,6 @@ package com.nextcloud.talk.models.json.participants;
|
|||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
import com.nextcloud.talk.models.json.rooms.RoomsOCS;
|
import com.nextcloud.talk.models.json.rooms.RoomsOCS;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@ -24,12 +24,10 @@ import com.bluelinelabs.logansquare.annotation.JsonField;
|
|||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter;
|
import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter;
|
||||||
import com.nextcloud.talk.models.json.converters.ObjectParcelConverter;
|
import com.nextcloud.talk.models.json.converters.ObjectParcelConverter;
|
||||||
|
import lombok.Data;
|
||||||
import org.parceler.Parcel;
|
import org.parceler.Parcel;
|
||||||
import org.parceler.ParcelPropertyConverter;
|
import org.parceler.ParcelPropertyConverter;
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
@JsonObject
|
@JsonObject
|
||||||
@ -58,6 +56,7 @@ public class Participant {
|
|||||||
@ParcelPropertyConverter(ObjectParcelConverter.class)
|
@ParcelPropertyConverter(ObjectParcelConverter.class)
|
||||||
@JsonField(name = "inCall")
|
@JsonField(name = "inCall")
|
||||||
Object inCall;
|
Object inCall;
|
||||||
|
String source;
|
||||||
|
|
||||||
public ParticipantFlags getParticipantFlags() {
|
public ParticipantFlags getParticipantFlags() {
|
||||||
ParticipantFlags participantFlags = ParticipantFlags.NOT_IN_CALL;
|
ParticipantFlags participantFlags = ParticipantFlags.NOT_IN_CALL;
|
||||||
@ -75,7 +74,6 @@ public class Participant {
|
|||||||
|
|
||||||
return participantFlags;
|
return participantFlags;
|
||||||
}
|
}
|
||||||
String source;
|
|
||||||
|
|
||||||
public enum ParticipantType {
|
public enum ParticipantType {
|
||||||
DUMMY,
|
DUMMY,
|
||||||
@ -87,11 +85,11 @@ public class Participant {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public enum ParticipantFlags {
|
public enum ParticipantFlags {
|
||||||
NOT_IN_CALL (0),
|
NOT_IN_CALL(0),
|
||||||
IN_CALL (1),
|
IN_CALL(1),
|
||||||
IN_CALL_WITH_AUDIO (3),
|
IN_CALL_WITH_AUDIO(3),
|
||||||
IN_CALL_WITH_VIDEO (5),
|
IN_CALL_WITH_VIDEO(5),
|
||||||
IN_CALL_WITH_AUDIO_AND_VIDEO (7);
|
IN_CALL_WITH_AUDIO_AND_VIDEO(7);
|
||||||
|
|
||||||
private long value;
|
private long value;
|
||||||
|
|
||||||
@ -99,10 +97,6 @@ public class Participant {
|
|||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getValue() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ParticipantFlags fromValue(long value) {
|
public static ParticipantFlags fromValue(long value) {
|
||||||
if (value == 0) {
|
if (value == 0) {
|
||||||
return NOT_IN_CALL;
|
return NOT_IN_CALL;
|
||||||
@ -119,5 +113,9 @@ public class Participant {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,13 +23,11 @@ package com.nextcloud.talk.models.json.participants;
|
|||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
import com.nextcloud.talk.models.json.generic.GenericOCS;
|
||||||
|
import lombok.Data;
|
||||||
import org.parceler.Parcel;
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
@JsonObject
|
@JsonObject
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.participants;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
|
@ -23,10 +23,8 @@ package com.nextcloud.talk.models.json.push;
|
|||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonIgnore;
|
import com.bluelinelabs.logansquare.annotation.JsonIgnore;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Parcel
|
@Parcel
|
||||||
|
@ -22,10 +22,8 @@ package com.nextcloud.talk.models.json.push;
|
|||||||
|
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
@Data
|
@Data
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user