feat(pwa): use wgLogos instead

This commit is contained in:
alistair3149 2022-10-23 13:38:05 -04:00
parent 140f1d6e12
commit 56005ae627
No known key found for this signature in database

View file

@ -65,28 +65,53 @@ class ApiWebappManifest extends ApiBase {
* *
* @param MediaWikiServices $services * @param MediaWikiServices $services
* @param Config $config * @param Config $config
* @param MediaWikiServices $services
* @return array * @return array
*/ */
private function getIcons( $config, $services ) { private function getIcons( $config, $services ) {
$icons = []; $icons = [];
$logos = $config->get( 'Logos' );
$appleTouchIcon = $config->get( 'AppleTouchIcon' ); // That really shouldn't happen
if ( $appleTouchIcon !== false ) { if ( $logos !== false ) {
$appleTouchIconUrl = wfExpandUrl( $appleTouchIcon, PROTO_CURRENT ); $logoKeys = [
$request = $services->getHttpRequestFactory()->create( $appleTouchIconUrl, [], __METHOD__ ); '1x',
$request->execute(); '1.5x',
$appleTouchIconContent = $request->getContent(); '2x',
if ( !empty( $appleTouchIconContent ) ) { 'icon',
$appleTouchIconSize = getimagesizefromstring( $appleTouchIconContent ); 'svg'
}
$icon = [
'src' => $appleTouchIcon
]; ];
if ( isset( $appleTouchIconSize ) && $appleTouchIconSize !== false ) {
$icon['sizes'] = $appleTouchIconSize[0] . 'x' . $appleTouchIconSize[1]; foreach( $logoKeys as $logoKey ) {
$icon['type'] = $appleTouchIconSize['mime']; $logo = (string)$logos[$logoKey];
if ( !empty( $logo ) ) {
$logoUrl = wfExpandUrl( $logo, PROTO_CURRENT );
$request = $services->getHttpRequestFactory()->create( $logoUrl, [], __METHOD__ );
$request->execute();
$logoContent = $request->getContent();
if ( !empty( $logoContent ) ) {
$logoSize = getimagesizefromstring( $logoContent );
}
$icon = [
'src' => $logo
];
if ( isset( $logoSize ) && $logoSize !== false ) {
$icon['sizes'] = $logoSize[0] . 'x' . $logoSize[1];
$icon['type'] = $logoSize['mime'];
}
// Set sizes to any if it is a SVG
if ( substr( $logo, -3 ) === 'svg' ) {
$icon['sizes'] = 'any';
$icon['type'] = 'image/svg+xml';
}
$icons[] = $icon;
}
} }
$icons[] = $icon;
} }
return $icons; return $icons;