Skip to content

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

Open
Romu-C wants to merge 7 commits intodevelop-b2schoolfrom
feat/COCO-4642_update-onboarding-clean-message
Open

feat(conversation): #COCO-4642 add clean messages modal#971
Romu-C wants to merge 7 commits intodevelop-b2schoolfrom
feat/COCO-4642_update-onboarding-clean-message

Conversation

@Romu-C
Copy link
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
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.

src: illuOnboardingClean,
title: t('onboarding.modal.clean.title'),
alt: t('onboarding.modal.clean.title'),
text: t('onboarding.modal.clean.text'),
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 property is hardcoded in French directly in the component instead of using the i18n translation function t('onboarding.modal.clean.text'). The i18n key onboarding.modal.clean.text is already defined in fr.json, so this should use t('onboarding.modal.clean.text') for consistency and to support potential future localization.

Suggested change
text: t('onboarding.modal.clean.text'),
text: t('onboarding.modal.clean.text'),

Copilot uses AI. Check for mistakes.
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
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
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
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
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
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
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
@sonarqubecloud
Copy link


// 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
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
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

"merge2": "^1.0.3",
"ode-ngjs-front": "dev",
"ode-ts-client": "dev",
"ode-ngjs-front": "develop-b2school",
Copy link
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
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...


// 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
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

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.

6 participants