mirror of
https://github.com/Crazyco-xyz/48hr.email.git
synced 2025-12-19 10:09:35 +01:00
Compare commits
No commits in common. "63b30a37054fa324c9359602a457322293ae268d" and "2ac23719633dc554b90f41b86033614a6305e6c0" have entirely different histories.
63b30a3705
...
2ac2371963
2 changed files with 19 additions and 33 deletions
|
|
@ -47,28 +47,16 @@ class MailRepository {
|
|||
removeUid(uid, address) {
|
||||
if (!this.config.email.examples.uids.includes(parseInt(uid))) {
|
||||
var deleted = false
|
||||
|
||||
if (address) {
|
||||
// Efficient path: only search the specific address's emails
|
||||
const mails = this.mailSummaries.get(address) || []
|
||||
const mailToDelete = mails.find(mail => mail.uid === parseInt(uid))
|
||||
if (mailToDelete) {
|
||||
this.mailSummaries.remove(address, mailToDelete)
|
||||
debug('Removed ', mailToDelete.date, address, mailToDelete.subject)
|
||||
deleted = true
|
||||
}
|
||||
} else {
|
||||
// Fallback: search all emails (needed when address is unknown)
|
||||
this.mailSummaries.forEachAssociation((mails, to) => {
|
||||
mails
|
||||
.filter(mail => mail.uid === parseInt(uid))
|
||||
.forEach(mail => {
|
||||
this.mailSummaries.remove(to, mail)
|
||||
debug('Removed ', mail.date, to, mail.subject)
|
||||
deleted = true
|
||||
})
|
||||
})
|
||||
}
|
||||
// TODO: make this more efficient, looping through each email is not cool.
|
||||
this.mailSummaries.forEachAssociation((mails, to) => {
|
||||
mails
|
||||
.filter(mail => mail.uid === parseInt(uid) && (address ? to == address : true))
|
||||
.forEach(mail => {
|
||||
this.mailSummaries.remove(to, mail)
|
||||
debug('Removed ', mail.date, to, mail.subject)
|
||||
deleted = true
|
||||
})
|
||||
})
|
||||
return deleted
|
||||
}
|
||||
return false
|
||||
|
|
|
|||
|
|
@ -69,6 +69,15 @@ router.get(
|
|||
)
|
||||
|
||||
// Catch-all for invalid UIDs (non-numeric)
|
||||
router.get(
|
||||
'^/:address/:uid',
|
||||
sanitizeAddress,
|
||||
async(req, res) => {
|
||||
req.session.errorMessage = 'Invalid/Malformed UID provided.'
|
||||
res.redirect(`/error/${req.params.address}/400`)
|
||||
}
|
||||
)
|
||||
|
||||
router.get(
|
||||
'^/:address/delete-all',
|
||||
sanitizeAddress,
|
||||
|
|
@ -88,7 +97,6 @@ router.get(
|
|||
)
|
||||
|
||||
|
||||
|
||||
router.get(
|
||||
'^/:address/:uid/delete',
|
||||
sanitizeAddress,
|
||||
|
|
@ -195,15 +203,5 @@ router.get(
|
|||
}
|
||||
)
|
||||
|
||||
// Final catch-all for invalid UIDs (non-numeric or unmatched patterns)
|
||||
router.get(
|
||||
'^/:address/:uid',
|
||||
sanitizeAddress,
|
||||
async(req, res) => {
|
||||
req.session.errorMessage = 'Invalid/Malformed UID provided.'
|
||||
res.redirect(`/error/${req.params.address}/400`)
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
module.exports = router
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue