#!/bin/bash
# issue-view.sh - View issue details on GitHub or Gitea
# Usage: issue-view.sh -i <issue_number>

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/detect-platform.sh"

# Parse arguments
ISSUE_NUMBER=""

# get_remote_host and get_gitea_token are provided by detect-platform.sh

gitea_issue_view_api() {
    local host repo token url
    host=$(get_remote_host) || {
        echo "Error: could not determine remote host for API fallback" >&2
        return 1
    }
    repo=$(get_repo_info) || {
        echo "Error: could not determine repo owner/name for API fallback" >&2
        return 1
    }
    token=$(get_gitea_token "$host") || {
        echo "Error: Gitea token not found for API fallback (set GITEA_TOKEN or configure ~/.git-credentials)" >&2
        return 1
    }

    url="https://${host}/api/v1/repos/${repo}/issues/${ISSUE_NUMBER}"
    if command -v python3 >/dev/null 2>&1; then
        curl -fsS -H "User-Agent: curl/8" -H "Authorization: token ${token}" "$url" | python3 -m json.tool
    else
        curl -fsS -H "User-Agent: curl/8" -H "Authorization: token ${token}" "$url"
    fi
}

while [[ $# -gt 0 ]]; do
    case $1 in
        -i|--issue)
            ISSUE_NUMBER="$2"
            shift 2
            ;;
        -h|--help)
            echo "Usage: issue-view.sh -i <issue_number>"
            echo ""
            echo "Options:"
            echo "  -i, --issue    Issue number (required)"
            echo "  -h, --help     Show this help"
            exit 0
            ;;
        *)
            echo "Unknown option: $1"
            exit 1
            ;;
    esac
done

if [[ -z "$ISSUE_NUMBER" ]]; then
    echo "Error: Issue number is required (-i)"
    exit 1
fi

detect_platform >/dev/null

if [[ "$PLATFORM" == "github" ]]; then
    gh issue view "$ISSUE_NUMBER"
elif [[ "$PLATFORM" == "gitea" ]]; then
    if command -v tea >/dev/null 2>&1; then
        if tea issue "$ISSUE_NUMBER" $(get_gitea_repo_args); then
            exit 0
        fi
        echo "Warning: tea issue view failed, trying Gitea API fallback..." >&2
    fi
    gitea_issue_view_api
else
    echo "Error: Unknown platform"
    exit 1
fi
