Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
S slapos.core
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Labels
    • Labels
  • Merge requests 26
    • Merge requests 26
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Environments
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Members
    • Members
  • Activity
  • Graph
  • Jobs
  • Commits
Collapse sidebar
  • nexedi
  • slapos.core
  • Merge requests
  • !351

Merged
Created Dec 06, 2021 by Jérome Perrin@jeromeOwner

rss_style: include guid in tickets RSS

  • Overview 6
  • Commits 1
  • Pipelines 2
  • Changes 7

SlapOS ticket RSS have one entry for each ticket, with the content of the latest event as description, but when using a feed reader application, we'd like to have a new entry for each message posted to the ticket, to be notified that a new message was posted.

Feed reader applications fetch the RSS and have to determine if each entry is already in their database or not. In a scenario like below, we observe different behaviors for different applications:

  1. a user open a ticket "help" with a first message "I need help !". The RSS entry for this ticket is:
<item>
  <link>https://slapos.example.com/#/support_request_module/1</link>
  <title>Help</title>
  <pubDate>Mon, 01 Jan 2001 10:57:10 +0100</pubDate>
  <description>I need help !</description>
</item>

=> feed reader fetches the RSS and add a new entry with title "Help"

  1. support operator reply with a second message "how can I help you ?" The RSS entry for the ticket becomes:
<item>
  <link>https://slapos.example.com/#/support_request_module/1</link>
  <title>Help</title>
  <pubDate>Mon, 02 Jan 2001 08:32:12 +0100</pubDate>      <== this is different
  <description>How can I help you ?</description>           <== this is different
</item>

now depending on the implementation of the feed reader, it will either:

  • add a new entry, this is the best behavior. In the RSS readers I tested, liferea and newsboat do this. Probably they consider that the entry is different because it has a new pubDate and/or description.
  • update the existing entry "in place" - this is not so good, because this does not appear as a new entry and the original message is no longer in the RSS reader. TinyTinyRSS behaves like this (at least in version 17.4, which is a bit old)
  • consider they already have the entry and don't do anything - this is even worse, because user can not see there was a reply. FreshRSS behaves like this.

A RSS for tickets will always have the problem that the feed reader must refresh often enough if we want to have a copy of all messages in the feed reader (and that's why ERP5 CRM's uses a RSS of Events and not Tickets), but we can make this situation better by using guid on messages.

By constructing a guid [1] that will become different every time a new message was posted, feed readers consider each item as a a new, different entry. At least this is the case for all the feed reader I tested, except ERP5 builtin feed reader which only consider the link attribute.

Strictly speaking this implementation has a "problem" that these guids are not permalinks, but I believe that's something we should address in erp5_rss_style (if guid does not look like an URL, set isPermalink="false"), but in practice it does not seem to be a problem.

1: https://validator.w3.org/feed/docs/rss2.html#ltguidgtSubelementOfLtitemgt

Assignee
Assign to
Reviewer
Request review from
None
Milestone
None
Assign milestone
Time tracking
Source branch: fix/support-request-rss-id
GitLab Nexedi Edition | About GitLab | About Nexedi | 沪ICP备2021021310号-2 | 沪ICP备2021021310号-7