fix: address user mail review feedback

This commit is contained in:
dreamhunter2333
2026-08-23 19:41:04 +08:00
parent 54afb10345
commit 46efabd184
11 changed files with 39 additions and 93 deletions
-2
View File
@@ -22,8 +22,6 @@ api.delete('/user_api/mails/:id', user_mail_api.deleteMail);
api.get('/user_api/address/:address_id/settings', user_send_mail_api.settings);
api.post('/user_api/address/:address_id/request_send_mail_access', user_send_mail_api.requestAccess);
api.post('/user_api/address/:address_id/send_mail', user_send_mail_api.send);
api.get('/user_api/address/:address_id/sendbox', user_send_mail_api.listSendbox);
api.delete('/user_api/address/:address_id/sendbox/:mail_id', user_send_mail_api.removeSendboxMail);
api.get('/user_api/sendbox', user_send_mail_api.listUserSendbox);
api.delete('/user_api/sendbox/:mail_id', user_send_mail_api.removeUserSendboxMail);
+5 -26
View File
@@ -2,11 +2,7 @@ import { Context } from "hono";
import { commonGetUserRole, handleListQuery } from "../common";
import i18n from "../i18n";
import {
deleteSendbox,
getSendbox,
sendMail,
} from "../mails_api/send_mail_api";
import { sendMail } from "../mails_api/send_mail_api";
import {
getSendBalanceState,
requestSendMailAccess,
@@ -21,11 +17,12 @@ const getBindedAddress = async (
return null;
}
const { user_id } = c.get("userPayload");
return await c.env.DB.prepare(
const address = await c.env.DB.prepare(
`SELECT a.name FROM users_address ua`
+ ` JOIN address a ON a.id = ua.address_id`
+ ` WHERE ua.user_id = ? AND a.id = ?`
).bind(user_id, addressId).first<string>("name");
return address ?? null;
}
const getAddressOrError = async (
@@ -80,33 +77,17 @@ const send = async (c: Context<HonoCustomType>): Promise<Response> => {
return address;
}
await setUserRole(c);
const msgs = i18n.getMessagesbyContext(c);
try {
const reqJson = await c.req.json();
await sendMail(c, address, reqJson);
} catch (error) {
console.error("Failed to send user mail", error);
return c.text(`Failed to send mail ${(error as Error).message}`, 400);
return c.text(msgs.OperationFailedMsg, 500);
}
return c.json({ status: "ok" });
}
const listSendbox = async (c: Context<HonoCustomType>): Promise<Response> => {
const address = await getAddressOrError(c);
if (address instanceof Response) {
return address;
}
const { limit, offset } = c.req.query();
return getSendbox(c, address, limit, offset);
}
const removeSendboxMail = async (c: Context<HonoCustomType>): Promise<Response> => {
const address = await getAddressOrError(c);
if (address instanceof Response) {
return address;
}
return deleteSendbox(c, address, c.req.param("mail_id"));
}
const listUserSendbox = async (c: Context<HonoCustomType>): Promise<Response> => {
const { user_id } = c.get("userPayload");
const { address, limit, offset } = c.req.query();
@@ -149,8 +130,6 @@ export default {
settings,
requestAccess,
send,
listSendbox,
removeSendboxMail,
listUserSendbox,
removeUserSendboxMail,
};