@Override public AbstractMessageViewHolder onCreateViewHolder(ViewGroup parent, int type) { int viewType = (int) Math.ceil(type / MessageType.Max); int messageType = type - viewType * MessageType.Max; MessageDisplayHandler handler = ChatSDK.ui().getMessageHandler(new MessageType(messageType)); return handler.newViewHolder(viewType == ViewTypeReply, activity); }
public static void startSearchActivity (final Context context) { if (context != null) { AlertDialog.Builder builder = new AlertDialog.Builder(context); final List<SearchActivityType> activities = new ArrayList<>(ChatSDK.ui().getSearchActivities()); activities.add(new SearchActivityType(ChatSDK.ui().getSearchActivity(), context.getString(R.string.search_with_name))); if (activities.size() == 1) { ChatSDK.ui().startActivity(context, activities.get(0).className); return; } String [] items = new String [activities.size()]; int i = 0; for (SearchActivityType activity : activities) { items[i++] = activity.title; } builder.setTitle(context.getString(R.string.search)).setItems(items, (dialogInterface, i1) -> { // Launch the appropriate context ChatSDK.ui().startActivity(context, activities.get(i1).className); }); builder.show(); } } }
protected void afterLogin() { // We pass the extras in case this activity was laucned by a push. In that case // we can load up the thread the message belongs to ChatSDK.ui().startMainActivity(this, extras); }
appIntent = new Intent(context, ChatSDK.ui().getLoginActivity()); } else if (AppBackgroundMonitor.shared().inBackground() && ChatSDK.auth().userAuthenticatedThisSession()) { appIntent = new Intent(context, ChatSDK.ui().getChatActivity()); ChatSDK.ui().notificationDisplayHandler().createMessageNotification(context, appIntent, userEntityID, title, body);
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); } } } } }); }
public void startProfilePicturesActivity(Context context, String userEntityID) { Intent intent = new Intent(context, getProfilePicturesActivity()); intent.putExtra(InterfaceManager.USER_ENTITY_ID, userEntityID); intent.putExtra(KeyGridPadding, gridPadding); intent.putExtra(KeyPictureMargin, pictureMargin); intent.putExtra(KeyPicturesPerRow, picturesPerRow); intent.putExtra(KeyMaxPictures, maxPictures); intent.putExtra(KeyHideButton, hideButton); intent.putExtra(KeyLimitWarning, getLimitWarning()); ChatSDK.ui().startActivity(context, intent); }
public void createMessageNotification(Message message) { Context context = ChatSDK.shared().context(); String threadID = message.getThread().getEntityID(); Intent openChatIntent = new Intent(context, ChatSDK.ui().getChatActivity()); openChatIntent.putExtra(InterfaceManager.THREAD_ENTITY_ID, threadID); openChatIntent.setAction(threadID); openChatIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); createMessageNotification(context, openChatIntent, message.getSender().getEntityID(), message.getSender().getName(), message.getText()); }
protected void onActivityResult(int requestCode, int resultCode, Intent data) { for(ChatOption option : ChatSDK.ui().getChatOptions()) { } }
public PagerAdapterTabs(FragmentManager fm) { super(fm); tabs = ChatSDK.ui().defaultTabs(); }
@Override public void showOptions() { removeUserFromChatOnExit = false; optionsHandler = ChatSDK.ui().getChatOptionsHandler(this); optionsHandler.show(this); }
@Override public void onBindViewHolder(AbstractMessageViewHolder holder, int position) { MessageListItem messageItem = getMessageItems().get(position); Message message = messageItem.getMessage(); holder.setMessage(message); if (message.getMessageStatus().equals(MessageSendStatus.Uploading) || (messageItem.progress > 0 && messageItem.progress < 1)) { holder.showProgressBar(messageItem.progress); } else { holder.hideProgressBar(); } for(MessageDisplayHandler handler : ChatSDK.ui().getMessageHandlers()) { handler.updateMessageCellView(messageItem.message, holder, activity); } }
@Override public boolean show(Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context); final List<ChatOption> options = ChatSDK.ui().getChatOptions(); String [] items = new String [options.size()]; int i = 0; for(ChatOption option : options) { items[i++] = option.getTitle(); } hasExecuted = false; builder.setTitle(context.getString(R.string.actions)).setItems(items, (dialogInterface, i1) -> { if(!hasExecuted) { executeOption(options.get(i1)); } hasExecuted = true; }); dialog = builder.show(); return true; }
protected void authenticateWithCachedToken () { showProgressDialog(getString(R.string.authenticating)); signInButton.setEnabled(false); ChatSDK.auth().authenticateWithCachedToken() .observeOn(AndroidSchedulers.mainThread()) .doFinally(() -> { signInButton.setEnabled(true); dismissProgressDialog(); }) .subscribe(() -> { ChatSDK.ui().startMainActivity(SplashScreenActivity.this); }, throwable -> { // startAuthenticationActivity(); }); }
public static String payloadAsString (Message message) { MessageDisplayHandler handler = ChatSDK.ui().getMessageHandler(message.getMessageType()); if (handler != null) { return handler.displayName(message); } return t(R.string.unknown_message); }