# shellcheck shell=dash
___X_CMD_CHAT_SESSION_DIR="$___X_CMD_ROOT_DATA/chat/session"

___X_CMD_CHAT_SESSION_CURRENT=X

# x chat start
# x chat end ==> switch back to the previous session
# x chat start abc
# x chat start --ws

# x chat mv chatid :ws
# x chat cp chatid :ws

xrc:mod:lib     chat        session/history

___x_cmd_chat_session(){
    [ $# -gt 0 ] ||     set -- -h
    local op="$1";      shift
    case "$op" in
        -h|--help)      ;;
        ls|latest|start|current|current_)
            ___x_cmd_chat_session_"$op" "$@"
            ;;

        h|history)
            ___x_cmd_chat_session_history "$@"
            ;;
    esac
}


___x_cmd_chat_session_current_(){
    x_="$___X_CMD_CHAT_SESSION_CURRENT"
}

___x_cmd_chat_session_current(){
    if [ $# -eq 0 ]; then
        printf "%s\n" "$___X_CMD_CHAT_SESSION_CURRENT"
    else
        ___X_CMD_CHAT_SESSION_CURRENT="$1"
    fi
}


# x chat start --ws X
___x_cmd_chat_session_start(){
    local name="$1"
    ___X_CMD_CHAT_SESSION_CURRENT="$name"

    # TODO: provide sub session in the future ?
    # ___X_CMD_CHAT_SESSION_CURRENT="${___X_CMD_CHAT_SESSION_CURRENT}/${name}"
    # ___X_CMD_CHAT_SESSION_CURRENT="${___X_CMD_CHAT_SESSION_CURRENT#/}"
}

___x_cmd_chat_session_end(){
    chat:info "Closing session [name=$___X_CMD_CHAT_SESSION_CURRENT]"
    ___X_CMD_CHAT_SESSION_CURRENT=
}

___x_cmd_chat_session_ls(){
    local name="$1"
    ___x_cmd fsiter "$___X_CMD_CHAT_SESSION_DIR/$name"
}
