Exemple #1
0
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}
Exemple #4
0
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)
Exemple #6
0
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