#--depends-on ircv3_msgid

from src import ModuleManager, utils

TAG = utils.irc.MessageTag("msgid", "draft/msgid")
CHATHISTORY_BATCH = utils.irc.BatchType("chathistory")

EVENTPLAYBACK_CAP = utils.irc.Capability(None, "draft/event-playback",
    alias="event-playback")
HISTORY_BATCH = utils.irc.BatchType("history")

@utils.export("cap", EVENTPLAYBACK_CAP)
class Module(ModuleManager.BaseModule):
    @utils.hook("received.batch.end")
    def batch_end(self, event):
        if (CHATHISTORY_BATCH.match(event["batch"].type) or
                HISTORY_BATCH.match(event["batch"].type)):
            target_name = event["batch"].args[0]
            if target_name in event["server"].channels:
                target = event["server"].channels.get(target_name)
            else:
                target = event["server"].get_user(target_name)

            last_msgid = target.get_setting("last-msgid", None)
            if not last_msgid == None:
                lines = event["batch"].get_lines()
                stop_index = -1

                for i, line in enumerate(lines):
                    msgid = TAG.get_value(line.tags)
                    if msgid == last_msgid:
                        stop_index = i
                        break

                if not stop_index == -1:
                    return lines[stop_index+1:]