#!/bin/bash
# CDM Yandex Disk Setup — simplified
set -uo pipefail

MOUNT_DIR="$HOME/Яндекс.Диск"
RCLONE_CONF="$HOME/.config/rclone/rclone.conf"
SERVICE_DIR="$HOME/.config/systemd/user"

# Kill any lingering rclone authorize from previous attempts
pkill -f 'rclone authorize' 2>/dev/null || true
sleep 1

# Check if already configured
if grep -q '^\[ydisk\]' "$RCLONE_CONF" 2>/dev/null; then
    if kdialog --yesno "Яндекс.Диск уже настроен.\nПерезаписать настройки?" --title "Яндекс.Диск" 2>/dev/null; then
        sed -i '/^\[ydisk\]/,/^$/d' "$RCLONE_CONF"
    else
        exit 0
    fi
fi

kdialog --msgbox "Сейчас откроется браузер для входа в Яндекс.\nВойдите в рабочий аккаунт и разрешите доступ.\n\nОкно закроется автоматически после авторизации." --title "Яндекс.Диск" 2>/dev/null || true

# Use rclone config create + rclone config reconnect
# First create a minimal config entry
mkdir -p "$(dirname "$RCLONE_CONF")"
if ! grep -q '^\[ydisk\]' "$RCLONE_CONF" 2>/dev/null; then
    cat >> "$RCLONE_CONF" << 'CONF'
[ydisk]
type = yandex
CONF
fi

# Now run rclone config reconnect which handles the full OAuth flow
# It opens browser automatically and updates the config with the token
RESULT=$(rclone config reconnect ydisk: 2>&1 <<< "")

if ! grep -q '"access_token"' "$RCLONE_CONF" 2>/dev/null; then
    # Token not saved — auth failed
    sed -i '/^\[ydisk\]/,/^$/d' "$RCLONE_CONF"
    kdialog --error "Ошибка авторизации.\nПопробуйте ещё раз или обратитесь к Кириллу." --title "Яндекс.Диск" 2>/dev/null
    exit 1
fi

# Create mount directory
mkdir -p "$MOUNT_DIR"

# Create and enable systemd user service
mkdir -p "$SERVICE_DIR"
cat > "$SERVICE_DIR/ydisk.service" << SERVICE
[Unit]
Description=Yandex Disk (rclone mount)
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/rclone mount ydisk:/ %h/Яндекс.Диск --vfs-cache-mode full --vfs-cache-max-age 1h --vfs-read-chunk-size 32M --dir-cache-time 5m
ExecStop=/bin/fusermount -u %h/Яндекс.Диск
Restart=on-failure
RestartSec=10

[Install]
WantedBy=default.target
SERVICE

systemctl --user daemon-reload
systemctl --user enable --now ydisk.service

# Add Dolphin sidebar bookmark
PLACES_FILE="$HOME/.local/share/user-places.xbel"
mkdir -p "$(dirname "$PLACES_FILE")"
if [[ ! -f "$PLACES_FILE" ]] || ! grep -q "Яндекс.Диск" "$PLACES_FILE" 2>/dev/null; then
    cat > "$PLACES_FILE" << XBEL
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xbel>
<xbel xmlns:bookmark="http://www.freedesktop.org/standards/desktop-bookmarks"
      xmlns:kdepriv="http://www.kde.org/kdepriv">
  <bookmark href="file://$MOUNT_DIR">
    <title>Яндекс.Диск</title>
    <info>
      <metadata owner="http://freedesktop.org">
        <bookmark:icon name="folder-cloud"/>
      </metadata>
    </info>
  </bookmark>
</xbel>
XBEL
fi

kdialog --passivepopup "Яндекс.Диск подключён!\nПапка: ~/Яндекс.Диск" 5 --title "Яндекс.Диск" 2>/dev/null || true
