#!/usr/bin/env bash

get_collections() {
  curl -H "Authorization: Bearer $LINKWARDEN_TOKEN" \
    -H "Accept: application/json" \
    "$LINKWARDEN_URL/api/v1/collections" 2>/dev/null \
    | jq -r '.response | map_values(.name)[]'
}

collection=$(get_collections | $DMENU -p "Collection: ")
url=$QUTE_URL
name=$(echo "$QUTE_TITLE" | $DMENU -p "Title: ")

if [ -z "$url" ] || [ -z "$name" ] || [ -z "$collection" ]
then
  echo "message-error \"Failed to save link: Missing required fields\"" >> "$QUTE_FIFO"
  exit 0
fi

payload=$(jq -n \
  --arg u "$url" \
  --arg n "$name" \
  --arg c "$collection" \
  '{
    url: $u,
    name: $n,
    collection: {name: $c},
    tags: []
  }')

response=$(curl -sS --fail-with-body \
  -H "Authorization: Bearer $LINKWARDEN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -X POST \
  -d "$payload" \
  "$LINKWARDEN_URL/api/v1/links" 2>&1)

code="$?"

if [ "$code" -ne 0 ]
then
  response=$(echo "$response" | sed 's/"/\\"/g' | sed 's/$/ - /g' | tr -d '\n' | sed 's/ - $//g')
  echo "message-error \"Failed to save link: $response\"" >> "$QUTE_FIFO"
fi