Skip to content

Inbox: een conversatie is per record, maar de pane knipt hem af op de mailboxgrens #206

Description

@rutgerhofste

Gevonden 2026-09-21 op odoo.pantalytics.com, bij het uitzoeken van een mail die "er niet in stond".

read_conversation() (models/pan_mail_conversation.py:365) legt _base_domain(mailbox_id) over de berichten van het record. De conversatielijst groepeert op (model, res_id), dus een conversatie is een record -- maar de pane toont alleen de berichten die op de geselecteerde mailbox binnenkwamen. Bij een thread waarin twee collega's in To en Cc staan zie je dus je eigen helft, en de andere helft bestaat niet.

Zoals het zich voordeed. Thread met Lucas Ikenna Vanlauwe (res.partner 1328), Rutger in To, Daniel in Cc:

bericht datum x_mailbox_id
Re: Urgent Odoo.sh subscription 21-09 07:06 Daniel
Re: Ready Partner worden... 21-09 06:50 Daniel
Re: Ready Partner worden... 19-09 18:12 Daniel
Out of Office - Back Soon! 18-09 07:26 Rutger
Re: Ready Partner worden... 17-09 12:30 Rutger

Beide mailboxen synchroniseren dezelfde thread; de dedup op Message-ID laat elk bericht in de mailbox landen die het als eerste ophaalde. In Rutgers Inbox staat de conversatie er wel, maar gedateerd 18-09 en met een pane die ophoudt bij een out-of-office. Het antwoord van vanochtend is onzichtbaar, terwijl het aan hetzelfde record hangt en de lezer het record gewoon mag lezen.

Twee gevolgen die erger zijn dan een ontbrekende regel: de conversatie staat op de verkeerde plek in een lijst die op "nieuwste eerst" sorteert, en wie antwoordt, antwoordt op een thread waarvan hij de laatste beurt niet gezien heeft.

Te beslissen. De lijst zegt welke post deze mailbox bereikte; de pane zou moeten zeggen wat de correspondentie op dit record is. Dat pleit ervoor read_conversation niet op mailbox te filteren en mailbox_id alleen te gebruiken voor de lijst, de tellingen en de afzender van het antwoord. Er is geen ACL-argument tegen: de pane draait zonder sudo, dus elk bericht dat erbij zou komen is er een die de lezer sowieso mag lezen.

Wat er dan bij hoort:

  • de mailbox per bericht in de pane, zodra de thread er meer dan een omvat (Inbox: an All mailboxes folder, and the mailbox on the row #198 tekent dezelfde regel al in de conversatiekop en op de lijstrij)
  • de datum van de lijstrij: die volgt nu het nieuwste bericht in deze mailbox. Als de pane de hele thread toont, is dat twee antwoorden op een vraag
  • het antwoord vertrekt vanuit de mailbox van de conversatie, niet vanuit state.mailboxId -- dezelfde regel die Inbox: an All mailboxes folder, and the mailbox on the row #198 al noteert voor All mailboxes, hier met dezelfde val
  • een test in tests/test_conversation_api.py: een thread met berichten in twee mailboxen, geopend vanuit de ene, toont beide

Verwant aan maar niet hetzelfde als #198: dat gaat over de lijst die meerdere mailboxen overspant. Dit gaat over een lijst die er een toont en een pane die daarbinnen te weinig laat zien.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions