Commit cbda8984 authored by Leonardo Aramaki's avatar Leonardo Aramaki

Refactor indentation

parent 49c0e63b
...@@ -18,81 +18,81 @@ import chat.rocket.core.repositories.PublicSettingRepository; ...@@ -18,81 +18,81 @@ import chat.rocket.core.repositories.PublicSettingRepository;
import io.reactivex.android.schedulers.AndroidSchedulers; 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 {
private final LoginServiceConfigurationRepository loginServiceConfigurationRepository; private final LoginServiceConfigurationRepository loginServiceConfigurationRepository;
private final PublicSettingRepository publicSettingRepository; private final PublicSettingRepository publicSettingRepository;
private final MethodCallHelper methodCallHelper; private final MethodCallHelper methodCallHelper;
public LoginPresenter(LoginServiceConfigurationRepository loginServiceConfigurationRepository, public LoginPresenter(LoginServiceConfigurationRepository loginServiceConfigurationRepository,
PublicSettingRepository publicSettingRepository, PublicSettingRepository publicSettingRepository,
MethodCallHelper methodCallHelper) { MethodCallHelper methodCallHelper) {
this.loginServiceConfigurationRepository = loginServiceConfigurationRepository; this.loginServiceConfigurationRepository = loginServiceConfigurationRepository;
this.publicSettingRepository = publicSettingRepository; this.publicSettingRepository = publicSettingRepository;
this.methodCallHelper = methodCallHelper; this.methodCallHelper = methodCallHelper;
}
@Override
public void bindView(@NonNull LoginContract.View view) {
super.bindView(view);
getLoginServices();
}
@Override
public void login(String username, String password) {
if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
return;
} }
view.showLoader(); @Override
public void bindView(@NonNull LoginContract.View view) {
addSubscription( super.bindView(view);
publicSettingRepository.getById(PublicSettingsConstants.LDAP.ENABLE)
.subscribeOn(AndroidSchedulers.from(BackgroundLooper.get())) getLoginServices();
.observeOn(AndroidSchedulers.mainThread()) }
.subscribe(
publicSettingOptional -> doLogin(username, password, publicSettingOptional), @Override
Logger::report public void login(String username, String password) {
) if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
); return;
} }
private void getLoginServices() { view.showLoader();
addSubscription(
loginServiceConfigurationRepository.getAll() addSubscription(
.subscribeOn(AndroidSchedulers.from(BackgroundLooper.get())) publicSettingRepository.getById(PublicSettingsConstants.LDAP.ENABLE)
.observeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.from(BackgroundLooper.get()))
.subscribe( .observeOn(AndroidSchedulers.mainThread())
loginServiceConfigurations -> view.showLoginServices(loginServiceConfigurations), .subscribe(
Logger::report publicSettingOptional -> doLogin(username, password, publicSettingOptional),
) Logger::report
); )
} );
}
private void doLogin(String username, String password, Optional<PublicSetting> optional) {
call(username, password, optional) private void getLoginServices() {
.continueWith(task -> { addSubscription(
if (task.isFaulted()) { loginServiceConfigurationRepository.getAll()
view.hideLoader(); .subscribeOn(AndroidSchedulers.from(BackgroundLooper.get()))
.observeOn(AndroidSchedulers.mainThread())
final Exception error = task.getError(); .subscribe(
loginServiceConfigurations -> view.showLoginServices(loginServiceConfigurations),
if (error instanceof TwoStepAuthException) { Logger::report
view.showTwoStepAuth(); )
} else { );
view.showError(error.getMessage());
}
}
return null;
}, Task.UI_THREAD_EXECUTOR);
}
private Task<Void> call(String username, String password, Optional<PublicSetting> optional) {
if (optional.isPresent() && optional.get().getValueAsBoolean()) {
return methodCallHelper.loginWithLdap(username, password);
} }
return methodCallHelper.loginWithEmail(username, password); private void doLogin(String username, String password, Optional<PublicSetting> optional) {
} call(username, password, optional)
.continueWith(task -> {
if (task.isFaulted()) {
view.hideLoader();
final Exception error = task.getError();
if (error instanceof TwoStepAuthException) {
view.showTwoStepAuth();
} else {
view.showError(error.getMessage());
}
}
return null;
}, Task.UI_THREAD_EXECUTOR);
}
private Task<Void> call(String username, String password, Optional<PublicSetting> optional) {
if (optional.isPresent() && optional.get().getValueAsBoolean()) {
return methodCallHelper.loginWithLdap(username, password);
}
return methodCallHelper.loginWithEmail(username, password);
}
} }
...@@ -55,309 +55,310 @@ import io.reactivex.android.schedulers.AndroidSchedulers; ...@@ -55,309 +55,310 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
public class SidebarMainFragment extends AbstractFragment implements SidebarMainContract.View { public class SidebarMainFragment extends AbstractFragment implements SidebarMainContract.View {
private SidebarMainContract.Presenter presenter; private SidebarMainContract.Presenter presenter;
private RoomListAdapter adapter; private RoomListAdapter adapter;
private SearchView searchView; private SearchView searchView;
private TextView loadMoreResultsText; private TextView loadMoreResultsText;
private List<RoomSidebar> roomSidebarList = Collections.emptyList(); 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";
public SidebarMainFragment() {} public SidebarMainFragment() {
}
/**
* build SidebarMainFragment with hostname.
*/
public static SidebarMainFragment create(String hostname) {
Bundle args = new Bundle();
args.putString(HOSTNAME, hostname);
SidebarMainFragment fragment = new SidebarMainFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
hostname = getArguments().getString(HOSTNAME);
RealmUserRepository userRepository = new RealmUserRepository(hostname);
AbsoluteUrlHelper absoluteUrlHelper = new AbsoluteUrlHelper(
hostname,
new RealmServerInfoRepository(),
userRepository,
new SessionInteractor(new RealmSessionRepository(hostname))
);
RocketChatCache rocketChatCache = new RocketChatCache(getContext().getApplicationContext());
presenter = new SidebarMainPresenter(
hostname,
new RoomInteractor(new RealmRoomRepository(hostname)),
userRepository,
rocketChatCache,
absoluteUrlHelper,
new MethodCallHelper(getContext(), hostname),
new RealmSpotlightRepository(hostname)
);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
presenter.bindView(this);
return view;
}
@Override
public void onDestroyView() {
presenter.release();
super.onDestroyView();
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() {
super.onPause();
}
@Override
protected int getLayout() {
return R.layout.fragment_sidebar_main;
}
@SuppressLint("RxLeakedSubscription")
@Override
protected void onSetupView() {
setupUserActionToggle();
setupUserStatusButtons();
setupLogoutButton();
setupVersionInfo();
searchView = rootView.findViewById(R.id.search);
adapter = new RoomListAdapter();
adapter.setOnItemClickListener(new RoomListAdapter.OnItemClickListener() {
@Override
public void onItemClick(RoomSidebar roomSidebar) {
searchView.setQuery(null, false);
searchView.clearFocus();
presenter.onRoomSelected(roomSidebar);
}
@Override /**
public void onItemClick(Spotlight spotlight) { * build SidebarMainFragment with hostname.
searchView.setQuery(null, false); */
searchView.clearFocus(); public static SidebarMainFragment create(String hostname) {
presenter.onSpotlightSelected(spotlight); Bundle args = new Bundle();
} args.putString(HOSTNAME, hostname);
});
SidebarMainFragment fragment = new SidebarMainFragment();
RecyclerView recyclerView = rootView.findViewById(R.id.room_list_container); fragment.setArguments(args);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
recyclerView.setAdapter(adapter); return fragment;
}
loadMoreResultsText = rootView.findViewById(R.id.text_load_more_results);
@Override
RxSearchView.queryTextChanges(searchView) public void onCreate(@Nullable Bundle savedInstanceState) {
.observeOn(AndroidSchedulers.mainThread()) super.onCreate(savedInstanceState);
.subscribe(charSequence -> {
if (spotlightDisposable != null && !spotlightDisposable.isDisposed()) { hostname = getArguments().getString(HOSTNAME);
spotlightDisposable.dispose(); RealmUserRepository userRepository = new RealmUserRepository(hostname);
}
presenter.disposeSubscriptions(); AbsoluteUrlHelper absoluteUrlHelper = new AbsoluteUrlHelper(
if (charSequence.length() == 0) { hostname,
loadMoreResultsText.setVisibility(View.GONE); new RealmServerInfoRepository(),
adapter.setMode(RoomListAdapter.MODE_ROOM); userRepository,
presenter.bindView(this); new SessionInteractor(new RealmSessionRepository(hostname))
} else {
filterRoomSidebarList(charSequence);
}
});
loadMoreResultsText.setOnClickListener(view -> loadMoreResults());
}
@Override
public void showRoomSidebarList(@NonNull List<RoomSidebar> roomSidebarList) {
this.roomSidebarList = roomSidebarList;
adapter.setRoomSidebarList(roomSidebarList);
}
@Override
public void filterRoomSidebarList(CharSequence term) {
List<RoomSidebar> filteredRoomSidebarList = new ArrayList<>();
for (RoomSidebar roomSidebar: roomSidebarList) {
if (roomSidebar.getRoomName().contains(term)) {
filteredRoomSidebarList.add(roomSidebar);
}
}
if (filteredRoomSidebarList.isEmpty()) {
loadMoreResults();
} else {
loadMoreResultsText.setVisibility(View.VISIBLE);
adapter.setMode(RoomListAdapter.MODE_ROOM);
adapter.setRoomSidebarList(filteredRoomSidebarList);
}
}
private void loadMoreResults() {
spotlightDisposable = presenter.searchSpotlight(searchView.getQuery().toString())
.toObservable()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::showSearchSuggestions);
}
private void showSearchSuggestions(List<Spotlight> spotlightList) {
loadMoreResultsText.setVisibility(View.GONE);
adapter.setMode(RoomListAdapter.MODE_SPOTLIGHT);
adapter.setSpotlightList(spotlightList);
}
@SuppressLint("RxLeakedSubscription")
private void setupUserActionToggle() {
final CompoundButton toggleUserAction = rootView.findViewById(R.id.toggle_user_action);
toggleUserAction.setFocusableInTouchMode(false);
rootView.findViewById(R.id.user_info_container).setOnClickListener(view -> toggleUserAction.toggle());
RxCompoundButton.checkedChanges(toggleUserAction)
.compose(bindToLifecycle())
.subscribe(
this::showUserActionContainer,
Logger::report
); );
}
RocketChatCache rocketChatCache = new RocketChatCache(getContext().getApplicationContext());
public void showUserActionContainer(boolean show) {
rootView.findViewById(R.id.user_action_outer_container) presenter = new SidebarMainPresenter(
.setVisibility(show ? View.VISIBLE : View.GONE); hostname,
} new RoomInteractor(new RealmRoomRepository(hostname)),
userRepository,
public void toggleUserActionContainer(boolean checked) { rocketChatCache,
CompoundButton toggleUserAction = rootView.findViewById(R.id.toggle_user_action); absoluteUrlHelper,
toggleUserAction.setChecked(checked); new MethodCallHelper(getContext(), hostname),
} new RealmSpotlightRepository(hostname)
);
@Override }
public void showScreen() {
rootView.setVisibility(View.VISIBLE); @Nullable
} @Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@Override View view = super.onCreateView(inflater, container, savedInstanceState);
public void showEmptyScreen() { presenter.bindView(this);
rootView.setVisibility(View.INVISIBLE); return view;
} }
@Override @Override
public void show(User user) { public void onDestroyView() {
onRenderCurrentUser(user); presenter.release();
updateRoomListMode(); super.onDestroyView();
} }
private void setupUserStatusButtons() { @Override
rootView.findViewById(R.id.btn_status_online).setOnClickListener(view -> { public void onResume() {
presenter.onUserOnline(); super.onResume();
closeUserActionContainer();
}); }
rootView.findViewById(R.id.btn_status_away).setOnClickListener(view -> {
presenter.onUserAway(); @Override
closeUserActionContainer(); public void onPause() {
});
rootView.findViewById(R.id.btn_status_busy).setOnClickListener(view -> { super.onPause();
presenter.onUserBusy(); }
closeUserActionContainer();
}); @Override
rootView.findViewById(R.id.btn_status_invisible).setOnClickListener(view -> { protected int getLayout() {
presenter.onUserOffline(); return R.layout.fragment_sidebar_main;
closeUserActionContainer(); }
});
} @SuppressLint("RxLeakedSubscription")
@Override
private void onRenderCurrentUser(User user) { protected void onSetupView() {
if (user != null) { setupUserActionToggle();
UserRenderer userRenderer = new UserRenderer(user); setupUserStatusButtons();
userRenderer.showAvatar(rootView.findViewById(R.id.current_user_avatar), hostname); setupLogoutButton();
userRenderer.showUsername(rootView.findViewById(R.id.current_user_name)); setupVersionInfo();
userRenderer.showStatusColor(rootView.findViewById(R.id.current_user_status));
searchView = rootView.findViewById(R.id.search);
adapter = new RoomListAdapter();
adapter.setOnItemClickListener(new RoomListAdapter.OnItemClickListener() {
@Override
public void onItemClick(RoomSidebar roomSidebar) {
searchView.setQuery(null, false);
searchView.clearFocus();
presenter.onRoomSelected(roomSidebar);
}
@Override
public void onItemClick(Spotlight spotlight) {
searchView.setQuery(null, false);
searchView.clearFocus();
presenter.onSpotlightSelected(spotlight);
}
});
RecyclerView recyclerView = rootView.findViewById(R.id.room_list_container);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
recyclerView.setAdapter(adapter);
loadMoreResultsText = rootView.findViewById(R.id.text_load_more_results);
RxSearchView.queryTextChanges(searchView)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(charSequence -> {
if (spotlightDisposable != null && !spotlightDisposable.isDisposed()) {
spotlightDisposable.dispose();
}
presenter.disposeSubscriptions();
if (charSequence.length() == 0) {
loadMoreResultsText.setVisibility(View.GONE);
adapter.setMode(RoomListAdapter.MODE_ROOM);
presenter.bindView(this);
} else {
filterRoomSidebarList(charSequence);
}
});
loadMoreResultsText.setOnClickListener(view -> loadMoreResults());
}
@Override
public void showRoomSidebarList(@NonNull List<RoomSidebar> roomSidebarList) {
this.roomSidebarList = roomSidebarList;
adapter.setRoomSidebarList(roomSidebarList);
}
@Override
public void filterRoomSidebarList(CharSequence term) {
List<RoomSidebar> filteredRoomSidebarList = new ArrayList<>();
for (RoomSidebar roomSidebar : roomSidebarList) {
if (roomSidebar.getRoomName().contains(term)) {
filteredRoomSidebarList.add(roomSidebar);
}
}
if (filteredRoomSidebarList.isEmpty()) {
loadMoreResults();
} else {
loadMoreResultsText.setVisibility(View.VISIBLE);
adapter.setMode(RoomListAdapter.MODE_ROOM);
adapter.setRoomSidebarList(filteredRoomSidebarList);
}
}
private void loadMoreResults() {
spotlightDisposable = presenter.searchSpotlight(searchView.getQuery().toString())
.toObservable()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::showSearchSuggestions);
}
private void showSearchSuggestions(List<Spotlight> spotlightList) {
loadMoreResultsText.setVisibility(View.GONE);
adapter.setMode(RoomListAdapter.MODE_SPOTLIGHT);
adapter.setSpotlightList(spotlightList);
} }
}
@SuppressLint("RxLeakedSubscription")
private void updateRoomListMode() { private void setupUserActionToggle() {
final List<RoomListHeader> roomListHeaders = new ArrayList<>(); final CompoundButton toggleUserAction = rootView.findViewById(R.id.toggle_user_action);
toggleUserAction.setFocusableInTouchMode(false);
roomListHeaders.add(new UnreadRoomListHeader(
getString(R.string.fragment_sidebar_main_unread_rooms_title) rootView.findViewById(R.id.user_info_container).setOnClickListener(view -> toggleUserAction.toggle());
));
RxCompoundButton.checkedChanges(toggleUserAction)
roomListHeaders.add(new FavoriteRoomListHeader( .compose(bindToLifecycle())
getString(R.string.fragment_sidebar_main_favorite_title) .subscribe(
)); this::showUserActionContainer,
Logger::report
roomListHeaders.add(new LivechatRoomListHeader( );
getString(R.string.fragment_sidebar_main_livechat_title) }
));
public void showUserActionContainer(boolean show) {
roomListHeaders.add(new ChannelRoomListHeader( rootView.findViewById(R.id.user_action_outer_container)
getString(R.string.fragment_sidebar_main_channels_title), .setVisibility(show ? View.VISIBLE : View.GONE);
() -> showAddRoomDialog(AddChannelDialogFragment.create(hostname)) }
));
roomListHeaders.add(new DirectMessageRoomListHeader( public void toggleUserActionContainer(boolean checked) {
getString(R.string.fragment_sidebar_main_direct_messages_title), CompoundButton toggleUserAction = rootView.findViewById(R.id.toggle_user_action);
() -> showAddRoomDialog(AddDirectMessageDialogFragment.create(hostname)) toggleUserAction.setChecked(checked);
)); }
adapter.setRoomListHeaders(roomListHeaders); @Override
} public void showScreen() {
rootView.setVisibility(View.VISIBLE);
@DebugLog }
@Override
public void onPreparedToLogOut() { @Override
final Activity activity = getActivity(); public void showEmptyScreen() {
if (activity != null && activity instanceof MainActivity) { rootView.setVisibility(View.INVISIBLE);
((MainActivity) activity).onLogout(); }
@Override
public void show(User user) {
onRenderCurrentUser(user);
updateRoomListMode();
}
private void setupUserStatusButtons() {
rootView.findViewById(R.id.btn_status_online).setOnClickListener(view -> {
presenter.onUserOnline();
closeUserActionContainer();
});
rootView.findViewById(R.id.btn_status_away).setOnClickListener(view -> {
presenter.onUserAway();
closeUserActionContainer();
});
rootView.findViewById(R.id.btn_status_busy).setOnClickListener(view -> {
presenter.onUserBusy();
closeUserActionContainer();
});
rootView.findViewById(R.id.btn_status_invisible).setOnClickListener(view -> {
presenter.onUserOffline();
closeUserActionContainer();
});
}
private void onRenderCurrentUser(User user) {
if (user != null) {
UserRenderer userRenderer = new UserRenderer(user);
userRenderer.showAvatar(rootView.findViewById(R.id.current_user_avatar), hostname);
userRenderer.showUsername(rootView.findViewById(R.id.current_user_name));
userRenderer.showStatusColor(rootView.findViewById(R.id.current_user_status));
}
} }
}
private void updateRoomListMode() {
private void setupLogoutButton() { final List<RoomListHeader> roomListHeaders = new ArrayList<>();
rootView.findViewById(R.id.btn_logout).setOnClickListener(view -> {
closeUserActionContainer(); roomListHeaders.add(new UnreadRoomListHeader(
// Clear relative data and set new hostname if any. getString(R.string.fragment_sidebar_main_unread_rooms_title)
presenter.prepareToLogOut(); ));
});
} roomListHeaders.add(new FavoriteRoomListHeader(
getString(R.string.fragment_sidebar_main_favorite_title)
public void clearSearchViewFocus() { ));
searchView.clearFocus();
} roomListHeaders.add(new LivechatRoomListHeader(
getString(R.string.fragment_sidebar_main_livechat_title)
public void closeUserActionContainer() { ));
final CompoundButton toggleUserAction = rootView.findViewById(R.id.toggle_user_action);
if (toggleUserAction != null && toggleUserAction.isChecked()) { roomListHeaders.add(new ChannelRoomListHeader(
toggleUserAction.setChecked(false); getString(R.string.fragment_sidebar_main_channels_title),
() -> showAddRoomDialog(AddChannelDialogFragment.create(hostname))
));
roomListHeaders.add(new DirectMessageRoomListHeader(
getString(R.string.fragment_sidebar_main_direct_messages_title),
() -> showAddRoomDialog(AddDirectMessageDialogFragment.create(hostname))
));
adapter.setRoomListHeaders(roomListHeaders);
}
@DebugLog
@Override
public void onPreparedToLogOut() {
final Activity activity = getActivity();
if (activity != null && activity instanceof MainActivity) {
((MainActivity) activity).onLogout();
}
} }
}
private void setupVersionInfo() { private void setupLogoutButton() {
TextView versionInfoView = rootView.findViewById(R.id.version_info); rootView.findViewById(R.id.btn_logout).setOnClickListener(view -> {
versionInfoView.setText(getString(R.string.version_info_text, BuildConfig.VERSION_NAME)); closeUserActionContainer();
} // Clear relative data and set new hostname if any.
presenter.prepareToLogOut();
});
}
private void showAddRoomDialog(DialogFragment dialog) { public void clearSearchViewFocus() {
dialog.show(getFragmentManager(), "AbstractAddRoomDialogFragment"); searchView.clearFocus();
} }
public void closeUserActionContainer() {
final CompoundButton toggleUserAction = rootView.findViewById(R.id.toggle_user_action);
if (toggleUserAction != null && toggleUserAction.isChecked()) {
toggleUserAction.setChecked(false);
}
}
private void setupVersionInfo() {
TextView versionInfoView = rootView.findViewById(R.id.version_info);
versionInfoView.setText(getString(R.string.version_info_text, BuildConfig.VERSION_NAME));
}
private void showAddRoomDialog(DialogFragment dialog) {
dialog.show(getFragmentManager(), "AbstractAddRoomDialogFragment");
}
} }
\ No newline at end of file
...@@ -12,7 +12,6 @@ import bolts.Task; ...@@ -12,7 +12,6 @@ import bolts.Task;
import chat.rocket.android.BackgroundLooper; import chat.rocket.android.BackgroundLooper;
import chat.rocket.android.RocketChatApplication; import chat.rocket.android.RocketChatApplication;
import chat.rocket.android.RocketChatCache; import chat.rocket.android.RocketChatCache;
import chat.rocket.android.activity.MainActivity;
import chat.rocket.android.api.MethodCallHelper; import chat.rocket.android.api.MethodCallHelper;
import chat.rocket.android.helper.AbsoluteUrlHelper; import chat.rocket.android.helper.AbsoluteUrlHelper;
import chat.rocket.android.helper.LogIfError; import chat.rocket.android.helper.LogIfError;
...@@ -243,11 +242,11 @@ public class SidebarMainPresenter extends BasePresenter<SidebarMainContract.View ...@@ -243,11 +242,11 @@ public class SidebarMainPresenter extends BasePresenter<SidebarMainContract.View
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(this::processUsers, Logger::report); .subscribe(this::processUsers, Logger::report);
addSubscription(subscription); addSubscription(subscription);
} }
private void processUsers(List<User> userList) { private void processUsers(List<User> userList) {
for (User user: userList) { for (User user : userList) {
for(RoomSidebar roomSidebar: roomSidebarList) { for (RoomSidebar roomSidebar : roomSidebarList) {
if (roomSidebar.getRoomName().equals(user.getUsername())) { if (roomSidebar.getRoomName().equals(user.getUsername())) {
roomSidebar.setUserStatus(user.getStatus()); roomSidebar.setUserStatus(user.getStatus());
} }
......
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