#!/bin/bash

# ======================================================================
# Archivo:       kdenlive-flatpak-desktop-fix
# Ruta:          /usr/local/bin/
# Autor:         Charlie Martínez® <cmartinez@quirinux.org>
# Licencia:      https://www.gnu.org/licenses/gpl-2.0.txt
# Propósito:     Al iniciar sesión, si el Flatpak de Kdenlive cambió de versión
#                (o falta el lanzador/config del usuario), reaplica el
#                lanzador de Quirinux y kdenlive-flatpakrc
# Distribución:  Quirinux 2.x
# ======================================================================

#
# Copyright (c) 2019-2025 Charlie Martínez, derechos reservados.
# Licencia: https://www.gnu.org/licenses/gpl-2.0.txt
# Usos autorizados y no autorizados de la marca Quirinux:
# Ver https://www.quirinux.org/aviso-legal
#

# Se ejecuta como el usuario de la sesión (autostart), no como root, y solo
# toca los archivos de ese usuario. Los overrides de Flatpak son del sistema,
# los aplica el postinst y persisten entre actualizaciones del Flatpak.

FLATPAK_ID="org.kde.kdenlive"
SKEL="/etc/skel"
SOURCE_DESKTOP="$SKEL/.local/share/applications/$FLATPAK_ID.desktop"
SKEL_RC="$SKEL/.var/app/$FLATPAK_ID/config/kdenlive-flatpakrc"

TARGET_DESKTOP="${XDG_DATA_HOME:-$HOME/.local/share}/applications/$FLATPAK_ID.desktop"
TARGET_RC="$HOME/.var/app/$FLATPAK_ID/config/kdenlive-flatpakrc"
STATE_DIR="${XDG_STATE_HOME:-$HOME/.local/state}/kdenlive-quirinux"
VERSION_FILE="$STATE_DIR/flatpak-version"

command -v flatpak >/dev/null 2>&1 || exit 0

# Etiquetas de flatpak traducidas ("Versión:"): forzar idioma neutro
CURRENT_VERSION=$(LC_ALL=C LANGUAGE=C flatpak info "$FLATPAK_ID" 2>/dev/null \
    | sed -n 's/^[[:space:]]*Version:[[:space:]]*//p' | head -n1)
[ -z "$CURRENT_VERSION" ] && exit 0

KNOWN_VERSION=$(cat "$VERSION_FILE" 2>/dev/null || echo "")

# El lanzador propio debe existir y apuntar al selector; si no, se reaplica
NEED_DESKTOP=0
if [ ! -f "$TARGET_DESKTOP" ] || ! grep -q 'iniciar-kdenlive-selector' "$TARGET_DESKTOP"; then
    NEED_DESKTOP=1
fi

if [ "$CURRENT_VERSION" != "$KNOWN_VERSION" ] || [ "$NEED_DESKTOP" = 1 ]; then
    if [ -f "$SOURCE_DESKTOP" ]; then
        mkdir -p "$(dirname "$TARGET_DESKTOP")"
        cp -f "$SOURCE_DESKTOP" "$TARGET_DESKTOP"
    fi

    # kdenlive-flatpakrc solo si no existe (no pisa la config del usuario)
    if [ ! -f "$TARGET_RC" ] && [ -f "$SKEL_RC" ]; then
        mkdir -p "$(dirname "$TARGET_RC")"
        cp -f "$SKEL_RC" "$TARGET_RC"
    fi

    mkdir -p "$STATE_DIR" && echo "$CURRENT_VERSION" > "$VERSION_FILE"
fi

exit 0
