From bb36739dba56f8f53dae1882817641ff0c4b9b8b Mon Sep 17 00:00:00 2001
From: Rokosun <rokosun@trom.tf>
Date: Sun, 14 Jul 2024 01:12:49 +0530
Subject: [PATCH] Add flatpak support

---
 pamac-url-handler | 33 ++++++++++++++++++++++++++-------
 1 file changed, 26 insertions(+), 7 deletions(-)
 mode change 100644 => 100755 pamac-url-handler

diff --git a/pamac-url-handler b/pamac-url-handler
old mode 100644
new mode 100755
index b9aa7fd..84d18b0
--- a/pamac-url-handler
+++ b/pamac-url-handler
@@ -4,12 +4,31 @@
 # x-alpm-package://packagename
 # install: xdg-mime default pamac-url-handler.desktop x-scheme-handler/x-alpm-package
 
-packagename="${1#x-alpm-package://}"
-echo "${packagename:0:4}"
-if [[ "aur/" == "${packagename:0:4}" ]]; then
-    name="${packagename##*/}"
-    pamac-installer --build "$name"
-    exit 0
+if [ $# != 1 ] || [[ "$1" != 'x-alpm-package://'* ]]; then
+	echo "Usage: $0 [URL]"
+	exit 1
 fi
-pamac-installer "$packagename"
 
+content="${1#x-alpm-package://}"
+
+# AUR install
+if [[ "$content" == 'aur//'* ]]; then
+	packagename="${content#aur//}"
+	pamac-installer --build "$packagename"
+
+# Flatpak install
+elif [[ "$content" == 'flatpak//'* ]]; then
+	appID="${content#flatpak//}"
+	info=$(flatpak remote-info flathub "$appID") || {
+		yad  --image 'dialog-error' --title 'Alert' --buttons-layout=center --text-align=center --button=yad-close --borders=10 --text "Flatpak ID not found:\n$appID"
+		exit 1
+	}
+	yad  --image 'dialog-question' --title 'Flatpak install' --button=Cancel:1 --button=Install:0 --text "$info" &&
+		exo-open --launch TerminalEmulator \
+			bash -c "flatpak install --assumeyes flathub $appID ; printf '\n'; read -n1 -rsp 'press any key to close window...'"
+
+# Repo install
+else
+	packagename=$content
+	pamac-installer "$packagename"
+fi