Files
desktop/src/Desktop/AppIconResolver.php
Lars Gebhardt-Kusche aea2bb304e
All checks were successful
Deploy / deploy-staging (push) Successful in 1m1s
Deploy / deploy-production (push) Has been skipped
Zweite Megaupload
2026-06-08 02:05:46 +02:00

63 lines
2.4 KiB
PHP

<?php
declare(strict_types=1);
namespace Desktop;
final class AppIconResolver
{
/**
* @param array<int, array<string, mixed>> $apps
* @return array<int, array<string, mixed>>
*/
public static function decorate(array $apps, string $skin): array
{
$manifest = self::manifest($skin);
return array_map(
static function (array $app) use ($manifest): array {
$appId = (string) ($app['app_id'] ?? '');
$iconPath = $manifest[$appId] ?? null;
if ($iconPath !== null) {
$app['icon_path'] = $iconPath;
}
return $app;
},
$apps
);
}
/**
* @return array<string, string>
*/
private static function manifest(string $skin): array
{
return match ($skin) {
'windows' => [
'welcome-center' => '/assets/desktop/skin-icons/windows/welcome-center.ico',
'public-dashboard' => '/assets/desktop/skin-icons/windows/public-dashboard.ico',
'workspace-manager' => '/assets/desktop/skin-icons/windows/workspace-manager.ico',
'admin-apps' => '/assets/desktop/skin-icons/windows/admin-apps.ico',
'desktop-login' => '/assets/desktop/skin-icons/windows/desktop-login.ico',
],
'apple' => [
'welcome-center' => '/assets/desktop/skin-icons/apple/welcome-center.svg',
'public-dashboard' => '/assets/desktop/skin-icons/apple/public-dashboard.svg',
'workspace-manager' => '/assets/desktop/skin-icons/apple/workspace-manager.svg',
'admin-apps' => '/assets/desktop/skin-icons/apple/admin-apps.svg',
'desktop-login' => '/assets/desktop/skin-icons/apple/desktop-login.svg',
],
'linux' => [
'welcome-center' => '/assets/desktop/skin-icons/linux/welcome-center.svg',
'public-dashboard' => '/assets/desktop/skin-icons/linux/public-dashboard.svg',
'workspace-manager' => '/assets/desktop/skin-icons/linux/workspace-manager.svg',
'admin-apps' => '/assets/desktop/skin-icons/linux/admin-apps.svg',
'desktop-login' => '/assets/desktop/skin-icons/linux/desktop-login.svg',
],
default => [],
};
}
}