#!/bin/bash

get_pixel_color(){
  x=$1;
  y=$2;
  output_path="/tmp/$(mktemp -u XXXXXX).png"
  scrot $output_path
  magick $output_path -format "%[hex:p{$x,$y}]" info:
}

extract_text(){
  output_path="/tmp/$(mktemp -u XXXXXX).png"
  cropped_path=$output_path--cropped.png
  scrot $output_path
  left=$1
  top=$2
  width=$3
  height=$4
  # https://www.libvips.org/API/current/libvips-conversion.html#vips-extract-area
  vips extract_area "$output_path" "$cropped_path" $left $top $width $height
  tesseract "$cropped_path" stdout -l eng
}

click (){
  xdotool mousemove $1 $2
  xdotool click 1
}

grab (){
  NOTE="$@"
  echo $@
  scrot --note "-f '/usr/share/fonts/noto/NotoSansMono-Medium.ttf/40' -c 255,0,0,255 -t '$NOTE'"
}

keycombo(){
  for key in "$@"
  do
    xdotool keydown $key
    sleep 0.01
  done
  for key in "$@"
  do
    xdotool keyup $key
    sleep 0.01
  done
  sleep 0.5
}



start_firefox(){
    rm -rf /root/.mozilla/firefox/bifup8k5.docker/sessionstore-backups
    #echo 'user_pref("layout.css.devPixelsPerPx", "1.5");' >> /root/.mozilla/firefox/bifup8k5.docker/prefs.js
    firefox --devtools > /dev/null &
    FIREFOX_PID=$!
    sleep 3
}

prepare_firefox(){
  xdotool key Return # in case there's a "firefox closed unexpectedly" button
  sleep 1
  click 1886 13 #maximize button
  sleep 1
  sleep 0.1
  keycombo Control_L Shift_L e
  keycombo Shift_L c F5 #profiler
  keycombo Control_L Shift_L e
}

load_website(){
  URL=$1
  keycombo Control_L l
  xdotool type "$URL"
  xdotool key Return
  sleep 1
  echo "waiting for $URL to load..."
  times=0
  while [ $(get_pixel_color 143 122) = "2E3436" ] # the center of the X icon that becomes a "refresh" icon once the website is finished loading
  do
    sleep 0.5
    printf "."
    #scrot
    times=$((times + 1))
    if [ $times -eq 10 ]
    then
      echo "Could not load website in time"
      break;
    fi
  done
}

open_network_inspector(){
  keycombo Shift_L F5 #profiler
  echo shift f5
  sleep 1
  echo "sleep 1"
  keycombo Control_L Shift_L e
  echo ctrl shift e
}

network_inspector_search(){
  query=$1
  keycombo Control_L f
  sleep 0.2
  xdotool type "$query" 
  xdotool key Escape
  sleep 0.3
  seq 28 | xargs -I {} xdotool key Tab
  xdotool key Down
  sleep 0.1
  xdotool key Up
  sleep 0.1
}

network_inspector_has_more_entries(){
  [ $(get_pixel_color 1267 1572) = "F9F9FA" ]
}

network_inspector_next_entry(){
  xdotool key Tab
  sleep 0.05
  xdotool key Down
  sleep 0.2
}
