# shellcheck shell=bash disable=SC2034,SC2154
# Section: List
# https://gitea.com/api/swagger#/repository/repoListCollaborators
___x_cmd_fjo_repo_collaborator_ls() {
    if ___x_cmd_gx_has_format_args "$@"; then
        ___x_cmd_fjo_repo_collaborator_ll "$@"
        return
    fi

    param:scope  ___x_cmd_fjo
    param:dsl '
options:
    --repo|-r       "Provide owner name and repo name"                                     <>:RepoName
    --limit         "Results per page"                                                     <>:Numbers="30"
    --page          "Page number of the results to fetch."                                 <>:Numbers="1"
    --json|-j       "output json data"
'
    param:run
    ___x_cmd_fjo_param_init_owner_repo

    if ___x_cmd_gx_is_interactive_env; then
        local ___X_CMD_TUI_TABLE_FINAL_COMMAND
        local ___X_CMD_TUI_TABLE_CUR_LINE
        local ___X_CMD_TUI_TABLE_CUR_ITEM

        ___x_cmd_fjo_tui_app --owner_repo "$owner_repo" --limit "$limit" --page "$page" --repo "$repo" --___X_CMD_FCT_API_VENDOR "$___X_CMD_FCT_API_VENDOR" \
            --request-code '___x_cmd_fjo_get_multi "/repos/${owner_repo}/collaborators" limit repo page' \
            --error-msg "Get collaborator list fail" \
            --end ___x_cmd_fjo_repo_collaborator_app_status_handler \
            "repo.collaborator.app.awk"
    else
        ___x_cmd_fjo_get_multi "/repos/${owner_repo}/collaborators" affiliation | \
            x jo 2c             .id
    fi

}


___x_cmd_fjo_repo_collaborator_app_status_handler(){
    local user_name
    user_name="${___X_CMD_TUI_TABLE_CUR_LINE##*Name: }"
    user_name=${user_name%%
Url:*}
    case "$___X_CMD_TUI_TABLE_FINAL_COMMAND" in
            "ENTER")        printf "%s\n" "$___X_CMD_TUI_TABLE_CUR_LINE"  ;;
            "c")            ___x_cmd_fjo_repo_collaborator_add    --repo "${repo}"                     ;;
            "u")            ___x_cmd_fjo_repo_collaborator_edit   --repo "${repo}"    "$user_name"     ;;
            "d")            ___x_cmd_fjo_repo_collaborator_rm     --repo "${repo}"    "$user_name"     ;;
            *)              return   ;;
    esac
}


