Add a toggle to choose what kind of track date you want
This commit is contained in:
parent
b1936e19a6
commit
8eaf3b376e
6 changed files with 50 additions and 3 deletions
12
index.html
12
index.html
|
|
@ -2171,6 +2171,18 @@
|
||||||
<span class="slider"></span>
|
<span class="slider"></span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="setting-item">
|
||||||
|
<div class="info">
|
||||||
|
<span class="label">Album release year</span>
|
||||||
|
<span class="description"
|
||||||
|
>Show original album year instead of track/remaster date</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<label class="toggle-switch">
|
||||||
|
<input type="checkbox" id="use-album-release-year-toggle" checked />
|
||||||
|
<span class="slider"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
<div class="setting-item">
|
<div class="setting-item">
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<span class="label">Gapless Playback</span>
|
<span class="label">Gapless Playback</span>
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import {
|
||||||
isTrackUnavailable,
|
isTrackUnavailable,
|
||||||
getExtensionFromBlob,
|
getExtensionFromBlob,
|
||||||
} from './utils.js';
|
} from './utils.js';
|
||||||
|
import { trackDateSettings } from './storage.js';
|
||||||
import { APICache } from './cache.js';
|
import { APICache } from './cache.js';
|
||||||
import { addMetadataToAudio } from './metadata.js';
|
import { addMetadataToAudio } from './metadata.js';
|
||||||
import { DashDownloader } from './dash-downloader.js';
|
import { DashDownloader } from './dash-downloader.js';
|
||||||
|
|
@ -174,6 +175,8 @@ export class LosslessAPI {
|
||||||
}
|
}
|
||||||
|
|
||||||
async enrichTracksWithAlbumDates(tracks) {
|
async enrichTracksWithAlbumDates(tracks) {
|
||||||
|
if (!trackDateSettings.useAlbumYear()) return tracks;
|
||||||
|
|
||||||
const albumIdsToFetch = [];
|
const albumIdsToFetch = [];
|
||||||
for (const track of tracks) {
|
for (const track of tracks) {
|
||||||
if (!track.album?.releaseDate && track.album?.id && !albumIdsToFetch.includes(track.album.id)) {
|
if (!track.album?.releaseDate && track.album?.id && !albumIdsToFetch.includes(track.album.id)) {
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import {
|
||||||
getTrackYearDisplay,
|
getTrackYearDisplay,
|
||||||
createQualityBadgeHTML,
|
createQualityBadgeHTML,
|
||||||
} from './utils.js';
|
} from './utils.js';
|
||||||
import { queueManager, replayGainSettings } from './storage.js';
|
import { queueManager, replayGainSettings, trackDateSettings } from './storage.js';
|
||||||
|
|
||||||
export class Player {
|
export class Player {
|
||||||
constructor(audioElement, api, quality = 'HI_RES_LOSSLESS') {
|
constructor(audioElement, api, quality = 'HI_RES_LOSSLESS') {
|
||||||
|
|
@ -717,6 +717,8 @@ export class Player {
|
||||||
}
|
}
|
||||||
|
|
||||||
loadAlbumYear(track, trackArtistsHTML, artistEl) {
|
loadAlbumYear(track, trackArtistsHTML, artistEl) {
|
||||||
|
if (!trackDateSettings.useAlbumYear()) return;
|
||||||
|
|
||||||
this.api
|
this.api
|
||||||
.getAlbum(track.album.id)
|
.getAlbum(track.album.id)
|
||||||
.then(({ album }) => {
|
.then(({ album }) => {
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import {
|
||||||
downloadQualitySettings,
|
downloadQualitySettings,
|
||||||
coverArtSizeSettings,
|
coverArtSizeSettings,
|
||||||
qualityBadgeSettings,
|
qualityBadgeSettings,
|
||||||
|
trackDateSettings,
|
||||||
visualizerSettings,
|
visualizerSettings,
|
||||||
bulkDownloadSettings,
|
bulkDownloadSettings,
|
||||||
playlistSettings,
|
playlistSettings,
|
||||||
|
|
@ -351,6 +352,15 @@ export function initializeSettings(scrobbler, player, api, ui) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Track Date Settings
|
||||||
|
const useAlbumReleaseYearToggle = document.getElementById('use-album-release-year-toggle');
|
||||||
|
if (useAlbumReleaseYearToggle) {
|
||||||
|
useAlbumReleaseYearToggle.checked = trackDateSettings.useAlbumYear();
|
||||||
|
useAlbumReleaseYearToggle.addEventListener('change', (e) => {
|
||||||
|
trackDateSettings.setUseAlbumYear(e.target.checked);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const zippedBulkDownloadsToggle = document.getElementById('zipped-bulk-downloads-toggle');
|
const zippedBulkDownloadsToggle = document.getElementById('zipped-bulk-downloads-toggle');
|
||||||
if (zippedBulkDownloadsToggle) {
|
if (zippedBulkDownloadsToggle) {
|
||||||
zippedBulkDownloadsToggle.checked = !bulkDownloadSettings.shouldForceIndividual();
|
zippedBulkDownloadsToggle.checked = !bulkDownloadSettings.shouldForceIndividual();
|
||||||
|
|
|
||||||
|
|
@ -586,6 +586,23 @@ export const qualityBadgeSettings = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const trackDateSettings = {
|
||||||
|
STORAGE_KEY: 'use-album-release-year',
|
||||||
|
|
||||||
|
useAlbumYear() {
|
||||||
|
try {
|
||||||
|
const val = localStorage.getItem(this.STORAGE_KEY);
|
||||||
|
return val === null ? true : val === 'true';
|
||||||
|
} catch {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
setUseAlbumYear(enabled) {
|
||||||
|
localStorage.setItem(this.STORAGE_KEY, enabled ? 'true' : 'false');
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
export const bulkDownloadSettings = {
|
export const bulkDownloadSettings = {
|
||||||
STORAGE_KEY: 'force-individual-downloads',
|
STORAGE_KEY: 'force-individual-downloads',
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
//js/utils.js
|
//js/utils.js
|
||||||
import { qualityBadgeSettings, coverArtSizeSettings } from './storage.js';
|
import { qualityBadgeSettings, coverArtSizeSettings, trackDateSettings } from './storage.js';
|
||||||
|
|
||||||
export const QUALITY = 'HI_RES_LOSSLESS';
|
export const QUALITY = 'HI_RES_LOSSLESS';
|
||||||
|
|
||||||
|
|
@ -67,7 +67,10 @@ export const formatTime = (seconds) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getTrackYearDisplay = (track) => {
|
export const getTrackYearDisplay = (track) => {
|
||||||
const releaseDate = track?.album?.releaseDate || track?.streamStartDate;
|
const useAlbumYear = trackDateSettings.useAlbumYear();
|
||||||
|
const releaseDate = useAlbumYear
|
||||||
|
? track?.album?.releaseDate || track?.streamStartDate
|
||||||
|
: track?.streamStartDate || track?.album?.releaseDate;
|
||||||
if (!releaseDate) return '';
|
if (!releaseDate) return '';
|
||||||
const date = new Date(releaseDate);
|
const date = new Date(releaseDate);
|
||||||
return isNaN(date.getTime()) ? '' : ` • ${date.getFullYear()}`;
|
return isNaN(date.getTime()) ? '' : ` • ${date.getFullYear()}`;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue