import os

from hexlib.db import VolatileBooleanState, VolatileState

from items import ParlerItem

REDIS_HOST = os.environ.get("PAF_REDIS_HOST", "localhost")
REDIS_PORT = os.environ.get("PAF_REDIS_PORT", 6379)


class ParlerState:

    def __init__(self):
        self._visited = VolatileBooleanState("parler", host=REDIS_HOST, port=REDIS_PORT)
        self._resume = VolatileState("parler", host=REDIS_HOST, port=REDIS_PORT)

    def resume_key(self, endpoint, user_id):
        return self._resume[endpoint][user_id]

    def set_resume_key(self, endpoint, user_id, key):
        if key is None:
            del self._resume[endpoint][user_id]
        else:
            self._resume[endpoint][user_id] = key

    def has_visited_post(self, post: ParlerItem):
        if post.data["comments"] == "0":
            return True
        return self._visited["post"][post.item_id()]

    def mark_visited_post(self, post_id):
        self._visited["post"][post_id] = True

    def has_visited_user(self, user_id):
        return self._visited["user"][user_id]

    def mark_visited_user(self, user_id):
        self._visited["user"][user_id] = True