mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Fix code issues reported by Sonar
This commit is contained in:
parent
66303bdbe5
commit
bbef2197dd
16 changed files with 90 additions and 89 deletions
|
@ -1,21 +1,21 @@
|
|||
/**
|
||||
* Module that exposes SyncPlay calls to external modules.
|
||||
* @module components/syncPlay/core/controller
|
||||
* @module components/syncPlay/core/Controller
|
||||
*/
|
||||
|
||||
import * as Helper from './helper';
|
||||
import * as Helper from './Helper';
|
||||
|
||||
/**
|
||||
* Class that exposes SyncPlay calls to external modules.
|
||||
*/
|
||||
class SyncPlayController {
|
||||
class Controller {
|
||||
constructor() {
|
||||
this.manager = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the controller.
|
||||
* @param {SyncPlayManager} syncPlayManager The SyncPlay manager.
|
||||
* @param {Manager} syncPlayManager The SyncPlay manager.
|
||||
*/
|
||||
init(syncPlayManager) {
|
||||
this.manager = syncPlayManager;
|
||||
|
@ -218,4 +218,4 @@ class SyncPlayController {
|
|||
}
|
||||
}
|
||||
|
||||
export default SyncPlayController;
|
||||
export default Controller;
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* Module that offers some utility functions.
|
||||
* @module components/syncPlay/core/helper
|
||||
* @module components/syncPlay/core/Helper
|
||||
*/
|
||||
|
||||
import { Events } from 'jellyfin-apiclient';
|
||||
|
@ -156,9 +156,7 @@ export function translateItemsForPlayback(apiClient, items, options) {
|
|||
SortBy: options.shuffle ? 'Random' : 'SortName',
|
||||
MediaTypes: 'Photo,Video'
|
||||
}).then(function (result) {
|
||||
const items = result.Items;
|
||||
|
||||
let index = items.map(function (i) {
|
||||
let index = result.Items.map(function (i) {
|
||||
return i.Id;
|
||||
}).indexOf(firstItem.Id);
|
||||
|
|
@ -1,27 +1,31 @@
|
|||
/**
|
||||
* Module that manages the SyncPlay feature.
|
||||
* @module components/syncPlay/core/manager
|
||||
* @module components/syncPlay/core/Manager
|
||||
*/
|
||||
|
||||
import { Events } from 'jellyfin-apiclient';
|
||||
import * as Helper from './helper';
|
||||
import PlayerFactory from './players/factory';
|
||||
import TimeSyncCore from './timeSync/core';
|
||||
import SyncPlayPlaybackCore from './playbackCore';
|
||||
import SyncPlayQueueCore from './queueCore';
|
||||
import SyncPlayController from './controller';
|
||||
import * as Helper from './Helper';
|
||||
import TimeSyncCore from './timeSync/TimeSyncCore';
|
||||
import PlaybackCore from './PlaybackCore';
|
||||
import QueueCore from './QueueCore';
|
||||
import Controller from './Controller';
|
||||
|
||||
/**
|
||||
* Class that manages the SyncPlay feature.
|
||||
*/
|
||||
class SyncPlayManager {
|
||||
constructor() {
|
||||
class Manager {
|
||||
/**
|
||||
* Creates an instance of SyncPlay Manager.
|
||||
* @param {PlayerFactory} playerFactory The PlayerFactory instance.
|
||||
*/
|
||||
constructor(playerFactory) {
|
||||
this.playerFactory = playerFactory;
|
||||
this.apiClient = null;
|
||||
|
||||
this.timeSyncCore = new TimeSyncCore();
|
||||
this.playbackCore = new SyncPlayPlaybackCore();
|
||||
this.queueCore = new SyncPlayQueueCore();
|
||||
this.controller = new SyncPlayController();
|
||||
this.playbackCore = new PlaybackCore();
|
||||
this.queueCore = new QueueCore();
|
||||
this.controller = new Controller();
|
||||
|
||||
this.syncMethod = 'None'; // Used for stats.
|
||||
|
||||
|
@ -49,7 +53,7 @@ class SyncPlayManager {
|
|||
this.apiClient = apiClient;
|
||||
|
||||
// Get default player wrapper.
|
||||
this.playerWrapper = PlayerFactory.getDefaultWrapper(this);
|
||||
this.playerWrapper = this.playerFactory.getDefaultWrapper(this);
|
||||
|
||||
// Initialize components.
|
||||
this.timeSyncCore.init(this);
|
||||
|
@ -77,7 +81,7 @@ class SyncPlayManager {
|
|||
|
||||
/**
|
||||
* Gets the playback core.
|
||||
* @returns {SyncPlayPlaybackCore} The playback core.
|
||||
* @returns {PlaybackCore} The playback core.
|
||||
*/
|
||||
getPlaybackCore() {
|
||||
return this.playbackCore;
|
||||
|
@ -85,7 +89,7 @@ class SyncPlayManager {
|
|||
|
||||
/**
|
||||
* Gets the queue core.
|
||||
* @returns {SyncPlayQueueCore} The queue core.
|
||||
* @returns {QueueCore} The queue core.
|
||||
*/
|
||||
getQueueCore() {
|
||||
return this.queueCore;
|
||||
|
@ -93,7 +97,7 @@ class SyncPlayManager {
|
|||
|
||||
/**
|
||||
* Gets the controller used to manage SyncPlay playback.
|
||||
* @returns {SyncPlayController} The controller.
|
||||
* @returns {Controller} The controller.
|
||||
*/
|
||||
getController() {
|
||||
return this.controller;
|
||||
|
@ -144,7 +148,7 @@ class SyncPlayManager {
|
|||
this.playerWrapper.unbindFromPlayer();
|
||||
|
||||
this.currentPlayer = player;
|
||||
this.playerWrapper = PlayerFactory.getWrapper(player, this);
|
||||
this.playerWrapper = this.playerFactory.getWrapper(player, this);
|
||||
|
||||
if (this.isSyncPlayEnabled()) {
|
||||
this.playerWrapper.bindToPlayer();
|
||||
|
@ -160,7 +164,7 @@ class SyncPlayManager {
|
|||
this.currentPlayer = null;
|
||||
this.playerWrapper.unbindFromPlayer();
|
||||
|
||||
this.playerWrapper = PlayerFactory.getDefaultWrapper(this);
|
||||
this.playerWrapper = this.playerFactory.getDefaultWrapper(this);
|
||||
if (this.isSyncPlayEnabled()) {
|
||||
this.playerWrapper.bindToPlayer();
|
||||
}
|
||||
|
@ -474,6 +478,4 @@ class SyncPlayManager {
|
|||
}
|
||||
}
|
||||
|
||||
/** SyncPlayManager singleton. */
|
||||
const syncPlayManager = new SyncPlayManager();
|
||||
export default syncPlayManager;
|
||||
export default Manager;
|
|
@ -1,15 +1,15 @@
|
|||
/**
|
||||
* Module that manages the playback of SyncPlay.
|
||||
* @module components/syncPlay/core/playbackCore
|
||||
* @module components/syncPlay/core/PlaybackCore
|
||||
*/
|
||||
|
||||
import { Events } from 'jellyfin-apiclient';
|
||||
import * as Helper from './helper';
|
||||
import * as Helper from './Helper';
|
||||
|
||||
/**
|
||||
* Class that manages the playback of SyncPlay.
|
||||
*/
|
||||
class SyncPlayPlaybackCore {
|
||||
class PlaybackCore {
|
||||
constructor() {
|
||||
this.manager = null;
|
||||
this.timeSyncCore = null;
|
||||
|
@ -29,7 +29,7 @@ class SyncPlayPlaybackCore {
|
|||
|
||||
/**
|
||||
* Initializes the core.
|
||||
* @param {SyncPlayManager} syncPlayManager The SyncPlay manager.
|
||||
* @param {Manager} syncPlayManager The SyncPlay manager.
|
||||
*/
|
||||
init(syncPlayManager) {
|
||||
this.manager = syncPlayManager;
|
||||
|
@ -574,4 +574,4 @@ class SyncPlayPlaybackCore {
|
|||
}
|
||||
}
|
||||
|
||||
export default SyncPlayPlaybackCore;
|
||||
export default PlaybackCore;
|
|
@ -1,14 +1,14 @@
|
|||
/**
|
||||
* Module that manages the queue of SyncPlay.
|
||||
* @module components/syncPlay/core/queueCore
|
||||
* @module components/syncPlay/core/QueueCore
|
||||
*/
|
||||
|
||||
import * as Helper from './helper';
|
||||
import * as Helper from './Helper';
|
||||
|
||||
/**
|
||||
* Class that manages the queue of SyncPlay.
|
||||
*/
|
||||
class SyncPlayQueueCore {
|
||||
class QueueCore {
|
||||
constructor() {
|
||||
this.manager = null;
|
||||
this.lastPlayQueueUpdate = null;
|
||||
|
@ -17,7 +17,7 @@ class SyncPlayQueueCore {
|
|||
|
||||
/**
|
||||
* Initializes the core.
|
||||
* @param {SyncPlayManager} syncPlayManager The SyncPlay manager.
|
||||
* @param {Manager} syncPlayManager The SyncPlay manager.
|
||||
*/
|
||||
init(syncPlayManager) {
|
||||
this.manager = syncPlayManager;
|
||||
|
@ -369,4 +369,4 @@ class SyncPlayQueueCore {
|
|||
}
|
||||
}
|
||||
|
||||
export default SyncPlayQueueCore;
|
||||
export default QueueCore;
|
|
@ -1,7 +1,10 @@
|
|||
import * as Helper from './helper';
|
||||
import Manager from './manager';
|
||||
import PlayerFactory from './players/factory';
|
||||
import GenericPlayer from './players/genericPlayer';
|
||||
import * as Helper from './Helper';
|
||||
import ManagerClass from './Manager';
|
||||
import PlayerFactoryClass from './players/PlayerFactory';
|
||||
import GenericPlayer from './players/GenericPlayer';
|
||||
|
||||
const PlayerFactory = new PlayerFactoryClass();
|
||||
const Manager = new ManagerClass(PlayerFactory);
|
||||
|
||||
export default {
|
||||
Helper,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* Module that translates events from a player to SyncPlay events.
|
||||
* @module components/syncPlay/core/players/genericPlayer
|
||||
* @module components/syncPlay/core/players/GenericPlayer
|
||||
*/
|
||||
|
||||
import { Events } from 'jellyfin-apiclient';
|
||||
|
@ -8,7 +8,7 @@ import { Events } from 'jellyfin-apiclient';
|
|||
/**
|
||||
* Class that translates events from a player to SyncPlay events.
|
||||
*/
|
||||
class SyncPlayGenericPlayer {
|
||||
class GenericPlayer {
|
||||
static type = 'generic';
|
||||
|
||||
constructor(player, syncPlayManager) {
|
||||
|
@ -302,4 +302,4 @@ class SyncPlayGenericPlayer {
|
|||
}
|
||||
}
|
||||
|
||||
export default SyncPlayGenericPlayer;
|
||||
export default GenericPlayer;
|
|
@ -1,22 +1,22 @@
|
|||
/**
|
||||
* Module that creates wrappers for known players.
|
||||
* @module components/syncPlay/core/players/factory
|
||||
* @module components/syncPlay/core/players/PlayerFactory
|
||||
*/
|
||||
|
||||
import SyncPlayGenericPlayer from './genericPlayer';
|
||||
import GenericPlayer from './GenericPlayer';
|
||||
|
||||
/**
|
||||
* Class that creates wrappers for known players.
|
||||
*/
|
||||
class SyncPlayPlayerFactory {
|
||||
class PlayerFactory {
|
||||
constructor() {
|
||||
this.wrappers = {};
|
||||
this.DefaultWrapper = SyncPlayGenericPlayer;
|
||||
this.DefaultWrapper = GenericPlayer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a wrapper to the list of players that can be managed.
|
||||
* @param {SyncPlayGenericPlayer} wrapperClass The wrapper to register.
|
||||
* @param {GenericPlayer} wrapperClass The wrapper to register.
|
||||
*/
|
||||
registerWrapper(wrapperClass) {
|
||||
console.debug('SyncPlay WrapperFactory registerWrapper:', wrapperClass.type);
|
||||
|
@ -25,7 +25,7 @@ class SyncPlayPlayerFactory {
|
|||
|
||||
/**
|
||||
* Sets the default player wrapper.
|
||||
* @param {SyncPlayGenericPlayer} wrapperClass The wrapper.
|
||||
* @param {GenericPlayer} wrapperClass The wrapper.
|
||||
*/
|
||||
setDefaultWrapper(wrapperClass) {
|
||||
console.debug('SyncPlay WrapperFactory setDefaultWrapper:', wrapperClass.type);
|
||||
|
@ -68,6 +68,4 @@ class SyncPlayPlayerFactory {
|
|||
}
|
||||
}
|
||||
|
||||
/** SyncPlayPlayerFactory singleton. */
|
||||
const playerFactory = new SyncPlayPlayerFactory();
|
||||
export default playerFactory;
|
||||
export default PlayerFactory;
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* Module that manages time syncing with another device.
|
||||
* @module components/syncPlay/core/timeSync/timeSync
|
||||
* @module components/syncPlay/core/timeSync/TimeSync
|
||||
*/
|
||||
|
||||
import { Events } from 'jellyfin-apiclient';
|
|
@ -1,10 +1,10 @@
|
|||
/**
|
||||
* Module that manages time syncing with several devices.
|
||||
* @module components/syncPlay/core/timeSync/core
|
||||
* @module components/syncPlay/core/timeSync/TimeSyncCore
|
||||
*/
|
||||
|
||||
import { Events } from 'jellyfin-apiclient';
|
||||
import TimeSyncServer from './server';
|
||||
import TimeSyncServer from './TimeSyncServer';
|
||||
|
||||
/**
|
||||
* Class that manages time syncing with several devices.
|
|
@ -1,9 +1,9 @@
|
|||
/**
|
||||
* Module that manages time syncing with server.
|
||||
* @module components/syncPlay/core/timeSync/server
|
||||
* @module components/syncPlay/core/timeSync/TimeSyncServer
|
||||
*/
|
||||
|
||||
import TimeSync from './timeSync';
|
||||
import TimeSync from './TimeSync';
|
||||
|
||||
/**
|
||||
* Class that manages time syncing with server.
|
|
@ -1,14 +1,14 @@
|
|||
/**
|
||||
* Module that manages the HtmlAudioPlayer for SyncPlay.
|
||||
* @module components/syncPlay/players/htmlAudioPlayer
|
||||
* @module components/syncPlay/ui/players/HtmlAudioPlayer
|
||||
*/
|
||||
|
||||
import SyncPlayHtmlVideoPlayer from './htmlVideoPlayer';
|
||||
import HtmlVideoPlayer from './HtmlVideoPlayer';
|
||||
|
||||
/**
|
||||
* Class that manages the HtmlAudioPlayer for SyncPlay.
|
||||
*/
|
||||
class SyncPlayHtmlAudioPlayer extends SyncPlayHtmlVideoPlayer {
|
||||
class HtmlAudioPlayer extends HtmlVideoPlayer {
|
||||
static type = 'htmlaudioplayer';
|
||||
|
||||
constructor(player, syncPlayManager) {
|
||||
|
@ -16,4 +16,4 @@ class SyncPlayHtmlAudioPlayer extends SyncPlayHtmlVideoPlayer {
|
|||
}
|
||||
}
|
||||
|
||||
export default SyncPlayHtmlAudioPlayer;
|
||||
export default HtmlAudioPlayer;
|
|
@ -1,15 +1,15 @@
|
|||
/**
|
||||
* Module that manages the HtmlVideoPlayer for SyncPlay.
|
||||
* @module components/syncPlay/players/htmlVideoPlayer
|
||||
* @module components/syncPlay/ui/players/HtmlVideoPlayer
|
||||
*/
|
||||
|
||||
import { Events } from 'jellyfin-apiclient';
|
||||
import SyncPlayNoActivePlayer from './noActivePlayer';
|
||||
import NoActivePlayer from './NoActivePlayer';
|
||||
|
||||
/**
|
||||
* Class that manages the HtmlVideoPlayer for SyncPlay.
|
||||
*/
|
||||
class SyncPlayHtmlVideoPlayer extends SyncPlayNoActivePlayer {
|
||||
class HtmlVideoPlayer extends NoActivePlayer {
|
||||
static type = 'htmlvideoplayer';
|
||||
|
||||
constructor(player, syncPlayManager) {
|
||||
|
@ -152,4 +152,4 @@ class SyncPlayHtmlVideoPlayer extends SyncPlayNoActivePlayer {
|
|||
}
|
||||
}
|
||||
|
||||
export default SyncPlayHtmlVideoPlayer;
|
||||
export default HtmlVideoPlayer;
|
|
@ -1,18 +1,18 @@
|
|||
/**
|
||||
* Module that manages the PlaybackManager when there's no active player.
|
||||
* @module components/syncPlay/players/genericPlayer
|
||||
* @module components/syncPlay/ui/players/NoActivePlayer
|
||||
*/
|
||||
|
||||
import { playbackManager } from '../../../playback/playbackmanager';
|
||||
import SyncPlay from 'SyncPlay';
|
||||
import QueueManager from './queueManager';
|
||||
import QueueManager from './QueueManager';
|
||||
|
||||
let syncPlayManager;
|
||||
|
||||
/**
|
||||
* Class that manages the PlaybackManager when there's no active player.
|
||||
*/
|
||||
class SyncPlayNoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
||||
class NoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
||||
static type = 'default';
|
||||
|
||||
constructor(player, _syncPlayManager) {
|
||||
|
@ -143,25 +143,25 @@ class SyncPlayNoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
/**
|
||||
* Overrides PlaybackManager's sendCommand method.
|
||||
*/
|
||||
sendCommandRequest(cmd, player) {
|
||||
console.debug('SyncPlay sendCommand:', cmd.Name, cmd);
|
||||
sendCommandRequest(command, player) {
|
||||
console.debug('SyncPlay sendCommand:', command.Name, command);
|
||||
const controller = syncPlayManager.getController();
|
||||
const playerWrapper = syncPlayManager.getPlayerWrapper();
|
||||
|
||||
const defaultAction = (command, player) => {
|
||||
playerWrapper.localSendCommand(command);
|
||||
const defaultAction = (_command, _player) => {
|
||||
playerWrapper.localSendCommand(_command);
|
||||
};
|
||||
|
||||
const ignoreCallback = (command, player) => {
|
||||
const ignoreCallback = (_command, _player) => {
|
||||
// Do nothing.
|
||||
};
|
||||
|
||||
const SetRepeatModeCallback = (command, player) => {
|
||||
controller.setRepeatMode(command.Arguments.RepeatMode);
|
||||
const SetRepeatModeCallback = (_command, _player) => {
|
||||
controller.setRepeatMode(_command.Arguments.RepeatMode);
|
||||
};
|
||||
|
||||
const SetShuffleQueueCallback = (command, player) => {
|
||||
controller.setShuffleMode(command.Arguments.ShuffleMode);
|
||||
const SetShuffleQueueCallback = (_command, _player) => {
|
||||
controller.setShuffleMode(_command.Arguments.ShuffleMode);
|
||||
};
|
||||
|
||||
// Commands to override.
|
||||
|
@ -172,11 +172,11 @@ class SyncPlayNoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
};
|
||||
|
||||
// Handle command.
|
||||
const commandHandler = overrideCommands[cmd.Name];
|
||||
const commandHandler = overrideCommands[command.Name];
|
||||
if (typeof commandHandler === 'function') {
|
||||
commandHandler(cmd, player);
|
||||
commandHandler(command, player);
|
||||
} else {
|
||||
defaultAction(cmd, player);
|
||||
defaultAction(command, player);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -441,4 +441,4 @@ class SyncPlayNoActivePlayer extends SyncPlay.Players.GenericPlayer {
|
|||
}
|
||||
}
|
||||
|
||||
export default SyncPlayNoActivePlayer;
|
||||
export default NoActivePlayer;
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* Module that replaces the PlaybackManager's queue.
|
||||
* @module components/syncPlay/players/queueManager
|
||||
* @module components/syncPlay/ui/players/QueueManager
|
||||
*/
|
||||
|
||||
/**
|
|
@ -33,9 +33,9 @@ import '../components/playback/playerSelectionMenu';
|
|||
import SyncPlay from 'SyncPlay';
|
||||
import { playbackManager } from '../components/playback/playbackmanager';
|
||||
import SyncPlayToasts from '../components/syncPlay/ui/syncPlayToasts';
|
||||
import SyncPlayNoActivePlayer from '../components/syncPlay/ui/players/noActivePlayer';
|
||||
import SyncPlayHtmlVideoPlayer from '../components/syncPlay/ui/players/htmlVideoPlayer';
|
||||
import SyncPlayHtmlAudioPlayer from '../components/syncPlay/ui/players/htmlAudioPlayer';
|
||||
import SyncPlayNoActivePlayer from '../components/syncPlay/ui/players/NoActivePlayer';
|
||||
import SyncPlayHtmlVideoPlayer from '../components/syncPlay/ui/players/HtmlVideoPlayer';
|
||||
import SyncPlayHtmlAudioPlayer from '../components/syncPlay/ui/players/HtmlAudioPlayer';
|
||||
|
||||
// TODO: Move this elsewhere
|
||||
window.getWindowLocationSearch = function(win) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue