private void InitUIComponents() { mTopBarContainer = FindViewById(Resource.Id.top_bar_container); mTxtChannelUrl = FindViewById(Resource.Id.txt_channel_url) as TextView; mSettingsContainer = FindViewById(Resource.Id.settings_container); mSettingsContainer.Visibility = ViewStates.Gone; mBtnLeave = FindViewById(Resource.Id.btn_leave) as Button; mBtnLeave.Click += (sender, e) => { mSettingsContainer.Visibility = ViewStates.Gone; SendBirdSDK.Leave(SendBirdSDK.GetChannelUrl()); Finish(); }; mBtnClose = FindViewById(Resource.Id.btn_close) as ImageButton; mBtnClose.Click += (object sender, EventArgs e) => { Finish(); }; mBtnSettings = FindViewById(Resource.Id.btn_settings) as ImageButton; mBtnSettings.Click += (sender, e) => { if (mSettingsContainer.Visibility != ViewStates.Visible) { mSettingsContainer.Visibility = ViewStates.Visible; } else { mSettingsContainer.Visibility = ViewStates.Gone; } }; ResizeMenubar(); }
protected override void OnActivityResult(int requestCode, Android.App.Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CHANNEL_LIST) { if (resultCode == Android.App.Result.Ok && data != null) { mChannelUrl = data.GetStringExtra("channelUrl"); mSendBirdChatAdapter.Clear(); mSendBirdChatAdapter.NotifyDataSetChanged(); mMessageListQuery = SendBirdSDK.QueryMessageList(mChannelUrl); mMessageListQuery.OnResult += (sender, e) => { // mSyncContext.Post for RunOnUIThread mSyncContext.Post(delegate { foreach (var messageModel in e.Messages) { mSendBirdChatAdapter.AddMessageModel(messageModel); } mSendBirdChatAdapter.NotifyDataSetChanged(); mSendBirdChatFragment.mListView.SetSelection(mSendBirdChatAdapter.Count); SendBirdSDK.Join(mChannelUrl); SendBirdSDK.Connect(mSendBirdChatAdapter.GetMaxMessageTimestamp()); }, null); }; mMessageListQuery.Prev(long.MaxValue, 50); // Excute Query } } }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.SendBirdActivityChat); this.Window.SetSoftInputMode(SoftInput.StateAlwaysHidden); InitFragment(savedInstanceState); InitUIComponents(); InitSendBird(this.Intent.Extras); mMessageListQuery = SendBirdSDK.QueryMessageList(mChannelUrl); mMessageListQuery.OnResult += (sender, e) => { // mSyncContext.Post for RunOnUIThread mSyncContext.Post(delegate { foreach (var messageModel in e.Messages) { mSendBirdChatAdapter.AddMessageModel(messageModel); } mSendBirdChatFragment.mAdapter.NotifyDataSetChanged(); mSendBirdChatFragment.mListView.SetSelection(mSendBirdChatAdapter.Count); SendBirdSDK.Join(mChannelUrl); SendBirdSDK.Connect(mSendBirdChatAdapter.GetMaxMessageTimestamp()); }, null); }; mMessageListQuery.Prev(long.MaxValue, 50); // Excute Query }
private static string GetDisplayMemberNames(List <MessagingChannel.Member> members) { if (members.Count < 2) { return("No Members"); } else if (members.Count == 2) { StringBuilder names = new StringBuilder(); foreach (var member in members) { if (member.GetId().Equals(SendBirdSDK.GetUserId())) { continue; } names.Append(", " + member.name); } return(names.Remove(0, 2).ToString()); } else { return("Group " + members.Count); } }
private void InitUIComponents(View rootView) { mListView = rootView.FindViewById(Resource.Id.list) as ListView; mListView.Adapter = mAdapter; mListView.ItemClick += (sender, e) => { MessagingChannel messagingChannel = mAdapter[e.Position]; if (OnMessagingChannelSelected != null) { OnMessagingChannelSelected(this, new MessagingChannelEventArgs(messagingChannel)); } }; mListView.ItemLongClick += (sender, e) => { MessagingChannel messagingChannel = mAdapter[e.Position]; var builder = new Android.App.AlertDialog.Builder(this.Activity); builder.SetTitle("Leave"); builder.SetMessage("Do you want to leave this channel?"); builder.SetPositiveButton("Leave", (sender_child, e_child) => { mAdapter.Remove(e.Position); mAdapter.NotifyDataSetChanged(); SendBirdSDK.EndMessaging(messagingChannel.GetUrl()); }); builder.SetNeutralButton("Hide", (sender_child, e_child) => { mAdapter.Remove(e.Position); mAdapter.NotifyDataSetChanged(); SendBirdSDK.HideMessaging(messagingChannel.GetUrl()); }); builder.SetNegativeButton("Cancel", (EventHandler <DialogClickEventArgs>)null); var dialog = builder.Create(); dialog.Show(); }; }
private void InitSendBird(Bundle extras) { if (extras != null) { String appId = extras.GetString("appId"); String uuid = extras.GetString("uuid"); String userName = extras.GetString("userName"); mSyncContext = SynchronizationContext.Current; // required for ui update SendBirdEventHandler seh = new SendBirdEventHandler(); seh.OnConnect += (sender, e) => { }; seh.OnError += (sender, e) => { }; seh.OnMessagingEnded += (sender, e) => { }; seh.OnMessagingChannelUpdated += (sender, e) => { mSendBirdMessagingChannelAdapter.Replace(e.MessagingChannel); }; seh.OnMentionUpdated += (sender, e) => { }; SendBirdSDK.Init(appId); SendBirdSDK.Login(uuid, userName); SendBirdSDK.SetEventHandler(seh); } }
void SubmitOpenChat() { if (inputOpenChat.text.Length > 0) { SendBirdSDK.SendMessage(inputOpenChat.text); inputOpenChat.text = ""; } }
void SubmitMessaging() { if (inputMessaging.text.Length > 0) { SendBirdSDK.SendMessage(inputMessaging.text); inputMessaging.text = ""; } }
protected override void OnDestroy() { base.OnDestroy(); if (!mDoNotDisconnect) { SendBirdSDK.Disconnect(); } }
private void InitSendBird(Bundle extras) { String appId = extras.GetString("appId"); String uuid = extras.GetString("uuid"); String userName = extras.GetString("userName"); SendBirdSDK.Init(appId); SendBirdSDK.Login(uuid, userName); }
private void Send() { SendBirdSDK.SendMessage(mEtxtMessage.Text); mEtxtMessage.Text = string.Empty; if (Resources.Configuration.Orientation == Android.Content.Res.Orientation.Landscape) { Helper.HideKeyboard(this.Activity); } }
void Start() { string appId = "A7A2672C-AD11-11E4-8DAA-0A18B21C2D82"; // Release userId = SystemInfo.deviceUniqueIdentifier; SendBirdSDK.Init(appId); InitComponents(); mGameObject = gameObject; mEventProcessor = mGameObject.AddComponent <EventProcessor> (); }
private void InitSendBird(Bundle extras) { mSyncContext = SynchronizationContext.Current; String appId = extras.GetString("appId"); String uuid = extras.GetString("uuid"); String userName = extras.GetString("userName"); SendBirdSDK.Init(appId); SendBirdSDK.Login(uuid, userName); }
private static string GetDisplayCoverImageUrl(List <MessagingChannel.Member> members) { foreach (MessagingChannel.Member member in members) { if (member.id.Equals(SendBirdSDK.GetUserId())) { continue; } return(member.imageUrl); } return(string.Empty); }
private void InitSendBird(Bundle extras) { if (extras != null) { String appId = extras.GetString("appId"); String uuid = extras.GetString("uuid"); String userName = extras.GetString("userName"); SendBirdSDK.Init(appId); SendBirdSDK.Login(uuid, userName); } mSyncContext = SynchronizationContext.Current; // required for ui update }
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.Inflate(Resource.Layout.SendBirdFragmentChannelList, container, false); InitUIComponents(rootView); mChannelListQuery = SendBirdSDK.QueryChannelList(); mChannelListQuery.OnResult += (sender, e) => { mAdapter.AddAll(e.Channels); }; mChannelListQuery.Next(); // actually query to get channel list via API Client ShowChannelList(); return(rootView); }
public void SetTypeStatus(string userId, long timestamp) { if (userId.Equals(SendBirdSDK.GetUserId())) { return; } if (timestamp <= 0) { mTypeStatus.Remove(userId); } else { mTypeStatus[userId] = timestamp; } }
public void InitOpenChat() { currentUserName = inputUserName.text; SendBirdSDK.Login(userId, currentUserName); SendBirdEventHandler seh = new SendBirdEventHandler(); seh.OnConnect += (sender, e) => { mEventProcessor.QueueEvent(new Action(() => { txtOpenChatTitle.text = "#" + e.Channel.GetUrlWithoutAppPrefix(); selectedChannelUrl = e.Channel.url; })); }; seh.OnError += (sender, e) => { if (e.Exception != null) { Debug.Log(e.Exception.StackTrace); } }; seh.OnChannelLeft += (sender, e) => { }; seh.OnMessageReceived += (sender, e) => { mEventProcessor.QueueEvent(new Action(() => { Message message = e.Message as Message; txtOpenChatContent.text = txtOpenChatContent.text + (MessageRichText(message) + "\n"); ScrollToBottom(); })); }; seh.OnBroadcastMessageReceived += (sender, e) => { mEventProcessor.QueueEvent(new Action(() => { BroadcastMessage bm = e.Message as BroadcastMessage; txtOpenChatContent.text = txtOpenChatContent.text + (SystemMessageRichText(bm.message) + "\n"); })); }; seh.OnSystemMessageReceived += (sender, e) => { mEventProcessor.QueueEvent(new Action(() => { SystemMessage sm = e.Message as SystemMessage; txtOpenChatContent.text = txtOpenChatContent.text + (SystemMessageRichText(sm.message) + "\n"); })); }; seh.OnAllDataReceived += (sender, e) => { }; seh.OnMessageDelivery += (sender, e) => { }; SendBirdSDK.SetEventHandler(seh); }
public void OnQueryChannelList(List <Channel> channels) { mEventProcessor.QueueEvent(new Action(() => { foreach (UnityEngine.Object btnChannel in btnChannels) { GameObject.Destroy(btnChannel); } btnChannels.Clear(); foreach (Channel channel in channels) { GameObject btnChannel = Instantiate(channelListItemPrefab) as GameObject; btnChannel.GetComponent <Image>().sprite = uiTheme.channelButtonOff; if (channel.url == selectedChannelUrl) { btnChannel.GetComponent <Image>().overrideSprite = uiTheme.channelButtonOn; btnChannel.GetComponentInChildren <Text>().color = uiTheme.channelButtonOnColor; } else { btnChannel.GetComponent <Image>().overrideSprite = null; btnChannel.GetComponentInChildren <Text>().color = uiTheme.channelButtonOffColor; } Text text = btnChannel.GetComponentInChildren <Text> (); text.text = "#" + channel.GetUrlWithoutAppPrefix(); btnChannel.transform.SetParent(channelGridPannel.transform); btnChannel.transform.localScale = Vector3.one; btnChannels.Add(btnChannel); Channel channelFinal = channel; btnChannel.GetComponent <Button>().onClick.AddListener(() => { ResetOpenChatContent(); SendBirdSDK.Join(channelFinal.url); SendBirdSDK.Connect(GetMaxMessageTimestamp()); mEventProcessor.QueueEvent(new Action(() => { channelPanel.SetActive(false); SelectTab(TAB_MODE.CHANNEL); })); }); } })); }
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.Inflate(Resource.Layout.SendBirdFragmentMemberList, container, false); InitUIComponents(rootView); mMemberListQuery = SendBirdSDK.QueryMemberList(mChannelUrl); mMemberListQuery.OnResult += (sender, e) => { mAdapter.AddAll(e.Members); if (e.Members.Count <= 0) { Toast.MakeText(this.Activity, "No members.", ToastLength.Short).Show(); } }; mMemberListQuery.Next(); // actually query to get member list via API Client return(rootView); }
private void Upload(Android.Net.Uri uri) { try { // The projection contains the columns we want to return in our query. string[] projection = new[] { Android.Provider.MediaStore.Images.Media.InterfaceConsts.Data, Android.Provider.MediaStore.Images.Media.InterfaceConsts.MimeType, Android.Provider.MediaStore.Images.Media.InterfaceConsts.Size }; using (ICursor cursor = this.Activity.ContentResolver.Query(uri, projection, null, null, null)) { if (cursor != null) { cursor.MoveToFirst(); string path = cursor.GetString(cursor.GetColumnIndexOrThrow(Android.Provider.MediaStore.Images.Media.InterfaceConsts.Data)); string mime = cursor.GetString(cursor.GetColumnIndexOrThrow(Android.Provider.MediaStore.Images.Media.InterfaceConsts.MimeType)); int size = cursor.GetInt(cursor.GetColumnIndexOrThrow(Android.Provider.MediaStore.Images.Media.InterfaceConsts.Size)); cursor.Close(); if (path == null) { Toast.MakeText(this.Activity, "Uploading file must be located in local storage.", ToastLength.Long).Show(); } else { SendBirdSDK.UploadFile(path, mime, size, "", new SendBirdFileUploadEventHandler( (sender, e) => { if (e.Exception != null) { Console.WriteLine(e.Exception.StackTrace); Toast.MakeText(this.Activity, "Fail to upload the file.", ToastLength.Long).Show(); } SendBirdSDK.SendFile(e.FileInfo); } )); } } } } catch (Exception e) { Console.WriteLine(e.StackTrace); Toast.MakeText(this.Activity, "Fail to upload the file.", ToastLength.Long).Show(); } }
void OpenChannelList(int limit = 30) { mEventProcessor.QueueEvent(new Action(() => { channelPanel.SetActive(true); })); mChannelListQuery = SendBirdSDK.QueryChannelList(); mChannelListQuery.SetLimit(limit); mChannelListQuery.OnResult += (sender, e) => { if (e.Exception != null) { Debug.Log(e.Exception.StackTrace); } else { OnQueryChannelList(e.Channels); } }; mChannelListQuery.Next(); }
void OpenUserList() { currentUserName = inputUserName.text; SendBirdSDK.Login(userId, currentUserName); mEventProcessor.QueueEvent(new Action(() => { userListPanel.SetActive(true); })); mUserListQuery = SendBirdSDK.QueryUserList(); mUserListQuery.OnResult += (sender, e) => { if (e.Exception != null) { Debug.Log(e.Exception.StackTrace); } else { OnQueryUserList(e.Users); } }; mUserListQuery.Next(); }
void OpenMessagingList() { currentUserName = inputUserName.text; SendBirdSDK.Login(userId, currentUserName); mEventProcessor.QueueEvent(new Action(() => { messagingChannelListPanel.SetActive(true); })); mMessagingChannelListQuery = SendBirdSDK.QueryMessagingList(); mMessagingChannelListQuery.OnResult += (sender, e) => { if (e.Exception != null) { Debug.Log(e.Exception.StackTrace); } else { mMessagingChannelList = e.MessagingChannels; OnQueryMessagingChannelList(mMessagingChannelList); } }; mMessagingChannelListQuery.Next(); }
private void Search(string keyword) { if (keyword == null || keyword.Length <= 0) { ShowChannelList(); return; } ShowSearchList(); mChannelListSearchQuery = SendBirdSDK.QueryChannelList(keyword); mChannelListSearchQuery.OnResult += (sender, e) => { mSearchAdapter.Clear(); mSearchAdapter.AddAll(e.Channels); mSearchAdapter.NotifyDataSetChanged(); if (e.Channels.Count <= 0) { Toast.MakeText(this.Activity, "No channels were found.", ToastLength.Short).Show(); } }; mChannelListSearchQuery.Next(); }
protected override void OnResume() { base.OnResume(); var mMessageChannelListQuery = SendBirdSDK.QueryMessagingList(); mMessageChannelListQuery.OnResult += (sender, e) => { mSyncContext.Post(delegate { mSendBirdMessagingChannelAdapter.Clear(); mSendBirdMessagingChannelAdapter.AddAll(e.MessagingChannels); if (e.MessagingChannels.Count <= 0) { Toast.MakeText(this, "No messaging channels were found.", ToastLength.Short).Show(); } mSendBirdMessagingChannelAdapter.NotifyDataSetChanged(); SendBirdSDK.Join(""); SendBirdSDK.Connect(); }, null); }; mMessageChannelListQuery.Excute(); // Excute Query }
public override View GetView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { viewHolder = new ViewHolder(); convertView = mInflater.Inflate(Resource.Layout.SendBirdViewChannel, parent, false); viewHolder.SetView("selected_container", convertView.FindViewById(Resource.Id.selected_container)); viewHolder.GetView("selected_container").Visibility = ViewStates.Gone; viewHolder.SetView("img_thumbnail", convertView.FindViewById(Resource.Id.img_thumbnail)); viewHolder.SetView("txt_topic", convertView.FindViewById(Resource.Id.txt_topic)); viewHolder.SetView("txt_desc", convertView.FindViewById(Resource.Id.txt_desc)); convertView.Tag = viewHolder; } Channel item = this[position]; viewHolder = convertView.Tag as ViewHolder; DisplayUrlImage(viewHolder.GetView <ImageView> ("img_thumbnail"), item.coverUrl); viewHolder.GetView <TextView> ("txt_topic").Text = "#" + item.GetUrlWithoutAppPrefix(); viewHolder.GetView <TextView> ("txt_desc").Text = ("" + item.memberCount + ((item.memberCount <= 1) ? " Member" : " Members")); if (item.url.Equals(SendBirdSDK.GetChannelUrl())) { viewHolder.GetView("selected_container").Visibility = ViewStates.Visible; } else { viewHolder.GetView("selected_container").Visibility = ViewStates.Gone; } return(convertView); }
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.Inflate(Resource.Layout.SendBirdFragmentMemberList, container, false); InitUIComponents(rootView); mMemberListQuery = SendBirdSDK.QueryMemberList(mChannelUrl); mMemberListQuery.OnResult += (sender, e) => { mSyncContext.Post(delegate { mAdapter.AddAll(e.Members); if (e.Members.Count <= 0) { Toast.MakeText(this.Activity, "No members.", ToastLength.Short).Show(); } }, null); }; mMemberListQuery.OnError += (sender, e) => { Console.WriteLine(e.Exception.Message); }; mMemberListQuery.Get(); return(rootView); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.SendBirdActivityMessaging); this.Window.SetSoftInputMode(SoftInput.StateAlwaysHidden); InitFragment(savedInstanceState); InitUIComponents(); InitSendBird(this.Intent.Extras); if (mSendBirdInfo.GetBoolean("start")) { string[] targetUserIds = mSendBirdInfo.GetStringArray("targetUserIds"); SendBirdSDK.StartMessaging(new List <string> (targetUserIds)); } else if (mSendBirdInfo.GetBoolean("join")) { string channelUrl = mSendBirdInfo.GetString("channelUrl"); SendBirdSDK.JoinMessaging(channelUrl); } }
protected override void OnActivityResult(int requestCode, Android.App.Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_MESSAGING_CHANNEL_LIST) { if (resultCode == Android.App.Result.Ok && data != null) { SendBirdSDK.JoinMessaging(data.GetStringExtra("channelUrl")); } } else if (requestCode == REQUEST_MEMBER_LIST) { if (resultCode == Android.App.Result.Ok && data != null) { try { SendBirdSDK.InviteMessaging(SendBirdSDK.GetCurrentChannel().url, new List <string>(data.GetStringArrayExtra("userIds"))); } catch (Exception e) { Console.WriteLine(e.StackTrace); } } } }