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,29 +65,54 @@ 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',
'1.5x',
'2x',
'icon',
'svg'
];
foreach( $logoKeys as $logoKey ) {
$logo = (string)$logos[$logoKey];
if ( !empty( $logo ) ) {
$logoUrl = wfExpandUrl( $logo, PROTO_CURRENT );
$request = $services->getHttpRequestFactory()->create( $logoUrl, [], __METHOD__ );
$request->execute(); $request->execute();
$appleTouchIconContent = $request->getContent(); $logoContent = $request->getContent();
if ( !empty( $appleTouchIconContent ) ) {
$appleTouchIconSize = getimagesizefromstring( $appleTouchIconContent ); if ( !empty( $logoContent ) ) {
$logoSize = getimagesizefromstring( $logoContent );
} }
$icon = [ $icon = [
'src' => $appleTouchIcon 'src' => $logo
]; ];
if ( isset( $appleTouchIconSize ) && $appleTouchIconSize !== false ) {
$icon['sizes'] = $appleTouchIconSize[0] . 'x' . $appleTouchIconSize[1]; if ( isset( $logoSize ) && $logoSize !== false ) {
$icon['type'] = $appleTouchIconSize['mime']; $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;
} }