private async Task <int> HandleEvent(DataBaseWrapper db, AsyncNetwork network, User user, Event e) { if (e.type != "onMessage") { return(0); } var chat = db.Get <Chat> (e.msg); if (chat == null) { while (!await network.UpdateChats(db, user)) { await network.Authenticate(db, user); } chat = db.Get <Chat> (e.msg); } chat.time = e.time; db.Update(chat); var msg = new Message(); msg.conversation = chat.conversation; msg.author = e.author; msg.nick = e.nick; msg.text = e.text; msg.time = e.time; db.InsertIfNotContains <Message> (msg); ResetUpdateInterval(); if (e.msg != ActiveConversation && user.user != e.nick) { chat.Marked = true; db.Update(chat); if (chat.Notifications) { await Notify(network, e.nick, e.text); } } if (ChatActivity != null) { ChatActivity.OnUpdateRequested(); } else if (MainActivity != null) { MainActivity.OnUpdateRequested(); } return(0); }
public Task <bool> UpdateHistory(DataBaseWrapper db, User user, Chat chat, int count) { string request = String.Format("\"getHistory\":{{\"conversation\":\"{0}\", \"count\":\"{1}\"}}", chat.conversation, count); return(CommonNetworkOperations(db, request, user, "onGetHistory", arr => { var msgs = arr ["messages"]; string conversation = arr ["conversation"]; foreach (JsonValue x in msgs) { try { var msg = new Message(); msg.conversation = conversation; msg.author = x ["author"]; msg.nick = x ["nick"]; msg.text = x ["text"]; msg.time = x ["time"]; db.InsertIfNotContains <Message>(msg); } catch (Exception e) { Log.Error("BlaChat", e.StackTrace); } } })); }