Load wikimedia image in full quality when opening them in the popup

This commit is contained in:
Pieter Vander Vennet 2024-03-22 16:22:57 +01:00
parent 573a2e0045
commit 889d3a73a1

View file

@ -13,7 +13,7 @@ export class WikimediaImageProvider extends ImageProvider {
public static readonly singleton = new WikimediaImageProvider() public static readonly singleton = new WikimediaImageProvider()
public static readonly apiUrls = [ public static readonly apiUrls = [
"https://commons.wikimedia.org/wiki/", "https://commons.wikimedia.org/wiki/",
"https://upload.wikimedia.org", "https://upload.wikimedia.org"
] ]
public static readonly commonsPrefixes = [...WikimediaImageProvider.apiUrls, "File:"] public static readonly commonsPrefixes = [...WikimediaImageProvider.apiUrls, "File:"]
private readonly commons_key = "wikimedia_commons" private readonly commons_key = "wikimedia_commons"
@ -31,13 +31,18 @@ export class WikimediaImageProvider extends ImageProvider {
return path.substring(path.lastIndexOf("/") + 1) return path.substring(path.lastIndexOf("/") + 1)
} }
private static PrepareUrl(value: string): string { private static PrepareUrl(value: string, useHd = false): string {
if (value.toLowerCase().startsWith("https://commons.wikimedia.org/wiki/")) { if (value.toLowerCase().startsWith("https://commons.wikimedia.org/wiki/")) {
return value return value
} }
return `https://commons.wikimedia.org/wiki/Special:FilePath/${encodeURIComponent( const baseUrl = `https://commons.wikimedia.org/wiki/Special:FilePath/${encodeURIComponent(
value value
)}?width=500&height=400` )}`
if (useHd) {
return baseUrl
}
return baseUrl + `?width=500&height=400`
} }
private static startsWithCommonsPrefix(value: string): boolean { private static startsWithCommonsPrefix(value: string): boolean {
@ -166,9 +171,10 @@ export class WikimediaImageProvider extends ImageProvider {
} }
return { return {
url: WikimediaImageProvider.PrepareUrl(image), url: WikimediaImageProvider.PrepareUrl(image),
url_hd: WikimediaImageProvider.PrepareUrl(image, true),
key: undefined, key: undefined,
provider: this, provider: this,
id: image, id: image
} }
} }
} }