@@ -705,12 +735,40 @@ const clearDownloadRecords = async () => {
// ── Download settings ───────────────────────────────────────────────────────
const showSettingsDrawer = ref(false);
+const showNotSaveConfirm = ref(false);
const downloadSettings = ref({
path: '',
nameFormat: '{songName} - {artistName}',
separator: ' - ',
saveLyric: false
});
+const originalDownloadSettings = ref({ ...downloadSettings.value });
+
+watch(showSettingsDrawer, (newVal) => {
+ if (newVal) {
+ originalDownloadSettings.value = { ...downloadSettings.value };
+ }
+});
+
+const handleDrawerUpdate = (show: boolean) => {
+ if (show) {
+ showSettingsDrawer.value = true;
+ return;
+ }
+ const isModified =
+ JSON.stringify(downloadSettings.value) !== JSON.stringify(originalDownloadSettings.value);
+ if (isModified) {
+ showNotSaveConfirm.value = true;
+ } else {
+ showSettingsDrawer.value = false;
+ }
+};
+
+const discardDownloadSettings = () => {
+ downloadSettings.value = { ...originalDownloadSettings.value };
+ showNotSaveConfirm.value = false;
+ showSettingsDrawer.value = false;
+};
const formatComponents = ref([
{ id: 1, type: 'songName' },
@@ -824,7 +882,9 @@ const saveDownloadSettings = () => {
downloadStore.refreshCompleted();
}
+ originalDownloadSettings.value = { ...downloadSettings.value };
message.success(t('download.settingsPanel.saveSuccess'));
+ showNotSaveConfirm.value = false;
showSettingsDrawer.value = false;
};