#!/bin/bash

set -o pipefail

source "$HOME/.config/rofi/scripts/_lib.sh"

KEYRING_NAME="2fauth"
KEYRING_VALUE="token"
DOMAIN="https://auth.iedsoftworks.com"

getApiToken() {
  token=$(secret-tool lookup "$KEYRING_NAME" "$KEYRING_VALUE")
  if [[ $? == 0 ]]; then
    return 0
  fi

  token=$(zenity --forms --add-multiline-entry="API Key" --text="Provide a valid API key")
  if [[ $token == "" ]]; then
    return 1
  fi

  echo "$token" | secret-tool store --label "2FAuth API Key" "$KEYRING_NAME" "$KEYRING_VALUE"
}

getApiToken

setOption no-custom true
case $ROFI_RETV in
0)
  echo -en $(curl --oauth2-bearer "$token" "$DOMAIN/api/v1/twofaccounts" | jq -r 'map("\(.id)\\0display\\x1f\(.service) - \(.account)\\x1finfo\\x1f\(.)\\n") | add')
  ;;
1)
  id=$(echo $ROFI_INFO | jq -r '.id')

  curl --oauth2-bearer "$token" "$DOMAIN/api/v1/twofaccounts/$id/otp" |
    jq ".password" -r |
    wl-copy

  notify-send -i "lock" "2FA Code copied" "Copied code for '$(echo $ROFI_INFO | jq -r '"\(.service) - \(.account)"')'"
  ;;
esac
