[18.0] mail_quoted_reply: sent reply only appears in chatter after page reload
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 74/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- javascript, python
Direzione di ricerca
Inizia da static/src/message_model.esm.js e confronta il relativo callback onClose con Chatter.onCloseFullComposerCallback in mail/static/src/chatter/web_portal/chatter.js e chatter/web/chatter_patch.js. Verifica come funziona l’API di aggiornamento del thread in mail/static/src/core/common/thread_model.js; il lavoro è completato quando una risposta citata inviata appare immediatamente nel chatter, mentre l’abbandono della procedura guidata non attiva un aggiornamento.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Module
mail_quoted_reply (18.0.1.0.0)
Describe the bug
After sending a quoted reply via the "Reply" message action, the composer wizard closes, but the new message does not appear in the chatter. It only becomes visible after a full page reload. A normal message sent from the chatter (including via the full composer) appears immediately.
To reproduce
- Install
mail_quoted_replyon Odoo 18.0. - Open any record with a chatter that has an incoming email or comment.
- Click the "Reply" action on that message.
- Send the email from the composer wizard.
Current behavior: The wizard closes and the chatter stays unchanged.
Expected behavior: The sent reply appears in the chatter immediately, like it does after closing the native full composer.
Root cause
In static/src/message_model.esm.js, the onClose callback of doAction does:
await self.store.env.services["mail.store"].Thread.getOrFetch(thread, ["messages"]);
self.store.env.bus.trigger("update-messages");
Neither call refreshes the thread in 18.0:
Thread.getOrFetch(data)inmail/static/src/core/common/thread_model.jsis justreturn this.get(data);. It returns the local record and never does an RPC, and the second argument is ignored.- Nothing in 18.0 listens for the
update-messagesbus event anymore.
Suggested fix
Do what the native chatter does when the full composer closes (Chatter.onCloseFullComposerCallback → thread.fetchData(requestList) in mail/static/src/chatter/web_portal/chatter.js and chatter/web/chatter_patch.js). Also skip the refresh when the wizard is discarded:
import {Message} from "@mail/core/common/message_model";
import {patch} from "@web/core/utils/patch";
patch(Message.prototype, {
async messageReply(message) {
const thread = message.thread;
const action = await this.store.env.services.orm.call(
"mail.message",
"reply_message",
[message.id]
);
await this.store.env.services.action.doAction(action, {
onClose: async (...args) => {
// [] = "X"/Escape, [{special: true}] = Discard -> nothing was sent
const discarded = args.length === 0 || args[0]?.special;
if (discarded || !thread?.id) {
return;
}
if (thread.fetchData) {
await thread.fetchData(["messages", "scheduledMessages"]);
} else {
await thread.fetchNewMessages();
}
},
});
},
});
We run this as a small companion module on Odoo 18.0 Enterprise, and the reply now shows up in the chatter right after sending.
- Lingua principale
- Python
- Stelle
- 36
- Fork
- 180
- Merge medio
- 4g 2h
- PR unite (30g)
- 14
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di OCA/mail
-
[18.0] mail_drop_target: uploading a file to a Discuss channel fails (_get_as_sudo_from_request_or_raise no longer exists)Forse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Activity creation without model_idForse già presa @parabol123654 l’ha presa 4 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 25/100
I maintainer di solito rispondono entro 1 giorno
Issue simili
-
documentation type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
add entry to blockAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
StevenBlack/hosts#3299 ·
-
`garak --report` overwrites the input report when its name has no ".report"Forse già presa @0z5a l’ha presa oggi. Apertaneeds-triage
Difficoltà 2/5 Mezza giornata Idoneità per principianti 72/100
I maintainer di solito rispondono entro 2 giorni
-
trace: Pi's 1-hour cache writes are priced at 1.25x, but billed at 2xForse già presa @Shizoqua l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
microsoft/TokenEconomizer#221 ·
I maintainer di solito rispondono entro 1 giorno
-
plot_graph crashes when a mesh node has no m2m edgeForse già presa @tygvi l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
mllam/neural-lam#883 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni