diff --git a/package.json b/package.json index 885ff2505..04d177c3d 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,6 @@ "howler": "^2.2.0", "intersection-observer": "^0.11.0", "jellyfin-apiclient": "^1.4.2", - "jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto", "jquery": "^3.5.1", "jstree": "^3.3.10", "libarchive.js": "^1.3.0", diff --git a/src/bundle.js b/src/bundle.js index 3d1d600a9..3bc27b733 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -90,12 +90,6 @@ _define('material-icons', function() { return materialIcons; }); -// noto font -const noto = require('jellyfin-noto'); -_define('jellyfin-noto', function () { - return noto; -}); - const epubjs = require('epubjs'); _define('epubjs', function () { return epubjs; diff --git a/src/config.json b/src/config.json index 864e1f365..608a2dae3 100644 --- a/src/config.json +++ b/src/config.json @@ -22,6 +22,12 @@ "id": "wmc" } ], + "fonts": [ + "https://repo.jellyfin.org/releases/other/fonts/noto-sans.css", + "https://repo.jellyfin.org/releases/other/fonts/noto-sans-kr.css", + "https://repo.jellyfin.org/releases/other/fonts/noto-sans-jp.css", + "https://repo.jellyfin.org/releases/other/fonts/noto-sans-sc.css" + ], "plugins": [ "plugins/playAccessValidation/plugin", "plugins/experimentalWarnings/plugin", diff --git a/src/scripts/autoThemes.js b/src/scripts/autoThemes.js index e278a80dc..f5797522a 100644 --- a/src/scripts/autoThemes.js +++ b/src/scripts/autoThemes.js @@ -1,11 +1,22 @@ import * as userSettings from 'userSettings'; +import * as webSettings from 'webSettings'; import skinManager from 'skinManager'; import events from 'events'; -// Set the default theme when loading +// set the default theme when loading skinManager.setTheme(userSettings.theme()); -// Set the user's prefered theme when signing in +// set the saved theme once a user authenticates events.on(window.connectionManager, 'localusersignedin', function (e, user) { skinManager.setTheme(userSettings.theme()); }); + +webSettings.getFonts().then(fonts => { + for (const font of fonts) { + let link = document.createElement('link'); + link.setAttribute('rel', 'stylesheet'); + link.href = font; + + document.getElementsByTagName('head')[0].appendChild(link); + } +}); diff --git a/src/scripts/settings/webSettings.js b/src/scripts/settings/webSettings.js index 80587713b..cf1dd23d3 100644 --- a/src/scripts/settings/webSettings.js +++ b/src/scripts/settings/webSettings.js @@ -102,3 +102,12 @@ export function getPlugins() { return []; }); } + +export function getFonts() { + return getConfig().then(config => { + return config.fonts; + }).catch(error => { + console.log('cannot get web config:', error); + return []; + }); +} diff --git a/src/scripts/site.js b/src/scripts/site.js index 0dbdcb4c6..445da3140 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -505,7 +505,6 @@ function initClient() { 'sortable', 'webcomponents', 'material-icons', - 'jellyfin-noto', 'date-fns', 'page', 'polyfill', @@ -528,7 +527,7 @@ function initClient() { }); promise = require(['fetch']) - .then(() => require(['jQuery', 'polyfill', 'fast-text-encoding', 'intersection-observer', 'classlist-polyfill', 'css!assets/css/site', 'jellyfin-noto'], (jQuery) => { + .then(() => require(['jQuery', 'polyfill', 'fast-text-encoding', 'intersection-observer', 'classlist-polyfill', 'css!assets/css/site'], (jQuery) => { // Expose jQuery globally window.$ = jQuery; window.jQuery = jQuery;