From 33e467d2a5c07f9087036bed5dffe98b8d1bd9d7 Mon Sep 17 00:00:00 2001 From: benya Date: Sun, 8 Mar 2026 14:11:04 +0300 Subject: [PATCH] p1: add forward without author option --- app/messages/schemas.py | 2 ++ app/messages/service.py | 4 ++-- docs/api-reference.md | 6 ++++-- web/src/api/chats.ts | 10 ++++++---- web/src/components/MessageList.tsx | 14 +++++++++++++- 5 files changed, 27 insertions(+), 9 deletions(-) diff --git a/app/messages/schemas.py b/app/messages/schemas.py index c65ebbb..e365664 100644 --- a/app/messages/schemas.py +++ b/app/messages/schemas.py @@ -42,10 +42,12 @@ class MessageStatusUpdateRequest(BaseModel): class MessageForwardRequest(BaseModel): target_chat_id: int + include_author: bool = True class MessageForwardBulkRequest(BaseModel): target_chat_ids: list[int] = Field(min_length=1, max_length=20) + include_author: bool = True class MessageReactionToggleRequest(BaseModel): diff --git a/app/messages/service.py b/app/messages/service.py index 7ade969..7029a8e 100644 --- a/app/messages/service.py +++ b/app/messages/service.py @@ -362,7 +362,7 @@ async def forward_message( chat_id=payload.target_chat_id, sender_id=sender_id, reply_to_message_id=None, - forwarded_from_message_id=source.id, + forwarded_from_message_id=source.id if payload.include_author else None, message_type=source.type, text=source.text, ) @@ -403,7 +403,7 @@ async def forward_message_bulk( chat_id=target_chat_id, sender_id=sender_id, reply_to_message_id=None, - forwarded_from_message_id=source.id, + forwarded_from_message_id=source.id if payload.include_author else None, message_type=source.type, text=source.text, ) diff --git a/docs/api-reference.md b/docs/api-reference.md index 1444f28..3b9a037 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -279,7 +279,8 @@ Rules: ```json { - "target_chat_id": 20 + "target_chat_id": 20, + "include_author": true } ``` @@ -287,7 +288,8 @@ Rules: ```json { - "target_chat_ids": [20, 21] + "target_chat_ids": [20, 21], + "include_author": true } ``` diff --git a/web/src/api/chats.ts b/web/src/api/chats.ts index 98ea85e..37f0240 100644 --- a/web/src/api/chats.ts +++ b/web/src/api/chats.ts @@ -182,16 +182,18 @@ export async function updateMessageStatus( }); } -export async function forwardMessage(messageId: number, targetChatId: number): Promise { +export async function forwardMessage(messageId: number, targetChatId: number, includeAuthor = true): Promise { const { data } = await http.post(`/messages/${messageId}/forward`, { - target_chat_id: targetChatId + target_chat_id: targetChatId, + include_author: includeAuthor }); return data; } -export async function forwardMessageBulk(messageId: number, targetChatIds: number[]): Promise { +export async function forwardMessageBulk(messageId: number, targetChatIds: number[], includeAuthor = true): Promise { const { data } = await http.post(`/messages/${messageId}/forward-bulk`, { - target_chat_ids: targetChatIds + target_chat_ids: targetChatIds, + include_author: includeAuthor }); return data; } diff --git a/web/src/components/MessageList.tsx b/web/src/components/MessageList.tsx index a17fefd..a5dec92 100644 --- a/web/src/components/MessageList.tsx +++ b/web/src/components/MessageList.tsx @@ -64,6 +64,7 @@ export function MessageList() { const [forwardError, setForwardError] = useState(null); const [isForwarding, setIsForwarding] = useState(false); const [forwardSelectedChatIds, setForwardSelectedChatIds] = useState>(new Set()); + const [forwardIncludeAuthor, setForwardIncludeAuthor] = useState(true); const [deleteMessageId, setDeleteMessageId] = useState(null); const [deleteError, setDeleteError] = useState(null); const [selectedIds, setSelectedIds] = useState>(new Set()); @@ -169,6 +170,7 @@ export function MessageList() { setDeleteMessageId(null); setForwardMessageId(null); setForwardSelectedChatIds(new Set()); + setForwardIncludeAuthor(true); if (activeChatId) { setEditingMessage(activeChatId, null); } @@ -287,9 +289,10 @@ export function MessageList() { setIsForwarding(true); setForwardError(null); try { - await forwardMessageBulk(forwardMessageId, targetChatIds); + await forwardMessageBulk(forwardMessageId, targetChatIds, forwardIncludeAuthor); setForwardMessageId(null); setForwardSelectedChatIds(new Set()); + setForwardIncludeAuthor(true); setForwardQuery(""); } catch { setForwardError("Failed to forward message"); @@ -674,6 +677,7 @@ export function MessageList() { setForwardQuery(""); setForwardError(null); setForwardSelectedChatIds(new Set()); + setForwardIncludeAuthor(true); setCtx(null); }} > @@ -802,6 +806,14 @@ export function MessageList() { ))} {forwardTargets.length === 0 ?

No chats found

: null} + {forwardError ?

{forwardError}

: null}