#!/usr/bin/env bash
#
# Script name: dmqute
# Description: Search your qutebrowswer bookmarks and quickmarks.
# Dependencies: dmenu, qutebrowser
# GitLab: https://www.gitlab.com/dwt1/dmscripts
# License: https://www.gitlab.com/dwt1/dmscripts/LICENSE
# Contributors: Derek Taylor

if [ $(hostname) = "syl" ]; then
    style="laptop"
    #echo "this is hidpi"
else 
    style="desktop"
    #echo "this is not hidpi"
fi

# Defining location of bookmarks file
BMFILE="$HOME/.config/qutebrowser/bookmarks/urls"

# Defining location of quickmarks file
QMFILE="$HOME/.config/qutebrowser/quickmarks"

# Defining location of history database
HISTDB="$HOME/.local/share/qutebrowser/history.sqlite"

# A separator that will appear in between quickmarks, bookmarks and history urls.
SEPARATOR="----------"

# Read array of options to choose.
readarray -t bmarks < "$BMFILE"
readarray -t qmarks < "$QMFILE"

# Sort the bookmark, quickmark and history lists so that the url is the last field.
# We will awk print the last field later.
# History list is formed by grep'ing "http" from the history table.
bmlist=$(printf '%s\n' "${bmarks[@]}" | awk '{print $2" - "$1}')
qmlist=$(printf '%s\n' "${qmarks[@]}" | awk '{print "["$1"] - "$NF}' | sort)
SQL="SELECT h.title, h.url FROM history as h where url like 'http%';"
histlist=$(printf '%s\n' "$(sqlite3 "$HISTDB" "${SQL}")"  |  awk -F "|" '{print $1" - "$NF}')

# Piping the above lists into dmenu.
# We use "printf '%s\n'" to format the array one item to a line.
# The urls are listed quickmarks first, then the SEPARATOR, and then bookmarks.
choice=$(printf '%s\n' "$qmlist" "$SEPARATOR" "$bmlist" "$SEPARATOR" "$histlist" | rofi -dmenu -p 'Qutebrowser open:' -config "/home/chris/.dotfiles/rofi/launchers-git/$style.rasi") "$@" || exit

# What to do if the separator is chosen from the list.
# We simply launch qutebrowser without any url arguments.
# shellcheck disable=SC2154
if [ "$choice" == "$SEPARATOR" ]; then
    qutebrowser
# What to do when/if we choose a url to view.
elif [ "$choice" ]; then
  url=$(echo "${choice}" | awk '{print $NF}') || exit
  qutebrowser "$url"
# What to do if we just escape without choosing anything.
else
    echo "Program terminated." && exit 0
fi
