feat: add import log showing synced QSOs
Add import log display that shows QSOs imported via LoTW/DCL sync. Backend now tracks added/updated QSOs (callsign, date, band, mode) and returns them in sync result. Frontend displays tables showing new and updated QSOs after sync completes. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -193,6 +193,8 @@ export async function syncQSOs(userId, dclApiKey, sinceDate = null, jobId = null
|
||||
let addedCount = 0;
|
||||
let updatedCount = 0;
|
||||
const errors = [];
|
||||
const addedQSOs = [];
|
||||
const updatedQSOs = [];
|
||||
|
||||
for (let i = 0; i < adifQSOs.length; i++) {
|
||||
const adifQSO = adifQSOs[i];
|
||||
@@ -230,10 +232,24 @@ export async function syncQSOs(userId, dclApiKey, sinceDate = null, jobId = null
|
||||
})
|
||||
.where(eq(qsos.id, existing[0].id));
|
||||
updatedCount++;
|
||||
// Track updated QSO (CALL and DATE)
|
||||
updatedQSOs.push({
|
||||
callsign: dbQSO.callsign,
|
||||
date: dbQSO.qsoDate,
|
||||
band: dbQSO.band,
|
||||
mode: dbQSO.mode,
|
||||
});
|
||||
} else {
|
||||
// Insert new QSO
|
||||
await db.insert(qsos).values(dbQSO);
|
||||
addedCount++;
|
||||
// Track added QSO (CALL and DATE)
|
||||
addedQSOs.push({
|
||||
callsign: dbQSO.callsign,
|
||||
date: dbQSO.qsoDate,
|
||||
band: dbQSO.band,
|
||||
mode: dbQSO.mode,
|
||||
});
|
||||
}
|
||||
|
||||
// Update job progress every 10 QSOs
|
||||
@@ -258,6 +274,8 @@ export async function syncQSOs(userId, dclApiKey, sinceDate = null, jobId = null
|
||||
total: adifQSOs.length,
|
||||
added: addedCount,
|
||||
updated: updatedCount,
|
||||
addedQSOs,
|
||||
updatedQSOs,
|
||||
confirmed: adifQSOs.filter(q => q.dcl_qsl_rcvd === 'Y').length,
|
||||
errors: errors.length > 0 ? errors : undefined,
|
||||
};
|
||||
|
||||
@@ -223,6 +223,8 @@ export async function syncQSOs(userId, lotwUsername, lotwPassword, sinceDate = n
|
||||
let addedCount = 0;
|
||||
let updatedCount = 0;
|
||||
const errors = [];
|
||||
const addedQSOs = [];
|
||||
const updatedQSOs = [];
|
||||
|
||||
for (let i = 0; i < adifQSOs.length; i++) {
|
||||
const qsoData = adifQSOs[i];
|
||||
@@ -254,9 +256,23 @@ export async function syncQSOs(userId, lotwUsername, lotwPassword, sinceDate = n
|
||||
})
|
||||
.where(eq(qsos.id, existing[0].id));
|
||||
updatedCount++;
|
||||
// Track updated QSO (CALL and DATE)
|
||||
updatedQSOs.push({
|
||||
callsign: dbQSO.callsign,
|
||||
date: dbQSO.qsoDate,
|
||||
band: dbQSO.band,
|
||||
mode: dbQSO.mode,
|
||||
});
|
||||
} else {
|
||||
await db.insert(qsos).values(dbQSO);
|
||||
addedCount++;
|
||||
// Track added QSO (CALL and DATE)
|
||||
addedQSOs.push({
|
||||
callsign: dbQSO.callsign,
|
||||
date: dbQSO.qsoDate,
|
||||
band: dbQSO.band,
|
||||
mode: dbQSO.mode,
|
||||
});
|
||||
}
|
||||
|
||||
// Update job progress every 10 QSOs
|
||||
@@ -279,6 +295,8 @@ export async function syncQSOs(userId, lotwUsername, lotwPassword, sinceDate = n
|
||||
total: adifQSOs.length,
|
||||
added: addedCount,
|
||||
updated: updatedCount,
|
||||
addedQSOs,
|
||||
updatedQSOs,
|
||||
errors: errors.length > 0 ? errors : undefined,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user