protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); chatroom = DatabaseAccessors.ChatRoomDatabaseAccessor.GetChatRoom (Intent.GetStringExtra ("chatroom")); SetContentView (Resource.Layout.ChatRoom); chatsAdapter = new ChatAdapter (this); var chatsListView = FindViewById<ListView> (Resource.Id.chatsListView); chatsListView.Adapter = chatsAdapter; chatsListView.ItemClick += (object sender, AdapterView.ItemClickEventArgs e) => { }; var sendButton = FindViewById<Button> (Resource.Id.send_message_button); var textBoxEdit = FindViewById<EditText> (Resource.Id.chatInputTextBox); textBoxEdit.Click += (sender, e) => { RunOnUiThread( () => FindViewById<ListView>(Resource.Id.chatsListView).SmoothScrollToPosition(chatsAdapter.GetCount() - 1)); }; sendButton.Click += async (sender, e) => { EditText textEdit = FindViewById<EditText>(Resource.Id.chatInputTextBox); string messageContent = textEdit.Text.ToString(); RunOnUiThread( () => textEdit.Text = ""); ParseChatItemDatabase parseItemDB = new ParseChatItemDatabase(); ChatItem chat = new ChatItem(); chat.chatroomID = chatroom.webID; chat.senderID = DatabaseAccessors.CurrentUser().webID; chat.content = messageContent; await parseItemDB.SaveChatItemAsync(chat); DatabaseAccessors.ChatDatabaseAccessor.SaveItem(chat); RunOnUiThread(() => chatsAdapter.NotifyDataSetChanged()); RunOnUiThread( () => FindViewById<ListView>(Resource.Id.chatsListView).SmoothScrollToPosition(chatsAdapter.GetCount() - 1)); var push = new ParsePush(); push.Channels = new List<string> {chatroom.webID}; push.Alert = "Your men might be requesting help!"; await push.SendAsync(); }; Task getUpdatedInfo = new Task (async () => { await SynchronizeWithParse (); }); ParsePush.ParsePushNotificationReceived += async (sender, args) => { Console.WriteLine("push"); await SynchronizeWithParse(); }; getUpdatedInfo.Start (); }
protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); SetContentView (Resource.Layout.Contacts); Button searchContactsBtn = FindViewById<Button> (Resource.Id.search_contacts); searchContactsBtn.Click += async (sender, e) => { GetParseUsers(); contactsAdapter = new ContactsAdapter (this); var contactsListView = FindViewById<ListView> (Resource.Id.contactsListView); contactsListView.Adapter = contactsAdapter; contactsListView.ItemClick += async (object sender2, AdapterView.ItemClickEventArgs e2) => { User curritem = contactsAdapter.GetUserAt(e2.Position); ParseChatRoomDatabase pcrd = new ParseChatRoomDatabase(); ChatRoom newchatroom = new ChatRoom(); await pcrd.SaveChatRoomAsync(newchatroom); DatabaseAccessors.ChatRoomDatabaseAccessor.SaveChatRoom(newchatroom); List<User> chatroomUsers = new List<User>(); chatroomUsers.Add(curritem); chatroomUsers.Add(DatabaseAccessors.CurrentUser()); DatabaseAccessors.ChatRoomDatabaseAccessor.SaveChatRoomUsers(chatroomUsers, newchatroom); var crus = DatabaseAccessors.ChatRoomDatabaseAccessor.GetChatRoomUsers(newchatroom.webID); foreach(ChatRoomUser cru in crus){ await pcrd.SaveChatRoomUsersAsync(cru); var push = new ParsePush(); push.Channels = new List<string> {cru.userID}; push.Alert = "Your men might be requesting help!"; await push.SendAsync(); } ChatsActivity.NotifyChatRoomsUpdate(); var intent = new Intent(this, typeof(ChatRoomActivity)); intent.PutExtra("chatroom", newchatroom.webID); StartActivity(intent); this.Finish(); }; }; }
public void SaveChatRoomUsers(List<User> users, ChatRoom chatroom) { lock (chatroomUserLocker) { foreach (User user in users) { ChatRoomUser cru = new ChatRoomUser (); cru.chatRoomID = chatroom.webID; cru.userID = user.webID; chatroomUserDatabase.Insert (cru); } } }
public string SaveChatRoom(ChatRoom chatroom) { lock (locker) { database.Insert (chatroom); return chatroom.webID; } }
public async Task GetAndSyncChatRoomsAsync(){ var query = ParseObject.GetQuery ("ChatRoomUser").WhereEqualTo ("userId", ParseUser.CurrentUser.ObjectId).Select("chatroomId"); IEnumerable<ParseObject> chatRoomIds = await query.FindAsync(); List<ParseObject> results = new List<ParseObject> (); foreach(ParseObject crpo in chatRoomIds){ var currCRUQuery = ParseObject.GetQuery ("ChatRoomUser").WhereEqualTo ("chatroomId", crpo ["chatroomId"]); foreach (ParseObject cruPO in await currCRUQuery.FindAsync()) { results.Add (cruPO); } } List<ChatRoomUser> crusToAdd = new List<ChatRoomUser> (); List<String> crToAdd = new List<String> (); List<String> usersToAdd = new List<String> (); foreach (var cruPO in results) { ChatRoomUser cru = FromParseObjectChatRoomUser (cruPO); if (DatabaseAccessors.ChatRoomDatabaseAccessor.ExistsChatRoomUser (cru.chatRoomID, cru.userID) == false) crusToAdd.Add (cru); if (DatabaseAccessors.ChatRoomDatabaseAccessor.ExistsChatRoom (cru.chatRoomID) == false && crToAdd.Contains (cru.chatRoomID) == false) crToAdd.Add (cru.chatRoomID); if (DatabaseAccessors.UserDatabaseAccessor.ExistsUser (cru.userID) == false && usersToAdd.Contains(cru.userID) == false) usersToAdd.Add (cru.userID); } foreach (string userId in usersToAdd) { User newUser = new User (); var userQuery = ParseObject.GetQuery ("UserInformation").WhereEqualTo ("userId", userId); ParseObject userPO = await userQuery.FirstAsync (); newUser.name = (string)userPO ["fullName"]; newUser.webID = userId; DatabaseAccessors.UserDatabaseAccessor.SaveUser (newUser); } foreach (string crid in crToAdd) { ChatRoom currChatRoom = new ChatRoom (); currChatRoom.webID = crid; DatabaseAccessors.ChatRoomDatabaseAccessor.SaveChatRoom (currChatRoom); } foreach (ChatRoomUser cru in crusToAdd) { User currUser = DatabaseAccessors.UserDatabaseAccessor.GetUser (cru.userID); List<User> currUserAsList = new List<User> (); currUserAsList.Add (currUser); ChatRoom chatroom = DatabaseAccessors.ChatRoomDatabaseAccessor.GetChatRoom (cru.chatRoomID); DatabaseAccessors.ChatRoomDatabaseAccessor.SaveChatRoomUsers (currUserAsList, chatroom); } }
public async Task SaveChatRoomAsync(ChatRoom chatroom) { ParseObject po = ToParseObject (chatroom); await po.SaveAsync (); chatroom.webID = po.ObjectId; }
static ChatRoom FromParseObject (ParseObject po) { var t = new ChatRoom (); t.webID = po.ObjectId; return t; }
ParseObject ToParseObject (ChatRoom chatroom) { var po = new ParseObject("ChatRoom"); return po; }
public ChatAdapter(Activity activity) { _activity = activity; chatroom = ((ChatRoomActivity)activity).ChatRoomAccessor; FillMessages (); }
public async Task GetAndSyncChatRoomsAsync() { var query = ParseObject.GetQuery("ChatRoomUser").WhereEqualTo("userId", ParseUser.CurrentUser.ObjectId).Select("chatroomId"); IEnumerable <ParseObject> chatRoomIds = await query.FindAsync(); List <ParseObject> results = new List <ParseObject> (); foreach (ParseObject crpo in chatRoomIds) { var currCRUQuery = ParseObject.GetQuery("ChatRoomUser").WhereEqualTo("chatroomId", crpo ["chatroomId"]); foreach (ParseObject cruPO in await currCRUQuery.FindAsync()) { results.Add(cruPO); } } List <ChatRoomUser> crusToAdd = new List <ChatRoomUser> (); List <String> crToAdd = new List <String> (); List <String> usersToAdd = new List <String> (); foreach (var cruPO in results) { ChatRoomUser cru = FromParseObjectChatRoomUser(cruPO); if (DatabaseAccessors.ChatRoomDatabaseAccessor.ExistsChatRoomUser(cru.chatRoomID, cru.userID) == false) { crusToAdd.Add(cru); } if (DatabaseAccessors.ChatRoomDatabaseAccessor.ExistsChatRoom(cru.chatRoomID) == false && crToAdd.Contains(cru.chatRoomID) == false) { crToAdd.Add(cru.chatRoomID); } if (DatabaseAccessors.UserDatabaseAccessor.ExistsUser(cru.userID) == false && usersToAdd.Contains(cru.userID) == false) { usersToAdd.Add(cru.userID); } } foreach (string userId in usersToAdd) { User newUser = new User(); var userQuery = ParseObject.GetQuery("UserInformation").WhereEqualTo("userId", userId); ParseObject userPO = await userQuery.FirstAsync(); newUser.name = (string)userPO ["fullName"]; newUser.webID = userId; DatabaseAccessors.UserDatabaseAccessor.SaveUser(newUser); } foreach (string crid in crToAdd) { ChatRoom currChatRoom = new ChatRoom(); currChatRoom.webID = crid; DatabaseAccessors.ChatRoomDatabaseAccessor.SaveChatRoom(currChatRoom); } foreach (ChatRoomUser cru in crusToAdd) { User currUser = DatabaseAccessors.UserDatabaseAccessor.GetUser(cru.userID); List <User> currUserAsList = new List <User> (); currUserAsList.Add(currUser); ChatRoom chatroom = DatabaseAccessors.ChatRoomDatabaseAccessor.GetChatRoom(cru.chatRoomID); DatabaseAccessors.ChatRoomDatabaseAccessor.SaveChatRoomUsers(currUserAsList, chatroom); } }
ParseObject ToParseObject(ChatRoom chatroom) { var po = new ParseObject("ChatRoom"); return(po); }