# Maintainer: lilydjwg <lilydjwg@gmail.com>
# Contributor: Bruno Pagani (a.k.a. ArchangeGabriel) <bruno.n.pagani@gmail.com>
# Contributor: Cedric MATHIEU <me.xenom @ gmail.com>

_name=firefox
_channel=nightly
pkgbase=firefox-nightly
pkgname=()
_version=155.0a1
pkgver=155.0a1.20260808.11
pkgrel=1
arch=('x86_64')
license=('MPL-2.0')
depends=('dbus-glib' 'gtk3' 'libxt' 'nss' 'mime-types')
optdepends=('pulseaudio: audio support'
            'ffmpeg: h.264 video'
            'hunspell: spell checking'
            'hyphen: hyphenation'
            'libnotify: notification integration'
            'networkmanager: location detection via available WiFi networks'
            'speech-dispatcher: text-to-speech'
            'xdg-desktop-portal: Screensharing with Wayland'
            'startup-notification: support for FreeDesktop Startup Notification')
_url="https://ftp.mozilla.org/pub/${_name}/nightly/latest-mozilla-central-l10n"
_filename_prefix="20260808.11-"
source=("${pkgbase}.desktop")
sha512sums=('b58c1b3b09772d0866d511e83e3c7f54db0fe71d2978d2a06bd19b25c020f16e201aab825f0b3d5e9f0c1a3e9db028018e5e38f7ee4868e321938f11cb5ac817'
            '6d2465df5953600e6426816e900c68c71fc52cf3cbd3d551ad6126b4beff4a87d40a6ef543a819a3fa748b11d646980b3f873dc75b0d81bc3949f2903e2c63be'
            'SKIP'
            'bfbea5ae659db0940836ca779ed67ea0c5cd6b46e61c7a89be7933b388ce66c151e35b9e834d926fe5e071f7ba0731e18c80b51885edd32e08c2d4aca063ab89'
            'SKIP'
            'e7bc716f408b7d00bac6f693637e30df94b3e63fefbd1466a328252d069280fcfeda36dae8d673f8cd284f2d4f9aa41c9d935e474f503c2fb6a7aa2fae44ce29'
            'SKIP'
            'a5fc1a313a2fe06b6254318307c33eabe16d42ce4e5c5d63ef51faa51686cbe250a0a483d085959a39f1e75920b523e8ea65bc347db3d9caa74cdcce4b4f305a'
            'SKIP')
validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353'
              '097B313077AE62A02F84DA4DF1A6668FBB7D572E') # Mozilla’s GnuPG release key

_languages=(en-US zh-CN ja zh-TW)

for _lang in "${_languages[@]}"; do
  _locale=${_lang}
  _pkgname=firefox-nightly-${_locale,,}
  _src="${_name}-${_version}.${_lang}.linux"
  _filename="${_filename_prefix}${_src}-x86_64.tar.xz"

  pkgname+=($_pkgname)
  source+=("${_filename}"::"${_url}/${_src}-x86_64.tar.xz"
           "${_filename}.asc"::"${_url}/${_src}-x86_64.tar.xz.asc")
  eval "package_$_pkgname() {
    msg2 'Removing old firefox directory...'
    rm -rf firefox
    msg2 'Extract ${_filename}...'
    bsdtar -xf ${_filename}
    _package $_lang
  }"
done

# Don't extract anything because they'll override each other
noextract=(${source[@]%%::*})

_package() {
  OPT_PATH="opt/${pkgbase}"
  pkgdesc="Standalone Web Browser from Mozilla — Nightly build ($1)"
  url="https://www.mozilla.org/$1/${_name}/${_channel}"
  provides=(firefox-${_channel}=$pkgver)
  conflicts=(firefox-${_channel} firefox-${_channel}-i18n-${1,,})
  replaces=(firefox-${_channel}-i18n-${1,,})

  # Install the package files
  install -d "${pkgdir}"/{usr/bin,opt}
  cp -r ${_name} "${pkgdir}"/${OPT_PATH}
  ln -s "/${OPT_PATH}/${_name}" "${pkgdir}"/usr/bin/${pkgbase}

  # Install .desktop files
  install -Dm644 "${srcdir}"/${pkgbase}.desktop -t "${pkgdir}"/usr/share/applications

  # Install icons
  SRC_LOC="${srcdir}"/${_name}/browser
  DEST_LOC="${pkgdir}"/usr/share/icons/hicolor
  for i in 16 32 48 64 128; do
      install -Dm644 "${SRC_LOC}"/chrome/icons/default/default${i}.png "${DEST_LOC}"/${i}x${i}/apps/${pkgbase}.png
  done

  cat <<EOF | install -Dm644 /dev/stdin "${pkgdir}"/${OPT_PATH}/browser/defaults/preferences/vendor.js
pref("intl.locale.requested", "");
pref("spellchecker.dictionary_path", "/usr/share/hunspell");
EOF

  # Disable auto-updates
  if [[ $1 == "zh-CN" ]]; then
    # Change homepage for zh_CN to avoid ADs and tracks
    cat <<EOF | install -Dm644 /dev/stdin "${pkgdir}"/${OPT_PATH}/distribution/policies.json
{"policies": {"DisableAppUpdate": true, "Homepage": {"URL": "about:home"}}}
EOF
  else
    cat <<EOF | install -Dm644 /dev/stdin "${pkgdir}"/${OPT_PATH}/distribution/policies.json
{"policies": {"DisableAppUpdate": true}}
EOF
  fi
}
