generated from exteraGramPlugins/pluginBase
Send forwarded media to the forum topic picked in the share sheet
Publish plugin / publish (push) Successful in 3s
Publish plugin / publish (push) Successful in 3s
The picker only read the selected dialog ids, so media always landed in a forum's General topic. Read ShareAlert's selectedDialogTopics as well and address each target the way ShareAlert.sendInternal() does: reply to the topic's start message in forums, or set monoForumPeer in a channel's direct-messages chat. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
46503f24a0
commit
1f0a9a1a7a
6 files changed
+150
-23
No files matched your search
@@ -84,6 +84,25 @@ otherwise. On Android the dialog id of a channel is `-chat.id`, with no `-100`
|
||||
prefix. DMs, basic groups and Saved Messages have no link, so media forwarded
|
||||
from rich messages there is sent without a caption.
|
||||
|
||||
## Forum topics in the share sheet
|
||||
|
||||
When a forum is picked in `ShareAlert`, the topic lands in the protected
|
||||
`selectedDialogTopics` map. That map is keyed by the `TLRPC.Dialog` values of
|
||||
`selectedDialogs`, not by dialog id. `ShareAlert.sendInternal()` then addresses
|
||||
each chat in one of two ways:
|
||||
|
||||
- **Forum topic:** wraps `topic.topicStartMessage` in a `MessageObject`, sets
|
||||
`isTopicMainMessage = true`, and passes it as both `replyToMsg` and
|
||||
`replyToTopMsg`. `SendMessagesHelper` sends its id as `top_msg_id`. A topic's
|
||||
id is its start message's id.
|
||||
- **Mono forum** (a channel's direct-messages chat,
|
||||
`MessagesController.isMonoForum`): no reply message. Instead
|
||||
`monoForumPeer = DialogObject.getPeerDialogId(topic.from_id)`.
|
||||
|
||||
A plugin that only reads the `selectedDialogs` keys sends to the chat's
|
||||
General topic. `picker._selected_targets` reproduces the logic above inside
|
||||
`didShare()`, which runs before the sheet clears its selection.
|
||||
|
||||
## File references
|
||||
|
||||
Pass the adapter's parent object (WebPage or MessageObject) as `parentObject`
|
||||
|
||||
Reference in new issue
Block a user