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

minor code tweaks for comics player

This commit is contained in:
dkanada 2020-08-28 23:09:35 +09:00
parent 0e45c25e40
commit 90babaca9f

View file

@ -28,14 +28,12 @@ export class ComicsPlayer {
stop() { stop() {
this.unbindEvents(); this.unbindEvents();
let elem = this._mediaElement; let elem = this.mediaElement;
if (elem) { if (elem) {
dialogHelper.close(elem); dialogHelper.close(elem);
this._mediaElement = null; this.mediaElement = null;
} }
// Hide loader in case player was not fully loaded yet
loading.hide(); loading.hide();
} }
@ -61,8 +59,7 @@ export class ComicsPlayer {
} }
createMediaElement() { createMediaElement() {
let elem = this._mediaElement; let elem = this.mediaElement;
if (elem) { if (elem) {
return elem; return elem;
} }
@ -77,19 +74,17 @@ export class ComicsPlayer {
exitAnimation: 'fadeout', exitAnimation: 'fadeout',
removeOnClose: true removeOnClose: true
}); });
elem.id = 'bookPlayer';
elem.id = 'bookPlayer';
elem.classList.add('slideshowDialog'); elem.classList.add('slideshowDialog');
elem.innerHTML = '<div class="slideshowSwiperContainer"><div class="swiper-wrapper"></div></div>'; elem.innerHTML = '<div class="slideshowSwiperContainer"><div class="swiper-wrapper"></div></div>';
this.bindEvents(); this.bindEvents();
dialogHelper.open(elem); dialogHelper.open(elem);
} }
this._mediaElement = elem; this.mediaElement = elem;
return elem; return elem;
} }
@ -109,13 +104,14 @@ export class ComicsPlayer {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let downloadUrl = apiClient.getItemDownloadUrl(item.Id); let downloadUrl = apiClient.getItemDownloadUrl(item.Id);
const archiveSource = new ArchiveSource(downloadUrl); const archiveSource = new ArchiveSource(downloadUrl);
var instance = this; var instance = this;
import('swiper').then(({default: Swiper}) => { import('swiper').then(({default: Swiper}) => {
archiveSource.load().then(() => { archiveSource.load().then(() => {
loading.hide(); loading.hide();
this.swiperInstance = new Swiper(elem.querySelector('.slideshowSwiperContainer'), { this.swiperInstance = new Swiper(elem.querySelector('.slideshowSwiperContainer'), {
direction: 'horizontal', direction: 'horizontal',
// Loop is disabled due to the virtual slides option not supporting it. // loop is disabled due to the lack of support in virtual slides
loop: false, loop: false,
zoom: { zoom: {
minRatio: 1, minRatio: 1,
@ -130,7 +126,7 @@ export class ComicsPlayer {
slidesPerView: 1, slidesPerView: 1,
slidesPerColumn: 1, slidesPerColumn: 1,
initialSlide: 0, initialSlide: 0,
// Virtual slides reduce memory consumption for large libraries while allowing preloading of images; // reduces memory consumption for large libraries while allowing preloading of images
virtual: { virtual: {
slides: archiveSource.urls, slides: archiveSource.urls,
cache: true, cache: true,
@ -160,6 +156,7 @@ export class ComicsPlayer {
if (item.Path && (item.Path.endsWith('cbz') || item.Path.endsWith('cbr'))) { if (item.Path && (item.Path.endsWith('cbz') || item.Path.endsWith('cbr'))) {
return true; return true;
} }
return false; return false;
} }
} }
@ -178,6 +175,7 @@ class ArchiveSource {
if (!res.ok) { if (!res.ok) {
return; return;
} }
let blob = await res.blob(); let blob = await res.blob();
this.archive = await libarchive.Archive.open(blob); this.archive = await libarchive.Archive.open(blob);
this.raw = await this.archive.getFilesArray(); this.raw = await this.archive.getFilesArray();
@ -186,10 +184,11 @@ class ArchiveSource {
let files = await this.archive.getFilesArray(); let files = await this.archive.getFilesArray();
files.sort((a, b) => { files.sort((a, b) => {
if (a.file.name < b.file.name) if (a.file.name < b.file.name) {
return -1; return -1;
else } else {
return 1; return 1;
}
}); });
for (let file of files) { for (let file of files) {