Skip to content

feat: Declare the Agenda digest mail notifications category - EXO-89484 - eXIP7.3.0.22 - #1070

Merged
azayati merged 3 commits into
feature/experiencefrom
exip-7.3.0.22-us03-digest-category
Sep 1, 2026
Merged

feat: Declare the Agenda digest mail notifications category - EXO-89484 - eXIP7.3.0.22#1070
azayati merged 3 commits into
feature/experiencefrom
exip-7.3.0.22-us03-digest-category

Conversation

@azayati

@azayati azayati commented Aug 28, 2026

Copy link
Copy Markdown
Member

Part of eXIP 7.3.0.22 — Digest Mail Notifications. Task EXO-89484 (US03).

Contributes the Agenda category to the digest settings drawer. Depends on Meeds-io/commons#772, which brings the Kernel DigestCategoryRegistry this configuration targets — merge that one first.

Pure configuration, no Java:

  • The category is declared as a component-plugin on the registry, next to the notification plugins it already declares, and covers the 7 agenda plugins (event added/modified/canceled, reminder, reply, date poll, vote).
  • Its label is added to the resource bundle those plugins already use, where social's DigestCategoryLabelResolver reads it — translated server side, so the settings page has nothing to load.

The categories are declared in the Kernel rather than as Spring beans on purpose: each webapp has its own Spring context, and only the Kernel container is shared by all of them. This addon's category therefore reaches the digest whatever the addon is made of.

AI contribution

Classified N1 — human-driven, no auto-merge, author ≠ approver.

@azayati

azayati commented Aug 28, 2026

Copy link
Copy Markdown
Member Author

Second commit added — the timezone delegation from the tech spec (§4 Timezone).

The timezone synchronization is now owned by the platform: social publishes eXo.env.portal.userTimezone on every page, refreshes it through POST /social/rest/timezone backed by UserTimeZoneService.saveUserTimeZone(username, zoneId), and broadcasts an event on every change (a ProfileListenerPlugin never fires for this attribute — rejected alternative 7 of the spec).

Per the spec, agenda delegates and deprecates its own copies:

  • AgendaUserSettingsService.updateUserTimeZone → deprecated, delegates to the social service so the timezone events are never skipped
  • agenda's TimeZoneRest → deprecated, stays for existing callers, delegates the same way
  • the head script publishing eXo.env.portal.userTimezone and the page sync script are removed — they duplicate what social now does on every page (§5 cleanup: 'agenda's timezone-sync copies once they delegate to the platform sync')

This PR now additionally requires the social PR Meeds-io/social#6027 to be merged first (it brings UserTimeZoneService and the platform-side sync). All 8 AgendaUserSettingsServiceTest tests green.

@exo-swf
exo-swf force-pushed the feature/experience branch from ecb456d to e93b697 Compare August 31, 2026 23:17
@azayati
azayati force-pushed the exip-7.3.0.22-us03-digest-category branch 2 times, most recently from 8fe3535 to 3b1e245 Compare September 1, 2026 10:03
azayati and others added 3 commits September 1, 2026 11:08
… - eXIP7.3.0.22

Contributes the Agenda category to the digest settings drawer, next to
the notification plugins it covers. Pure configuration: the category is
declared on the Kernel DigestCategoryRegistry of commons, and its label lives
in the bundle the notification plugins of this addon already use.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rm - EXO-89484 - eXIP7.3.0.22

The timezone of each user is owned by the platform now: social publishes
eXo.env.portal.userTimezone on every page, refreshes it through its own
endpoint backed by UserTimeZoneService, and broadcasts an event on every
change. Agenda stops carrying the mechanism entirely, its part of the spec §5
cleanup done within this task:

- the head script publishing eXo.env.portal.userTimezone and the page script
  refreshing it, duplicated by what social now does on every page
- the timezone REST endpoint and AgendaUserSettingsService.updateUserTimeZone,
  whose only caller was that page script: nothing anywhere calls them any more

Requires the social PR moving the synchronization into the platform.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ies - EXO-89484 - eXIP7.3.0.22

The category declarations covered every notification of their group, but the
functional spec lists exactly which notifications the digest considers: only
those 12 plugins are declared, nothing else enters a digest.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@azayati
azayati force-pushed the exip-7.3.0.22-us03-digest-category branch from 3b1e245 to fe3db71 Compare September 1, 2026 10:12
@azayati

azayati commented Sep 1, 2026

Copy link
Copy Markdown
Member Author

Strategy change on the timezone part — full removal instead of delegate-and-deprecate.

Decision: the spec §5 cleanup is done progressively within each task (only a large cleanup chunk would wait), so agenda's timezone-sync code is removed entirely in this PR rather than deprecated:

  • UIPortalAgendaHead.gtmpl + its webui registration, and the agenda-base-extension sync bundle — duplicated by what social now does on every page (feat: Digest mail notifications settings drawer - EXO-89484 - eXIP7.3.0.22 Meeds-io/social#6027)
  • TimeZoneRest and AgendaUserSettingsService.updateUserTimeZone (API + impl + container test) — their only caller was that page script; verified by grep across the workspace: nothing calls the endpoint or the method any more
  • the now-unused OrganizationService dependency of AgendaUserSettingsServiceImpl goes with them

The branch was rewritten so the PR tells the final story (3 commits: category, removal, spec plugin list). AgendaUserSettingsServiceTest: 7 tests green. Still depends on Meeds-io/social#6027 merging first (social must publish the sync before agenda's copy disappears from a deployed platform).

@azayati
azayati merged commit 6aed7d7 into feature/experience Sep 1, 2026
1 check passed
@azayati
azayati deleted the exip-7.3.0.22-us03-digest-category branch September 1, 2026 10:16
exo-swf pushed a commit that referenced this pull request Sep 1, 2026
exo-swf pushed a commit that referenced this pull request Sep 2, 2026
exo-swf pushed a commit that referenced this pull request Sep 7, 2026
exo-swf pushed a commit that referenced this pull request Sep 8, 2026
exo-swf pushed a commit that referenced this pull request Sep 9, 2026
exo-swf pushed a commit that referenced this pull request Sep 11, 2026
azayati added a commit that referenced this pull request Sep 11, 2026
azayati added a commit that referenced this pull request Sep 11, 2026
… - eXIP7.3.0.22 (#1070)

(cherry picked from commit 8aedd27)
(cherry picked from commit 24854c6)
azayati added a commit that referenced this pull request Sep 11, 2026
… - eXIP7.3.0.22 (#1070)

(cherry picked from commit 8aedd27)
(cherry picked from commit 24854c6)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant