import reflex as rx
import re
import bcrypt
#from ..auth.checklogin import *


class State(rx.State):
    """The app state."""
    user_1: str = rx.LocalStorage()
    user_2: str = rx.LocalStorage("login_id")
    user_id: str = rx.LocalStorage(name="login_id")

def validate_email(email):
        """Validates the email format."""
        email_regex = r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$"
        if not re.match(email_regex, email):
            return False
        else:
            return True
        
def replace_attribute(text,val):
     return text.replace(':attr',val)

def check_password(password: str, hashed_password: str) -> bool:
    return bcrypt.checkpw(password.encode(), hashed_password.encode())

def setlogedIn(var):
        #print(var)
        #State.user_1 = State.user_2 = State.user_id = var
        #rx.LocalStorage(var)
        #rx.LocalStorage(name="login_id")
        rx.LocalStorage(var,None,None,'login_id',True)
        rx.SessionStorage(var,None,None,"login_id")
        #rx.LocalStorage(id="login_id",value=var)
        login_id = rx.LocalStorage(name="login_id",sync=True)
        session_id = rx.SessionStorage(name="login_id")
        #rx.LocalStorage(str(var),'utf-8','','login_id')
        #rx.set_local_storage("login_id", str(var))  # Ensure user_id is a string
        #rx.script("LocalStorage.setItem('login_id','"+var+"')")
        #login_id = rx.script("LocalStorage.getItem('login_id')")
        #print(login_id)
        print(login_id)
        print(session_id)
        #print(rx.LocalStorage(None,None,None,"login_id",False))
        print(get_logged_in_id())
        #print(State.user_id)
        #print(AuthState.is_logged_in)
        #lambda: rx.LocalStorage.set("login_id",var)
        #AuthState.login_id = var
        #AuthState.is_logged_in = True

def get_logged_in_id():
    # Retrieve the login ID from localStorage
    login_id = rx.LocalStorage("login_id")
    return login_id

def check_session():
    """ """

    if rx.LocalStorage(name="login_id"):
        return True
    return False

def get_session():
    """ """
    #return rx.script("localStorage.getItem('login_id') || 'Guest'")
    return rx.LocalStorage(name="login_id")
    #return State.user_id

def signout():
    """ """
    #print('test')
    #rx.remove_local_storage("log_id")
    rx.script("window.location.href = '/login';")
    rx.redirect('/login')