Commit 72652690 authored by Rafael Kellermann Streit's avatar Rafael Kellermann Streit Committed by GitHub

Merge pull request #507 from RocketChat/develop

[RELEASE] Merge develop into master
parents 189a3c69 a2acf159
...@@ -174,7 +174,7 @@ public class DDPClientImpl { ...@@ -174,7 +174,7 @@ public class DDPClientImpl {
disposables.clear(); disposables.clear();
} }
}, },
err -> task.setError(new DDPClientCallback.Ping.Timeout(client)) err -> task.trySetError(new DDPClientCallback.Ping.Timeout(client))
) )
); );
...@@ -213,7 +213,7 @@ public class DDPClientImpl { ...@@ -213,7 +213,7 @@ public class DDPClientImpl {
"error")) { "error")) {
String _id = response.optString("id"); String _id = response.optString("id");
if (id.equals(_id)) { if (id.equals(_id)) {
task.setError(new DDPSubscription.NoSub.Error(client, id, task.trySetError(new DDPSubscription.NoSub.Error(client, id,
response.optJSONObject("error"))); response.optJSONObject("error")));
disposables.clear(); disposables.clear();
} }
...@@ -284,7 +284,7 @@ public class DDPClientImpl { ...@@ -284,7 +284,7 @@ public class DDPClientImpl {
String _id = response.optString("id"); String _id = response.optString("id");
if (id.equals(_id)) { if (id.equals(_id)) {
if (!response.isNull("error")) { if (!response.isNull("error")) {
task.setError(new DDPClientCallback.RPC.Error(client, id, task.trySetError(new DDPClientCallback.RPC.Error(client, id,
response.optJSONObject("error"))); response.optJSONObject("error")));
} else { } else {
String result = response.optString("result"); String result = response.optString("result");
...@@ -296,7 +296,7 @@ public class DDPClientImpl { ...@@ -296,7 +296,7 @@ public class DDPClientImpl {
}, },
err -> { err -> {
if (err instanceof TimeoutException) { if (err instanceof TimeoutException) {
task.setError(new DDPClientCallback.RPC.Timeout(client)); task.trySetError(new DDPClientCallback.RPC.Timeout(client));
} }
} }
) )
...@@ -427,7 +427,7 @@ public class DDPClientImpl { ...@@ -427,7 +427,7 @@ public class DDPClientImpl {
} }
}, },
err -> { err -> {
task.trySetError(new Exception(err)); setTaskError(task, new Exception(err));
disposables.clear(); disposables.clear();
} }
) )
...@@ -442,7 +442,10 @@ public class DDPClientImpl { ...@@ -442,7 +442,10 @@ public class DDPClientImpl {
} }
} }
private void setTaskError(TaskCompletionSource<? extends RxWebSocketCallback.Base> task, Throwable throwable) { private void setTaskError(TaskCompletionSource task, Throwable throwable) {
if (task.getTask().isCompleted()) {
return;
}
if (throwable instanceof Exception) { if (throwable instanceof Exception) {
task.setError((Exception) throwable); task.setError((Exception) throwable);
} else { } else {
......
...@@ -46,8 +46,8 @@ android { ...@@ -46,8 +46,8 @@ android {
applicationId "chat.rocket.android" applicationId "chat.rocket.android"
minSdkVersion 16 minSdkVersion 16
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 40 versionCode 41
versionName "1.0.20" versionName "1.0.21"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true vectorDrawables.useSupportLibrary = true
multiDexEnabled true multiDexEnabled true
......
...@@ -121,7 +121,6 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract ...@@ -121,7 +121,6 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract
} }
} }
}); });
}
if (toolbar != null) { if (toolbar != null) {
toolbar.setNavigationOnClickListener(view -> { toolbar.setNavigationOnClickListener(view -> {
...@@ -131,6 +130,7 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract ...@@ -131,6 +130,7 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract
}); });
} }
} }
}
private boolean closeSidebarIfNeeded() { private boolean closeSidebarIfNeeded() {
// REMARK: Tablet UI doesn't have SlidingPane! // REMARK: Tablet UI doesn't have SlidingPane!
...@@ -251,12 +251,6 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract ...@@ -251,12 +251,6 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract
R.string.server_config_activity_authenticating, Snackbar.LENGTH_INDEFINITE)); R.string.server_config_activity_authenticating, Snackbar.LENGTH_INDEFINITE));
} }
public void showLogoutMessage() {
statusTicker.updateStatus(StatusTicker.STATUS_LOGGING_OUT,
Snackbar.make(findViewById(getLayoutContainerForFragment()),
"Logging Out...", Snackbar.LENGTH_INDEFINITE));
}
@Override @Override
public void showConnectionOk() { public void showConnectionOk() {
statusTicker.updateStatus(StatusTicker.STATUS_DISMISS, null); statusTicker.updateStatus(StatusTicker.STATUS_DISMISS, null);
...@@ -314,11 +308,6 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract ...@@ -314,11 +308,6 @@ public class MainActivity extends AbstractAuthedActivity implements MainContract
} }
} }
@DebugLog
public void hideLogoutMessage() {
statusTicker.updateStatus(StatusTicker.STATUS_DISMISS, null);
}
@DebugLog @DebugLog
public void onLogout() { public void onLogout() {
if (new RocketChatCache(getApplicationContext()).getSelectedServerHostname() == null) { if (new RocketChatCache(getApplicationContext()).getSelectedServerHostname() == null) {
......
...@@ -34,6 +34,7 @@ import chat.rocket.android.fragment.sidebar.SidebarMainFragment; ...@@ -34,6 +34,7 @@ import chat.rocket.android.fragment.sidebar.SidebarMainFragment;
import chat.rocket.android.helper.AbsoluteUrlHelper; import chat.rocket.android.helper.AbsoluteUrlHelper;
import chat.rocket.android.helper.FileUploadHelper; import chat.rocket.android.helper.FileUploadHelper;
import chat.rocket.android.helper.LoadMoreScrollListener; import chat.rocket.android.helper.LoadMoreScrollListener;
import chat.rocket.android.helper.Logger;
import chat.rocket.android.helper.OnBackPressListener; import chat.rocket.android.helper.OnBackPressListener;
import chat.rocket.android.helper.RecyclerViewAutoScrollManager; import chat.rocket.android.helper.RecyclerViewAutoScrollManager;
import chat.rocket.android.helper.RecyclerViewScrolledToBottomListener; import chat.rocket.android.helper.RecyclerViewScrolledToBottomListener;
...@@ -49,6 +50,7 @@ import chat.rocket.android.layouthelper.extra_action.upload.AbstractUploadAction ...@@ -49,6 +50,7 @@ import chat.rocket.android.layouthelper.extra_action.upload.AbstractUploadAction
import chat.rocket.android.layouthelper.extra_action.upload.AudioUploadActionItem; import chat.rocket.android.layouthelper.extra_action.upload.AudioUploadActionItem;
import chat.rocket.android.layouthelper.extra_action.upload.ImageUploadActionItem; import chat.rocket.android.layouthelper.extra_action.upload.ImageUploadActionItem;
import chat.rocket.android.layouthelper.extra_action.upload.VideoUploadActionItem; import chat.rocket.android.layouthelper.extra_action.upload.VideoUploadActionItem;
import chat.rocket.android.log.RCLog;
import chat.rocket.android.renderer.RocketChatUserStatusProvider; import chat.rocket.android.renderer.RocketChatUserStatusProvider;
import chat.rocket.android.service.ConnectivityManager; import chat.rocket.android.service.ConnectivityManager;
import chat.rocket.android.service.temp.DeafultTempSpotlightRoomCaller; import chat.rocket.android.service.temp.DeafultTempSpotlightRoomCaller;
...@@ -340,6 +342,7 @@ public class RoomFragment extends AbstractChatRoomFragment implements ...@@ -340,6 +342,7 @@ public class RoomFragment extends AbstractChatRoomFragment implements
SlidingPaneLayout subPane = getActivity().findViewById(R.id.sub_sliding_pane); SlidingPaneLayout subPane = getActivity().findViewById(R.id.sub_sliding_pane);
sidebarFragment = (SidebarMainFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.sidebar_fragment_container); sidebarFragment = (SidebarMainFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.sidebar_fragment_container);
if (pane != null) {
pane.setPanelSlideListener(new SlidingPaneLayout.PanelSlideListener() { pane.setPanelSlideListener(new SlidingPaneLayout.PanelSlideListener() {
@Override @Override
public void onPanelSlide(View view, float v) { public void onPanelSlide(View view, float v) {
...@@ -363,6 +366,7 @@ public class RoomFragment extends AbstractChatRoomFragment implements ...@@ -363,6 +366,7 @@ public class RoomFragment extends AbstractChatRoomFragment implements
} }
}); });
} }
}
public void closeUserActionContainer() { public void closeUserActionContainer() {
sidebarFragment.closeUserActionContainer(); sidebarFragment.closeUserActionContainer();
...@@ -537,6 +541,8 @@ public class RoomFragment extends AbstractChatRoomFragment implements ...@@ -537,6 +541,8 @@ public class RoomFragment extends AbstractChatRoomFragment implements
try { try {
inputContentInfo.releasePermission(); inputContentInfo.releasePermission();
} catch (Exception e) { } catch (Exception e) {
RCLog.e(e);
Logger.report(e);
} }
return true; return true;
...@@ -552,10 +558,12 @@ public class RoomFragment extends AbstractChatRoomFragment implements ...@@ -552,10 +558,12 @@ public class RoomFragment extends AbstractChatRoomFragment implements
@Override @Override
public void setupWith(RocketChatAbsoluteUrl rocketChatAbsoluteUrl) { public void setupWith(RocketChatAbsoluteUrl rocketChatAbsoluteUrl) {
if (rocketChatAbsoluteUrl != null) {
token = rocketChatAbsoluteUrl.getToken(); token = rocketChatAbsoluteUrl.getToken();
userId = rocketChatAbsoluteUrl.getUserId(); userId = rocketChatAbsoluteUrl.getUserId();
messageListAdapter.setAbsoluteUrl(rocketChatAbsoluteUrl); messageListAdapter.setAbsoluteUrl(rocketChatAbsoluteUrl);
} }
}
@Override @Override
public void render(Room room) { public void render(Room room) {
...@@ -657,6 +665,9 @@ public class RoomFragment extends AbstractChatRoomFragment implements ...@@ -657,6 +665,9 @@ public class RoomFragment extends AbstractChatRoomFragment implements
} }
private void showRoomListFragment(int actionId) { private void showRoomListFragment(int actionId) {
//TODO: oddly sometimes getActivity() yields null. Investigate the situations this might happen
//and fix it, removing this null-check
if (getActivity() != null) {
Intent intent = new Intent(getActivity(), RoomActivity.class).putExtra("actionId", actionId) Intent intent = new Intent(getActivity(), RoomActivity.class).putExtra("actionId", actionId)
.putExtra("roomId", roomId) .putExtra("roomId", roomId)
.putExtra("roomType", roomType) .putExtra("roomType", roomType)
...@@ -665,4 +676,5 @@ public class RoomFragment extends AbstractChatRoomFragment implements ...@@ -665,4 +676,5 @@ public class RoomFragment extends AbstractChatRoomFragment implements
.putExtra("userId", userId); .putExtra("userId", userId);
startActivity(intent); startActivity(intent);
} }
}
} }
\ No newline at end of file
...@@ -19,6 +19,7 @@ import com.jakewharton.rxbinding2.support.v7.widget.RxSearchView; ...@@ -19,6 +19,7 @@ import com.jakewharton.rxbinding2.support.v7.widget.RxSearchView;
import com.jakewharton.rxbinding2.widget.RxCompoundButton; import com.jakewharton.rxbinding2.widget.RxCompoundButton;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import bolts.Task; import bolts.Task;
...@@ -58,7 +59,7 @@ public class SidebarMainFragment extends AbstractFragment implements SidebarMain ...@@ -58,7 +59,7 @@ public class SidebarMainFragment extends AbstractFragment implements SidebarMain
private RoomListAdapter adapter; private RoomListAdapter adapter;
private SearchView searchView; private SearchView searchView;
private TextView loadMoreResultsText; private TextView loadMoreResultsText;
private List<RoomSidebar> roomSidebarList; private List<RoomSidebar> roomSidebarList = Collections.emptyList();
private Disposable spotlightDisposable; private Disposable spotlightDisposable;
private String hostname; private String hostname;
private static final String HOSTNAME = "hostname"; private static final String HOSTNAME = "hostname";
...@@ -325,7 +326,6 @@ public class SidebarMainFragment extends AbstractFragment implements SidebarMain ...@@ -325,7 +326,6 @@ public class SidebarMainFragment extends AbstractFragment implements SidebarMain
public void onLogoutCleanUp() { public void onLogoutCleanUp() {
Activity activity = getActivity(); Activity activity = getActivity();
if (activity != null && activity instanceof MainActivity) { if (activity != null && activity instanceof MainActivity) {
((MainActivity) activity).hideLogoutMessage();
((MainActivity) activity).onLogout(); ((MainActivity) activity).onLogout();
presenter.onLogout(task -> { presenter.onLogout(task -> {
if (task.isFaulted()) { if (task.isFaulted()) {
...@@ -343,7 +343,6 @@ public class SidebarMainFragment extends AbstractFragment implements SidebarMain ...@@ -343,7 +343,6 @@ public class SidebarMainFragment extends AbstractFragment implements SidebarMain
presenter.beforeLogoutCleanUp(); presenter.beforeLogoutCleanUp();
final Activity activity = getActivity(); final Activity activity = getActivity();
if (activity != null && activity instanceof MainActivity) { if (activity != null && activity instanceof MainActivity) {
((MainActivity) activity).showLogoutMessage();
// Clear subscriptions on MainPresenter. // Clear subscriptions on MainPresenter.
((MainActivity) activity).beforeLogoutCleanUp(); ((MainActivity) activity).beforeLogoutCleanUp();
} }
......
...@@ -2,6 +2,7 @@ package chat.rocket.android.fragment.sidebar; ...@@ -2,6 +2,7 @@ package chat.rocket.android.fragment.sidebar;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v4.util.Pair; import android.support.v4.util.Pair;
import android.webkit.CookieManager;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -154,7 +155,8 @@ public class SidebarMainPresenter extends BasePresenter<SidebarMainContract.View ...@@ -154,7 +155,8 @@ public class SidebarMainPresenter extends BasePresenter<SidebarMainContract.View
String currentHostname = rocketChatCache.getSelectedServerHostname(); String currentHostname = rocketChatCache.getSelectedServerHostname();
RealmHelper realmHelper = RealmStore.getOrCreate(currentHostname); RealmHelper realmHelper = RealmStore.getOrCreate(currentHostname);
realmHelper.executeTransaction(realm -> { realmHelper.executeTransaction(realm -> {
realm.deleteAll(); realm.executeTransactionAsync(realmObj -> realmObj.deleteAll());
CookieManager.getInstance().removeAllCookie();
ConnectivityManagerApi connectivityManagerApi = ConnectivityManager.getInstance(RocketChatApplication.getInstance()); ConnectivityManagerApi connectivityManagerApi = ConnectivityManager.getInstance(RocketChatApplication.getInstance());
connectivityManagerApi.removeServer(currentHostname); connectivityManagerApi.removeServer(currentHostname);
rocketChatCache.removeHostname(currentHostname); rocketChatCache.removeHostname(currentHostname);
......
...@@ -12,6 +12,7 @@ import java.util.HashMap; ...@@ -12,6 +12,7 @@ import java.util.HashMap;
import java.util.concurrent.Semaphore; import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import chat.rocket.android.helper.Logger;
import chat.rocket.persistence.realm.RealmStore; import chat.rocket.persistence.realm.RealmStore;
import hugo.weaving.DebugLog; import hugo.weaving.DebugLog;
import rx.Observable; import rx.Observable;
...@@ -113,6 +114,10 @@ public class RocketChatService extends Service implements ConnectivityServiceInt ...@@ -113,6 +114,10 @@ public class RocketChatService extends Service implements ConnectivityServiceInt
.doOnSuccess(thread -> { .doOnSuccess(thread -> {
webSocketThreads.put(hostname, thread); webSocketThreads.put(hostname, thread);
webSocketThreadLock.release(); webSocketThreadLock.release();
})
.doOnError(throwable -> {
Logger.report(throwable);
webSocketThreadLock.release();
}); });
}); });
} }
......
...@@ -122,7 +122,7 @@ public class RealmHelper { ...@@ -122,7 +122,7 @@ public class RealmHelper {
return task.getTask(); return task.getTask();
} }
private Task<Void> executeTransactionAsync(final RealmHelper.Transaction transaction) { public Task<Void> executeTransactionAsync(final RealmHelper.Transaction transaction) {
final TaskCompletionSource<Void> task = new TaskCompletionSource<>(); final TaskCompletionSource<Void> task = new TaskCompletionSource<>();
final Realm realm = instance(); final Realm realm = instance();
......
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