Commit 0c7a5148 authored by Leonardo Aramaki's avatar Leonardo Aramaki

Migrate RxJava 1.x to 2.x

parent e302d26c
...@@ -2,6 +2,7 @@ package chat.rocket.android_ddp; ...@@ -2,6 +2,7 @@ package chat.rocket.android_ddp;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import org.json.JSONObject; import org.json.JSONObject;
public class DDPClientCallback { public class DDPClientCallback {
......
package chat.rocket.android_ddp; package chat.rocket.android_ddp;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
......
package chat.rocket.android_ddp.rx; package chat.rocket.android_ddp.rx;
import java.io.IOException; import java.io.IOException;
import java.util.concurrent.TimeUnit;
import chat.rocket.android.log.RCLog; import chat.rocket.android.log.RCLog;
import io.reactivex.BackpressureStrategy; import io.reactivex.BackpressureStrategy;
......
package chat.rocket.android; package chat.rocket.android;
import android.os.StrictMode; import android.os.StrictMode;
import com.facebook.stetho.Stetho; import com.facebook.stetho.Stetho;
import com.tspoon.traceur.Traceur; import com.tspoon.traceur.Traceur;
import com.uphyca.stetho_realm.RealmInspectorModulesProvider; import com.uphyca.stetho_realm.RealmInspectorModulesProvider;
......
...@@ -5,8 +5,8 @@ import chat.rocket.android.RocketChatCache ...@@ -5,8 +5,8 @@ import chat.rocket.android.RocketChatCache
import chat.rocket.android.api.rest.CookieInterceptor import chat.rocket.android.api.rest.CookieInterceptor
import chat.rocket.android.api.rest.DefaultCookieProvider import chat.rocket.android.api.rest.DefaultCookieProvider
import com.facebook.stetho.okhttp3.StethoInterceptor import com.facebook.stetho.okhttp3.StethoInterceptor
import java.util.concurrent.TimeUnit
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import java.util.concurrent.TimeUnit
object OkHttpHelper { object OkHttpHelper {
......
...@@ -17,7 +17,6 @@ import java.util.UUID; ...@@ -17,7 +17,6 @@ import java.util.UUID;
import chat.rocket.android.helper.Logger; import chat.rocket.android.helper.Logger;
import chat.rocket.android.helper.TextUtils; import chat.rocket.android.helper.TextUtils;
import chat.rocket.android.log.RCLog; import chat.rocket.android.log.RCLog;
import chat.rocket.android.push.PushManager;
import chat.rocket.core.utils.Pair; import chat.rocket.core.utils.Pair;
import io.reactivex.BackpressureStrategy; import io.reactivex.BackpressureStrategy;
import io.reactivex.Flowable; import io.reactivex.Flowable;
......
...@@ -8,8 +8,8 @@ import android.support.v4.app.Fragment; ...@@ -8,8 +8,8 @@ import android.support.v4.app.Fragment;
import chat.rocket.android.R; import chat.rocket.android.R;
import chat.rocket.android.fragment.server_config.LoginFragment; import chat.rocket.android.fragment.server_config.LoginFragment;
import chat.rocket.android.fragment.server_config.RetryLoginFragment; import chat.rocket.android.fragment.server_config.RetryLoginFragment;
import chat.rocket.core.interactors.SessionInteractor;
import chat.rocket.android.service.ConnectivityManager; import chat.rocket.android.service.ConnectivityManager;
import chat.rocket.core.interactors.SessionInteractor;
import chat.rocket.persistence.realm.repositories.RealmSessionRepository; import chat.rocket.persistence.realm.repositories.RealmSessionRepository;
/** /**
......
...@@ -2,14 +2,13 @@ package chat.rocket.android.activity; ...@@ -2,14 +2,13 @@ package chat.rocket.android.activity;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import chat.rocket.android.BackgroundLooper; import chat.rocket.android.BackgroundLooper;
import chat.rocket.android.helper.Logger; import chat.rocket.android.helper.Logger;
import chat.rocket.android.service.ConnectivityManagerApi; import chat.rocket.android.service.ConnectivityManagerApi;
import chat.rocket.android.shared.BasePresenter; import chat.rocket.android.shared.BasePresenter;
import chat.rocket.core.interactors.SessionInteractor; import chat.rocket.core.interactors.SessionInteractor;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
public class LoginPresenter extends BasePresenter<LoginContract.View> public class LoginPresenter extends BasePresenter<LoginContract.View>
implements LoginContract.Presenter { implements LoginContract.Presenter {
......
...@@ -28,7 +28,6 @@ import chat.rocket.core.models.Session; ...@@ -28,7 +28,6 @@ import chat.rocket.core.models.Session;
import chat.rocket.core.models.User; import chat.rocket.core.models.User;
import chat.rocket.core.repositories.PublicSettingRepository; import chat.rocket.core.repositories.PublicSettingRepository;
import chat.rocket.core.utils.Pair; import chat.rocket.core.utils.Pair;
import hu.akarnokd.rxjava.interop.RxJavaInterop;
import io.reactivex.Flowable; import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
...@@ -220,7 +219,7 @@ public class MainPresenter extends BasePresenter<MainContract.View> ...@@ -220,7 +219,7 @@ public class MainPresenter extends BasePresenter<MainContract.View>
} }
private void subscribeToNetworkChanges() { private void subscribeToNetworkChanges() {
Disposable disposable = RxJavaInterop.toV2Flowable(connectivityManagerApi.getServerConnectivityAsObservable()) Disposable disposable = connectivityManagerApi.getServerConnectivityAsObservable()
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe( .subscribe(
connectivity -> { connectivity -> {
......
package chat.rocket.android.api.rest; package chat.rocket.android.api.rest;
import java.io.IOException; import java.io.IOException;
import chat.rocket.android.helper.TextUtils; import chat.rocket.android.helper.TextUtils;
import okhttp3.Interceptor; import okhttp3.Interceptor;
import okhttp3.Request; import okhttp3.Request;
......
package chat.rocket.android.api.rest; package chat.rocket.android.api.rest;
import chat.rocket.android.RocketChatCache; import chat.rocket.android.RocketChatCache;
import chat.rocket.persistence.realm.models.ddp.RealmUser;
import chat.rocket.persistence.realm.models.internal.RealmSession;
import chat.rocket.persistence.realm.RealmHelper; import chat.rocket.persistence.realm.RealmHelper;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import chat.rocket.persistence.realm.models.ddp.RealmUser;
import chat.rocket.persistence.realm.models.internal.RealmSession;
public class DefaultCookieProvider implements CookieProvider { public class DefaultCookieProvider implements CookieProvider {
......
...@@ -2,12 +2,13 @@ package chat.rocket.android.api.rest; ...@@ -2,12 +2,13 @@ package chat.rocket.android.api.rest;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import io.reactivex.BackpressureStrategy;
import io.reactivex.Flowable;
import io.reactivex.FlowableEmitter;
import org.json.JSONObject; import org.json.JSONObject;
import java.io.IOException; import java.io.IOException;
import io.reactivex.BackpressureStrategy;
import io.reactivex.Flowable;
import io.reactivex.FlowableEmitter;
import okhttp3.Call; import okhttp3.Call;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import okhttp3.Request; import okhttp3.Request;
......
package chat.rocket.android.api.rest; package chat.rocket.android.api.rest;
import io.reactivex.Flowable;
import org.json.JSONObject; import org.json.JSONObject;
import io.reactivex.Flowable;
public interface ServerPolicyApi { public interface ServerPolicyApi {
String SECURE_PROTOCOL = "https://"; String SECURE_PROTOCOL = "https://";
......
...@@ -6,6 +6,7 @@ import android.support.annotation.Nullable; ...@@ -6,6 +6,7 @@ import android.support.annotation.Nullable;
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.trello.rxlifecycle2.components.support.RxFragment; import com.trello.rxlifecycle2.components.support.RxFragment;
/** /**
......
...@@ -7,6 +7,7 @@ import android.support.constraint.ConstraintLayout; ...@@ -7,6 +7,7 @@ import android.support.constraint.ConstraintLayout;
import android.support.design.widget.Snackbar; import android.support.design.widget.Snackbar;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import chat.rocket.android.BuildConfig; import chat.rocket.android.BuildConfig;
import chat.rocket.android.LaunchUtil; import chat.rocket.android.LaunchUtil;
import chat.rocket.android.R; import chat.rocket.android.R;
......
package chat.rocket.android.fragment.add_server; package chat.rocket.android.fragment.add_server;
import chat.rocket.android.BackgroundLooper; import chat.rocket.android.BackgroundLooper;
import chat.rocket.android.helper.Logger;
import chat.rocket.android.helper.OkHttpHelper;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import chat.rocket.android.RocketChatCache; import chat.rocket.android.RocketChatCache;
import chat.rocket.android.api.rest.DefaultServerPolicyApi; import chat.rocket.android.api.rest.DefaultServerPolicyApi;
import chat.rocket.android.api.rest.ServerPolicyApi; import chat.rocket.android.api.rest.ServerPolicyApi;
import chat.rocket.android.helper.Logger;
import chat.rocket.android.helper.OkHttpHelper;
import chat.rocket.android.helper.ServerPolicyApiValidationHelper; import chat.rocket.android.helper.ServerPolicyApiValidationHelper;
import chat.rocket.android.helper.ServerPolicyHelper; import chat.rocket.android.helper.ServerPolicyHelper;
import chat.rocket.android.service.ConnectivityManagerApi; import chat.rocket.android.service.ConnectivityManagerApi;
import chat.rocket.android.shared.BasePresenter; import chat.rocket.android.shared.BasePresenter;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
public class InputHostnamePresenter extends BasePresenter<InputHostnameContract.View> implements InputHostnameContract.Presenter { public class InputHostnamePresenter extends BasePresenter<InputHostnameContract.View> implements InputHostnameContract.Presenter {
private final RocketChatCache rocketChatCache; private final RocketChatCache rocketChatCache;
......
...@@ -10,11 +10,6 @@ import android.support.v4.util.Pair; ...@@ -10,11 +10,6 @@ import android.support.v4.util.Pair;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import chat.rocket.android.BackgroundLooper; import chat.rocket.android.BackgroundLooper;
import chat.rocket.android.R; import chat.rocket.android.R;
import chat.rocket.android.RocketChatCache; import chat.rocket.android.RocketChatCache;
...@@ -34,6 +29,10 @@ import chat.rocket.persistence.realm.repositories.RealmPublicSettingRepository; ...@@ -34,6 +29,10 @@ import chat.rocket.persistence.realm.repositories.RealmPublicSettingRepository;
import chat.rocket.persistence.realm.repositories.RealmRoomRepository; import chat.rocket.persistence.realm.repositories.RealmRoomRepository;
import chat.rocket.persistence.realm.repositories.RealmRoomRoleRepository; import chat.rocket.persistence.realm.repositories.RealmRoomRoleRepository;
import chat.rocket.persistence.realm.repositories.RealmUserRepository; import chat.rocket.persistence.realm.repositories.RealmUserRepository;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
public class MessageOptionsDialogFragment extends BottomSheetDialogFragment { public class MessageOptionsDialogFragment extends BottomSheetDialogFragment {
......
package chat.rocket.android.fragment.oauth; package chat.rocket.android.fragment.oauth;
import io.reactivex.android.schedulers.AndroidSchedulers;
import org.json.JSONObject; import org.json.JSONObject;
import chat.rocket.android.BackgroundLooper; import chat.rocket.android.BackgroundLooper;
...@@ -10,6 +9,7 @@ import chat.rocket.android.helper.Logger; ...@@ -10,6 +9,7 @@ import chat.rocket.android.helper.Logger;
import chat.rocket.android.helper.TextUtils; import chat.rocket.android.helper.TextUtils;
import chat.rocket.android.shared.BasePresenter; import chat.rocket.android.shared.BasePresenter;
import chat.rocket.core.repositories.LoginServiceConfigurationRepository; import chat.rocket.core.repositories.LoginServiceConfigurationRepository;
import io.reactivex.android.schedulers.AndroidSchedulers;
public class OAuthPresenter extends BasePresenter<OAuthContract.View> public class OAuthPresenter extends BasePresenter<OAuthContract.View>
implements OAuthContract.Presenter { implements OAuthContract.Presenter {
......
package chat.rocket.android.fragment.server_config; package chat.rocket.android.fragment.server_config;
import java.util.List; import java.util.List;
import chat.rocket.android.shared.BaseContract; import chat.rocket.android.shared.BaseContract;
import chat.rocket.core.models.LoginServiceConfiguration; import chat.rocket.core.models.LoginServiceConfiguration;
......
...@@ -11,6 +11,7 @@ import android.widget.TextView; ...@@ -11,6 +11,7 @@ import android.widget.TextView;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import chat.rocket.android.R; import chat.rocket.android.R;
import chat.rocket.android.api.MethodCallHelper; import chat.rocket.android.api.MethodCallHelper;
import chat.rocket.android.layouthelper.oauth.OAuthProviderInfo; import chat.rocket.android.layouthelper.oauth.OAuthProviderInfo;
......
...@@ -3,7 +3,6 @@ package chat.rocket.android.fragment.server_config; ...@@ -3,7 +3,6 @@ package chat.rocket.android.fragment.server_config;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.android.schedulers.AndroidSchedulers;
import bolts.Task; import bolts.Task;
import chat.rocket.android.BackgroundLooper; import chat.rocket.android.BackgroundLooper;
...@@ -16,6 +15,7 @@ import chat.rocket.core.PublicSettingsConstants; ...@@ -16,6 +15,7 @@ import chat.rocket.core.PublicSettingsConstants;
import chat.rocket.core.models.PublicSetting; import chat.rocket.core.models.PublicSetting;
import chat.rocket.core.repositories.LoginServiceConfigurationRepository; import chat.rocket.core.repositories.LoginServiceConfigurationRepository;
import chat.rocket.core.repositories.PublicSettingRepository; import chat.rocket.core.repositories.PublicSettingRepository;
import io.reactivex.android.schedulers.AndroidSchedulers;
public class LoginPresenter extends BasePresenter<LoginContract.View> public class LoginPresenter extends BasePresenter<LoginContract.View>
implements LoginContract.Presenter { implements LoginContract.Presenter {
......
...@@ -3,7 +3,6 @@ package chat.rocket.android.fragment.server_config; ...@@ -3,7 +3,6 @@ package chat.rocket.android.fragment.server_config;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.android.schedulers.AndroidSchedulers;
import chat.rocket.android.BackgroundLooper; import chat.rocket.android.BackgroundLooper;
import chat.rocket.android.api.MethodCallHelper; import chat.rocket.android.api.MethodCallHelper;
...@@ -12,6 +11,7 @@ import chat.rocket.android.helper.TextUtils; ...@@ -12,6 +11,7 @@ import chat.rocket.android.helper.TextUtils;
import chat.rocket.android.shared.BasePresenter; import chat.rocket.android.shared.BasePresenter;
import chat.rocket.core.interactors.SessionInteractor; import chat.rocket.core.interactors.SessionInteractor;
import chat.rocket.core.models.Session; import chat.rocket.core.models.Session;
import io.reactivex.android.schedulers.AndroidSchedulers;
public class RetryLoginPresenter extends BasePresenter<RetryLoginContract.View> public class RetryLoginPresenter extends BasePresenter<RetryLoginContract.View>
implements RetryLoginContract.Presenter { implements RetryLoginContract.Presenter {
......
...@@ -2,13 +2,14 @@ package chat.rocket.android.fragment.sidebar; ...@@ -2,13 +2,14 @@ package chat.rocket.android.fragment.sidebar;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import bolts.Continuation;
import chat.rocket.core.models.RoomSidebar;
import io.reactivex.Flowable;
import java.util.List; import java.util.List;
import bolts.Continuation;
import chat.rocket.android.shared.BaseContract; import chat.rocket.android.shared.BaseContract;
import chat.rocket.core.models.RoomSidebar;
import chat.rocket.core.models.Spotlight; import chat.rocket.core.models.Spotlight;
import chat.rocket.core.models.User; import chat.rocket.core.models.User;
import io.reactivex.Flowable;
public interface SidebarMainContract { public interface SidebarMainContract {
......
...@@ -5,11 +5,9 @@ import android.os.Bundle; ...@@ -5,11 +5,9 @@ import android.os.Bundle;
import android.view.View; import android.view.View;
import android.widget.AutoCompleteTextView; import android.widget.AutoCompleteTextView;
import android.widget.TextView; import android.widget.TextView;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import com.jakewharton.rxbinding2.widget.RxTextView; import com.jakewharton.rxbinding2.widget.RxTextView;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.realm.Case;
import bolts.Task; import bolts.Task;
import chat.rocket.android.BackgroundLooper; import chat.rocket.android.BackgroundLooper;
...@@ -20,11 +18,14 @@ import chat.rocket.android.helper.Logger; ...@@ -20,11 +18,14 @@ import chat.rocket.android.helper.Logger;
import chat.rocket.android.helper.TextUtils; import chat.rocket.android.helper.TextUtils;
import chat.rocket.android.layouthelper.sidebar.dialog.SuggestUserAdapter; import chat.rocket.android.layouthelper.sidebar.dialog.SuggestUserAdapter;
import chat.rocket.core.interactors.SessionInteractor; import chat.rocket.core.interactors.SessionInteractor;
import chat.rocket.persistence.realm.models.ddp.RealmUser;
import chat.rocket.persistence.realm.RealmAutoCompleteAdapter; import chat.rocket.persistence.realm.RealmAutoCompleteAdapter;
import chat.rocket.persistence.realm.models.ddp.RealmUser;
import chat.rocket.persistence.realm.repositories.RealmServerInfoRepository; import chat.rocket.persistence.realm.repositories.RealmServerInfoRepository;
import chat.rocket.persistence.realm.repositories.RealmSessionRepository; import chat.rocket.persistence.realm.repositories.RealmSessionRepository;
import chat.rocket.persistence.realm.repositories.RealmUserRepository; import chat.rocket.persistence.realm.repositories.RealmUserRepository;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.realm.Case;
/** /**
* add Direct RealmMessage. * add Direct RealmMessage.
......
package chat.rocket.android.helper; package chat.rocket.android.helper;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Flowable;
import io.reactivex.Single;
import chat.rocket.android.fragment.chatroom.RocketChatAbsoluteUrl; import chat.rocket.android.fragment.chatroom.RocketChatAbsoluteUrl;
import chat.rocket.core.interactors.SessionInteractor; import chat.rocket.core.interactors.SessionInteractor;
import chat.rocket.core.repositories.ServerInfoRepository; import chat.rocket.core.repositories.ServerInfoRepository;
import chat.rocket.core.repositories.UserRepository; import chat.rocket.core.repositories.UserRepository;
import io.reactivex.Flowable;
import io.reactivex.Single;
public class AbsoluteUrlHelper { public class AbsoluteUrlHelper {
......
...@@ -9,6 +9,7 @@ import java.util.Calendar; ...@@ -9,6 +9,7 @@ import java.util.Calendar;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import java.util.Locale; import java.util.Locale;
import java.util.TimeZone; import java.util.TimeZone;
import chat.rocket.android.log.RCLog; import chat.rocket.android.log.RCLog;
/** /**
......
...@@ -8,16 +8,18 @@ import android.os.ParcelFileDescriptor; ...@@ -8,16 +8,18 @@ import android.os.ParcelFileDescriptor;
import android.provider.OpenableColumns; import android.provider.OpenableColumns;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.webkit.MimeTypeMap; import android.webkit.MimeTypeMap;
import org.json.JSONObject; import org.json.JSONObject;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.util.UUID; import java.util.UUID;
import chat.rocket.android.log.RCLog; import chat.rocket.android.log.RCLog;
import chat.rocket.core.SyncState; import chat.rocket.core.SyncState;
import chat.rocket.persistence.realm.RealmHelper;
import chat.rocket.persistence.realm.models.ddp.RealmPublicSetting; import chat.rocket.persistence.realm.models.ddp.RealmPublicSetting;
import chat.rocket.persistence.realm.models.internal.FileUploading; import chat.rocket.persistence.realm.models.internal.FileUploading;
import chat.rocket.persistence.realm.RealmHelper;
/** /**
* utility class for uploading file. * utility class for uploading file.
......
package chat.rocket.android.helper; package chat.rocket.android.helper;
import io.realm.Realm;
import io.realm.RealmResults;
import java.util.List; import java.util.List;
import chat.rocket.persistence.realm.models.ddp.RealmPublicSetting;
import chat.rocket.core.PublicSettingsConstants; import chat.rocket.core.PublicSettingsConstants;
import chat.rocket.persistence.realm.models.ddp.RealmPublicSetting;
import io.realm.Realm;
import io.realm.RealmResults;
/** /**
* utility class for getting value comprehensibly from public settings list. * utility class for getting value comprehensibly from public settings list.
......
package chat.rocket.android.helper; package chat.rocket.android.helper;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import rx.Observable;
import rx.functions.Func1; import io.reactivex.Flowable;
import io.reactivex.functions.Function;
/** /**
* Rx operator and so on. * Rx operator and so on.
*/ */
public class RxHelper { public class RxHelper {
public static Func1<Observable<? extends Throwable>, Observable<?>> exponentialBackoff( public static Function<Flowable<? extends Throwable>, Flowable<?>> exponentialBackoff(
int maxRetryCount, long base, TimeUnit unit) { int maxRetryCount, long base, TimeUnit unit) {
// ref: https://github.com/ReactiveX/RxJava/blob/a8ba158839b67246a742b6f1531995ffd7545c08/src/main/java/io/reactivex/Observable.java#L9601 // ref: https://github.com/ReactiveX/RxJava/blob/a8ba158839b67246a742b6f1531995ffd7545c08/src/main/java/io/reactivex/Observable.java#L9601
return attempts -> attempts return attempts -> attempts
.zipWith(Observable.range(0, maxRetryCount), (error, retryCount) -> retryCount) .zipWith(Flowable.range(0, maxRetryCount), (error, retryCount) -> retryCount)
.flatMap(retryCount -> Observable.timer(base * (long) Math.pow(2, retryCount), unit)); .flatMap(retryCount -> Flowable.timer(base * (long) Math.pow(2, retryCount), unit));
} }
} }
...@@ -2,9 +2,8 @@ package chat.rocket.android.helper; ...@@ -2,9 +2,8 @@ package chat.rocket.android.helper;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import io.reactivex.Flowable;
import chat.rocket.android.api.rest.ServerPolicyApi; import chat.rocket.android.api.rest.ServerPolicyApi;
import io.reactivex.Flowable;
public class ServerPolicyApiValidationHelper { public class ServerPolicyApiValidationHelper {
......
...@@ -2,9 +2,10 @@ package chat.rocket.android.helper; ...@@ -2,9 +2,10 @@ package chat.rocket.android.helper;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import io.reactivex.Flowable;
import org.json.JSONObject; import org.json.JSONObject;
import io.reactivex.Flowable;
public class ServerPolicyHelper { public class ServerPolicyHelper {
private static final String DEFAULT_HOST = ".rocket.chat"; private static final String DEFAULT_HOST = ".rocket.chat";
......
...@@ -4,6 +4,7 @@ import android.support.annotation.Nullable; ...@@ -4,6 +4,7 @@ import android.support.annotation.Nullable;
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 chat.rocket.android.R; import chat.rocket.android.R;
import chat.rocket.android.helper.DateTime; import chat.rocket.android.helper.DateTime;
import chat.rocket.android.helper.TextUtils; import chat.rocket.android.helper.TextUtils;
......
...@@ -7,6 +7,7 @@ import android.view.View; ...@@ -7,6 +7,7 @@ import android.view.View;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import chat.rocket.android.R; import chat.rocket.android.R;
import chat.rocket.android.helper.TextUtils; import chat.rocket.android.helper.TextUtils;
import chat.rocket.android.layouthelper.ExtModelListAdapter; import chat.rocket.android.layouthelper.ExtModelListAdapter;
......
package chat.rocket.android.layouthelper.chatroom; package chat.rocket.android.layouthelper.chatroom;
import android.view.View; import android.view.View;
import chat.rocket.android.R; import chat.rocket.android.R;
import chat.rocket.android.renderer.MessageRenderer; import chat.rocket.android.renderer.MessageRenderer;
import chat.rocket.android.widget.AbsoluteUrl; import chat.rocket.android.widget.AbsoluteUrl;
......
...@@ -7,13 +7,14 @@ import android.view.View; ...@@ -7,13 +7,14 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import java.util.List; import java.util.List;
import chat.rocket.android.R; import chat.rocket.android.R;
import chat.rocket.android.helper.TextUtils; import chat.rocket.android.helper.TextUtils;
import chat.rocket.android.renderer.UserRenderer;
import chat.rocket.android.widget.AbsoluteUrl; import chat.rocket.android.widget.AbsoluteUrl;
import chat.rocket.core.models.User; import chat.rocket.core.models.User;
import chat.rocket.persistence.realm.models.ddp.RealmUser;
import chat.rocket.persistence.realm.RealmHelper; import chat.rocket.persistence.realm.RealmHelper;
import chat.rocket.android.renderer.UserRenderer; import chat.rocket.persistence.realm.models.ddp.RealmUser;
/** /**
* RecyclerView adapter for UsersOfRooms. * RecyclerView adapter for UsersOfRooms.
......
...@@ -2,9 +2,10 @@ package chat.rocket.android.layouthelper.chatroom.roomlist; ...@@ -2,9 +2,10 @@ package chat.rocket.android.layouthelper.chatroom.roomlist;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import chat.rocket.core.models.RoomSidebar;
import java.util.List; import java.util.List;
import chat.rocket.core.models.Room; import chat.rocket.core.models.Room;
import chat.rocket.core.models.RoomSidebar;
public class ChannelRoomListHeader implements RoomListHeader { public class ChannelRoomListHeader implements RoomListHeader {
......
...@@ -2,9 +2,10 @@ package chat.rocket.android.layouthelper.chatroom.roomlist; ...@@ -2,9 +2,10 @@ package chat.rocket.android.layouthelper.chatroom.roomlist;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import chat.rocket.core.models.RoomSidebar;
import java.util.List; import java.util.List;
import chat.rocket.core.models.Room; import chat.rocket.core.models.Room;
import chat.rocket.core.models.RoomSidebar;
public class DirectMessageRoomListHeader implements RoomListHeader { public class DirectMessageRoomListHeader implements RoomListHeader {
......
...@@ -2,9 +2,10 @@ package chat.rocket.android.layouthelper.chatroom.roomlist; ...@@ -2,9 +2,10 @@ package chat.rocket.android.layouthelper.chatroom.roomlist;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import chat.rocket.core.models.RoomSidebar;
import java.util.List; import java.util.List;
import chat.rocket.core.models.RoomSidebar;
public class FavoriteRoomListHeader implements RoomListHeader { public class FavoriteRoomListHeader implements RoomListHeader {
private final String title; private final String title;
......
...@@ -5,14 +5,15 @@ import android.support.v7.widget.RecyclerView; ...@@ -5,14 +5,15 @@ import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
import chat.rocket.core.models.RoomSidebar;
import chat.rocket.core.models.Spotlight;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import chat.rocket.android.R; import chat.rocket.android.R;
import chat.rocket.android.widget.internal.RoomListItemView; import chat.rocket.android.widget.internal.RoomListItemView;
import chat.rocket.core.models.RoomSidebar;
import chat.rocket.core.models.Spotlight;
public class RoomListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { public class RoomListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
......
...@@ -2,9 +2,10 @@ package chat.rocket.android.layouthelper.chatroom.roomlist; ...@@ -2,9 +2,10 @@ package chat.rocket.android.layouthelper.chatroom.roomlist;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import chat.rocket.core.models.RoomSidebar;
import java.util.List; import java.util.List;
import chat.rocket.core.models.RoomSidebar;
public interface RoomListHeader { public interface RoomListHeader {
String getTitle(); String getTitle();
......
...@@ -2,9 +2,10 @@ package chat.rocket.android.layouthelper.chatroom.roomlist; ...@@ -2,9 +2,10 @@ package chat.rocket.android.layouthelper.chatroom.roomlist;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import chat.rocket.core.models.RoomSidebar;
import java.util.List; import java.util.List;
import chat.rocket.core.models.RoomSidebar;
public class UnreadRoomListHeader implements RoomListHeader { public class UnreadRoomListHeader implements RoomListHeader {
private final String title; private final String title;
......
...@@ -3,6 +3,7 @@ package chat.rocket.android.layouthelper.oauth; ...@@ -3,6 +3,7 @@ package chat.rocket.android.layouthelper.oauth;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import chat.rocket.android.R; import chat.rocket.android.R;
import chat.rocket.android.fragment.oauth.AbstractOAuthFragment; import chat.rocket.android.fragment.oauth.AbstractOAuthFragment;
import chat.rocket.android.fragment.oauth.FacebookOAuthFragment; import chat.rocket.android.fragment.oauth.FacebookOAuthFragment;
......
...@@ -5,11 +5,12 @@ import android.view.View; ...@@ -5,11 +5,12 @@ import android.view.View;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import chat.rocket.android.R; import chat.rocket.android.R;
import chat.rocket.android.renderer.UserRenderer;
import chat.rocket.android.widget.AbsoluteUrl; import chat.rocket.android.widget.AbsoluteUrl;
import chat.rocket.persistence.realm.models.ddp.RealmUser;
import chat.rocket.persistence.realm.RealmAutoCompleteAdapter; import chat.rocket.persistence.realm.RealmAutoCompleteAdapter;
import chat.rocket.android.renderer.UserRenderer; import chat.rocket.persistence.realm.models.ddp.RealmUser;
/** /**
* adapter to suggest user names. * adapter to suggest user names.
......
...@@ -5,8 +5,8 @@ import android.content.BroadcastReceiver; ...@@ -5,8 +5,8 @@ import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.support.v4.app.RemoteInput; import android.support.v4.app.RemoteInput;
import android.util.Log;
import chat.rocket.android.push.gcm.GCMIntentService; import chat.rocket.android.push.gcm.GCMIntentService;
......
...@@ -3,13 +3,14 @@ package chat.rocket.android.push.gcm; ...@@ -3,13 +3,14 @@ package chat.rocket.android.push.gcm;
import com.google.android.gms.iid.InstanceIDListenerService; import com.google.android.gms.iid.InstanceIDListenerService;
import java.util.List; import java.util.List;
import chat.rocket.android.helper.GcmPushSettingHelper; import chat.rocket.android.helper.GcmPushSettingHelper;
import chat.rocket.persistence.realm.models.ddp.RealmPublicSetting;
import chat.rocket.persistence.realm.models.internal.GcmPushRegistration;
import chat.rocket.persistence.realm.RealmHelper;
import chat.rocket.persistence.realm.RealmStore;
import chat.rocket.android.service.ConnectivityManager; import chat.rocket.android.service.ConnectivityManager;
import chat.rocket.core.models.ServerInfo; import chat.rocket.core.models.ServerInfo;
import chat.rocket.persistence.realm.RealmHelper;
import chat.rocket.persistence.realm.RealmStore;
import chat.rocket.persistence.realm.models.ddp.RealmPublicSetting;
import chat.rocket.persistence.realm.models.internal.GcmPushRegistration;
public class GcmInstanceIDListenerService extends InstanceIDListenerService { public class GcmInstanceIDListenerService extends InstanceIDListenerService {
......
...@@ -4,9 +4,10 @@ import android.support.annotation.NonNull; ...@@ -4,9 +4,10 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import java.util.List; import java.util.List;
import chat.rocket.core.models.ServerInfo; import chat.rocket.core.models.ServerInfo;
import rx.Observable; import io.reactivex.Observable;
import rx.Single; import io.reactivex.Single;
/** /**
* interfaces used for Activity/Fragment and other UI-related logic. * interfaces used for Activity/Fragment and other UI-related logic.
......
package chat.rocket.android.service; package chat.rocket.android.service;
import java.util.List; import java.util.List;
import chat.rocket.core.models.ServerInfo; import chat.rocket.core.models.ServerInfo;
/** /**
......
package chat.rocket.android.service; package chat.rocket.android.service;
import rx.Single; import io.reactivex.Single;
public interface ConnectivityServiceInterface { public interface ConnectivityServiceInterface {
Single<Boolean> ensureConnectionToServer(String hostname); Single<Boolean> ensureConnectionToServer(String hostname);
......
...@@ -20,10 +20,10 @@ import chat.rocket.android_ddp.DDPClient; ...@@ -20,10 +20,10 @@ import chat.rocket.android_ddp.DDPClient;
import chat.rocket.core.models.ServerInfo; import chat.rocket.core.models.ServerInfo;
import chat.rocket.persistence.realm.models.RealmBasedServerInfo; import chat.rocket.persistence.realm.models.RealmBasedServerInfo;
import hugo.weaving.DebugLog; import hugo.weaving.DebugLog;
import rx.Observable; import io.reactivex.Observable;
import rx.Single; import io.reactivex.Single;
import rx.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import rx.subjects.PublishSubject; import io.reactivex.subjects.PublishSubject;
/** /**
* Connectivity management implementation. * Connectivity management implementation.
...@@ -155,7 +155,7 @@ import rx.subjects.PublishSubject; ...@@ -155,7 +155,7 @@ import rx.subjects.PublishSubject;
@Override @Override
public Observable<ServerConnectivity> getServerConnectivityAsObservable() { public Observable<ServerConnectivity> getServerConnectivityAsObservable() {
return Observable.concat(Observable.from(getCurrentConnectivityList()), connectivitySubject); return Observable.concat(Observable.fromIterable(getCurrentConnectivityList()), connectivitySubject);
} }
@Override @Override
...@@ -176,11 +176,6 @@ import rx.subjects.PublishSubject; ...@@ -176,11 +176,6 @@ import rx.subjects.PublishSubject;
.flatMap(_val -> connectToServerIfNeeded(hostname, forceConnect)); .flatMap(_val -> connectToServerIfNeeded(hostname, forceConnect));
} }
// if (connectivity == ServerConnectivity.STATE_CONNECTING) {
// return waitForConnected(hostname)
// .doOnError(error -> notifyConnectionLost(hostname, REASON_NETWORK_ERROR));
// }
if (connectivity == ServerConnectivity.STATE_DISCONNECTED) { if (connectivity == ServerConnectivity.STATE_DISCONNECTED) {
notifyConnecting(hostname); notifyConnecting(hostname);
} }
...@@ -219,7 +214,7 @@ import rx.subjects.PublishSubject; ...@@ -219,7 +214,7 @@ import rx.subjects.PublishSubject;
.filter(state -> .filter(state ->
state == ServerConnectivity.STATE_CONNECTED state == ServerConnectivity.STATE_CONNECTED
|| state == ServerConnectivity.STATE_DISCONNECTED) || state == ServerConnectivity.STATE_DISCONNECTED)
.first() .firstElement()
.toSingle() .toSingle()
.flatMap(state -> .flatMap(state ->
state == ServerConnectivity.STATE_CONNECTED state == ServerConnectivity.STATE_CONNECTED
...@@ -233,7 +228,7 @@ import rx.subjects.PublishSubject; ...@@ -233,7 +228,7 @@ import rx.subjects.PublishSubject;
.filter(serverConnectivity -> hostname.equals(serverConnectivity.hostname)) .filter(serverConnectivity -> hostname.equals(serverConnectivity.hostname))
.map(serverConnectivity -> serverConnectivity.state) .map(serverConnectivity -> serverConnectivity.state)
.filter(state -> state == ServerConnectivity.STATE_DISCONNECTED) .filter(state -> state == ServerConnectivity.STATE_DISCONNECTED)
.first() .firstElement()
.toSingle() .toSingle()
.map(state -> true); .map(state -> true);
} }
......
...@@ -15,8 +15,8 @@ import chat.rocket.android.helper.Logger; ...@@ -15,8 +15,8 @@ import chat.rocket.android.helper.Logger;
import chat.rocket.android.log.RCLog; import chat.rocket.android.log.RCLog;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import hugo.weaving.DebugLog; import hugo.weaving.DebugLog;
import rx.Observable; import io.reactivex.Observable;
import rx.Single; import io.reactivex.Single;
/** /**
* Background service for Rocket.Chat.Application class. * Background service for Rocket.Chat.Application class.
...@@ -72,7 +72,6 @@ public class RocketChatService extends Service implements ConnectivityServiceInt ...@@ -72,7 +72,6 @@ public class RocketChatService extends Service implements ConnectivityServiceInt
.doOnError(err -> { .doOnError(err -> {
err.printStackTrace(); err.printStackTrace();
currentWebSocketThread = null; currentWebSocketThread = null;
// connectivityManager.notifyConnectionLost(hostname, ConnectivityManagerInternal.REASON_NETWORK_ERROR);
}) })
.flatMap(webSocketThreads -> webSocketThreads.keepAlive()); .flatMap(webSocketThreads -> webSocketThreads.keepAlive());
} }
...@@ -93,7 +92,7 @@ public class RocketChatService extends Service implements ConnectivityServiceInt ...@@ -93,7 +92,7 @@ public class RocketChatService extends Service implements ConnectivityServiceInt
RealmStore.sStore.remove(hostname); RealmStore.sStore.remove(hostname);
}); });
} else { } else {
return Observable.timer(1, TimeUnit.SECONDS).toSingle() return Observable.timer(1, TimeUnit.SECONDS).singleOrError()
.flatMap(_val -> disconnectFromServer(hostname)); .flatMap(_val -> disconnectFromServer(hostname));
} }
}); });
......
...@@ -41,11 +41,10 @@ import chat.rocket.persistence.realm.RealmHelper; ...@@ -41,11 +41,10 @@ import chat.rocket.persistence.realm.RealmHelper;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import chat.rocket.persistence.realm.models.internal.RealmSession; import chat.rocket.persistence.realm.models.internal.RealmSession;
import hugo.weaving.DebugLog; import hugo.weaving.DebugLog;
import io.reactivex.Completable;
import io.reactivex.Flowable; import io.reactivex.Flowable;
import io.reactivex.Single;
import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.CompositeDisposable;
import rx.Completable;
import rx.Single;
import rx.subscriptions.CompositeSubscription;
/** /**
* Thread for handling WebSocket connection. * Thread for handling WebSocket connection.
...@@ -74,7 +73,7 @@ public class RocketChatWebSocketThread extends HandlerThread { ...@@ -74,7 +73,7 @@ public class RocketChatWebSocketThread extends HandlerThread {
private final ConnectivityManagerInternal connectivityManager; private final ConnectivityManagerInternal connectivityManager;
private final ArrayList<Registrable> listeners = new ArrayList<>(); private final ArrayList<Registrable> listeners = new ArrayList<>();
private final CompositeDisposable hearbeatDisposable = new CompositeDisposable(); private final CompositeDisposable hearbeatDisposable = new CompositeDisposable();
private final CompositeSubscription reconnectSubscription = new CompositeSubscription(); private final CompositeDisposable reconnectSubscription = new CompositeDisposable();
private boolean listenersRegistered; private boolean listenersRegistered;
private static class KeepAliveTimer { private static class KeepAliveTimer {
...@@ -110,13 +109,14 @@ public class RocketChatWebSocketThread extends HandlerThread { ...@@ -110,13 +109,14 @@ public class RocketChatWebSocketThread extends HandlerThread {
*/ */
@DebugLog @DebugLog
public static Single<RocketChatWebSocketThread> getStarted(Context appContext, String hostname) { public static Single<RocketChatWebSocketThread> getStarted(Context appContext, String hostname) {
return Single.<RocketChatWebSocketThread>fromEmitter(objectSingleEmitter -> { return Single.<RocketChatWebSocketThread>fromPublisher(objectSingleEmitter -> {
new RocketChatWebSocketThread(appContext, hostname) { new RocketChatWebSocketThread(appContext, hostname) {
@Override @Override
protected void onLooperPrepared() { protected void onLooperPrepared() {
try { try {
super.onLooperPrepared(); super.onLooperPrepared();
objectSingleEmitter.onSuccess(this); objectSingleEmitter.onNext(this);
objectSingleEmitter.onComplete();
} catch (Exception exception) { } catch (Exception exception) {
objectSingleEmitter.onError(exception); objectSingleEmitter.onError(exception);
} }
...@@ -151,14 +151,15 @@ public class RocketChatWebSocketThread extends HandlerThread { ...@@ -151,14 +151,15 @@ public class RocketChatWebSocketThread extends HandlerThread {
@DebugLog @DebugLog
public Single<Boolean> terminate() { public Single<Boolean> terminate() {
if (isAlive()) { if (isAlive()) {
return Single.fromEmitter(emitter -> { return Single.fromPublisher(emitter -> {
new Handler(getLooper()).post(() -> { new Handler(getLooper()).post(() -> {
RCLog.d("thread %s: terminated()", Thread.currentThread().getId()); RCLog.d("thread %s: terminated()", Thread.currentThread().getId());
unregisterListenersAndClose(); unregisterListenersAndClose();
connectivityManager.notifyConnectionLost(hostname, connectivityManager.notifyConnectionLost(hostname,
DDPClient.REASON_CLOSED_BY_USER); DDPClient.REASON_CLOSED_BY_USER);
RocketChatWebSocketThread.super.quit(); RocketChatWebSocketThread.super.quit();
emitter.onSuccess(true); emitter.onNext(true);
emitter.onComplete();
}); });
}); });
} else { } else {
...@@ -198,7 +199,7 @@ public class RocketChatWebSocketThread extends HandlerThread { ...@@ -198,7 +199,7 @@ public class RocketChatWebSocketThread extends HandlerThread {
} }
keepAliveTimer.update(); keepAliveTimer.update();
return Single.fromEmitter(emitter -> { return Single.fromPublisher(emitter -> {
new Thread() { new Thread() {
@Override @Override
public void run() { public void run() {
...@@ -211,7 +212,8 @@ public class RocketChatWebSocketThread extends HandlerThread { ...@@ -211,7 +212,8 @@ public class RocketChatWebSocketThread extends HandlerThread {
emitter.onError(error); emitter.onError(error);
} else { } else {
keepAliveTimer.update(); keepAliveTimer.update();
emitter.onSuccess(true); emitter.onNext(true);
emitter.onComplete();
} }
return null; return null;
}); });
...@@ -251,10 +253,11 @@ public class RocketChatWebSocketThread extends HandlerThread { ...@@ -251,10 +253,11 @@ public class RocketChatWebSocketThread extends HandlerThread {
private Single<Boolean> connectDDPClient() { private Single<Boolean> connectDDPClient() {
return prepareDDPClient() return prepareDDPClient()
.flatMap(_val -> Single.fromEmitter(emitter -> { .flatMap(_val -> Single.fromPublisher(emitter -> {
ServerInfo info = connectivityManager.getServerInfoForHost(hostname); ServerInfo info = connectivityManager.getServerInfoForHost(hostname);
if (info == null) { if (info == null) {
emitter.onSuccess(false); emitter.onNext(false);
emitter.onComplete();
return; return;
} }
RCLog.d("DDPClient#connect"); RCLog.d("DDPClient#connect");
...@@ -292,7 +295,8 @@ public class RocketChatWebSocketThread extends HandlerThread { ...@@ -292,7 +295,8 @@ public class RocketChatWebSocketThread extends HandlerThread {
if (task.isFaulted()) { if (task.isFaulted()) {
emitter.onError(task.getError()); emitter.onError(task.getError());
} else { } else {
emitter.onSuccess(true); emitter.onNext(true);
emitter.onComplete();
} }
return null; return null;
}); });
...@@ -301,13 +305,11 @@ public class RocketChatWebSocketThread extends HandlerThread { ...@@ -301,13 +305,11 @@ public class RocketChatWebSocketThread extends HandlerThread {
private void reconnect() { private void reconnect() {
// if we are already trying to reconnect then return. // if we are already trying to reconnect then return.
if (reconnectSubscription.hasSubscriptions()) { if (reconnectSubscription.size() > 0) {
return; return;
} }
forceInvalidateTokens(); forceInvalidateTokens();
connectivityManager.notifyConnecting(hostname); connectivityManager.notifyConnecting(hostname);
// Needed to use subscriptions because of legacy code.
// TODO: Should update to RxJava 2
reconnectSubscription.add( reconnectSubscription.add(
connectWithExponentialBackoff() connectWithExponentialBackoff()
.subscribe( .subscribe(
...@@ -326,9 +328,9 @@ public class RocketChatWebSocketThread extends HandlerThread { ...@@ -326,9 +328,9 @@ public class RocketChatWebSocketThread extends HandlerThread {
); );
} }
private void logErrorAndUnsubscribe(CompositeSubscription subscriptions, Throwable err) { private void logErrorAndUnsubscribe(CompositeDisposable disposables, Throwable err) {
RCLog.e(err); RCLog.e(err);
subscriptions.clear(); disposables.clear();
} }
private Single<Boolean> connectWithExponentialBackoff() { private Single<Boolean> connectWithExponentialBackoff() {
...@@ -338,11 +340,12 @@ public class RocketChatWebSocketThread extends HandlerThread { ...@@ -338,11 +340,12 @@ public class RocketChatWebSocketThread extends HandlerThread {
@DebugLog @DebugLog
private Single<Boolean> connect() { private Single<Boolean> connect() {
return connectDDPClient() return connectDDPClient()
.flatMap(_val -> Single.fromEmitter(emitter -> { .flatMap(_val -> Single.fromPublisher(emitter -> {
fetchPublicSettings(); fetchPublicSettings();
fetchPermissions(); fetchPermissions();
registerListeners(); registerListeners();
emitter.onSuccess(true); emitter.onNext(true);
emitter.onComplete();
})); }));
} }
...@@ -376,9 +379,9 @@ public class RocketChatWebSocketThread extends HandlerThread { ...@@ -376,9 +379,9 @@ public class RocketChatWebSocketThread extends HandlerThread {
if (sessions != null && sessions.size() > 0) { if (sessions != null && sessions.size() > 0) {
// if we have a session try to resume it. At this point we're probably recovering from // if we have a session try to resume it. At this point we're probably recovering from
// a disconnection state // a disconnection state
final CompositeSubscription subscriptions = new CompositeSubscription(); final CompositeDisposable disposables = new CompositeDisposable();
MethodCallHelper methodCall = new MethodCallHelper(realmHelper); MethodCallHelper methodCall = new MethodCallHelper(realmHelper);
subscriptions.add( disposables.add(
Completable.defer(() -> { Completable.defer(() -> {
Task<Void> result = methodCall.loginWithToken(sessions.get(0).getToken()); Task<Void> result = methodCall.loginWithToken(sessions.get(0).getToken());
if (result.isFaulted()) { if (result.isFaulted()) {
...@@ -390,9 +393,9 @@ public class RocketChatWebSocketThread extends HandlerThread { ...@@ -390,9 +393,9 @@ public class RocketChatWebSocketThread extends HandlerThread {
.subscribe( .subscribe(
() -> { () -> {
createObserversAndRegister(); createObserversAndRegister();
subscriptions.clear(); disposables.clear();
}, },
error -> logErrorAndUnsubscribe(subscriptions, error) error -> logErrorAndUnsubscribe(disposables, error)
) )
); );
} else { } else {
......
...@@ -12,11 +12,12 @@ buildscript { ...@@ -12,11 +12,12 @@ buildscript {
google() google()
jcenter() jcenter()
maven { url 'https://maven.fabric.io/public' } maven { url 'https://maven.fabric.io/public' }
maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local' }
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.0.0' classpath 'com.android.tools.build:gradle:3.0.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.51" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.51"
classpath 'io.realm:realm-gradle-plugin:3.0.0' classpath 'io.realm:realm-gradle-plugin:4.2.0-SNAPSHOT'
classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1' classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1'
classpath 'com.google.gms:google-services:3.0.0' classpath 'com.google.gms:google-services:3.0.0'
classpath 'com.github.triplet.gradle:play-publisher:1.1.5' classpath 'com.github.triplet.gradle:play-publisher:1.1.5'
...@@ -35,6 +36,7 @@ allprojects { ...@@ -35,6 +36,7 @@ allprojects {
maven { url 'http://dl.bintray.com/amulyakhare/maven' } //for TextDrawable. maven { url 'http://dl.bintray.com/amulyakhare/maven' } //for TextDrawable.
maven { url "https://clojars.org/repo/" } //for icepick. maven { url "https://clojars.org/repo/" } //for icepick.
maven { url 'https://jitpack.io' } //for widget-fontawesome. maven { url 'https://jitpack.io' } //for widget-fontawesome.
maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local' } //for widget-fontawesome.
} }
} }
......
...@@ -37,7 +37,6 @@ dependencies { ...@@ -37,7 +37,6 @@ dependencies {
compile supportDependencies.annotation compile supportDependencies.annotation
compile supportDependencies.designSupportLibrary compile supportDependencies.designSupportLibrary
compile extraDependencies.rxAndroid compile extraDependencies.rxAndroid
compile 'com.github.akarnokd:rxjava2-interop:0.10.2'
provided extraDependencies.optional provided extraDependencies.optional
testCompile "org.jetbrains.kotlin:kotlin-test:$rootProject.ext.kotlinVersion" testCompile "org.jetbrains.kotlin:kotlin-test:$rootProject.ext.kotlinVersion"
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$rootProject.ext.kotlinVersion" testCompile "org.jetbrains.kotlin:kotlin-test-junit:$rootProject.ext.kotlinVersion"
......
package chat.rocket.persistence.realm; package chat.rocket.persistence.realm;
import io.realm.DynamicRealm;
import io.realm.FieldAttribute;
import io.realm.RealmMigration;
import io.realm.RealmObjectSchema;
import io.realm.RealmSchema;
import chat.rocket.persistence.realm.models.ddp.RealmMessage; import chat.rocket.persistence.realm.models.ddp.RealmMessage;
import chat.rocket.persistence.realm.models.ddp.RealmPermission; import chat.rocket.persistence.realm.models.ddp.RealmPermission;
import chat.rocket.persistence.realm.models.ddp.RealmRole; import chat.rocket.persistence.realm.models.ddp.RealmRole;
import chat.rocket.persistence.realm.models.ddp.RealmRoomRole; import chat.rocket.persistence.realm.models.ddp.RealmRoomRole;
import chat.rocket.persistence.realm.models.ddp.RealmSpotlightRoom; import chat.rocket.persistence.realm.models.ddp.RealmSpotlightRoom;
import chat.rocket.persistence.realm.models.ddp.RealmSpotlightUser; import chat.rocket.persistence.realm.models.ddp.RealmSpotlightUser;
import io.realm.DynamicRealm;
import io.realm.FieldAttribute;
import io.realm.RealmMigration;
import io.realm.RealmObjectSchema;
import io.realm.RealmSchema;
public class Migration implements RealmMigration { public class Migration implements RealmMigration {
@Override @Override
......
...@@ -8,13 +8,14 @@ import android.view.ViewGroup; ...@@ -8,13 +8,14 @@ import android.view.ViewGroup;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.Filter; import android.widget.Filter;
import android.widget.TextView; import android.widget.TextView;
import io.realm.Realm;
import io.realm.RealmObject;
import io.realm.RealmResults;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import io.realm.Realm;
import io.realm.RealmObject;
import io.realm.RealmResults;
/** /**
* ListAdapter for AutoCompleteTextView. * ListAdapter for AutoCompleteTextView.
*/ */
......
...@@ -3,18 +3,20 @@ package chat.rocket.persistence.realm; ...@@ -3,18 +3,20 @@ package chat.rocket.persistence.realm;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.os.Looper; import android.os.Looper;
import io.realm.Realm;
import io.realm.RealmConfiguration;
import io.realm.RealmObject;
import io.realm.RealmQuery;
import io.realm.RealmResults;
import org.json.JSONException; import org.json.JSONException;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import bolts.Task; import bolts.Task;
import bolts.TaskCompletionSource; import bolts.TaskCompletionSource;
import chat.rocket.android.log.RCLog; import chat.rocket.android.log.RCLog;
import io.realm.Realm;
import io.realm.RealmConfiguration;
import io.realm.RealmObject;
import io.realm.RealmQuery;
import io.realm.RealmResults;
@SuppressLint("NewApi") @SuppressLint("NewApi")
public class RealmHelper { public class RealmHelper {
......
package chat.rocket.persistence.realm; package chat.rocket.persistence.realm;
import java.util.List;
import io.realm.Realm; import io.realm.Realm;
import io.realm.RealmChangeListener; import io.realm.RealmChangeListener;
import io.realm.RealmObject; import io.realm.RealmObject;
import io.realm.RealmResults; import io.realm.RealmResults;
import java.util.List;
public class RealmListObserver<T extends RealmObject> extends AbstractRealmResultsObserver<T> { public class RealmListObserver<T extends RealmObject> extends AbstractRealmResultsObserver<T> {
private final Query<T> query; private final Query<T> query;
private OnUpdateListener<T> onUpdateListener; private OnUpdateListener<T> onUpdateListener;
......
package chat.rocket.persistence.realm; package chat.rocket.persistence.realm;
import io.realm.Realm;
import io.realm.RealmConfiguration;
import java.util.HashMap; import java.util.HashMap;
import chat.rocket.persistence.realm.modules.RocketChatLibraryModule; import chat.rocket.persistence.realm.modules.RocketChatLibraryModule;
import chat.rocket.persistence.realm.modules.RocketChatServerModule; import chat.rocket.persistence.realm.modules.RocketChatServerModule;
import io.realm.Realm;
import io.realm.RealmConfiguration;
public class RealmStore { public class RealmStore {
public static HashMap<String, RealmConfiguration> sStore = new HashMap<>(); public static HashMap<String, RealmConfiguration> sStore = new HashMap<>();
......
package chat.rocket.persistence.realm; package chat.rocket.persistence.realm;
import android.content.Context; import android.content.Context;
import io.realm.Realm; import io.realm.Realm;
import io.realm.RealmConfiguration; import io.realm.RealmConfiguration;
......
...@@ -2,17 +2,18 @@ package chat.rocket.persistence.realm.models; ...@@ -2,17 +2,18 @@ package chat.rocket.persistence.realm.models;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.text.TextUtils; import android.text.TextUtils;
import io.realm.Realm;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import chat.rocket.core.models.ServerInfo; import chat.rocket.core.models.ServerInfo;
import chat.rocket.persistence.realm.RealmHelper; import chat.rocket.persistence.realm.RealmHelper;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import io.realm.Realm;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
/** /**
* Backend implementation to store ServerInfo. * Backend implementation to store ServerInfo.
...@@ -41,7 +42,7 @@ public class RealmBasedServerInfo extends RealmObject { ...@@ -41,7 +42,7 @@ public class RealmBasedServerInfo extends RealmObject {
.build(); .build();
} }
public static Realm getRealm() { public static Realm getServerRealm() {
return RealmStore.getRealm(DB_NAME); return RealmStore.getRealm(DB_NAME);
} }
......
package chat.rocket.persistence.realm.models.ddp; package chat.rocket.persistence.realm.models.ddp;
import chat.rocket.core.models.Email;
import io.realm.RealmObject; import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey; import io.realm.annotations.PrimaryKey;
import chat.rocket.core.models.Email;
/** /**
* Login-RealmUser's email. * Login-RealmUser's email.
*/ */
......
package chat.rocket.persistence.realm.models.ddp; package chat.rocket.persistence.realm.models.ddp;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
...@@ -10,6 +8,7 @@ import java.util.ArrayList; ...@@ -10,6 +8,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import chat.rocket.core.JsonConstants; import chat.rocket.core.JsonConstants;
import chat.rocket.core.SyncState; import chat.rocket.core.SyncState;
import chat.rocket.core.models.Attachment; import chat.rocket.core.models.Attachment;
...@@ -21,6 +20,8 @@ import chat.rocket.core.models.WebContent; ...@@ -21,6 +20,8 @@ import chat.rocket.core.models.WebContent;
import chat.rocket.core.models.WebContentHeaders; import chat.rocket.core.models.WebContentHeaders;
import chat.rocket.core.models.WebContentMeta; import chat.rocket.core.models.WebContentMeta;
import chat.rocket.core.models.WebContentParsedUrl; import chat.rocket.core.models.WebContentParsedUrl;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
/** /**
* RealmMessage. * RealmMessage.
......
package chat.rocket.persistence.realm.models.ddp; package chat.rocket.persistence.realm.models.ddp;
import chat.rocket.core.models.LoginServiceConfiguration;
import io.realm.RealmObject; import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey; import io.realm.annotations.PrimaryKey;
import chat.rocket.core.models.LoginServiceConfiguration;
/** /**
* subscription model for "meteor_accounts_loginServiceConfiguration". * subscription model for "meteor_accounts_loginServiceConfiguration".
*/ */
......
package chat.rocket.persistence.realm.models.ddp; package chat.rocket.persistence.realm.models.ddp;
import io.realm.RealmList;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import chat.rocket.core.models.Permission; import chat.rocket.core.models.Permission;
import chat.rocket.core.models.Role; import chat.rocket.core.models.Role;
import io.realm.RealmList;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
public class RealmPermission extends RealmObject { public class RealmPermission extends RealmObject {
......
package chat.rocket.persistence.realm.models.ddp; package chat.rocket.persistence.realm.models.ddp;
import chat.rocket.core.models.Preferences;
import io.realm.RealmObject; import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey; import io.realm.annotations.PrimaryKey;
import chat.rocket.core.models.Preferences;
@SuppressWarnings({"PMD.ShortVariable"}) @SuppressWarnings({"PMD.ShortVariable"})
public class RealmPreferences extends RealmObject { public class RealmPreferences extends RealmObject {
......
package chat.rocket.persistence.realm.models.ddp; package chat.rocket.persistence.realm.models.ddp;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import chat.rocket.core.JsonConstants; import chat.rocket.core.JsonConstants;
import chat.rocket.core.models.PublicSetting; import chat.rocket.core.models.PublicSetting;
import chat.rocket.persistence.realm.RealmHelper; import chat.rocket.persistence.realm.RealmHelper;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
/** /**
* public setting model. * public setting model.
......
package chat.rocket.persistence.realm.models.ddp; package chat.rocket.persistence.realm.models.ddp;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import chat.rocket.core.models.Role; import chat.rocket.core.models.Role;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
public class RealmRole extends RealmObject { public class RealmRole extends RealmObject {
......
package chat.rocket.persistence.realm.models.ddp; package chat.rocket.persistence.realm.models.ddp;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import chat.rocket.core.JsonConstants; import chat.rocket.core.JsonConstants;
import chat.rocket.core.models.Room; import chat.rocket.core.models.Room;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
/** /**
* Chat Room(Subscription). * Chat Room(Subscription).
......
package chat.rocket.persistence.realm.models.ddp; package chat.rocket.persistence.realm.models.ddp;
import io.realm.RealmList;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import chat.rocket.core.models.Role; import chat.rocket.core.models.Role;
import chat.rocket.core.models.RoomRole; import chat.rocket.core.models.RoomRole;
import io.realm.RealmList;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
public class RealmRoomRole extends RealmObject { public class RealmRoomRole extends RealmObject {
......
package chat.rocket.persistence.realm.models.ddp; package chat.rocket.persistence.realm.models.ddp;
import chat.rocket.core.models.Settings;
import io.realm.RealmObject; import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey; import io.realm.annotations.PrimaryKey;
import chat.rocket.core.models.Settings;
@SuppressWarnings({"PMD.ShortVariable"}) @SuppressWarnings({"PMD.ShortVariable"})
public class RealmSettings extends RealmObject { public class RealmSettings extends RealmObject {
......
package chat.rocket.persistence.realm.models.ddp; package chat.rocket.persistence.realm.models.ddp;
import chat.rocket.core.models.SpotlightRoom;
import io.realm.RealmObject; import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey; import io.realm.annotations.PrimaryKey;
import chat.rocket.core.models.SpotlightRoom;
public class RealmSpotlightRoom extends RealmObject { public class RealmSpotlightRoom extends RealmObject {
public interface Columns { public interface Columns {
......
package chat.rocket.persistence.realm.models.ddp; package chat.rocket.persistence.realm.models.ddp;
import chat.rocket.core.models.SpotlightUser;
import io.realm.RealmObject; import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey; import io.realm.annotations.PrimaryKey;
import chat.rocket.core.models.SpotlightUser;
public class RealmSpotlightUser extends RealmObject { public class RealmSpotlightUser extends RealmObject {
public interface Columns { public interface Columns {
......
package chat.rocket.persistence.realm.models.internal; package chat.rocket.persistence.realm.models.internal;
import io.realm.Realm;
import io.realm.RealmObject;
import io.realm.RealmQuery;
import io.realm.annotations.PrimaryKey;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import chat.rocket.core.SyncState; import chat.rocket.core.SyncState;
import io.realm.Realm;
import io.realm.RealmObject;
import io.realm.RealmQuery;
import io.realm.annotations.PrimaryKey;
/** /**
* just stores gcm registration status. * just stores gcm registration status.
......
package chat.rocket.persistence.realm.models.internal; package chat.rocket.persistence.realm.models.internal;
import chat.rocket.core.models.RoomHistoryState;
import io.realm.RealmObject; import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey; import io.realm.annotations.PrimaryKey;
import chat.rocket.core.models.RoomHistoryState;
/** /**
* Load messages in the room. * Load messages in the room.
*/ */
......
package chat.rocket.persistence.realm.models.internal; package chat.rocket.persistence.realm.models.internal;
import android.text.TextUtils; import android.text.TextUtils;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.HashMap; import java.util.HashMap;
import java.util.UUID; import java.util.UUID;
import bolts.Task; import bolts.Task;
import bolts.TaskCompletionSource; import bolts.TaskCompletionSource;
import chat.rocket.android.log.RCLog; import chat.rocket.android.log.RCLog;
...@@ -14,6 +14,8 @@ import chat.rocket.core.SyncState; ...@@ -14,6 +14,8 @@ import chat.rocket.core.SyncState;
import chat.rocket.persistence.realm.RealmHelper; import chat.rocket.persistence.realm.RealmHelper;
import chat.rocket.persistence.realm.RealmObjectObserver; import chat.rocket.persistence.realm.RealmObjectObserver;
import chat.rocket.persistence.realm.helpers.LogcatIfError; import chat.rocket.persistence.realm.helpers.LogcatIfError;
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
public class MethodCall extends RealmObject { public class MethodCall extends RealmObject {
......
package chat.rocket.persistence.realm.models.internal; package chat.rocket.persistence.realm.models.internal;
import android.text.TextUtils; import android.text.TextUtils;
import io.realm.Realm;
import io.realm.RealmObject;
import io.realm.RealmQuery;
import io.realm.annotations.PrimaryKey;
import org.json.JSONObject; import org.json.JSONObject;
import chat.rocket.core.models.Session; import chat.rocket.core.models.Session;
import chat.rocket.persistence.realm.RealmHelper; import chat.rocket.persistence.realm.RealmHelper;
import chat.rocket.persistence.realm.helpers.LogcatIfError; import chat.rocket.persistence.realm.helpers.LogcatIfError;
import hugo.weaving.DebugLog; import hugo.weaving.DebugLog;
import io.realm.Realm;
import io.realm.RealmObject;
import io.realm.RealmQuery;
import io.realm.annotations.PrimaryKey;
/** /**
* Login session info. * Login session info.
......
package chat.rocket.persistence.realm.modules; package chat.rocket.persistence.realm.modules;
import io.realm.annotations.RealmModule;
import chat.rocket.persistence.realm.models.RealmBasedServerInfo; import chat.rocket.persistence.realm.models.RealmBasedServerInfo;
import io.realm.annotations.RealmModule;
@RealmModule(library = true, classes = {RealmBasedServerInfo.class}) @RealmModule(library = true, classes = {RealmBasedServerInfo.class})
public class RocketChatServerModule { public class RocketChatServerModule {
......
...@@ -2,19 +2,20 @@ package chat.rocket.persistence.realm.repositories; ...@@ -2,19 +2,20 @@ package chat.rocket.persistence.realm.repositories;
import android.os.Looper; import android.os.Looper;
import android.support.v4.util.Pair; import android.support.v4.util.Pair;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Flowable;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.RealmResults;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import chat.rocket.core.models.LoginServiceConfiguration; import chat.rocket.core.models.LoginServiceConfiguration;
import chat.rocket.core.repositories.LoginServiceConfigurationRepository; import chat.rocket.core.repositories.LoginServiceConfigurationRepository;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import chat.rocket.persistence.realm.models.ddp.RealmMeteorLoginServiceConfiguration; import chat.rocket.persistence.realm.models.ddp.RealmMeteorLoginServiceConfiguration;
import hu.akarnokd.rxjava.interop.RxJavaInterop; import io.reactivex.Flowable;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.RealmResults;
public class RealmLoginServiceConfigurationRepository extends RealmRepository public class RealmLoginServiceConfigurationRepository extends RealmRepository
implements LoginServiceConfigurationRepository { implements LoginServiceConfigurationRepository {
...@@ -34,11 +35,10 @@ public class RealmLoginServiceConfigurationRepository extends RealmRepository ...@@ -34,11 +35,10 @@ public class RealmLoginServiceConfigurationRepository extends RealmRepository
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable( return pair.first.where(RealmMeteorLoginServiceConfiguration.class)
pair.first.where(RealmMeteorLoginServiceConfiguration.class)
.equalTo(RealmMeteorLoginServiceConfiguration.SERVICE, serviceName) .equalTo(RealmMeteorLoginServiceConfiguration.SERVICE, serviceName)
.findAll() .findAll()
.<RealmResults<RealmMeteorLoginServiceConfiguration>>asObservable()); .<RealmResults<RealmMeteorLoginServiceConfiguration>>asFlowable();
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
...@@ -57,10 +57,9 @@ public class RealmLoginServiceConfigurationRepository extends RealmRepository ...@@ -57,10 +57,9 @@ public class RealmLoginServiceConfigurationRepository extends RealmRepository
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop return pair.first.where(RealmMeteorLoginServiceConfiguration.class)
.toV2Flowable(pair.first.where(RealmMeteorLoginServiceConfiguration.class)
.findAll() .findAll()
.asObservable()); .asFlowable();
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
......
...@@ -5,17 +5,10 @@ import android.support.v4.util.Pair; ...@@ -5,17 +5,10 @@ import android.support.v4.util.Pair;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import chat.rocket.core.SyncState;
import io.reactivex.Flowable;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.Realm;
import io.realm.RealmResults;
import io.realm.Sort;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import chat.rocket.core.SyncState;
import chat.rocket.core.models.Message; import chat.rocket.core.models.Message;
import chat.rocket.core.models.Room; import chat.rocket.core.models.Room;
import chat.rocket.core.models.User; import chat.rocket.core.models.User;
...@@ -23,7 +16,12 @@ import chat.rocket.core.repositories.MessageRepository; ...@@ -23,7 +16,12 @@ import chat.rocket.core.repositories.MessageRepository;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import chat.rocket.persistence.realm.models.ddp.RealmMessage; import chat.rocket.persistence.realm.models.ddp.RealmMessage;
import chat.rocket.persistence.realm.models.ddp.RealmUser; import chat.rocket.persistence.realm.models.ddp.RealmUser;
import hu.akarnokd.rxjava.interop.RxJavaInterop; import io.reactivex.Flowable;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.Realm;
import io.realm.RealmResults;
import io.realm.Sort;
public class RealmMessageRepository extends RealmRepository implements MessageRepository { public class RealmMessageRepository extends RealmRepository implements MessageRepository {
...@@ -42,11 +40,11 @@ public class RealmMessageRepository extends RealmRepository implements MessageRe ...@@ -42,11 +40,11 @@ public class RealmMessageRepository extends RealmRepository implements MessageRe
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable( return
pair.first.where(RealmMessage.class) pair.first.where(RealmMessage.class)
.equalTo(RealmMessage.ID, messageId) .equalTo(RealmMessage.ID, messageId)
.findAll() .findAll()
.<RealmResults<RealmMessage>>asObservable()); .<RealmResults<RealmMessage>>asFlowable();
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
...@@ -93,8 +91,8 @@ public class RealmMessageRepository extends RealmRepository implements MessageRe ...@@ -93,8 +91,8 @@ public class RealmMessageRepository extends RealmRepository implements MessageRe
realm.beginTransaction(); realm.beginTransaction();
return RxJavaInterop.toV2Flowable(realm.copyToRealmOrUpdate(realmMessage) return realm.copyToRealmOrUpdate(realmMessage)
.asObservable()) .asFlowable()
.filter(it -> it.isLoaded() && it.isValid()) .filter(it -> it.isLoaded() && it.isValid())
.firstElement() .firstElement()
.doOnSuccess(it -> realm.commitTransaction()) .doOnSuccess(it -> realm.commitTransaction())
...@@ -117,10 +115,10 @@ public class RealmMessageRepository extends RealmRepository implements MessageRe ...@@ -117,10 +115,10 @@ public class RealmMessageRepository extends RealmRepository implements MessageRe
realm.beginTransaction(); realm.beginTransaction();
return RxJavaInterop.toV2Flowable(realm.where(RealmMessage.class) return realm.where(RealmMessage.class)
.equalTo(RealmMessage.ID, message.getId()) .equalTo(RealmMessage.ID, message.getId())
.findAll() .findAll()
.<RealmResults<RealmMessage>>asObservable()) .<RealmResults<RealmMessage>>asFlowable()
.filter(realmObject -> realmObject.isLoaded() && realmObject.isValid()) .filter(realmObject -> realmObject.isLoaded() && realmObject.isValid())
.firstElement() .firstElement()
.toSingle() .toSingle()
...@@ -145,13 +143,13 @@ public class RealmMessageRepository extends RealmRepository implements MessageRe ...@@ -145,13 +143,13 @@ public class RealmMessageRepository extends RealmRepository implements MessageRe
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable(pair.first.where(RealmMessage.class) return pair.first.where(RealmMessage.class)
.notEqualTo(RealmMessage.SYNC_STATE, SyncState.DELETE_NOT_SYNCED) .notEqualTo(RealmMessage.SYNC_STATE, SyncState.DELETE_NOT_SYNCED)
.notEqualTo(RealmMessage.SYNC_STATE, SyncState.DELETING) .notEqualTo(RealmMessage.SYNC_STATE, SyncState.DELETING)
.equalTo(RealmMessage.ROOM_ID, room.getRoomId()) .equalTo(RealmMessage.ROOM_ID, room.getRoomId())
.isNotNull(RealmMessage.USER) .isNotNull(RealmMessage.USER)
.findAllSorted(RealmMessage.TIMESTAMP, Sort.DESCENDING) .findAllSorted(RealmMessage.TIMESTAMP, Sort.DESCENDING)
.asObservable()); .asFlowable();
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
...@@ -170,12 +168,12 @@ public class RealmMessageRepository extends RealmRepository implements MessageRe ...@@ -170,12 +168,12 @@ public class RealmMessageRepository extends RealmRepository implements MessageRe
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable(pair.first.where(RealmMessage.class) return pair.first.where(RealmMessage.class)
.equalTo(RealmMessage.ROOM_ID, room.getId()) .equalTo(RealmMessage.ROOM_ID, room.getId())
.greaterThanOrEqualTo(RealmMessage.TIMESTAMP, room.getLastSeen()) .greaterThanOrEqualTo(RealmMessage.TIMESTAMP, room.getLastSeen())
.notEqualTo(RealmMessage.USER_ID, user.getId()) .notEqualTo(RealmMessage.USER_ID, user.getId())
.findAll() .findAll()
.asObservable()); .asFlowable();
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
......
...@@ -2,17 +2,17 @@ package chat.rocket.persistence.realm.repositories; ...@@ -2,17 +2,17 @@ package chat.rocket.persistence.realm.repositories;
import android.os.Looper; import android.os.Looper;
import android.support.v4.util.Pair; import android.support.v4.util.Pair;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Flowable;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.RealmResults;
import chat.rocket.core.models.Permission; import chat.rocket.core.models.Permission;
import chat.rocket.core.repositories.PermissionRepository; import chat.rocket.core.repositories.PermissionRepository;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import chat.rocket.persistence.realm.models.ddp.RealmPermission; import chat.rocket.persistence.realm.models.ddp.RealmPermission;
import hu.akarnokd.rxjava.interop.RxJavaInterop; import io.reactivex.Flowable;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.RealmResults;
public class RealmPermissionRepository extends RealmRepository implements PermissionRepository { public class RealmPermissionRepository extends RealmRepository implements PermissionRepository {
...@@ -30,11 +30,10 @@ public class RealmPermissionRepository extends RealmRepository implements Permis ...@@ -30,11 +30,10 @@ public class RealmPermissionRepository extends RealmRepository implements Permis
if (pair.first == null) { if (pair.first == null) {
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable( return pair.first.where(RealmPermission.class)
pair.first.where(RealmPermission.class)
.equalTo(RealmPermission.Columns.ID, id) .equalTo(RealmPermission.Columns.ID, id)
.findAll() .findAll()
.<RealmResults<RealmPermission>>asObservable()); .<RealmResults<RealmPermission>>asFlowable();
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
......
...@@ -2,17 +2,17 @@ package chat.rocket.persistence.realm.repositories; ...@@ -2,17 +2,17 @@ package chat.rocket.persistence.realm.repositories;
import android.os.Looper; import android.os.Looper;
import android.support.v4.util.Pair; import android.support.v4.util.Pair;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Flowable;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.RealmResults;
import chat.rocket.core.models.PublicSetting; import chat.rocket.core.models.PublicSetting;
import chat.rocket.core.repositories.PublicSettingRepository; import chat.rocket.core.repositories.PublicSettingRepository;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import chat.rocket.persistence.realm.models.ddp.RealmPublicSetting; import chat.rocket.persistence.realm.models.ddp.RealmPublicSetting;
import hu.akarnokd.rxjava.interop.RxJavaInterop; import io.reactivex.Flowable;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.RealmResults;
public class RealmPublicSettingRepository extends RealmRepository public class RealmPublicSettingRepository extends RealmRepository
implements PublicSettingRepository { implements PublicSettingRepository {
...@@ -31,11 +31,10 @@ public class RealmPublicSettingRepository extends RealmRepository ...@@ -31,11 +31,10 @@ public class RealmPublicSettingRepository extends RealmRepository
if (pair.first == null) { if (pair.first == null) {
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable( return pair.first.where(RealmPublicSetting.class)
pair.first.where(RealmPublicSetting.class)
.equalTo(RealmPublicSetting.ID, id) .equalTo(RealmPublicSetting.ID, id)
.findAll() .findAll()
.<RealmResults<RealmPublicSetting>>asObservable()); .<RealmResults<RealmPublicSetting>>asFlowable();
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
......
...@@ -2,12 +2,13 @@ package chat.rocket.persistence.realm.repositories; ...@@ -2,12 +2,13 @@ package chat.rocket.persistence.realm.repositories;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import java.util.List;
import io.realm.Realm; import io.realm.Realm;
import io.realm.RealmObject; import io.realm.RealmObject;
import io.realm.RealmResults; import io.realm.RealmResults;
import java.util.List;
public class RealmRepository { public class RealmRepository {
protected void close(Realm realm, Looper looper) { protected void close(Realm realm, Looper looper) {
......
...@@ -15,7 +15,6 @@ import chat.rocket.core.repositories.RoomRepository; ...@@ -15,7 +15,6 @@ import chat.rocket.core.repositories.RoomRepository;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import chat.rocket.persistence.realm.models.ddp.RealmRoom; import chat.rocket.persistence.realm.models.ddp.RealmRoom;
import chat.rocket.persistence.realm.models.internal.LoadMessageProcedure; import chat.rocket.persistence.realm.models.internal.LoadMessageProcedure;
import hu.akarnokd.rxjava.interop.RxJavaInterop;
import io.reactivex.Flowable; import io.reactivex.Flowable;
import io.reactivex.Single; import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
...@@ -42,10 +41,9 @@ public class RealmRoomRepository extends RealmRepository implements RoomReposito ...@@ -42,10 +41,9 @@ public class RealmRoomRepository extends RealmRepository implements RoomReposito
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable( return pair.first.where(RealmRoom.class)
pair.first.where(RealmRoom.class)
.findAll() .findAll()
.asObservable()); .asFlowable();
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
...@@ -72,13 +70,11 @@ public class RealmRoomRepository extends RealmRepository implements RoomReposito ...@@ -72,13 +70,11 @@ public class RealmRoomRepository extends RealmRepository implements RoomReposito
return Flowable.just(Optional.<RealmRoom>absent()); return Flowable.just(Optional.<RealmRoom>absent());
} }
return RxJavaInterop.toV2Flowable( return realmRoom.<RealmRoom>asFlowable()
realmRoom
.<RealmRoom>asObservable()
.filter( .filter(
roomSubscription -> roomSubscription.isLoaded() roomSubscription -> roomSubscription.isLoaded()
&& roomSubscription.isValid()) && roomSubscription.isValid())
.map(Optional::of)); .map(Optional::of);
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
...@@ -109,12 +105,10 @@ public class RealmRoomRepository extends RealmRepository implements RoomReposito ...@@ -109,12 +105,10 @@ public class RealmRoomRepository extends RealmRepository implements RoomReposito
return Flowable.just(Optional.<LoadMessageProcedure>absent()); return Flowable.just(Optional.<LoadMessageProcedure>absent());
} }
return RxJavaInterop.toV2Flowable( return messageProcedure.<LoadMessageProcedure>asFlowable()
messageProcedure
.<LoadMessageProcedure>asObservable()
.filter(loadMessageProcedure -> loadMessageProcedure.isLoaded() .filter(loadMessageProcedure -> loadMessageProcedure.isLoaded()
&& loadMessageProcedure.isValid()) && loadMessageProcedure.isValid())
.map(Optional::of)); .map(Optional::of);
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
...@@ -177,8 +171,7 @@ public class RealmRoomRepository extends RealmRepository implements RoomReposito ...@@ -177,8 +171,7 @@ public class RealmRoomRepository extends RealmRepository implements RoomReposito
if (pair.first == null) { if (pair.first == null) {
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable( return pair.first.where(RealmRoom.class)
pair.first.where(RealmRoom.class)
.like(RealmRoom.NAME, "*" + name + "*", Case.INSENSITIVE) .like(RealmRoom.NAME, "*" + name + "*", Case.INSENSITIVE)
.beginGroup() .beginGroup()
.equalTo(RealmRoom.TYPE, RealmRoom.TYPE_CHANNEL) .equalTo(RealmRoom.TYPE, RealmRoom.TYPE_CHANNEL)
...@@ -187,7 +180,7 @@ public class RealmRoomRepository extends RealmRepository implements RoomReposito ...@@ -187,7 +180,7 @@ public class RealmRoomRepository extends RealmRepository implements RoomReposito
.endGroup() .endGroup()
.findAllSorted(RealmRoom.NAME, .findAllSorted(RealmRoom.NAME,
direction.equals(SortDirection.ASC) ? Sort.ASCENDING : Sort.DESCENDING) direction.equals(SortDirection.ASC) ? Sort.ASCENDING : Sort.DESCENDING)
.asObservable()); .asFlowable();
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
...@@ -205,15 +198,14 @@ public class RealmRoomRepository extends RealmRepository implements RoomReposito ...@@ -205,15 +198,14 @@ public class RealmRoomRepository extends RealmRepository implements RoomReposito
if (pair.first == null) { if (pair.first == null) {
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable( return pair.first.where(RealmRoom.class)
pair.first.where(RealmRoom.class)
.beginGroup() .beginGroup()
.equalTo(RealmRoom.TYPE, RealmRoom.TYPE_CHANNEL) .equalTo(RealmRoom.TYPE, RealmRoom.TYPE_CHANNEL)
.or() .or()
.equalTo(RealmRoom.TYPE, RealmRoom.TYPE_PRIVATE) .equalTo(RealmRoom.TYPE, RealmRoom.TYPE_PRIVATE)
.endGroup() .endGroup()
.findAllSorted(RealmRoom.LAST_SEEN, Sort.ASCENDING) .findAllSorted(RealmRoom.LAST_SEEN, Sort.ASCENDING)
.asObservable()); .asFlowable();
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
......
...@@ -2,11 +2,8 @@ package chat.rocket.persistence.realm.repositories; ...@@ -2,11 +2,8 @@ package chat.rocket.persistence.realm.repositories;
import android.os.Looper; import android.os.Looper;
import android.support.v4.util.Pair; import android.support.v4.util.Pair;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Flowable;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.RealmResults;
import chat.rocket.core.models.Room; import chat.rocket.core.models.Room;
import chat.rocket.core.models.RoomRole; import chat.rocket.core.models.RoomRole;
...@@ -15,7 +12,10 @@ import chat.rocket.core.repositories.RoomRoleRepository; ...@@ -15,7 +12,10 @@ import chat.rocket.core.repositories.RoomRoleRepository;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import chat.rocket.persistence.realm.models.ddp.RealmRoomRole; import chat.rocket.persistence.realm.models.ddp.RealmRoomRole;
import chat.rocket.persistence.realm.models.ddp.RealmUser; import chat.rocket.persistence.realm.models.ddp.RealmUser;
import hu.akarnokd.rxjava.interop.RxJavaInterop; import io.reactivex.Flowable;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.RealmResults;
public class RealmRoomRoleRepository extends RealmRepository implements RoomRoleRepository { public class RealmRoomRoleRepository extends RealmRepository implements RoomRoleRepository {
...@@ -33,12 +33,11 @@ public class RealmRoomRoleRepository extends RealmRepository implements RoomRole ...@@ -33,12 +33,11 @@ public class RealmRoomRoleRepository extends RealmRepository implements RoomRole
if (pair.first == null) { if (pair.first == null) {
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable( return pair.first.where(RealmRoomRole.class)
pair.first.where(RealmRoomRole.class)
.equalTo(RealmRoomRole.Columns.ROOM_ID, room.getId()) .equalTo(RealmRoomRole.Columns.ROOM_ID, room.getId())
.equalTo(RealmRoomRole.Columns.USER + "." + RealmUser.ID, user.getId()) .equalTo(RealmRoomRole.Columns.USER + "." + RealmUser.ID, user.getId())
.findAll() .findAll()
.<RealmResults<RealmRoomRole>>asObservable()); .<RealmResults<RealmRoomRole>>asFlowable();
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
......
...@@ -2,21 +2,21 @@ package chat.rocket.persistence.realm.repositories; ...@@ -2,21 +2,21 @@ package chat.rocket.persistence.realm.repositories;
import android.os.Looper; import android.os.Looper;
import android.support.v4.util.Pair; import android.support.v4.util.Pair;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import chat.rocket.core.models.ServerInfo; import chat.rocket.core.models.ServerInfo;
import chat.rocket.core.repositories.ServerInfoRepository; import chat.rocket.core.repositories.ServerInfoRepository;
import chat.rocket.persistence.realm.models.RealmBasedServerInfo; import chat.rocket.persistence.realm.models.RealmBasedServerInfo;
import hu.akarnokd.rxjava.interop.RxJavaInterop; import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
public class RealmServerInfoRepository extends RealmRepository implements ServerInfoRepository { public class RealmServerInfoRepository extends RealmRepository implements ServerInfoRepository {
@Override @Override
public Flowable<Optional<ServerInfo>> getByHostname(String hostname) { public Flowable<Optional<ServerInfo>> getByHostname(String hostname) {
return Flowable.defer(() -> Flowable.using( return Flowable.defer(() -> Flowable.using(
() -> new Pair<>(RealmBasedServerInfo.getRealm(), Looper.myLooper()), () -> new Pair<>(RealmBasedServerInfo.getServerRealm(), Looper.myLooper()),
pair -> { pair -> {
RealmBasedServerInfo info = pair.first.where(RealmBasedServerInfo.class) RealmBasedServerInfo info = pair.first.where(RealmBasedServerInfo.class)
.equalTo(RealmBasedServerInfo.ColumnName.HOSTNAME, hostname) .equalTo(RealmBasedServerInfo.ColumnName.HOSTNAME, hostname)
...@@ -26,10 +26,9 @@ public class RealmServerInfoRepository extends RealmRepository implements Server ...@@ -26,10 +26,9 @@ public class RealmServerInfoRepository extends RealmRepository implements Server
return Flowable.just(Optional.<RealmBasedServerInfo>absent()); return Flowable.just(Optional.<RealmBasedServerInfo>absent());
} }
return RxJavaInterop.toV2Flowable(info return info.<RealmBasedServerInfo>asFlowable()
.<RealmBasedServerInfo>asObservable()
.filter(it -> it.isLoaded() && it.isValid()) .filter(it -> it.isLoaded() && it.isValid())
.map(Optional::of)); .map(Optional::of);
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
......
...@@ -2,17 +2,17 @@ package chat.rocket.persistence.realm.repositories; ...@@ -2,17 +2,17 @@ package chat.rocket.persistence.realm.repositories;
import android.os.Looper; import android.os.Looper;
import android.support.v4.util.Pair; import android.support.v4.util.Pair;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Flowable;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.Realm;
import chat.rocket.core.models.Session; import chat.rocket.core.models.Session;
import chat.rocket.core.repositories.SessionRepository; import chat.rocket.core.repositories.SessionRepository;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import chat.rocket.persistence.realm.models.internal.RealmSession; import chat.rocket.persistence.realm.models.internal.RealmSession;
import hu.akarnokd.rxjava.interop.RxJavaInterop; import io.reactivex.Flowable;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.Realm;
public class RealmSessionRepository extends RealmRepository implements SessionRepository { public class RealmSessionRepository extends RealmRepository implements SessionRepository {
...@@ -31,11 +31,10 @@ public class RealmSessionRepository extends RealmRepository implements SessionRe ...@@ -31,11 +31,10 @@ public class RealmSessionRepository extends RealmRepository implements SessionRe
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable( return pair.first.where(RealmSession.class)
pair.first.where(RealmSession.class)
.equalTo(RealmSession.ID, id) .equalTo(RealmSession.ID, id)
.findAll() .findAll()
.<RealmSession>asObservable()); .<RealmSession>asFlowable();
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
...@@ -76,8 +75,8 @@ public class RealmSessionRepository extends RealmRepository implements SessionRe ...@@ -76,8 +75,8 @@ public class RealmSessionRepository extends RealmRepository implements SessionRe
realm.beginTransaction(); realm.beginTransaction();
return RxJavaInterop.toV2Flowable(realm.copyToRealmOrUpdate(realmSession) return realm.copyToRealmOrUpdate(realmSession)
.asObservable()) .asFlowable()
.filter(it -> it != null && it.isLoaded() && it.isValid()) .filter(it -> it != null && it.isLoaded() && it.isValid())
.firstElement() .firstElement()
.doOnSuccess(it -> realm.commitTransaction()) .doOnSuccess(it -> realm.commitTransaction())
......
...@@ -6,13 +6,12 @@ import chat.rocket.core.repositories.SpotlightRepository ...@@ -6,13 +6,12 @@ import chat.rocket.core.repositories.SpotlightRepository
import chat.rocket.persistence.realm.RealmStore import chat.rocket.persistence.realm.RealmStore
import chat.rocket.persistence.realm.models.ddp.RealmSpotlight import chat.rocket.persistence.realm.models.ddp.RealmSpotlight
import chat.rocket.persistence.realm.models.ddp.RealmSpotlight.Columns import chat.rocket.persistence.realm.models.ddp.RealmSpotlight.Columns
import hu.akarnokd.rxjava.interop.RxJavaInterop
import io.reactivex.Flowable import io.reactivex.Flowable
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.realm.Realm import io.realm.Realm
import io.realm.RealmResults import io.realm.RealmResults
import io.realm.Sort import io.realm.Sort
import java.util.ArrayList import java.util.*
class RealmSpotlightRepository(private val hostname: String) : RealmRepository(), SpotlightRepository { class RealmSpotlightRepository(private val hostname: String) : RealmRepository(), SpotlightRepository {
...@@ -24,9 +23,9 @@ class RealmSpotlightRepository(private val hostname: String) : RealmRepository() ...@@ -24,9 +23,9 @@ class RealmSpotlightRepository(private val hostname: String) : RealmRepository()
return@using Flowable.empty() return@using Flowable.empty()
} }
return@using RxJavaInterop.toV2Flowable<RealmResults<RealmSpotlight>>(pair.first.where(RealmSpotlight::class.java) return@using pair.first.where(RealmSpotlight::class.java)
.findAllSorted(Columns.TYPE, Sort.DESCENDING) .findAllSorted(Columns.TYPE, Sort.DESCENDING)
.asObservable()) .asFlowable()
}) { pair -> close(pair.first, pair.second) } }) { pair -> close(pair.first, pair.second) }
.unsubscribeOn(AndroidSchedulers.from(Looper.myLooper()!!)) .unsubscribeOn(AndroidSchedulers.from(Looper.myLooper()!!))
.filter { realmSpotlightResults -> realmSpotlightResults.isLoaded && realmSpotlightResults.isValid } .filter { realmSpotlightResults -> realmSpotlightResults.isLoaded && realmSpotlightResults.isValid }
......
...@@ -2,20 +2,20 @@ package chat.rocket.persistence.realm.repositories; ...@@ -2,20 +2,20 @@ package chat.rocket.persistence.realm.repositories;
import android.os.Looper; import android.os.Looper;
import android.support.v4.util.Pair; import android.support.v4.util.Pair;
import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.Case;
import io.realm.Sort;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import chat.rocket.core.SortDirection; import chat.rocket.core.SortDirection;
import chat.rocket.core.models.SpotlightRoom; import chat.rocket.core.models.SpotlightRoom;
import chat.rocket.core.repositories.SpotlightRoomRepository; import chat.rocket.core.repositories.SpotlightRoomRepository;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import chat.rocket.persistence.realm.models.ddp.RealmRoom; import chat.rocket.persistence.realm.models.ddp.RealmRoom;
import chat.rocket.persistence.realm.models.ddp.RealmSpotlightRoom; import chat.rocket.persistence.realm.models.ddp.RealmSpotlightRoom;
import hu.akarnokd.rxjava.interop.RxJavaInterop; import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.Case;
import io.realm.Sort;
public class RealmSpotlightRoomRepository extends RealmRepository implements SpotlightRoomRepository { public class RealmSpotlightRoomRepository extends RealmRepository implements SpotlightRoomRepository {
...@@ -34,8 +34,7 @@ public class RealmSpotlightRoomRepository extends RealmRepository implements Spo ...@@ -34,8 +34,7 @@ public class RealmSpotlightRoomRepository extends RealmRepository implements Spo
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable( return pair.first.where(RealmSpotlightRoom.class)
pair.first.where(RealmSpotlightRoom.class)
.like(RealmSpotlightRoom.Columns.NAME, "*" + name + "*", Case.INSENSITIVE) .like(RealmSpotlightRoom.Columns.NAME, "*" + name + "*", Case.INSENSITIVE)
.beginGroup() .beginGroup()
.equalTo(RealmSpotlightRoom.Columns.TYPE, RealmRoom.TYPE_CHANNEL) .equalTo(RealmSpotlightRoom.Columns.TYPE, RealmRoom.TYPE_CHANNEL)
...@@ -43,7 +42,7 @@ public class RealmSpotlightRoomRepository extends RealmRepository implements Spo ...@@ -43,7 +42,7 @@ public class RealmSpotlightRoomRepository extends RealmRepository implements Spo
.equalTo(RealmSpotlightRoom.Columns.TYPE, RealmRoom.TYPE_PRIVATE) .equalTo(RealmSpotlightRoom.Columns.TYPE, RealmRoom.TYPE_PRIVATE)
.endGroup() .endGroup()
.findAllSorted(RealmSpotlightRoom.Columns.NAME, direction.equals(SortDirection.ASC) ? Sort.ASCENDING : Sort.DESCENDING) .findAllSorted(RealmSpotlightRoom.Columns.NAME, direction.equals(SortDirection.ASC) ? Sort.ASCENDING : Sort.DESCENDING)
.asObservable()); .asFlowable();
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
......
...@@ -2,19 +2,19 @@ package chat.rocket.persistence.realm.repositories; ...@@ -2,19 +2,19 @@ package chat.rocket.persistence.realm.repositories;
import android.os.Looper; import android.os.Looper;
import android.support.v4.util.Pair; import android.support.v4.util.Pair;
import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.Case;
import io.realm.Sort;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import chat.rocket.core.SortDirection; import chat.rocket.core.SortDirection;
import chat.rocket.core.models.SpotlightUser; import chat.rocket.core.models.SpotlightUser;
import chat.rocket.core.repositories.SpotlightUserRepository; import chat.rocket.core.repositories.SpotlightUserRepository;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import chat.rocket.persistence.realm.models.ddp.RealmSpotlightUser; import chat.rocket.persistence.realm.models.ddp.RealmSpotlightUser;
import hu.akarnokd.rxjava.interop.RxJavaInterop; import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.Case;
import io.realm.Sort;
public class RealmSpotlightUserRepository extends RealmRepository implements SpotlightUserRepository { public class RealmSpotlightUserRepository extends RealmRepository implements SpotlightUserRepository {
...@@ -33,8 +33,7 @@ public class RealmSpotlightUserRepository extends RealmRepository implements Spo ...@@ -33,8 +33,7 @@ public class RealmSpotlightUserRepository extends RealmRepository implements Spo
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable( return pair.first.where(RealmSpotlightUser.class)
pair.first.where(RealmSpotlightUser.class)
.beginGroup() .beginGroup()
.like(RealmSpotlightUser.Columns.USERNAME, "*" + name + "*", Case.INSENSITIVE) .like(RealmSpotlightUser.Columns.USERNAME, "*" + name + "*", Case.INSENSITIVE)
.isNull(RealmSpotlightUser.Columns.NAME) .isNull(RealmSpotlightUser.Columns.NAME)
...@@ -46,7 +45,7 @@ public class RealmSpotlightUserRepository extends RealmRepository implements Spo ...@@ -46,7 +45,7 @@ public class RealmSpotlightUserRepository extends RealmRepository implements Spo
.endGroup() .endGroup()
.findAllSorted(RealmSpotlightUser.Columns.USERNAME, .findAllSorted(RealmSpotlightUser.Columns.USERNAME,
direction.equals(SortDirection.ASC) ? Sort.ASCENDING : Sort.DESCENDING) direction.equals(SortDirection.ASC) ? Sort.ASCENDING : Sort.DESCENDING)
.asObservable()); .asFlowable();
}, },
pair -> close(pair.first, pair.second) pair -> close(pair.first, pair.second)
) )
......
...@@ -12,7 +12,6 @@ import chat.rocket.core.models.User; ...@@ -12,7 +12,6 @@ import chat.rocket.core.models.User;
import chat.rocket.core.repositories.UserRepository; import chat.rocket.core.repositories.UserRepository;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import chat.rocket.persistence.realm.models.ddp.RealmUser; import chat.rocket.persistence.realm.models.ddp.RealmUser;
import hu.akarnokd.rxjava.interop.RxJavaInterop;
import io.reactivex.Flowable; import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.realm.Case; import io.realm.Case;
...@@ -36,10 +35,9 @@ public class RealmUserRepository extends RealmRepository implements UserReposito ...@@ -36,10 +35,9 @@ public class RealmUserRepository extends RealmRepository implements UserReposito
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable( return pair.first.where(RealmUser.class)
pair.first.where(RealmUser.class)
.findAll() .findAll()
.asObservable()); .asFlowable();
}, },
pair -> close(pair.first, pair.second)) pair -> close(pair.first, pair.second))
.unsubscribeOn(AndroidSchedulers.from(Looper.myLooper())) .unsubscribeOn(AndroidSchedulers.from(Looper.myLooper()))
...@@ -71,11 +69,10 @@ public class RealmUserRepository extends RealmRepository implements UserReposito ...@@ -71,11 +69,10 @@ public class RealmUserRepository extends RealmRepository implements UserReposito
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable( return pair.first.where(RealmUser.class)
pair.first.where(RealmUser.class)
.isNotEmpty(RealmUser.EMAILS) .isNotEmpty(RealmUser.EMAILS)
.findAll() .findAll()
.<RealmResults<RealmUser>>asObservable()); .<RealmResults<RealmUser>>asFlowable();
}, },
pair -> close(pair.first, pair.second)); pair -> close(pair.first, pair.second));
} }
...@@ -114,11 +111,9 @@ public class RealmUserRepository extends RealmRepository implements UserReposito ...@@ -114,11 +111,9 @@ public class RealmUserRepository extends RealmRepository implements UserReposito
return Flowable.just(Optional.absent()); return Flowable.just(Optional.absent());
} }
return RxJavaInterop.toV2Flowable( return realmUser.<RealmUser>asFlowable()
realmUser
.<RealmUser>asObservable()
.filter(user -> user.isLoaded() && user.isValid()) .filter(user -> user.isLoaded() && user.isValid())
.map(Optional::of)); .map(Optional::of);
} }
@Override @Override
...@@ -139,11 +134,10 @@ public class RealmUserRepository extends RealmRepository implements UserReposito ...@@ -139,11 +134,10 @@ public class RealmUserRepository extends RealmRepository implements UserReposito
return Flowable.empty(); return Flowable.empty();
} }
return RxJavaInterop.toV2Flowable( return pair.first.where(RealmUser.class)
pair.first.where(RealmUser.class)
.like(RealmUser.USERNAME, "*" + name + "*", Case.INSENSITIVE) .like(RealmUser.USERNAME, "*" + name + "*", Case.INSENSITIVE)
.findAllSorted(RealmUser.USERNAME, Sort.DESCENDING) .findAllSorted(RealmUser.USERNAME, Sort.DESCENDING)
.asObservable()); .asFlowable();
}, },
pair -> close(pair.first, pair.second)); pair -> close(pair.first, pair.second));
} }
......
...@@ -7,9 +7,11 @@ import android.os.Build; ...@@ -7,9 +7,11 @@ import android.os.Build;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import chat.rocket.android.widget.helper.FrescoHelper;
import com.facebook.drawee.view.SimpleDraweeView; import com.facebook.drawee.view.SimpleDraweeView;
import chat.rocket.android.widget.helper.FrescoHelper;
public class RocketChatAvatar extends FrameLayout { public class RocketChatAvatar extends FrameLayout {
private SimpleDraweeView simpleDraweeViewAvatar; private SimpleDraweeView simpleDraweeViewAvatar;
......
...@@ -3,6 +3,7 @@ package chat.rocket.android.widget.helper; ...@@ -3,6 +3,7 @@ package chat.rocket.android.widget.helper;
import android.support.annotation.StringRes; import android.support.annotation.StringRes;
import java.util.HashMap; import java.util.HashMap;
import chat.rocket.android.widget.R; import chat.rocket.android.widget.R;
public class IconProvider { public class IconProvider {
......
...@@ -15,6 +15,7 @@ import android.widget.TextView; ...@@ -15,6 +15,7 @@ import android.widget.TextView;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import chat.rocket.android.widget.R; import chat.rocket.android.widget.R;
public class InlineHightlighter { public class InlineHightlighter {
......
...@@ -5,7 +5,6 @@ import android.text.Selection; ...@@ -5,7 +5,6 @@ import android.text.Selection;
import android.text.Spannable; import android.text.Spannable;
import android.text.method.LinkMovementMethod; import android.text.method.LinkMovementMethod;
import android.text.method.MovementMethod; import android.text.method.MovementMethod;
import android.text.method.Touch;
import android.text.style.ClickableSpan; import android.text.style.ClickableSpan;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.widget.TextView; import android.widget.TextView;
......
...@@ -3,6 +3,7 @@ package chat.rocket.android.widget.helper; ...@@ -3,6 +3,7 @@ package chat.rocket.android.widget.helper;
import android.text.SpannableString; import android.text.SpannableString;
import android.text.Spanned; import android.text.Spanned;
import android.widget.TextView; import android.widget.TextView;
import org.nibor.autolink.LinkExtractor; import org.nibor.autolink.LinkExtractor;
import org.nibor.autolink.LinkSpan; import org.nibor.autolink.LinkSpan;
import org.nibor.autolink.LinkType; import org.nibor.autolink.LinkType;
......
...@@ -6,6 +6,7 @@ import android.support.v4.app.Fragment; ...@@ -6,6 +6,7 @@ import android.support.v4.app.Fragment;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import java.util.List; import java.util.List;
import chat.rocket.android.widget.R; import chat.rocket.android.widget.R;
import chat.rocket.android.widget.layouthelper.MessageExtraActionListAdapter; import chat.rocket.android.widget.layouthelper.MessageExtraActionListAdapter;
import chat.rocket.android.widget.message.MessageExtraActionItemPresenter; import chat.rocket.android.widget.message.MessageExtraActionItemPresenter;
......
...@@ -6,6 +6,7 @@ import android.view.View; ...@@ -6,6 +6,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import java.util.List; import java.util.List;
import chat.rocket.android.widget.R; import chat.rocket.android.widget.R;
import chat.rocket.android.widget.message.MessageExtraActionItemPresenter; import chat.rocket.android.widget.message.MessageExtraActionItemPresenter;
......
...@@ -16,6 +16,12 @@ import android.view.View; ...@@ -16,6 +16,12 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.view.SimpleDraweeView;
import java.util.List;
import chat.rocket.android.widget.AbsoluteUrl; import chat.rocket.android.widget.AbsoluteUrl;
import chat.rocket.android.widget.R; import chat.rocket.android.widget.R;
import chat.rocket.android.widget.helper.FrescoHelper; import chat.rocket.android.widget.helper.FrescoHelper;
...@@ -24,10 +30,6 @@ import chat.rocket.core.models.AttachmentAuthor; ...@@ -24,10 +30,6 @@ import chat.rocket.core.models.AttachmentAuthor;
import chat.rocket.core.models.AttachmentField; import chat.rocket.core.models.AttachmentField;
import chat.rocket.core.models.AttachmentTitle; import chat.rocket.core.models.AttachmentTitle;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.view.SimpleDraweeView;
import java.util.List;
/** /**
*/ */
public class RocketChatMessageAttachmentsLayout extends LinearLayout { public class RocketChatMessageAttachmentsLayout extends LinearLayout {
......
...@@ -8,6 +8,7 @@ import android.util.AttributeSet; ...@@ -8,6 +8,7 @@ import android.util.AttributeSet;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.emojione.Emojione; import com.emojione.Emojione;
import chat.rocket.android.widget.R; import chat.rocket.android.widget.R;
......
...@@ -11,12 +11,14 @@ import android.view.LayoutInflater; ...@@ -11,12 +11,14 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import chat.rocket.android.widget.helper.FrescoHelper;
import com.facebook.drawee.view.SimpleDraweeView; import com.facebook.drawee.view.SimpleDraweeView;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import chat.rocket.android.widget.R; import chat.rocket.android.widget.R;
import chat.rocket.android.widget.helper.FrescoHelper;
import chat.rocket.android.widget.helper.ImageFormat; import chat.rocket.android.widget.helper.ImageFormat;
import chat.rocket.core.models.WebContent; import chat.rocket.core.models.WebContent;
import chat.rocket.core.models.WebContentHeaders; import chat.rocket.core.models.WebContentHeaders;
......
...@@ -12,6 +12,12 @@ import android.widget.RelativeLayout; ...@@ -12,6 +12,12 @@ import android.widget.RelativeLayout;
import com.jakewharton.rxbinding2.widget.RxTextView; import com.jakewharton.rxbinding2.widget.RxTextView;
import com.jakewharton.rxbinding2.widget.TextViewAfterTextChangeEvent; import com.jakewharton.rxbinding2.widget.TextViewAfterTextChangeEvent;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import chat.rocket.android.widget.R;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull; import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.CompositeDisposable;
...@@ -20,11 +26,6 @@ import io.reactivex.functions.Consumer; ...@@ -20,11 +26,6 @@ import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function; import io.reactivex.functions.Function;
import io.reactivex.internal.util.AppendOnlyLinkedArrayList; import io.reactivex.internal.util.AppendOnlyLinkedArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import chat.rocket.android.widget.R;
public class AutocompleteManager { public class AutocompleteManager {
private final Map<String, AutocompleteSource> autocompleteSourceMap = new HashMap<>(); private final Map<String, AutocompleteSource> autocompleteSourceMap = new HashMap<>();
......
package chat.rocket.android.widget.message.autocomplete; package chat.rocket.android.widget.message.autocomplete;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
public abstract class AutocompleteSource<A extends AutocompleteAdapter, I extends AutocompleteItem> { public abstract class AutocompleteSource<A extends AutocompleteAdapter, I extends AutocompleteItem> {
......
...@@ -2,19 +2,19 @@ package chat.rocket.android.widget.message.autocomplete.channel; ...@@ -2,19 +2,19 @@ package chat.rocket.android.widget.message.autocomplete.channel;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import io.reactivex.Flowable;
import io.reactivex.Scheduler;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import org.reactivestreams.Publisher; import org.reactivestreams.Publisher;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import chat.rocket.android.widget.message.autocomplete.AutocompleteSource; import chat.rocket.android.widget.message.autocomplete.AutocompleteSource;
import chat.rocket.core.interactors.AutocompleteChannelInteractor; import chat.rocket.core.interactors.AutocompleteChannelInteractor;
import chat.rocket.core.models.SpotlightRoom; import chat.rocket.core.models.SpotlightRoom;
import io.reactivex.Flowable;
import io.reactivex.Scheduler;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
public class ChannelSource extends AutocompleteSource<ChannelAdapter, ChannelItem> { public class ChannelSource extends AutocompleteSource<ChannelAdapter, ChannelItem> {
......
package chat.rocket.android.widget.message.autocomplete.user; package chat.rocket.android.widget.message.autocomplete.user;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import io.reactivex.Flowable;
import io.reactivex.Scheduler;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import org.reactivestreams.Publisher; import org.reactivestreams.Publisher;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import chat.rocket.android.widget.AbsoluteUrl; import chat.rocket.android.widget.AbsoluteUrl;
import chat.rocket.android.widget.helper.UserStatusProvider; import chat.rocket.android.widget.helper.UserStatusProvider;
import chat.rocket.android.widget.message.autocomplete.AutocompleteSource; import chat.rocket.android.widget.message.autocomplete.AutocompleteSource;
import chat.rocket.core.interactors.AutocompleteUserInteractor; import chat.rocket.core.interactors.AutocompleteUserInteractor;
import chat.rocket.core.models.SpotlightUser; import chat.rocket.core.models.SpotlightUser;
import io.reactivex.Flowable;
import io.reactivex.Scheduler;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
public class UserSource extends AutocompleteSource<UserAdapter, UserItem> { public class UserSource extends AutocompleteSource<UserAdapter, UserItem> {
......
package chat.rocket.core.interactors package chat.rocket.core.interactors
import io.reactivex.Flowable
import java.util.ArrayList
import chat.rocket.core.SortDirection import chat.rocket.core.SortDirection
import chat.rocket.core.models.Room import chat.rocket.core.models.Room
import chat.rocket.core.models.SpotlightRoom import chat.rocket.core.models.SpotlightRoom
...@@ -11,8 +8,10 @@ import chat.rocket.core.repositories.SpotlightRoomRepository ...@@ -11,8 +8,10 @@ import chat.rocket.core.repositories.SpotlightRoomRepository
import chat.rocket.core.temp.TempSpotlightRoomCaller import chat.rocket.core.temp.TempSpotlightRoomCaller
import chat.rocket.core.utils.Pair import chat.rocket.core.utils.Pair
import chat.rocket.core.utils.Triple import chat.rocket.core.utils.Triple
import io.reactivex.Flowable
import io.reactivex.functions.BiFunction import io.reactivex.functions.BiFunction
import io.reactivex.functions.Function3 import io.reactivex.functions.Function3
import java.util.*
class AutocompleteChannelInteractor(private val roomRepository: RoomRepository, class AutocompleteChannelInteractor(private val roomRepository: RoomRepository,
private val spotlightRoomRepository: SpotlightRoomRepository, private val spotlightRoomRepository: SpotlightRoomRepository,
......
...@@ -12,7 +12,7 @@ import chat.rocket.core.temp.TempSpotlightUserCaller ...@@ -12,7 +12,7 @@ import chat.rocket.core.temp.TempSpotlightUserCaller
import chat.rocket.core.utils.Triple import chat.rocket.core.utils.Triple
import io.reactivex.Flowable import io.reactivex.Flowable
import io.reactivex.functions.Function3 import io.reactivex.functions.Function3
import java.util.ArrayList import java.util.*
class AutocompleteUserInteractor(private val room: Room, class AutocompleteUserInteractor(private val room: Room,
private val userRepository: UserRepository, private val userRepository: UserRepository,
......
...@@ -2,11 +2,10 @@ package chat.rocket.core.interactors ...@@ -2,11 +2,10 @@ package chat.rocket.core.interactors
import chat.rocket.core.models.Session import chat.rocket.core.models.Session
import chat.rocket.core.models.User import chat.rocket.core.models.User
import io.reactivex.Flowable
import io.reactivex.Single
import chat.rocket.core.repositories.UserRepository import chat.rocket.core.repositories.UserRepository
import com.hadisatrio.optional.Optional import com.hadisatrio.optional.Optional
import io.reactivex.Flowable
import io.reactivex.Single
import io.reactivex.functions.Function3 import io.reactivex.functions.Function3
class CanCreateRoomInteractor(private val userRepository: UserRepository, class CanCreateRoomInteractor(private val userRepository: UserRepository,
......
...@@ -2,8 +2,14 @@ package chat.rocket.core.interactors ...@@ -2,8 +2,14 @@ package chat.rocket.core.interactors
import chat.rocket.core.PermissionsConstants import chat.rocket.core.PermissionsConstants
import chat.rocket.core.PublicSettingsConstants import chat.rocket.core.PublicSettingsConstants
import chat.rocket.core.models.* import chat.rocket.core.models.Message
import chat.rocket.core.repositories.* import chat.rocket.core.models.PublicSetting
import chat.rocket.core.models.Room
import chat.rocket.core.models.User
import chat.rocket.core.repositories.MessageRepository
import chat.rocket.core.repositories.PublicSettingRepository
import chat.rocket.core.repositories.RoomRepository
import chat.rocket.core.repositories.UserRepository
import chat.rocket.core.utils.Pair import chat.rocket.core.utils.Pair
import com.hadisatrio.optional.Optional import com.hadisatrio.optional.Optional
import io.reactivex.Single import io.reactivex.Single
......
package chat.rocket.core.interactors package chat.rocket.core.interactors
import com.hadisatrio.optional.Optional
import io.reactivex.Flowable
import io.reactivex.Single
import java.util.UUID
import chat.rocket.core.SyncState import chat.rocket.core.SyncState
import chat.rocket.core.models.Message import chat.rocket.core.models.Message
import chat.rocket.core.models.Room import chat.rocket.core.models.Room
...@@ -11,6 +7,10 @@ import chat.rocket.core.models.RoomHistoryState ...@@ -11,6 +7,10 @@ import chat.rocket.core.models.RoomHistoryState
import chat.rocket.core.models.User import chat.rocket.core.models.User
import chat.rocket.core.repositories.MessageRepository import chat.rocket.core.repositories.MessageRepository
import chat.rocket.core.repositories.RoomRepository import chat.rocket.core.repositories.RoomRepository
import com.hadisatrio.optional.Optional
import io.reactivex.Flowable
import io.reactivex.Single
import java.util.*
class MessageInteractor(private val messageRepository: MessageRepository, class MessageInteractor(private val messageRepository: MessageRepository,
private val roomRepository: RoomRepository) { private val roomRepository: RoomRepository) {
......
...@@ -3,7 +3,9 @@ package chat.rocket.core.interactors ...@@ -3,7 +3,9 @@ package chat.rocket.core.interactors
import chat.rocket.core.models.Permission import chat.rocket.core.models.Permission
import chat.rocket.core.models.Room import chat.rocket.core.models.Room
import chat.rocket.core.models.RoomRole import chat.rocket.core.models.RoomRole
import chat.rocket.core.repositories.* import chat.rocket.core.repositories.PermissionRepository
import chat.rocket.core.repositories.RoomRoleRepository
import chat.rocket.core.repositories.UserRepository
import chat.rocket.core.utils.Pair import chat.rocket.core.utils.Pair
import com.hadisatrio.optional.Optional import com.hadisatrio.optional.Optional
import io.reactivex.Single import io.reactivex.Single
......
package chat.rocket.core.interactors package chat.rocket.core.interactors
import io.reactivex.Flowable
import chat.rocket.core.SortDirection import chat.rocket.core.SortDirection
import chat.rocket.core.models.Room import chat.rocket.core.models.Room
import chat.rocket.core.repositories.RoomRepository import chat.rocket.core.repositories.RoomRepository
import io.reactivex.Flowable
class RoomInteractor(private val roomRepository: RoomRepository) { class RoomInteractor(private val roomRepository: RoomRepository) {
......
package chat.rocket.core.interactors package chat.rocket.core.interactors
import chat.rocket.core.models.Session
import chat.rocket.core.repositories.SessionRepository
import com.hadisatrio.optional.Optional import com.hadisatrio.optional.Optional
import io.reactivex.Flowable import io.reactivex.Flowable
import io.reactivex.Single import io.reactivex.Single
import chat.rocket.core.models.Session
import chat.rocket.core.repositories.SessionRepository
class SessionInteractor(private val sessionRepository: SessionRepository) { class SessionInteractor(private val sessionRepository: SessionRepository) {
companion object { companion object {
......
package chat.rocket.core.interactors; package chat.rocket.core.interactors;
import io.reactivex.Flowable;
import java.util.List; import java.util.List;
import chat.rocket.core.models.User; import chat.rocket.core.models.User;
import chat.rocket.core.repositories.UserRepository; import chat.rocket.core.repositories.UserRepository;
import io.reactivex.Flowable;
public class UserInteractor { public class UserInteractor {
......
...@@ -3,6 +3,7 @@ package chat.rocket.core.models; ...@@ -3,6 +3,7 @@ package chat.rocket.core.models;
import com.google.auto.value.AutoValue; import com.google.auto.value.AutoValue;
import java.util.List; import java.util.List;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@AutoValue @AutoValue
......
...@@ -3,6 +3,7 @@ package chat.rocket.core.models; ...@@ -3,6 +3,7 @@ package chat.rocket.core.models;
import com.google.auto.value.AutoValue; import com.google.auto.value.AutoValue;
import java.util.List; import java.util.List;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@AutoValue @AutoValue
......
...@@ -3,6 +3,7 @@ package chat.rocket.core.models; ...@@ -3,6 +3,7 @@ package chat.rocket.core.models;
import com.google.auto.value.AutoValue; import com.google.auto.value.AutoValue;
import java.util.List; import java.util.List;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@AutoValue @AutoValue
......
...@@ -3,6 +3,7 @@ package chat.rocket.core.models; ...@@ -3,6 +3,7 @@ package chat.rocket.core.models;
import com.google.auto.value.AutoValue; import com.google.auto.value.AutoValue;
import java.util.Map; import java.util.Map;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@AutoValue @AutoValue
......
package chat.rocket.core.repositories; package chat.rocket.core.repositories;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Flowable;
import io.reactivex.Single;
import java.util.List; import java.util.List;
import chat.rocket.core.models.LoginServiceConfiguration; import chat.rocket.core.models.LoginServiceConfiguration;
import io.reactivex.Flowable;
import io.reactivex.Single;
public interface LoginServiceConfigurationRepository { public interface LoginServiceConfigurationRepository {
......
package chat.rocket.core.repositories; package chat.rocket.core.repositories;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Flowable;
import io.reactivex.Single;
import java.util.List; import java.util.List;
import chat.rocket.core.models.Message; import chat.rocket.core.models.Message;
import chat.rocket.core.models.Room; import chat.rocket.core.models.Room;
import chat.rocket.core.models.User; import chat.rocket.core.models.User;
import io.reactivex.Flowable;
import io.reactivex.Single;
public interface MessageRepository { public interface MessageRepository {
......
package chat.rocket.core.repositories; package chat.rocket.core.repositories;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Single;
import chat.rocket.core.models.Permission; import chat.rocket.core.models.Permission;
import io.reactivex.Single;
public interface PermissionRepository { public interface PermissionRepository {
......
package chat.rocket.core.repositories; package chat.rocket.core.repositories;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Single;
import chat.rocket.core.models.PublicSetting; import chat.rocket.core.models.PublicSetting;
import io.reactivex.Single;
public interface PublicSettingRepository { public interface PublicSettingRepository {
......
package chat.rocket.core.repositories; package chat.rocket.core.repositories;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Flowable;
import io.reactivex.Single;
import java.util.List; import java.util.List;
import chat.rocket.core.SortDirection; import chat.rocket.core.SortDirection;
import chat.rocket.core.models.Room; import chat.rocket.core.models.Room;
import chat.rocket.core.models.RoomHistoryState; import chat.rocket.core.models.RoomHistoryState;
import io.reactivex.Flowable;
import io.reactivex.Single;
public interface RoomRepository { public interface RoomRepository {
......
package chat.rocket.core.repositories; package chat.rocket.core.repositories;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Single;
import chat.rocket.core.models.Room; import chat.rocket.core.models.Room;
import chat.rocket.core.models.RoomRole; import chat.rocket.core.models.RoomRole;
import chat.rocket.core.models.User; import chat.rocket.core.models.User;
import io.reactivex.Single;
public interface RoomRoleRepository { public interface RoomRoleRepository {
......
...@@ -2,9 +2,8 @@ package chat.rocket.core.repositories; ...@@ -2,9 +2,8 @@ package chat.rocket.core.repositories;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Flowable;
import chat.rocket.core.models.ServerInfo; import chat.rocket.core.models.ServerInfo;
import io.reactivex.Flowable;
public interface ServerInfoRepository { public interface ServerInfoRepository {
......
package chat.rocket.core.repositories; package chat.rocket.core.repositories;
import com.hadisatrio.optional.Optional; import com.hadisatrio.optional.Optional;
import io.reactivex.Flowable;
import io.reactivex.Single;
import chat.rocket.core.models.Session; import chat.rocket.core.models.Session;
import io.reactivex.Flowable;
import io.reactivex.Single;
public interface SessionRepository { public interface SessionRepository {
......
package chat.rocket.core.repositories; package chat.rocket.core.repositories;
import io.reactivex.Flowable;
import java.util.List; import java.util.List;
import chat.rocket.core.SortDirection; import chat.rocket.core.SortDirection;
import chat.rocket.core.models.SpotlightRoom; import chat.rocket.core.models.SpotlightRoom;
import io.reactivex.Flowable;
public interface SpotlightRoomRepository { public interface SpotlightRoomRepository {
......
package chat.rocket.core.repositories; package chat.rocket.core.repositories;
import io.reactivex.Flowable;
import java.util.List; import java.util.List;
import chat.rocket.core.SortDirection; import chat.rocket.core.SortDirection;
import chat.rocket.core.models.SpotlightUser; import chat.rocket.core.models.SpotlightUser;
import io.reactivex.Flowable;
public interface SpotlightUserRepository { public interface SpotlightUserRepository {
......
package chat.rocket.core.repositories package chat.rocket.core.repositories
import chat.rocket.core.models.User
import com.hadisatrio.optional.Optional import com.hadisatrio.optional.Optional
import io.reactivex.Flowable import io.reactivex.Flowable
import chat.rocket.core.models.User
interface UserRepository { interface UserRepository {
......
package chat.rocket.core.interactors; package chat.rocket.core.interactors;
import static org.mockito.Mockito.*;
import io.reactivex.Flowable;
import io.reactivex.subscribers.TestSubscriber;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
...@@ -12,12 +8,23 @@ import org.mockito.junit.MockitoJUnitRunner; ...@@ -12,12 +8,23 @@ import org.mockito.junit.MockitoJUnitRunner;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import chat.rocket.core.SortDirection; import chat.rocket.core.SortDirection;
import chat.rocket.core.models.Room; import chat.rocket.core.models.Room;
import chat.rocket.core.models.SpotlightRoom; import chat.rocket.core.models.SpotlightRoom;
import chat.rocket.core.repositories.RoomRepository; import chat.rocket.core.repositories.RoomRepository;
import chat.rocket.core.repositories.SpotlightRoomRepository; import chat.rocket.core.repositories.SpotlightRoomRepository;
import chat.rocket.core.temp.TempSpotlightRoomCaller; import chat.rocket.core.temp.TempSpotlightRoomCaller;
import io.reactivex.Flowable;
import io.reactivex.subscribers.TestSubscriber;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class) @RunWith(MockitoJUnitRunner.class)
public class AutocompleteChannelInteractorTest { public class AutocompleteChannelInteractorTest {
......
...@@ -6,12 +6,14 @@ import chat.rocket.core.models.Message ...@@ -6,12 +6,14 @@ import chat.rocket.core.models.Message
import chat.rocket.core.models.PublicSetting import chat.rocket.core.models.PublicSetting
import chat.rocket.core.models.Room import chat.rocket.core.models.Room
import chat.rocket.core.models.User import chat.rocket.core.models.User
import chat.rocket.core.repositories.* import chat.rocket.core.repositories.MessageRepository
import chat.rocket.core.repositories.PublicSettingRepository
import chat.rocket.core.repositories.RoomRepository
import chat.rocket.core.repositories.UserRepository
import com.hadisatrio.optional.Optional import com.hadisatrio.optional.Optional
import io.reactivex.Flowable import io.reactivex.Flowable
import io.reactivex.Single import io.reactivex.Single
import io.reactivex.observers.TestObserver import io.reactivex.observers.TestObserver
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
......
...@@ -8,12 +8,12 @@ import com.hadisatrio.optional.Optional ...@@ -8,12 +8,12 @@ import com.hadisatrio.optional.Optional
import io.reactivex.Flowable import io.reactivex.Flowable
import io.reactivex.Single import io.reactivex.Single
import io.reactivex.observers.TestObserver import io.reactivex.observers.TestObserver
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.* import org.mockito.Mockito.`when`
import org.mockito.Mockito.any
import org.mockito.junit.MockitoJUnitRunner import org.mockito.junit.MockitoJUnitRunner
@RunWith(MockitoJUnitRunner::class) @RunWith(MockitoJUnitRunner::class)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment