Skip to content

feat(conversation): #COCO-4642 add clean messages modal#971

Merged
Romu-C merged 3 commits intodevelop-b2schoolfrom
feat/COCO-4642_update-onboarding-clean-message
Mar 27, 2026
Merged

feat(conversation): #COCO-4642 add clean messages modal#971
Romu-C merged 3 commits intodevelop-b2schoolfrom
feat/COCO-4642_update-onboarding-clean-message

Conversation

@Romu-C
Copy link
Copy Markdown
Contributor

@Romu-C Romu-C commented Mar 5, 2026

Description

Please include a summary of the changes and the related issue.

Fixes

(Enter here Jira or Redmine ticket(s) links)

Type of change

Please check options that are relevant.

  • Chore (PATCH)
  • Doc (PATCH)
  • Bug fix (PATCH)
  • New feature (MINOR)

Which packages changed?

Please check the name of the package you changed

  • admin
  • app-registry
  • archive
  • auth
  • cas
  • common
  • communication
  • conversation
  • directory
  • feeder
  • infra
  • portal
  • session
  • test
  • tests
  • timeline
  • workspace

Tests

  1. Describe here the tests you performed
  2. Step by step
  3. With expected results

Reminder

  • Security flaws

  • Performance impacts (think bulk !)

  • Unit tests were replayed

  • Unit tests were added and/or changed

  • I have updated the reminder for the version including my modifications

  • All done ! 😃

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR replaces the existing onboarding modal in the Conversation app with a new "clean messages" modal that informs users about upcoming automatic deletion of old messages (messages older than 2 years not filed in any folder). The modal is designed to display annually after June 1st.

Changes:

  • Replaced MessageOnboardingModal component (4-screen feature walkthrough) with a new MessageOnboardingCleanModal component (single-screen cleanup announcement with date-based display logic)
  • Deleted four SVG assets used by the old onboarding modal and added a reference to a new illu-onboarding-clean.svg asset
  • Added new i18n keys (onboarding.modal.clean.title and onboarding.modal.clean.text) in the French locale file

Reviewed changes

Copilot reviewed 4 out of 9 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
conversation/frontend/src/routes/root/index.tsx Updated import and usage from MessageOnboardingModal to MessageOnboardingCleanModal
conversation/frontend/src/routes/root/components/MessageOnboardingCleanModal.tsx New modal component with annual display logic (after June 1st) and cleanup messaging
conversation/frontend/src/routes/root/components/MessageOnboardingModal.tsx Deleted old 4-screen onboarding modal
conversation/frontend/src/assets/illu-onboarding-*.svg (4 files) Deleted SVG illustration assets for old onboarding screens
conversation/backend/src/main/resources/i18n/fr.json Added French i18n keys for the new clean messages modal

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +2 to +5
import { DisplayRuleCheckResult } from 'node_modules/@edifice.io/react/dist/modules/modals/OnboardingModal/OnboardingModal';
import illuOnboardingClean from '~/assets/illu-onboarding-clean.svg';
import { useI18n } from '~/hooks/useI18n';

Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Importing DisplayRuleCheckResult directly from node_modules/@edifice.io/react/dist/... is fragile and a bad practice. This path references internal build artifacts and could break with any version update of the library. The type should ideally be imported from the library's public API (e.g., @edifice.io/react/modals). If it's not exported from the public API, consider requesting the library maintainers to export it, or define the type locally based on the expected shape instead.

Suggested change
import { DisplayRuleCheckResult } from 'node_modules/@edifice.io/react/dist/modules/modals/OnboardingModal/OnboardingModal';
import illuOnboardingClean from '~/assets/illu-onboarding-clean.svg';
import { useI18n } from '~/hooks/useI18n';
import illuOnboardingClean from '~/assets/illu-onboarding-clean.svg';
import { useI18n } from '~/hooks/useI18n';
type DisplayRuleCheckResult<TCustomState> = {
display: boolean;
nextState: TCustomState;
};

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AH ! Peut-être un oubli de ma part => exporter le type correctement depuis le FF si pas déjà fait.

"onboarding.modal.screen4.title": "Les nouveautés à venir",
"onboarding.modal.title": "La Messagerie fait peau neuve !",
"onboarding.modal.clean.title": "Du tri dans vos messages",
"onboarding.modal.clean.text": "<strong>L’application Messagerie intégrera bientôt une automatisation de suppression des anciens messages.</strong><br />Afin de limiter l'utilisation d'espace de stockage, les messages de plus de 2 ans seront supprimés s’ils ne sont classés dans aucun dossier.Cette action se fera automatiquement et régulièrement tout au long de l'année. <br />Cela libérera de l'espace sur votre quota de stockage. Cette mesure permettra de libérer jusqu’à 8 tonnes d’équivalent CO2 par an sur toutes nos plateformes. Un bon geste pour la planète ! <br />Cette automatisation sera appliquée à partir du xxx 2026. Pensez à faire du tri dès que possible !",
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The text contains "xxx 2026" which appears to be a placeholder for an actual date. This should be replaced with the actual planned date before merging, otherwise users will see "xxx 2026" in the modal.

Suggested change
"onboarding.modal.clean.text": "<strong>L’application Messagerie intégrera bientôt une automatisation de suppression des anciens messages.</strong><br />Afin de limiter l'utilisation d'espace de stockage, les messages de plus de 2 ans seront supprimés s’ils ne sont classés dans aucun dossier.Cette action se fera automatiquement et régulièrement tout au long de l'année. <br />Cela libérera de l'espace sur votre quota de stockage. Cette mesure permettra de libérer jusqu’à 8 tonnes d’équivalent CO2 par an sur toutes nos plateformes. Un bon geste pour la planète ! <br />Cette automatisation sera appliquée à partir du xxx 2026. Pensez à faire du tri dès que possible !",
"onboarding.modal.clean.text": "<strong>L’application Messagerie intégrera bientôt une automatisation de suppression des anciens messages.</strong><br />Afin de limiter l'utilisation d'espace de stockage, les messages de plus de 2 ans seront supprimés s’ils ne sont classés dans aucun dossier.Cette action se fera automatiquement et régulièrement tout au long de l'année. <br />Cela libérera de l'espace sur votre quota de stockage. Cette mesure permettra de libérer jusqu’à 8 tonnes d’équivalent CO2 par an sur toutes nos plateformes. Un bon geste pour la planète ! <br />Cette automatisation sera appliquée à partir de 2026. Pensez à faire du tri dès que possible !",

Copilot uses AI. Check for mistakes.
"onboarding.modal.screen4.title": "Les nouveautés à venir",
"onboarding.modal.title": "La Messagerie fait peau neuve !",
"onboarding.modal.clean.title": "Du tri dans vos messages",
"onboarding.modal.clean.text": "<strong>L’application Messagerie intégrera bientôt une automatisation de suppression des anciens messages.</strong><br />Afin de limiter l'utilisation d'espace de stockage, les messages de plus de 2 ans seront supprimés s’ils ne sont classés dans aucun dossier.Cette action se fera automatiquement et régulièrement tout au long de l'année. <br />Cela libérera de l'espace sur votre quota de stockage. Cette mesure permettra de libérer jusqu’à 8 tonnes d’équivalent CO2 par an sur toutes nos plateformes. Un bon geste pour la planète ! <br />Cette automatisation sera appliquée à partir du xxx 2026. Pensez à faire du tri dès que possible !",
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a missing space between "dossier." and "Cette" — the text reads dossier.Cette but should be dossier. Cette.

Suggested change
"onboarding.modal.clean.text": "<strong>L’application Messagerie intégrera bientôt une automatisation de suppression des anciens messages.</strong><br />Afin de limiter l'utilisation d'espace de stockage, les messages de plus de 2 ans seront supprimés s’ils ne sont classés dans aucun dossier.Cette action se fera automatiquement et régulièrement tout au long de l'année. <br />Cela libérera de l'espace sur votre quota de stockage. Cette mesure permettra de libérer jusqu’à 8 tonnes d’équivalent CO2 par an sur toutes nos plateformes. Un bon geste pour la planète ! <br />Cette automatisation sera appliquée à partir du xxx 2026. Pensez à faire du tri dès que possible !",
"onboarding.modal.clean.text": "<strong>L’application Messagerie intégrera bientôt une automatisation de suppression des anciens messages.</strong><br />Afin de limiter l'utilisation d'espace de stockage, les messages de plus de 2 ans seront supprimés s’ils ne sont classés dans aucun dossier. Cette action se fera automatiquement et régulièrement tout au long de l'année. <br />Cela libérera de l'espace sur votre quota de stockage. Cette mesure permettra de libérer jusqu’à 8 tonnes d’équivalent CO2 par an sur toutes nos plateformes. Un bon geste pour la planète ! <br />Cette automatisation sera appliquée à partir du xxx 2026. Pensez à faire du tri dès que possible !",

