Beispiel #1
0
        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();
        }
Beispiel #2
0
        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
                }
            }
        }
Beispiel #3
0
        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
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #7
0
 void SubmitOpenChat()
 {
     if (inputOpenChat.text.Length > 0)
     {
         SendBirdSDK.SendMessage(inputOpenChat.text);
         inputOpenChat.text = "";
     }
 }
Beispiel #8
0
 void SubmitMessaging()
 {
     if (inputMessaging.text.Length > 0)
     {
         SendBirdSDK.SendMessage(inputMessaging.text);
         inputMessaging.text = "";
     }
 }
Beispiel #9
0
 protected override void OnDestroy()
 {
     base.OnDestroy();
     if (!mDoNotDisconnect)
     {
         SendBirdSDK.Disconnect();
     }
 }
Beispiel #10
0
        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);
        }
Beispiel #11
0
            private void Send()
            {
                SendBirdSDK.SendMessage(mEtxtMessage.Text);
                mEtxtMessage.Text = string.Empty;

                if (Resources.Configuration.Orientation == Android.Content.Res.Orientation.Landscape)
                {
                    Helper.HideKeyboard(this.Activity);
                }
            }
Beispiel #12
0
    void Start()
    {
        string appId = "A7A2672C-AD11-11E4-8DAA-0A18B21C2D82";         // Release

        userId = SystemInfo.deviceUniqueIdentifier;
        SendBirdSDK.Init(appId);

        InitComponents();
        mGameObject     = gameObject;
        mEventProcessor = mGameObject.AddComponent <EventProcessor> ();
    }
Beispiel #13
0
        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
        }
Beispiel #16
0
            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);
            }
Beispiel #17
0
            public void SetTypeStatus(string userId, long timestamp)
            {
                if (userId.Equals(SendBirdSDK.GetUserId()))
                {
                    return;
                }

                if (timestamp <= 0)
                {
                    mTypeStatus.Remove(userId);
                }
                else
                {
                    mTypeStatus[userId] = timestamp;
                }
            }
Beispiel #18
0
    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);
    }
Beispiel #19
0
    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);
                    }));
                });
            }
        }));
    }
Beispiel #20
0
            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);
            }
Beispiel #21
0
            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();
                }
            }
Beispiel #22
0
 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();
 }
Beispiel #23
0
    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();
    }
Beispiel #24
0
    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();
    }
Beispiel #25
0
            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
        }
Beispiel #27
0
                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);
            }
Beispiel #29
0
        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);
            }
        }
Beispiel #30
0
        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);
                    }
                }
            }
        }