Пример #1
0
        // Replace the contents of a view (invoked by the layout manager)
        public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            ConverstionsModel item = _listOfActiveConversations[position];

            if (holder is ConvAdapterViewHolder viewHolder)
            {
                viewHolder.NameTextView.Text = item.Username;
            }
        }
Пример #2
0
        void OnChatAccepted(Object[] obj)
        {
            Log.Error("WebSocket", "Chat Accepted");
            var    data = (JSONObject)obj[0];
            string email;
            string room;

            try {
                //username = data.getString("username");
                email = data.GetString("from");
                room  = data.GetString("room");
            } catch (JSONException e) {
                Log.Error("on Join: ", e.Message);
                return;
            }
            Utils.CreateChannels(email, email);
            // aici adaugi in array-ul de room-uri
            try {
                string SharedRooms = Utils.GetDefaults("Rooms");
                if (SharedRooms != null)
                {
                    var model        = JsonConvert.DeserializeObject <List <ConverstionsModel> >(SharedRooms);
                    var currentModel = new ConverstionsModel {
                        Username = email, Room = room
                    };
                    var existingElement = false;
                    foreach (ConverstionsModel conversation in model)
                    {
                        if (conversation.Username.Equals(currentModel.Username))
                        {
                            existingElement = true;
                            break;
                        }
                    }
                    if (!existingElement)
                    {
                        model.Add(currentModel);
                    }


                    string serialized = JsonConvert.SerializeObject(model);
                    Utils.SetDefaults("Rooms", serialized);
                }
                else
                {
                    var model        = new List <ConverstionsModel>();
                    var currentModel = new ConverstionsModel {
                        Username = email, Room = room
                    };
                    model.Add(currentModel);


                    string serialized = JsonConvert.SerializeObject(model);
                    Utils.SetDefaults("Rooms", serialized);
                }
            } catch (Exception e) {
                Log.Error("Error OnConversation", e.Message);
            }
            Notification nb  = Utils.CreateChatNotification("Cerere acceptata", $"{email} ti-a acceptat cererea de chat!", email, room, _context, 2);
            var          ids = room.Split(':');

            Utils.GetManager().Notify(ids[0] == Utils.GetDefaults("Id") ? int.Parse(ids[1]) : int.Parse(ids[0]), nb);
        }
Пример #3
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.activity_chat);
            var toolbar = FindViewById <Toolbar>(Resource.Id.toolbar);

            SetSupportActionBar(toolbar);
            Title = string.Empty;

            mMessages = new List <ChatModel>();
            mAdapter  = new ChatAdapter(this, mMessages);
            //mAdapter.ItemClick += delegate (object sender, int i)
            //{
            //    Toast.MakeText(this, mMessages[i].Username, ToastLength.Short).Show();
            //};
            layoutManager = new LinearLayoutManager(this)
            {
                Orientation = LinearLayoutManager.Vertical
            };

            //layoutManager.ReverseLayout = true;
            RecyclerView = FindViewById <RecyclerView>(Resource.Id.messages);
            RecyclerView.SetLayoutManager(layoutManager);
            RecyclerView.SetAdapter(mAdapter);

            Ctx = this;
            mInputMessageView = (EditText)FindViewById(Resource.Id.tbMessage);
            send        = FindViewById <Button>(Resource.Id.Send);
            send.Click += Send_Click; // delegate async {

            mAdapter.Clear();

            if (savedInstanceState == null)
            {
                Bundle extras = Intent.Extras;
                RoomName  = Intent.GetStringExtra("Room");
                mUsername = Intent.GetStringExtra("EmailFrom");
                var ids = RoomName.Split(':');
                NotificationManagerCompat.From(this).Cancel(
                    ids[0] == Utils.GetDefaults("Id")
                        ? int.Parse(ids[1])
                        : int.Parse(ids[0]));
                //Active = Intent.GetBooleanExtra("Active", false);
                if (extras == null)
                {
                    Finish();
                }
                else if (Intent.GetBooleanExtra("AcceptClick", false))
                {
                    try
                    {
                        //adaugare la lista de prieteni
                        string sharedRooms = Utils.GetDefaults("Rooms");
                        if (sharedRooms != null)
                        {
                            var model =
                                JsonConvert.DeserializeObject <List <ConverstionsModel> >(sharedRooms);

                            var currentModel = new ConverstionsModel
                            {
                                Username = mUsername, Room = RoomName
                            };
                            var existingElement = false;
                            foreach (ConverstionsModel conversation in model)
                            {
                                if (!conversation.Username.Equals(currentModel.Username))
                                {
                                    continue;
                                }
                                existingElement = true;
                                break;
                            }

                            if (!existingElement)
                            {
                                model.Add(currentModel);
                            }

                            string serialized = JsonConvert.SerializeObject(model);
                            Utils.SetDefaults("Rooms", serialized);
                        }
                        else
                        {
                            var model        = new List <ConverstionsModel>();
                            var currentModel = new ConverstionsModel
                            {
                                Username = mUsername, Room = RoomName
                            };

                            model.Add(currentModel);

                            string serialized = JsonConvert.SerializeObject(model);
                            Utils.SetDefaults("Rooms", serialized);
                        }
                    }
                    catch (Exception e)
                    {
                        Log.Error("Error", e.Message);
                    }

                    string emailFrom = Utils.GetDefaults("Email");
                    try
                    {
                        string     dest       = extras.GetString("EmailFrom");
                        JSONObject mailObject = new JSONObject().Put("dest", dest)
                                                .Put("from", emailFrom)
                                                .Put("accepted", true).Put("room", RoomName);
                        Log.Error("aici", mailObject.ToString());
                        WebSocketClient.Socket.Emit("chat accepted", mailObject);
                    }
                    catch (JSONException e)
                    {
                        e.PrintStackTrace();
                    }
                }

                //NotificationManagerCompat.From(this).Cancel(400);

                Task.Run(async() =>
                {
                    _conversationsRecords = await SqlHelper <ConversationsRecords> .CreateAsync();
                    var conversations     = await _conversationsRecords.QueryValuations($"SELECT * FROM ConversationsRecords WHERE Room = '{RoomName}'");
                    foreach (ConversationsRecords message in conversations)
                    {
                        AddMessage(message.Message, message.MessageType == 0 ? 3 : 0);
                    }
                });
            }

            SupportActionBar.SetDisplayHomeAsUpEnabled(true);
            SupportActionBar.SetDisplayShowHomeEnabled(true);
            toolbar.NavigationClick += delegate { OnBackPressed(); };
            Title = mUsername;
        }