This commit is contained in:
@@ -42,10 +42,12 @@ class MessageStatusUpdateRequest(BaseModel):
|
|||||||
|
|
||||||
class MessageForwardRequest(BaseModel):
|
class MessageForwardRequest(BaseModel):
|
||||||
target_chat_id: int
|
target_chat_id: int
|
||||||
|
include_author: bool = True
|
||||||
|
|
||||||
|
|
||||||
class MessageForwardBulkRequest(BaseModel):
|
class MessageForwardBulkRequest(BaseModel):
|
||||||
target_chat_ids: list[int] = Field(min_length=1, max_length=20)
|
target_chat_ids: list[int] = Field(min_length=1, max_length=20)
|
||||||
|
include_author: bool = True
|
||||||
|
|
||||||
|
|
||||||
class MessageReactionToggleRequest(BaseModel):
|
class MessageReactionToggleRequest(BaseModel):
|
||||||
|
|||||||
@@ -362,7 +362,7 @@ async def forward_message(
|
|||||||
chat_id=payload.target_chat_id,
|
chat_id=payload.target_chat_id,
|
||||||
sender_id=sender_id,
|
sender_id=sender_id,
|
||||||
reply_to_message_id=None,
|
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,
|
message_type=source.type,
|
||||||
text=source.text,
|
text=source.text,
|
||||||
)
|
)
|
||||||
@@ -403,7 +403,7 @@ async def forward_message_bulk(
|
|||||||
chat_id=target_chat_id,
|
chat_id=target_chat_id,
|
||||||
sender_id=sender_id,
|
sender_id=sender_id,
|
||||||
reply_to_message_id=None,
|
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,
|
message_type=source.type,
|
||||||
text=source.text,
|
text=source.text,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -279,7 +279,8 @@ Rules:
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"target_chat_id": 20
|
"target_chat_id": 20,
|
||||||
|
"include_author": true
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -287,7 +288,8 @@ Rules:
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"target_chat_ids": [20, 21]
|
"target_chat_ids": [20, 21],
|
||||||
|
"include_author": true
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -182,16 +182,18 @@ export async function updateMessageStatus(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function forwardMessage(messageId: number, targetChatId: number): Promise<Message> {
|
export async function forwardMessage(messageId: number, targetChatId: number, includeAuthor = true): Promise<Message> {
|
||||||
const { data } = await http.post<Message>(`/messages/${messageId}/forward`, {
|
const { data } = await http.post<Message>(`/messages/${messageId}/forward`, {
|
||||||
target_chat_id: targetChatId
|
target_chat_id: targetChatId,
|
||||||
|
include_author: includeAuthor
|
||||||
});
|
});
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function forwardMessageBulk(messageId: number, targetChatIds: number[]): Promise<Message[]> {
|
export async function forwardMessageBulk(messageId: number, targetChatIds: number[], includeAuthor = true): Promise<Message[]> {
|
||||||
const { data } = await http.post<Message[]>(`/messages/${messageId}/forward-bulk`, {
|
const { data } = await http.post<Message[]>(`/messages/${messageId}/forward-bulk`, {
|
||||||
target_chat_ids: targetChatIds
|
target_chat_ids: targetChatIds,
|
||||||
|
include_author: includeAuthor
|
||||||
});
|
});
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ export function MessageList() {
|
|||||||
const [forwardError, setForwardError] = useState<string | null>(null);
|
const [forwardError, setForwardError] = useState<string | null>(null);
|
||||||
const [isForwarding, setIsForwarding] = useState(false);
|
const [isForwarding, setIsForwarding] = useState(false);
|
||||||
const [forwardSelectedChatIds, setForwardSelectedChatIds] = useState<Set<number>>(new Set());
|
const [forwardSelectedChatIds, setForwardSelectedChatIds] = useState<Set<number>>(new Set());
|
||||||
|
const [forwardIncludeAuthor, setForwardIncludeAuthor] = useState(true);
|
||||||
const [deleteMessageId, setDeleteMessageId] = useState<number | null>(null);
|
const [deleteMessageId, setDeleteMessageId] = useState<number | null>(null);
|
||||||
const [deleteError, setDeleteError] = useState<string | null>(null);
|
const [deleteError, setDeleteError] = useState<string | null>(null);
|
||||||
const [selectedIds, setSelectedIds] = useState<Set<number>>(new Set());
|
const [selectedIds, setSelectedIds] = useState<Set<number>>(new Set());
|
||||||
@@ -169,6 +170,7 @@ export function MessageList() {
|
|||||||
setDeleteMessageId(null);
|
setDeleteMessageId(null);
|
||||||
setForwardMessageId(null);
|
setForwardMessageId(null);
|
||||||
setForwardSelectedChatIds(new Set());
|
setForwardSelectedChatIds(new Set());
|
||||||
|
setForwardIncludeAuthor(true);
|
||||||
if (activeChatId) {
|
if (activeChatId) {
|
||||||
setEditingMessage(activeChatId, null);
|
setEditingMessage(activeChatId, null);
|
||||||
}
|
}
|
||||||
@@ -287,9 +289,10 @@ export function MessageList() {
|
|||||||
setIsForwarding(true);
|
setIsForwarding(true);
|
||||||
setForwardError(null);
|
setForwardError(null);
|
||||||
try {
|
try {
|
||||||
await forwardMessageBulk(forwardMessageId, targetChatIds);
|
await forwardMessageBulk(forwardMessageId, targetChatIds, forwardIncludeAuthor);
|
||||||
setForwardMessageId(null);
|
setForwardMessageId(null);
|
||||||
setForwardSelectedChatIds(new Set());
|
setForwardSelectedChatIds(new Set());
|
||||||
|
setForwardIncludeAuthor(true);
|
||||||
setForwardQuery("");
|
setForwardQuery("");
|
||||||
} catch {
|
} catch {
|
||||||
setForwardError("Failed to forward message");
|
setForwardError("Failed to forward message");
|
||||||
@@ -674,6 +677,7 @@ export function MessageList() {
|
|||||||
setForwardQuery("");
|
setForwardQuery("");
|
||||||
setForwardError(null);
|
setForwardError(null);
|
||||||
setForwardSelectedChatIds(new Set());
|
setForwardSelectedChatIds(new Set());
|
||||||
|
setForwardIncludeAuthor(true);
|
||||||
setCtx(null);
|
setCtx(null);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -802,6 +806,14 @@ export function MessageList() {
|
|||||||
))}
|
))}
|
||||||
{forwardTargets.length === 0 ? <p className="px-1 py-2 text-xs text-slate-400">No chats found</p> : null}
|
{forwardTargets.length === 0 ? <p className="px-1 py-2 text-xs text-slate-400">No chats found</p> : null}
|
||||||
</div>
|
</div>
|
||||||
|
<label className="mt-2 flex items-center gap-2 rounded bg-slate-800/70 px-3 py-2 text-xs text-slate-200">
|
||||||
|
<input
|
||||||
|
checked={forwardIncludeAuthor}
|
||||||
|
onChange={(event) => setForwardIncludeAuthor(event.target.checked)}
|
||||||
|
type="checkbox"
|
||||||
|
/>
|
||||||
|
Show original author
|
||||||
|
</label>
|
||||||
{forwardError ? <p className="mt-2 text-xs text-red-400">{forwardError}</p> : null}
|
{forwardError ? <p className="mt-2 text-xs text-red-400">{forwardError}</p> : null}
|
||||||
<div className="mt-3 flex gap-2">
|
<div className="mt-3 flex gap-2">
|
||||||
<button className="w-full rounded bg-sky-500 px-3 py-2 text-sm font-semibold text-slate-950" onClick={() => void handleForwardSubmit()}>
|
<button className="w-full rounded bg-sky-500 px-3 py-2 text-sm font-semibold text-slate-950" onClick={() => void handleForwardSubmit()}>
|
||||||
|
|||||||
Reference in New Issue
Block a user