def send_message(sid, event_data): with controlled_execution(): user_id = connected_sid_user_id[sid] print('send_message', user_id) contact = Contact.get(event_data['chatroom_id']) message = Message(contact_id=contact.id, content=event_data['content'], from_user_id=user_id) message.save() message = Message.get(message.id) message_tosend = message.client_message() for sid_for_author in connected_user_id_sids[user_id]: sio.emit('general_notification', { 'new_message': message_tosend }, sid_for_author) another_user_to_notify_unread = contact.user1_id if contact.user2_id == user_id else contact.user2_id unread = get_unread(another_user_to_notify_unread, [contact.id]) for sid_for_receiver in connected_user_id_sids[another_user_to_notify_unread]: sio.emit('general_notification', { 'new_message': message_tosend, 'unread': unread }, sid_for_receiver) return {'ok': True, 'message_id': message.id}
def load_messages(sid, event_data): log('load_messages', sid, event_data) with controlled_execution(): # time.sleep(2) # delays for 5 seconds user_id = connected_sid_user_id[sid] contact = Contact.get(event_data['chat_room_id']) older = event_data.get('older', False) ret = contact.get_messages( 50, older, event_data.get('first_id' if older else 'last_id', None)) read_ids = [ m.id for m in ret['items'] if m.from_user_id != user_id and not m.read_tm ] if len(read_ids): g.db().execute("SELECT message_set_read('%s', ARRAY ['%s']);" % (contact.id, "', '".join(read_ids))) unread = get_unread(user_id, [contact.id]) for sid_for_receiver in connected_user_id_sids[user_id]: sio.emit('general_notification', {'unread': unread}, sid_for_receiver) ret['items'] = [m.client_message() for m in ret['items']] return ret
def send_message(sid, event_data): log('send_message', sid, event_data) with controlled_execution(): user_id = connected_sid_user_id[sid] log('send_message', user_id) contact = Contact.get(event_data['chatroom_id']) message = Message(contact_id=contact.id, content=event_data['content'], from_user_id=user_id) message.save() message = Message.get(message.id) message_tosend = message.client_message() for sid_for_author in connected_user_id_sids[user_id]: sio.emit('general_notification', {'new_message': message_tosend}, sid_for_author) another_user_to_notify_unread = contact.user1_id if contact.user2_id == user_id else contact.user2_id unread = get_unread(another_user_to_notify_unread, [contact.id]) for sid_for_receiver in connected_user_id_sids[ another_user_to_notify_unread]: sio.emit('general_notification', { 'new_message': message_tosend, 'unread': unread }, sid_for_receiver) return {'ok': True, 'message_id': message.id}
def read_message(sid, message_id): with controlled_execution(): message = Message.get(message_id) contact = Contact.get(message.contact_id) if message.read_tm is None: another_user_to_notify_unread = contact.user1_id if contact.user2_id == message.from_user_id else contact.user2_id print("SELECT message_set_read('%s', ARRAY ['%s']);" % (message.contact_id, message.id)) g.db().execute("SELECT message_set_read('%s', ARRAY ['%s']);" % (message.contact_id, message.id)) unread = get_unread(another_user_to_notify_unread, [contact.id]) for sid_for_receiver in connected_user_id_sids[another_user_to_notify_unread]: sio.emit('general_notification', { 'unread': unread }, sid_for_receiver)
def read_message(sid, message_id): log('read_message', sid, message_id) with controlled_execution(): message = Message.get(message_id) contact = Contact.get(message.contact_id) if message.read_tm is None: another_user_to_notify_unread = contact.user1_id if contact.user2_id == message.from_user_id else contact.user2_id log("SELECT message_set_read('%s', ARRAY ['%s']);" % (message.contact_id, message.id)) g.db().execute("SELECT message_set_read('%s', ARRAY ['%s']);" % (message.contact_id, message.id)) unread = get_unread(another_user_to_notify_unread, [contact.id]) for sid_for_receiver in connected_user_id_sids[ another_user_to_notify_unread]: sio.emit('general_notification', {'unread': unread}, sid_for_receiver)
def load_messages(sid, event_data): with controlled_execution(): import time # time.sleep(2) # delays for 5 seconds print('load_messages', event_data) user_id = connected_sid_user_id[sid] contact = Contact.get(event_data['chat_room_id']) older = event_data.get('older', False) ret = contact.get_messages(50, older, event_data.get('first_id' if older else 'last_id', None)) read_ids = [m.id for m in ret['items'] if m.from_user_id != user_id and not m.read_tm] if len(read_ids): g.db().execute("SELECT message_set_read('%s', ARRAY ['%s']);" % (contact.id, "', '".join(read_ids))) unread = get_unread(user_id, [contact.id]) for sid_for_receiver in connected_user_id_sids[user_id]: sio.emit('general_notification', { 'unread': unread }, sid_for_receiver) ret['items'] = [m.client_message() for m in ret['items']] return ret