mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Use icon url from client capabilities
This commit is contained in:
parent
ae48e2a007
commit
359e168ace
7 changed files with 17 additions and 14 deletions
102
src/utils/image.ts
Normal file
102
src/utils/image.ts
Normal file
|
@ -0,0 +1,102 @@
|
|||
import type { DeviceInfo } from '@jellyfin/sdk/lib/generated-client/models/device-info';
|
||||
import type { SessionInfo } from '@jellyfin/sdk/lib/generated-client/models/session-info';
|
||||
|
||||
const BASE_DEVICE_IMAGE_URL = 'assets/img/devices/';
|
||||
|
||||
// audit note: this module is expected to return safe text for use in HTML
|
||||
function getWebDeviceIcon(browser: string | null | undefined) {
|
||||
switch (browser) {
|
||||
case 'Opera':
|
||||
case 'Opera TV':
|
||||
case 'Opera Android':
|
||||
return BASE_DEVICE_IMAGE_URL + 'opera.svg';
|
||||
case 'Chrome':
|
||||
case 'Chrome Android':
|
||||
return BASE_DEVICE_IMAGE_URL + 'chrome.svg';
|
||||
case 'Firefox':
|
||||
case 'Firefox Android':
|
||||
return BASE_DEVICE_IMAGE_URL + 'firefox.svg';
|
||||
case 'Safari':
|
||||
case 'Safari iPad':
|
||||
case 'Safari iPhone':
|
||||
return BASE_DEVICE_IMAGE_URL + 'safari.svg';
|
||||
case 'Edge Chromium':
|
||||
case 'Edge Chromium Android':
|
||||
case 'Edge Chromium iPad':
|
||||
case 'Edge Chromium iPhone':
|
||||
return BASE_DEVICE_IMAGE_URL + 'edgechromium.svg';
|
||||
case 'Edge':
|
||||
return BASE_DEVICE_IMAGE_URL + 'edge.svg';
|
||||
case 'Internet Explorer':
|
||||
return BASE_DEVICE_IMAGE_URL + 'msie.svg';
|
||||
default:
|
||||
return BASE_DEVICE_IMAGE_URL + 'html5.svg';
|
||||
}
|
||||
}
|
||||
|
||||
export function getDeviceIcon(info: DeviceInfo | SessionInfo) {
|
||||
switch ((info as DeviceInfo).AppName || (info as SessionInfo).Client) {
|
||||
case 'Samsung Smart TV':
|
||||
return BASE_DEVICE_IMAGE_URL + 'samsung.svg';
|
||||
case 'Xbox One':
|
||||
return BASE_DEVICE_IMAGE_URL + 'xbox.svg';
|
||||
case 'Sony PS4':
|
||||
return BASE_DEVICE_IMAGE_URL + 'playstation.svg';
|
||||
case 'Kodi':
|
||||
case 'Kodi JellyCon':
|
||||
return BASE_DEVICE_IMAGE_URL + 'kodi.svg';
|
||||
case 'Jellyfin Android':
|
||||
case 'AndroidTV':
|
||||
case 'Android TV':
|
||||
return BASE_DEVICE_IMAGE_URL + 'android.svg';
|
||||
case 'Jellyfin Mobile (iOS)':
|
||||
case 'Jellyfin Mobile (iPadOS)':
|
||||
case 'Jellyfin iOS':
|
||||
case 'Infuse':
|
||||
return BASE_DEVICE_IMAGE_URL + 'apple.svg';
|
||||
case 'Home Assistant':
|
||||
return BASE_DEVICE_IMAGE_URL + 'home-assistant.svg';
|
||||
case 'Jellyfin Roku':
|
||||
return BASE_DEVICE_IMAGE_URL + 'roku.svg';
|
||||
case 'Finamp':
|
||||
return BASE_DEVICE_IMAGE_URL + 'finamp.svg';
|
||||
case 'Jellyfin Web':
|
||||
return getWebDeviceIcon((info as DeviceInfo).Name || (info as SessionInfo).DeviceName);
|
||||
default:
|
||||
return info.Capabilities?.IconUrl || BASE_DEVICE_IMAGE_URL + 'other.svg';
|
||||
}
|
||||
}
|
||||
|
||||
export function getLibraryIcon(library: string | null | undefined) {
|
||||
switch (library) {
|
||||
case 'movies':
|
||||
return 'video_library';
|
||||
case 'music':
|
||||
return 'library_music';
|
||||
case 'photos':
|
||||
return 'photo_library';
|
||||
case 'livetv':
|
||||
return 'live_tv';
|
||||
case 'tvshows':
|
||||
return 'tv';
|
||||
case 'trailers':
|
||||
return 'local_movies';
|
||||
case 'homevideos':
|
||||
return 'photo_library';
|
||||
case 'musicvideos':
|
||||
return 'music_video';
|
||||
case 'books':
|
||||
return 'library_books';
|
||||
case 'channels':
|
||||
return 'videocam';
|
||||
case 'playlists':
|
||||
return 'view_list';
|
||||
default:
|
||||
return 'folder';
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
getDeviceIcon,
|
||||
getLibraryIcon
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue