1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge branch 'master' into connection-manager-global

This commit is contained in:
Julien Machiels 2020-09-01 10:16:21 +02:00 committed by GitHub
commit 3cbe0f7264
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
139 changed files with 1032 additions and 3566 deletions

View file

@ -35,7 +35,8 @@
// Promise() being missing on some legacy browser, and a funky one
// is Promise() present but buggy on WebOS 2
window.Promise = undefined;
window.Promise = undefined;
/* eslint-disable-next-line no-restricted-globals -- Explicit check on self needed */
self.Promise = undefined;
}
if (!window.Promise) {

View file

@ -75,10 +75,24 @@ function hasKeyboard(browser) {
function iOSversion() {
// MacIntel: Apple iPad Pro 11 iOS 13.1
if (/iP(hone|od|ad)|MacIntel/.test(navigator.platform)) {
// supports iOS 2.0 and later: <http://bit.ly/TJjs1V>
const v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
const tests = [
// Original test for getting full iOS version number in iOS 2.0+
/OS (\d+)_(\d+)_?(\d+)?/,
// Test for iPads running iOS 13+ that can only get the major OS version
/Version\/(\d+)/
];
for (const test of tests) {
const matches = (navigator.appVersion).match(test);
if (matches) {
return [
parseInt(matches[1], 10),
parseInt(matches[2] || 0, 10),
parseInt(matches[3] || 0, 10)
];
}
}
}
return [];
}
let _supportsCssAnimation;
@ -196,6 +210,15 @@ if (!browser.chrome && !browser.edgeChromium && !browser.edge && !browser.opera
browser.safari = true;
}
browser.osx = userAgent.toLowerCase().indexOf('os x') !== -1;
// This is a workaround to detect iPads on iOS 13+ that report as desktop Safari
// This may break in the future if Apple releases a touchscreen Mac
// https://forums.developer.apple.com/thread/119186
if (browser.osx && !browser.iphone && !browser.ipod && !browser.ipad && navigator.maxTouchPoints > 1) {
browser.ipad = true;
}
if (userAgent.toLowerCase().indexOf('playstation 4') !== -1) {
browser.ps4 = true;
browser.tv = true;
@ -242,7 +265,6 @@ if (typeof document !== 'undefined') {
browser.keyboard = hasKeyboard(browser);
browser.supportsCssAnimation = supportsCssAnimation;
browser.osx = userAgent.toLowerCase().indexOf('os x') !== -1;
browser.iOS = browser.ipad || browser.iphone || browser.ipod;
if (browser.iOS) {

View file

@ -59,7 +59,7 @@ function renderItems(page, item) {
if (item.MusicVideoCount) {
sections.push({
name: globalize.translate('HeaderMusicVideos'),
name: globalize.translate('MusicVideos'),
type: 'MusicVideo'
});
}

View file

@ -49,7 +49,7 @@ export function showLayoutMenu (button, currentLayout, views) {
var menuItems = views.map(function (v) {
return {
name: globalize.translate('Option' + v),
name: globalize.translate(v),
id: v,
selected: currentLayout == v
};
@ -182,9 +182,9 @@ export function showSortMenu (options) {
html += '</h2>';
html += '<div>';
isChecked = options.query.SortOrder == 'Ascending' ? ' checked' : '';
html += '<label class="radio-label-block"><input type="radio" is="emby-radio" name="SortOrder" value="Ascending" class="menuSortOrder" ' + isChecked + ' /><span>' + globalize.translate('OptionAscending') + '</span></label>';
html += '<label class="radio-label-block"><input type="radio" is="emby-radio" name="SortOrder" value="Ascending" class="menuSortOrder" ' + isChecked + ' /><span>' + globalize.translate('Ascending') + '</span></label>';
isChecked = options.query.SortOrder == 'Descending' ? ' checked' : '';
html += '<label class="radio-label-block"><input type="radio" is="emby-radio" name="SortOrder" value="Descending" class="menuSortOrder" ' + isChecked + ' /><span>' + globalize.translate('OptionDescending') + '</span></label>';
html += '<label class="radio-label-block"><input type="radio" is="emby-radio" name="SortOrder" value="Descending" class="menuSortOrder" ' + isChecked + ' /><span>' + globalize.translate('Descending') + '</span></label>';
html += '</div>';
html += '</div>';
dlg.innerHTML = html;

View file

@ -73,6 +73,8 @@ import 'flexStyles';
}
function updateUserInHeader(user) {
renderHeader();
let hasImage;
if (user && user.name) {
@ -292,10 +294,10 @@ import 'flexStyles';
html += '</h3>';
if (appHost.supports('multiserver')) {
html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder" data-itemid="selectserver" href="selectserver.html?showuser=1"><span class="material-icons navMenuOptionIcon wifi"></span><span class="navMenuOptionText">' + globalize.translate('ButtonSelectServer') + '</span></a>';
html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder" data-itemid="selectserver" href="selectserver.html?showuser=1"><span class="material-icons navMenuOptionIcon wifi"></span><span class="navMenuOptionText">' + globalize.translate('SelectServer') + '</span></a>';
}
html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder btnSettings" data-itemid="settings" href="#"><span class="material-icons navMenuOptionIcon settings"></span><span class="navMenuOptionText">' + globalize.translate('ButtonSettings') + '</span></a>';
html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder btnSettings" data-itemid="settings" href="#"><span class="material-icons navMenuOptionIcon settings"></span><span class="navMenuOptionText">' + globalize.translate('Settings') + '</span></a>';
html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder btnLogout" data-itemid="logout" href="#"><span class="material-icons navMenuOptionIcon exit_to_app"></span><span class="navMenuOptionText">' + globalize.translate('ButtonSignOut') + '</span></a>';
html += '</div>';
}
@ -954,8 +956,6 @@ import 'flexStyles';
updateLibraryNavLinks(page);
});
renderHeader();
events.on(window.connectionManager, 'localusersignedin', function (e, user) {
const currentApiClient = window.connectionManager.getApiClient(user.ServerId);

View file

@ -214,6 +214,7 @@ function initClient() {
});
require(['mouseManager']);
require(['focusPreventScroll']);
require(['vendorStyles']);
require(['autoFocuser'], function(autoFocuser) {
autoFocuser.enable();
});
@ -517,7 +518,8 @@ function initClient() {
'events',
'credentialprovider',
'connectionManagerFactory',
'appStorage'
'appStorage',
'comicReader'
]
},
urlArgs: urlArgs,
@ -647,6 +649,7 @@ function initClient() {
});
define('slideshow', [componentsPath + '/slideshow/slideshow'], returnFirstDependency);
define('focusPreventScroll', ['legacy/focusPreventScroll'], returnFirstDependency);
define('vendorStyles', ['legacy/vendorStyles'], returnFirstDependency);
define('userdataButtons', [componentsPath + '/userdatabuttons/userdatabuttons'], returnFirstDependency);
define('listView', [componentsPath + '/listview/listview'], returnFirstDependency);
define('indicators', [componentsPath + '/indicators/indicators'], returnFirstDependency);