1
0
Fork 0
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:
Bill Thornton 2023-10-16 01:38:22 -04:00
parent ae48e2a007
commit 359e168ace
7 changed files with 17 additions and 14 deletions

View file

@ -11,8 +11,8 @@ import browser from 'scripts/browser';
import datetime from 'scripts/datetime'; import datetime from 'scripts/datetime';
import dom from 'scripts/dom'; import dom from 'scripts/dom';
import globalize from 'scripts/globalize'; import globalize from 'scripts/globalize';
import imageHelper from 'scripts/imagehelper';
import { getBackdropShape, getPortraitShape, getSquareShape } from 'utils/card'; import { getBackdropShape, getPortraitShape, getSquareShape } from 'utils/card';
import imageHelper from 'utils/image';
import { randomInt } from 'utils/number'; import { randomInt } from 'utils/number';
import focusManager from '../focusManager'; import focusManager from '../focusManager';

View file

@ -4,7 +4,7 @@ import escapeHtml from 'escape-html';
import imageLoader from 'components/images/imageLoader'; import imageLoader from 'components/images/imageLoader';
import { appRouter } from 'components/router/appRouter'; import { appRouter } from 'components/router/appRouter';
import globalize from 'scripts/globalize'; import globalize from 'scripts/globalize';
import imageHelper from 'scripts/imagehelper'; import imageHelper from 'utils/image';
function getLibraryButtonsHtml(items: BaseItemDto[]) { function getLibraryButtonsHtml(items: BaseItemDto[]) {
let html = ''; let html = '';

View file

@ -12,7 +12,7 @@ import playMethodHelper from '../../components/playback/playmethodhelper';
import cardBuilder from '../../components/cardbuilder/cardBuilder'; import cardBuilder from '../../components/cardbuilder/cardBuilder';
import imageLoader from '../../components/images/imageLoader'; import imageLoader from '../../components/images/imageLoader';
import ActivityLog from '../../components/activitylog'; import ActivityLog from '../../components/activitylog';
import imageHelper from '../../scripts/imagehelper'; import imageHelper from '../../utils/image';
import indicators from '../../components/indicators/indicators'; import indicators from '../../components/indicators/indicators';
import '../../components/listview/listview.scss'; import '../../components/listview/listview.scss';
import '../../elements/emby-button/emby-button'; import '../../elements/emby-button/emby-button';

View file

@ -3,7 +3,7 @@ import cardBuilder from '../../../components/cardbuilder/cardBuilder';
import loading from '../../../components/loading/loading'; import loading from '../../../components/loading/loading';
import dom from '../../../scripts/dom'; import dom from '../../../scripts/dom';
import globalize from '../../../scripts/globalize'; import globalize from '../../../scripts/globalize';
import imageHelper from '../../../scripts/imagehelper'; import imageHelper from '../../../utils/image';
import { formatDistanceToNow } from 'date-fns'; import { formatDistanceToNow } from 'date-fns';
import { getLocaleWithSuffix } from '../../../utils/dateFnsLocale.ts'; import { getLocaleWithSuffix } from '../../../utils/dateFnsLocale.ts';
import '../../../elements/emby-button/emby-button'; import '../../../elements/emby-button/emby-button';

View file

@ -5,7 +5,7 @@ import loading from '../../components/loading/loading';
import libraryMenu from '../../scripts/libraryMenu'; import libraryMenu from '../../scripts/libraryMenu';
import globalize from '../../scripts/globalize'; import globalize from '../../scripts/globalize';
import dom from '../../scripts/dom'; import dom from '../../scripts/dom';
import imageHelper from '../../scripts/imagehelper'; import imageHelper from '../../utils/image';
import '../../components/cardbuilder/card.scss'; import '../../components/cardbuilder/card.scss';
import '../../elements/emby-itemrefreshindicator/emby-itemrefreshindicator'; import '../../elements/emby-itemrefreshindicator/emby-itemrefreshindicator';
import Dashboard, { pageClassOn, pageIdOn } from '../../utils/dashboard'; import Dashboard, { pageClassOn, pageIdOn } from '../../utils/dashboard';

View file

@ -12,7 +12,7 @@ import { pluginManager } from '../components/pluginManager';
import groupSelectionMenu from '../plugins/syncPlay/ui/groupSelectionMenu'; import groupSelectionMenu from '../plugins/syncPlay/ui/groupSelectionMenu';
import browser from './browser'; import browser from './browser';
import globalize from './globalize'; import globalize from './globalize';
import imageHelper from './imagehelper'; import imageHelper from '../utils/image';
import { getMenuLinks } from '../scripts/settings/webSettings'; import { getMenuLinks } from '../scripts/settings/webSettings';
import Dashboard, { pageClassOn } from '../utils/dashboard'; import Dashboard, { pageClassOn } from '../utils/dashboard';
import ServerConnections from '../components/ServerConnections'; import ServerConnections from '../components/ServerConnections';

View file

@ -1,7 +1,10 @@
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/'; const BASE_DEVICE_IMAGE_URL = 'assets/img/devices/';
// audit note: this module is expected to return safe text for use in HTML // audit note: this module is expected to return safe text for use in HTML
function getWebDeviceIcon(browser) { function getWebDeviceIcon(browser: string | null | undefined) {
switch (browser) { switch (browser) {
case 'Opera': case 'Opera':
case 'Opera TV': case 'Opera TV':
@ -31,8 +34,8 @@ function getWebDeviceIcon(browser) {
} }
} }
export function getDeviceIcon(device) { export function getDeviceIcon(info: DeviceInfo | SessionInfo) {
switch (device.AppName || device.Client) { switch ((info as DeviceInfo).AppName || (info as SessionInfo).Client) {
case 'Samsung Smart TV': case 'Samsung Smart TV':
return BASE_DEVICE_IMAGE_URL + 'samsung.svg'; return BASE_DEVICE_IMAGE_URL + 'samsung.svg';
case 'Xbox One': case 'Xbox One':
@ -58,13 +61,13 @@ export function getDeviceIcon(device) {
case 'Finamp': case 'Finamp':
return BASE_DEVICE_IMAGE_URL + 'finamp.svg'; return BASE_DEVICE_IMAGE_URL + 'finamp.svg';
case 'Jellyfin Web': case 'Jellyfin Web':
return getWebDeviceIcon(device.Name || device.DeviceName); return getWebDeviceIcon((info as DeviceInfo).Name || (info as SessionInfo).DeviceName);
default: default:
return BASE_DEVICE_IMAGE_URL + 'other.svg'; return info.Capabilities?.IconUrl || BASE_DEVICE_IMAGE_URL + 'other.svg';
} }
} }
export function getLibraryIcon(library) { export function getLibraryIcon(library: string | null | undefined) {
switch (library) { switch (library) {
case 'movies': case 'movies':
return 'video_library'; return 'video_library';
@ -94,6 +97,6 @@ export function getLibraryIcon(library) {
} }
export default { export default {
getDeviceIcon: getDeviceIcon, getDeviceIcon,
getLibraryIcon: getLibraryIcon getLibraryIcon
}; };