mirror of
https://github.com/Crazyco-xyz/48hr.email.git
synced 2025-12-18 09:49:35 +01:00
Compare commits
2 commits
2ac2371963
...
63b30a3705
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
63b30a3705 | ||
|
|
b80db9fbd3 |
2 changed files with 33 additions and 19 deletions
|
|
@ -47,16 +47,28 @@ class MailRepository {
|
|||
removeUid(uid, address) {
|
||||
if (!this.config.email.examples.uids.includes(parseInt(uid))) {
|
||||
var deleted = false
|
||||
// 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
|
||||
})
|
||||
})
|
||||
|
||||
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
|
||||
})
|
||||
})
|
||||
}
|
||||
return deleted
|
||||
}
|
||||
return false
|
||||
|
|
|
|||
|
|
@ -69,15 +69,6 @@ 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,
|
||||
|
|
@ -97,6 +88,7 @@ router.get(
|
|||
)
|
||||
|
||||
|
||||
|
||||
router.get(
|
||||
'^/:address/:uid/delete',
|
||||
sanitizeAddress,
|
||||
|
|
@ -203,5 +195,15 @@ 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