# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

BRAVE_PN="${PN/-bin/}"

CHROMIUM_LANGS="
	af am ar az bg bn ca cs da de el en-GB en-US es es-419 et fa fi fil fr gu he hi
	hr hu id it ja ka km kn ko lt lv ml mk mn mr ms my nb nl pl pt-BR pt-PT ro ru si sk sl sq sr sr-Latn sv
	sw ta te th tr uk ur uz vi zh-CN zh-TW
"

inherit chromium-2 xdg-utils desktop

DESCRIPTION="Brave Web Browser"
HOMEPAGE="https://brave.com"
SRC_URI="https://github.com/brave/brave-browser/releases/download/v${PV}/brave-browser-${PV}-linux-amd64.zip -> ${P}.zip"

S=${WORKDIR}
LICENSE="MPL-2.0"
SLOT="0"
KEYWORDS="~amd64"
IUSE="keyring"

# New runtime dependencies based on ldd /usr/bin/brave-bin
RDEPEND="
	>=app-accessibility/at-spi2-core-2.46.0
	app-arch/bzip2
	app-arch/zstd
	app-crypt/p11-kit
	dev-libs/expat
	dev-libs/fribidi
	dev-libs/glib
	dev-libs/gmp
	dev-libs/libffi
	dev-libs/libpcre2
	dev-libs/libtasn1
	dev-libs/libunistring
	dev-libs/nettle
	dev-libs/nspr
	dev-libs/nss
	media-gfx/graphite2
	media-libs/alsa-lib
	media-libs/fontconfig
	media-libs/freetype
	media-libs/harfbuzz
	media-libs/libpng
	media-libs/mesa
	net-dns/avahi
	net-dns/libidn2
	net-libs/gnutls
	net-print/cups
	sys-apps/dbus
	sys-apps/util-linux
	sys-devel/gcc
	sys-libs/libcap
	sys-libs/zlib
	x11-libs/cairo
	x11-libs/libdrm
	x11-libs/libX11
	x11-libs/libXau
	x11-libs/libxcb
	x11-libs/libXcomposite
	x11-libs/libXdamage
	x11-libs/libXdmcp
	x11-libs/libXext
	x11-libs/libXfixes
	x11-libs/libXi
	x11-libs/libxkbcommon
	x11-libs/libXrandr
	x11-libs/libXrender
	x11-libs/pango
	x11-libs/pixman
"

# gconf is deprecated.
# DEPEND="gnome-base/gconf:2"
#RDEPEND="
#	${DEPEND}
#	dev-libs/libpthread-stubs
#	x11-libs/libxcb
#	x11-libs/libXcomposite
#	x11-libs/libXcursor
#	x11-libs/libXdamage
#	x11-libs/libXext
#	x11-libs/libXfixes
#	x11-libs/libXi
#	x11-libs/libXrender
#	x11-libs/libXtst
#	x11-libs/libxshmfence
#	x11-libs/libXxf86vm
#	x11-libs/libXScrnSaver
#	x11-libs/libXrandr
#	x11-libs/libXau
#	x11-libs/libXdmcp
#	x11-libs/libXinerama
#	x11-libs/libxkbcommon
#	dev-libs/glib
#	dev-libs/nss
#	dev-libs/nspr
#	net-print/cups
#	sys-apps/dbus
#	dev-libs/expat
#	media-libs/alsa-lib
#	x11-libs/pango
#	x11-libs/cairo
#	dev-libs/gobject-introspection
#	>=app-accessibility/at-spi2-core-2.46.0
#	x11-libs/gtk+
#	x11-libs/gdk-pixbuf
#	dev-libs/libffi
#	dev-libs/libpcre
#	net-libs/gnutls
#	sys-libs/zlib
#	dev-libs/fribidi
#	media-libs/harfbuzz
#	media-libs/fontconfig
#	media-libs/freetype
#	x11-libs/pixman
#	>=media-libs/libpng-1.6.34
#	media-libs/libepoxy
#	dev-libs/libbsd
#	dev-libs/libunistring
#	dev-libs/libtasn1
#	dev-libs/nettle
#	dev-libs/gmp
#	net-dns/libidn2
#	media-gfx/graphite2
#	app-arch/bzip2
#"

BDEPEND="app-arch/unzip"

QA_PREBUILT="*"

src_prepare() {
	pushd "${S}/locales" > /dev/null || die
		chromium_remove_language_paks
	popd > /dev/null || die

	default
}

src_install() (
	shopt -s extglob

	local BRAVE_HOME=/opt/${BRAVE_PN}

	dodir ${BRAVE_HOME%/*}

	insinto ${BRAVE_HOME}
	doins -r *

	# Brave has a bug in 1.27.105 where it needs crashpad_handler chmodded
	# Delete crashpad_handler when https://github.com/brave/brave-browser/issues/16985 is resolved.
	exeinto ${BRAVE_HOME}
	doexe brave chrome_crashpad_handler

	dodir /opt/bin
	dosym ${BRAVE_HOME}/${BRAVE_PN} /opt/bin/${PN} || die

	# Install Icons for Brave.
	newicon "${FILESDIR}/braveAbout.png" "${PN}.png" || die
	newicon -s 128 "${FILESDIR}/braveAbout.png" "${PN}.png" || die

	# install-xattr doesnt approve using domenu or doins from FILESDIR
	make_desktop_entry 'brave-bin %u' Brave brave-bin 'Network;WebBrowser'
	#cp "${FILESDIR}"/${PN}.desktop "${S}"
	#domenu "${S}"/${PN}.desktop
)

pkg_postinst() {
	xdg_desktop_database_update
	xdg_mimeinfo_database_update
	xdg_icon_cache_update
	elog "If upgrading from 1.50.x release or earlier, note that Brave has changed the format of the"
	elog "password file, and ALL YOUR OLD PASSWORDS WILL NOT WORK."
	elog "YOUR BRAVE REWARDS WILL NOT WORK EITHER."
	elog "The solution is to temporarily downgrade back to 1.50.x (legacy ebuild provided),"
	elog "so you can export passwords from Brave's Password Manager."
	elog "once you're back in a newer build, import passwords from inside Brave's Password Manager,"
	elog "and select the file you saved."
}