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>
|
||||
</label>
|
||||
</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="info">
|
||||
<span class="label">Gapless Playback</span>
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import {
|
|||
isTrackUnavailable,
|
||||
getExtensionFromBlob,
|
||||
} from './utils.js';
|
||||
import { trackDateSettings } from './storage.js';
|
||||
import { APICache } from './cache.js';
|
||||
import { addMetadataToAudio } from './metadata.js';
|
||||
import { DashDownloader } from './dash-downloader.js';
|
||||
|
|
@ -174,6 +175,8 @@ export class LosslessAPI {
|
|||
}
|
||||
|
||||
async enrichTracksWithAlbumDates(tracks) {
|
||||
if (!trackDateSettings.useAlbumYear()) return tracks;
|
||||
|
||||
const albumIdsToFetch = [];
|
||||
for (const track of tracks) {
|
||||
if (!track.album?.releaseDate && track.album?.id && !albumIdsToFetch.includes(track.album.id)) {
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import {
|
|||
getTrackYearDisplay,
|
||||
createQualityBadgeHTML,
|
||||
} from './utils.js';
|
||||
import { queueManager, replayGainSettings } from './storage.js';
|
||||
import { queueManager, replayGainSettings, trackDateSettings } from './storage.js';
|
||||
|
||||
export class Player {
|
||||
constructor(audioElement, api, quality = 'HI_RES_LOSSLESS') {
|
||||
|
|
@ -717,6 +717,8 @@ export class Player {
|
|||
}
|
||||
|
||||
loadAlbumYear(track, trackArtistsHTML, artistEl) {
|
||||
if (!trackDateSettings.useAlbumYear()) return;
|
||||
|
||||
this.api
|
||||
.getAlbum(track.album.id)
|
||||
.then(({ album }) => {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import {
|
|||
downloadQualitySettings,
|
||||
coverArtSizeSettings,
|
||||
qualityBadgeSettings,
|
||||
trackDateSettings,
|
||||
visualizerSettings,
|
||||
bulkDownloadSettings,
|
||||
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');
|
||||
if (zippedBulkDownloadsToggle) {
|
||||
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 = {
|
||||
STORAGE_KEY: 'force-individual-downloads',
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
//js/utils.js
|
||||
import { qualityBadgeSettings, coverArtSizeSettings } from './storage.js';
|
||||
import { qualityBadgeSettings, coverArtSizeSettings, trackDateSettings } from './storage.js';
|
||||
|
||||
export const QUALITY = 'HI_RES_LOSSLESS';
|
||||
|
||||
|
|
@ -67,7 +67,10 @@ export const formatTime = (seconds) => {
|
|||
};
|
||||
|
||||
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 '';
|
||||
const date = new Date(releaseDate);
|
||||
return isNaN(date.getTime()) ? '' : ` • ${date.getFullYear()}`;
|
||||
|
|
|
|||
Loading…
Reference in a new issue