#!/usr/bin/env bash

# If in the future we need to do something before starting the server, we can do it here

# Set global variables
filename="${1#*=}"
browser="$2"
class="${3/--class=/}"
profile="${4/--profile-directory=/}"
url="${5/--app=/}"
icon=$(grep ^Icon= "$HOME/.local/share/applications/$filename")
icon=${icon/Icon=/}

# If not have http:, file: or https: add https://
if ! [[ $url =~ http:|file:|https: ]]; then
    url=https://$url
fi

if [[ $icon =~ / ]]; then
    cp "$icon" ~/.local/share/icons/
    sed -Ei 's|^Icon=.*/(.*)\..*|Icon=\1|g' "$HOME/.local/share/applications/$filename"
fi

# Flatpak name to flatpak file address
case $browser in
    flatpak-brave)
        browser_exec="flatpak run com.brave.Browser"
        ;;
    flatpak-chrome)
        browser_exec="flatpak run com.google.Chrome"
        ;;
    flatpak-chrome-unstable)
        browser_exec="flatpak run com.google.ChromeDev"
        ;;
    flatpak-chromium)
        browser_exec="flatpak run org.chromium.Chromium"
        ;;
    flatpak-edge)
        browser_exec="flatpak run com.microsoft.Edge"
        ;;
    flatpak-ungoogled-chromium)
        browser_exec="flatpak run com.github.Eloston.UngoogledChromium"
        ;;
    flatpak-firefox)
        browser_exec="flatpak run org.mozilla.firefox"
        ;;
    flatpak-librewolf)
        browser_exec="flatpak run io.gitlab.librewolf-community"
        ;;
    *)
        browser_exec=$browser
        ;;
esac


mkdir -p ~/.bigwebapps/$browser

# Permission for flatpak browser
if [[ $browser =~ flatpak ]]; then
    flatpak override --user --filesystem=$HOME/.bigwebapps/$browser ${browser_exec/flatpak run /}
fi

if [[ $browser =~ (firefox|librewolf|flatpak-firefox) ]]; then

    filename=${filename//.desktop}
    # Firefox and another browsers based on it need to have a profile to work changing the userChrome.css and user.js
    if [ ! -d "$HOME/.bigwebapps/$browser/$filename/chrome" ];then
        mkdir -p "$HOME/.bigwebapps/$browser/$filename/chrome"
        cp -a /usr/share/biglinux/webapps/profile/userChrome.css "$HOME/.bigwebapps/$browser/$filename/chrome/"
        cp -a /usr/share/biglinux/webapps/profile/user.js "$HOME/.bigwebapps/$browser/$filename/"
    fi

    # Execute the browser with the profile
    XAPP_FORCE_GTKWINDOW_ICON="${icon//*\/}" MOZ_APP_REMOTINGNAME="$class" exec $browser_exec --class="$class" --name="$filename" --profile "$HOME/.bigwebapps/$browser/$filename" --no-remote "$url"

fi

# If the big-webapp-version is set and using wayland, we change desktop file temporarily
if echo $filename | grep -q '\-BigWebApp' && [[ $XDG_SESSION_TYPE == 'wayland' ]]; then
    filename_orig="$HOME/.local/share/applications/$(echo $filename | sed 's/-BigWebApp[0-9]*//g')"
    filename_orig_bkp="${filename_orig//.desktop/-bkp.desktop}-bkp"
    # Add folder path to filename
    filename="$HOME/.local/share/applications/$filename"

    # If have problem with the original file, we restore it
    if [[ -e $filename_orig_bkp ]]; then
        mv -f "$filename_orig_bkp" "$filename_orig"
    fi

    # In wayland, we don't have option to set two different icons for same site
    # Because of that, we change the desktop file temporarily
    mv -f "$filename_orig" "$filename_orig_bkp"
    cp "$filename" "$filename_orig"
    # Wait to system detect updated icon
    sleep 2
    if [[ "$profile" == "Browser" ]]; then
        $browser_exec --no-default-browser-check --app="$url" &
    else
        $browser_exec --no-default-browser-check --user-data-dir="$HOME/.bigwebapps/$browser/$profile" --app="$url" &
    fi
 
    sleep 2
    mv -f "$filename_orig_bkp" "$filename_orig"
else

    # If have problem with the original file, we restore it
    filename="$HOME/.local/share/applications/$filename"
    filename_bkp="${filename//.desktop/-bkp.desktop}-bkp"
    if [[ -e $filename_bkp ]]; then
        mv -f "$filename_bkp" "$filename"
    fi

    if [[ "$profile" == "Browser" ]]; then
        $browser_exec --no-default-browser-check --app="$url" &
    else
        $browser_exec --no-default-browser-check --user-data-dir="$HOME/.bigwebapps/$browser/$profile" --app="$url" &
    fi
fi
