Remove per-card NFO action buttons; add bulk NFO refresh for selected
This commit is contained in:
@@ -36,6 +36,11 @@ AniWorld.SelectionManager = (function() {
|
||||
if (downloadBtn) {
|
||||
downloadBtn.addEventListener('click', downloadSelected);
|
||||
}
|
||||
|
||||
const refreshNfoBtn = document.getElementById('refresh-nfo-selected');
|
||||
if (refreshNfoBtn) {
|
||||
refreshNfoBtn.addEventListener('click', refreshNFOForSelected);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -90,6 +95,11 @@ AniWorld.SelectionManager = (function() {
|
||||
|
||||
downloadBtn.disabled = selectedSeries.size === 0;
|
||||
|
||||
const refreshNfoBtn = document.getElementById('refresh-nfo-selected');
|
||||
if (refreshNfoBtn) {
|
||||
refreshNfoBtn.disabled = selectedSeries.size === 0;
|
||||
}
|
||||
|
||||
const allSelectableSelected = selectableKeys.every(function(key) {
|
||||
return selectedSeries.has(key);
|
||||
});
|
||||
@@ -274,6 +284,60 @@ AniWorld.SelectionManager = (function() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get selected series keys
|
||||
* @returns {Array<string>}
|
||||
*/
|
||||
function getSelectedKeys() {
|
||||
return Array.from(selectedSeries);
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresh NFO metadata for all selected series
|
||||
*/
|
||||
async function refreshNFOForSelected() {
|
||||
if (selectedSeries.size === 0) {
|
||||
AniWorld.UI.showToast('No series selected', 'warning');
|
||||
return;
|
||||
}
|
||||
|
||||
if (!AniWorld.NFOManager) {
|
||||
AniWorld.UI.showToast('NFO Manager not available', 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
const keys = Array.from(selectedSeries);
|
||||
let successCount = 0;
|
||||
let failCount = 0;
|
||||
|
||||
AniWorld.UI.showLoading('Refreshing NFO for ' + keys.length + ' series...');
|
||||
|
||||
for (const key of keys) {
|
||||
try {
|
||||
await AniWorld.NFOManager.refreshNFO(key);
|
||||
successCount++;
|
||||
} catch (error) {
|
||||
console.error('Error refreshing NFO for ' + key + ':', error);
|
||||
failCount++;
|
||||
}
|
||||
}
|
||||
|
||||
AniWorld.UI.hideLoading();
|
||||
|
||||
if (failCount === 0) {
|
||||
AniWorld.UI.showToast('NFO refreshed for ' + successCount + ' series', 'success');
|
||||
} else {
|
||||
AniWorld.UI.showToast(
|
||||
'NFO refreshed for ' + successCount + ' series, ' + failCount + ' failed',
|
||||
failCount === keys.length ? 'error' : 'warning'
|
||||
);
|
||||
}
|
||||
|
||||
if (successCount > 0 && AniWorld.SeriesManager) {
|
||||
AniWorld.SeriesManager.loadSeries();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get selected series count
|
||||
* @returns {number}
|
||||
@@ -291,6 +355,8 @@ AniWorld.SelectionManager = (function() {
|
||||
toggleSelectAll: toggleSelectAll,
|
||||
clearSelection: clearSelection,
|
||||
downloadSelected: downloadSelected,
|
||||
refreshNFOForSelected: refreshNFOForSelected,
|
||||
getSelectedKeys: getSelectedKeys,
|
||||
getSelectionCount: getSelectionCount
|
||||
};
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user