protected void addUserMetaUpdatedEventListener() { disposableList.add(ChatSDK.events().sourceOnMain() .filter(NetworkEvent.filterType(EventType.UserMetaUpdated)) .observeOn(AndroidSchedulers.mainThread()) .subscribe(networkEvent -> { if (networkEvent.user.equals(getUser())) { reloadData(); } })); }
public Completable userOn(final User user) { return Completable.create(e -> { final UserWrapper wrapper = new UserWrapper(user); disposableList.add(wrapper.onlineOn().doOnDispose(wrapper::onlineOff).subscribe(aBoolean -> { ChatSDK.events().source().onNext(NetworkEvent.userPresenceUpdated(user)); }, e::onError)); disposableList.add(wrapper.metaOn().doOnDispose(wrapper::metaOff).subscribe(user1 -> { ChatSDK.events().source().onNext(NetworkEvent.userMetaUpdated(user1)); e.onComplete(); }, e::onError)); }); }
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); disposableList.add(ChatSDK.events().sourceOnMain().filter(NetworkEvent.filterType(EventType.UserMetaUpdated, EventType.UserPresenceUpdated)) .observeOn(AndroidSchedulers.mainThread()) .subscribe(networkEvent -> { if (networkEvent.user.equals(getUser())) { reloadData(); } })); mainView = inflater.inflate(activityLayout(), null); setupTouchUIToDismissKeyboard(mainView, R.id.ivAvatar); initViews(); return mainView; }
ChatSDK.events().source().onNext(NetworkEvent.logout());
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { loadingMode = savedInstanceState.getInt(LOADING_MODE); clickMode = savedInstanceState.getInt(CLICK_MODE); isDialog = savedInstanceState.getBoolean(IS_DIALOG); } if (!isDialog) { setHasOptionsMenu(true); setRetainInstance(true); } disposables.add(ChatSDK.events().sourceOnMain() .filter(NetworkEvent.filterContactsChanged()) .subscribe(networkEvent -> loadData(false))); disposables.add(ChatSDK.events().sourceOnMain() .filter(NetworkEvent.filterType(EventType.UserPresenceUpdated)) .subscribe(networkEvent -> loadData(true))); }
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { disposableList.add(ChatSDK.events().sourceOnMain() .filter(mainEventFilter()) .subscribe(networkEvent -> { if (tabIsVisible) { reloadData(); } })); disposableList.add(ChatSDK.events().sourceOnMain() .filter(NetworkEvent.filterType(EventType.TypingStateChanged)) .subscribe(networkEvent -> { if (tabIsVisible) { adapter.setTyping(networkEvent.thread, networkEvent.text); adapter.notifyDataSetChanged(); } })); reloadData(); mainView = inflater.inflate(activityLayout(), null); initViews(); return mainView; }
@Override protected void onResume() { super.onResume(); disposableList.dispose(); disposableList.add(ChatSDK.events().sourceOnMain() .filter(NetworkEvent.filterType(EventType.Logout)) .subscribe(networkEvent -> clearData())); updateLocalNotificationsForTab(); reloadData(); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initActionBar(); if (savedInstanceState != null) { getDataFromBundle(savedInstanceState); } else { if (getIntent().getExtras() != null) { getDataFromBundle(getIntent().getExtras()); } } // Refresh the list when the contacts change ChatSDK.events().sourceOnMain() .filter(NetworkEvent.filterContactsChanged()) .subscribe(networkEvent -> loadData()); ChatSDK.events().sourceOnMain() .filter(NetworkEvent.filterType(EventType.UserMetaUpdated)) .subscribe(networkEvent -> loadData()); setContentView(activityLayout()); initViews(); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { getDataFromBundle(savedInstanceState); } else { if (getIntent().getExtras() != null) { getDataFromBundle(getIntent().getExtras()); } else { finish(); } } setContentView(activityLayout()); initViews(); disposableList.add(ChatSDK.events().sourceOnMain() .filter(NetworkEvent.threadUsersUpdated()) .subscribe(networkEvent -> loadData())); loadData(); }
disposableList.add(ChatSDK.events().sourceOnMain() .filter(NetworkEvent.filterType(EventType.MessageAdded, EventType.ThreadReadReceiptUpdated, EventType.MessageRemoved)) .filter(NetworkEvent.filterThreadEntityID(thread.getEntityID())) disposableList.add(ChatSDK.events().sourceOnMain() .filter(NetworkEvent.filterType(EventType.MessageRemoved)) .filter(NetworkEvent.filterThreadEntityID(thread.getEntityID())) })); disposableList.add(ChatSDK.events().sourceOnMain() .filter(NetworkEvent.filterType( EventType.ThreadDetailsUpdated, .subscribe(networkEvent -> messageListAdapter.notifyDataSetChanged())); disposableList.add(ChatSDK.events().sourceOnMain() .filter(NetworkEvent.filterType(EventType.UserMetaUpdated)).subscribe(networkEvent -> messageListAdapter.notifyDataSetChanged())); disposableList.add(ChatSDK.events().sourceOnMain() .filter(NetworkEvent.filterType(EventType.TypingStateChanged)).subscribe(networkEvent -> { if(networkEvent.thread.equals(thread)) {
public void handleLocalNotifications () { if (localNotificationDisposable != null) { localNotificationDisposable.dispose(); } // TODO: Check this localNotificationDisposable = ChatSDK.events().sourceOnMain() .filter(NetworkEvent.filterType(EventType.MessageAdded)) .subscribe(networkEvent -> { Message message = networkEvent.message; Thread thread = networkEvent.thread; if(message != null && !AppBackgroundMonitor.shared().inBackground()) { if (thread.typeIs(ThreadType.Private) || (thread.typeIs(ThreadType.Public) && ChatSDK.config().pushNotificationsForPublicChatRoomsEnabled)) { if(!message.getSender().isMe() && ChatSDK.ui().showLocalNotifications(message.getThread())) { ReadStatus status = message.readStatusForUser(ChatSDK.currentUser()); if (!message.isRead() && !status.is(ReadStatus.delivered())) { // Only show the alert if we'recyclerView not on the private threads tab ChatSDK.ui().notificationDisplayHandler().createMessageNotification(message); } } } } }); }