Copilot uses AI. Check for mistakes.
Comment on lines +29 to +34
return {
display: shouldDisplay,
nextState: {
type: 'Date',
value: nowUTC.toISOString(),
},
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Potential logic issue: nextState is returned unconditionally, even when display is false. If the OnboardingModal component persists nextState regardless of whether the modal is actually shown, then a user who visits before June 1st would have their state saved with the current date. When June 1st arrives, lastDisplayDate.getFullYear() would equal dateToCompare.getFullYear(), so shouldDisplay would remain false and the modal would never be shown to that user. Consider returning nextState only when display is true, or returning undefined for nextState when the modal shouldn't be displayed.

Suggested change
return {
display: shouldDisplay,
nextState: {
type: 'Date',
value: nowUTC.toISOString(),
},
if (shouldDisplay) {
return {
display: true,
nextState: {
type: 'Date',
value: nowUTC.toISOString(),
},
};
}
return {
display: false,
nextState: previousState,

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Le nextState est persisté uniquement si toutes les étapes de l'onboarding sont validés.
La proposition de copilot est une sécurité supplémentaire, mais n'apparait pas indispensable.

Copy link
Copy Markdown
Contributor

@jcbe-ode jcbe-ode left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comme copilot + quelques précisions

src: illuOnboardingClean,
title: t('onboarding.modal.clean.title'),
alt: t('onboarding.modal.clean.title'),
text: "<strong>L’application Messagerie intégrera bientôt une automatisation de suppression des anciens messages.</strong><br />Afin de limiter l'utilisation d'espace de stockage, les messages de plus de 2 ans seront supprimés s’ils ne sont classés dans aucun dossier.Cette action se fera automatiquement et régulièrement tout au long de l'année. <br />Cela libérera de l'espace sur votre quota de stockage. Cette mesure permettra de libérer jusqu’à 8 tonnes d’équivalent CO2 par an sur toutes nos plateformes. Un bon geste pour la planète ! <br />Cette automatisation sera appliquée à partir du xxx 2026. Pensez à faire du tri dès que possible !",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Utiliser les trads i18n

Comment on lines +29 to +34
return {
display: shouldDisplay,
nextState: {
type: 'Date',
value: nowUTC.toISOString(),
},
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Le nextState est persisté uniquement si toutes les étapes de l'onboarding sont validés.
La proposition de copilot est une sécurité supplémentaire, mais n'apparait pas indispensable.

Comment on lines +2 to +5
import { DisplayRuleCheckResult } from 'node_modules/@edifice.io/react/dist/modules/modals/OnboardingModal/OnboardingModal';
import illuOnboardingClean from '~/assets/illu-onboarding-clean.svg';
import { useI18n } from '~/hooks/useI18n';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AH ! Peut-être un oubli de ma part => exporter le type correctement depuis le FF si pas déjà fait.

@Romu-C Romu-C force-pushed the feat/COCO-4642_update-onboarding-clean-message branch from 0b983c4 to 865ee69 Compare March 10, 2026 16:26
@jcbe-ode jcbe-ode force-pushed the develop-b2school branch 2 times, most recently from 3b4c617 to a06ada6 Compare March 16, 2026 15:02
@Romu-C Romu-C force-pushed the feat/COCO-4642_update-onboarding-clean-message branch from 865ee69 to 50458a5 Compare March 24, 2026 15:25

// Deduplicate functions by function name only, ignoring establishment code
// Format: "ESTABLISHMENT_CODE$FUNCTION_CODE$FUNCTION_NAME$JOB_CODE$DISCIPLINE"
if (functions != null && functions.size() > 0) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tout ce code modifié ne fait pas partie de ta PR, je suppose ?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mince, verifier si le code n'a pas été changé en rebasant

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

j'avais rebase en debut de semaine je vais le refaire mais en effet ça ne doit pas être dans mes changement

Comment thread package.json Outdated
"merge2": "^1.0.3",
"ode-ngjs-front": "dev",
"ode-ts-client": "dev",
"ode-ngjs-front": "develop-b2school",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

idem, aucune raison de modifier les versions dans une PR de feature

"onboarding.modal.screen4.title": "Les nouveautés à venir",
"onboarding.modal.title": "La Messagerie fait peau neuve !",
"onboarding.modal.clean.title": "Du tri dans vos messages",
"onboarding.modal.clean.text": "<strong>L’application Messagerie intégrera bientôt une automatisation de suppression des anciens messages.</strong><br />Afin de limiter l'utilisation d'espace de stockage, les messages de plus de 2 ans seront supprimés s’ils ne sont classés dans aucun dossier.Cette action se fera automatiquement et régulièrement tout au long de l'année. <br />Cela libérera de l'espace sur votre quota de stockage. Cette mesure permettra de libérer jusqu’à 8 tonnes d’équivalent CO2 par an sur toutes nos plateformes. Un bon geste pour la planète ! <br />Cette automatisation sera appliquée à partir du xxx 2026. Pensez à faire du tri dès que possible !",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

on peut faire commencer la clé de trad par conversation.onboarding...

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

on ne l'a pas fait lors de la refacto es ce qu'on veut le faire pour toutes les trad?


// Deduplicate functions by function name only, ignoring establishment code
// Format: "ESTABLISHMENT_CODE$FUNCTION_CODE$FUNCTION_NAME$JOB_CODE$DISCIPLINE"
if (functions != null && functions.size() > 0) {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mince, verifier si le code n'a pas été changé en rebasant

@Romu-C Romu-C force-pushed the feat/COCO-4642_update-onboarding-clean-message branch 2 times, most recently from 649232c to 3059094 Compare March 27, 2026 16:49
@Romu-C Romu-C force-pushed the feat/COCO-4642_update-onboarding-clean-message branch from 3059094 to 04a2e34 Compare March 27, 2026 16:50
@sonarqubecloud
Copy link
Copy Markdown

@Romu-C Romu-C merged commit b253dbe into develop-b2school Mar 27, 2026
1 check passed
@Romu-C Romu-C deleted the feat/COCO-4642_update-onboarding-clean-message branch March 27, 2026 16:52
damienromito added a commit that referenced this pull request Apr 13, 2026
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.

4 participants