#!/usr/bin/env bash
# ============================================================
# Avigation Cloud — Linux Setup
#
# What this script does:
#   1. Downloads official Nextcloud 34.0.1 AppImage from nextcloud.com
#   2. Verifies SHA256 (sha256sum — standard on Linux)
#   3. Makes the AppImage executable
#   4. Creates ~/.local/share/applications/avigation-cloud.desktop
#   5. Launches Nextcloud against cloud.avigation.cloud
#
# No custom Nextcloud binary. Official Nextcloud AppImage + server address only.
# Source: support.avigation.cloud/packages/avigation/linux/Avigation-Cloud-Setup.sh
#
# Requirements: curl, sha256sum (standard), libfuse2 or libfuse3
# AppImage: https://appimage.org/
# ============================================================

set -e

NC_VERSION="34.0.1"
NC_URL="https://download.nextcloud.com/desktop/releases/Linux/Nextcloud-34.0.1-x86_64.AppImage"
NC_SHA256="729754f7f36f3bad1e3308be9bef1fea596dcbb8d1df94571b885f3eb875513f"
BRAND_URL="https://cloud.avigation.cloud"
BRAND_NAME="Avigation Cloud"
INSTALL_DIR="${HOME}/.local/bin"
APP_FILE="${INSTALL_DIR}/Avigation-Cloud.AppImage"
DESKTOP_DIR="${HOME}/.local/share/applications"
DESKTOP_FILE="${DESKTOP_DIR}/avigation-cloud.desktop"
TMP_FILE="/tmp/Nextcloud-${NC_VERSION}-x86_64.AppImage"

echo ""
echo "  Avigation Cloud -- Linux Setup"
echo "  ================================"
echo "  Using official Nextcloud ${NC_VERSION} AppImage from nextcloud.com"
echo "  Server address: ${BRAND_URL}"
echo ""

# ---- Check libfuse ----
if ! ldconfig -p 2>/dev/null | grep -q "libfuse"; then
    echo "  NOTE: libfuse does not appear to be installed."
    echo "  Install it for AppImage support:"
    echo "    Ubuntu/Debian: sudo apt install libfuse2"
    echo "    Fedora:        sudo dnf install fuse"
    echo "    Arch:          sudo pacman -S fuse2"
    echo ""
    echo "  Continuing — AppImage may fail without libfuse."
    echo ""
fi

# ---- Create install directory ----
mkdir -p "${INSTALL_DIR}" "${DESKTOP_DIR}"

# ---- 1. Download AppImage ----
echo "  [1/4] Downloading Nextcloud ${NC_VERSION} AppImage (~64 MB)..."
curl -L --progress-bar --output "${TMP_FILE}" "${NC_URL}"
echo "  Download complete."

# ---- 2. Verify SHA256 ----
echo "  [2/4] Verifying SHA256..."
ACTUAL_HASH=$(sha256sum "${TMP_FILE}" | awk '{print $1}')
if [ "${ACTUAL_HASH}" != "${NC_SHA256}" ]; then
    echo ""
    echo "  ERROR: SHA256 mismatch. The file may be corrupted or tampered with."
    echo "  Expected: ${NC_SHA256}"
    echo "  Actual:   ${ACTUAL_HASH}"
    rm -f "${TMP_FILE}"
    exit 1
fi
echo "  SHA256 OK."

# ---- 3. Move and make executable ----
echo "  [3/4] Installing AppImage to ${APP_FILE}..."
mv "${TMP_FILE}" "${APP_FILE}"
chmod +x "${APP_FILE}"
echo "  AppImage installed."

# ---- 4. Create .desktop shortcut ----
echo "  [4/4] Creating application shortcut..."
cat > "${DESKTOP_FILE}" <<DESKTOP
[Desktop Entry]
Name=Avigation Cloud
Comment=Avigation Cloud Files
Exec=${APP_FILE} --overrideserverurl ${BRAND_URL}
Icon=nextcloud
Terminal=false
Type=Application
Categories=Network;FileTransfer;
StartupNotify=false
DESKTOP
chmod +x "${DESKTOP_FILE}"

command -v update-desktop-database &>/dev/null && update-desktop-database "${DESKTOP_DIR}" 2>/dev/null || true
echo "  Application shortcut created."

# ---- 5. Launch against Avigation Cloud ----
echo ""
echo "  Starting ${BRAND_NAME}..."
echo "  Your browser will open for sign-in -- use your Avigation account."
echo ""
"${APP_FILE}" --overrideserverurl "${BRAND_URL}" &
disown

echo "  ${BRAND_NAME} is ready for sign-in."
echo ""
echo "  AppImage location: ${APP_FILE}"
echo "  Server address:    ${BRAND_URL}"
