Skip to content

Instantly share code, notes, and snippets.

View AlexPrestonSB's full-sized avatar

Alex Preston AlexPrestonSB

View GitHub Profile
@AlexPrestonSB
AlexPrestonSB / FileMessage.java
Last active August 7, 2020 21:39
Sending a File Message.
//File Message
// Sending a file message with a raw file
List<FileMessage.ThumbnailSize> thumbnailSizes = new ArrayList<>();
thumbnailSizes.add(new ThumbnailSize(100,100));
FileMessageParams params = new FileMessageParams()
.setFile(FILE)
.setFileName(FILE_NAME)
.setFileSize(FILE_SIZE)
.setMimeType(MIME_TYPE)
@AlexPrestonSB
AlexPrestonSB / UserMessage.java
Created August 7, 2020 21:22
Sending a User Message.
//User Message
List<String> translationTargetLanguages = new ArrayList<>();
translationTargetLanguages.add("fr"); // French
translationTargetLanguages.add("de"); // German
UserMessageParams params = new UserMessageParams()
.setMessage(TEXT_MESSAGE)
.setCustomType(CUSTOM_TYPE)
.setData(DATA)
.setTranslationTargetLanguages(translationTargetLanguages)
class GroupChannelChatPresenterImpl @Inject constructor(private val preferenceHelper: AppPreferenceHelper) :
GroupChannelChatPresenter {
private lateinit var view: GroupChannelChatView
private lateinit var channelUrl: String
private lateinit var message: String
private var channel: GroupChannel? = null
private lateinit var context: Context
class GroupChannelChatActivity : AppCompatActivity(), GroupChannelChatView, GroupChannelChatAdapter.OnItemClickListener {
private val EXTRA_CHANNEL_URL = "EXTRA_CHANNEL_URL"
@Inject
lateinit var presenter: GroupChannelChatPresenterImpl
private lateinit var recyclerView: RecyclerView
private lateinit var adapter: GroupChannelChatAdapter
class GroupChannelChatAdapter(context: Context, listener: OnItemClickListener) :
RecyclerView.Adapter<RecyclerView.ViewHolder>() {
private var messages: MutableList<BaseMessage>
private var context: Context
private var listener: OnItemClickListener
init {
messages = ArrayList()
this.context = context
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text_gchat_map_date_other"
android:layout_width="wrap_content"
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin">
<TextView
private class ChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int VIEW_TYPE_MESSAGE_SENT = 1;
private static final int VIEW_TYPE_MESSAGE_RECEIVED = 2;
private ArrayList<BaseMessage> mMessageList;
private OpenChannel mChannel;
ChatAdapter(OpenChannel channel) {
mMessageList = new ArrayList<>();
mChannel = channel;
@Override
protected void onResume() {
super.onResume();
// Receives messages from SendBird servers
SendBird.addChannelHandler(CHANNEL_HANDLER_ID, new SendBird.ChannelHandler() {
@Override
public void onMessageReceived(BaseChannel baseChannel, BaseMessage baseMessage) {
if (baseChannel.getUrl().equals(mChannelUrl) && baseMessage instanceof UserMessage) {
mChatAdapter.appendMessage((UserMessage) baseMessage);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
mSendButton = (Button) findViewById(R.id.button_chat_send);
mMessageEditText = (EditText) findViewById(R.id.edittext_chat);
mRecyclerView = (RecyclerView) findViewById(R.id.reycler_chat);
mLayoutManager = new LinearLayoutManager(this);