-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/mjml mails #1255
Feature/mjml mails #1255
Conversation
API-756 Migrer les mails API Entreprise vers admin
Il s'agit de rapatrier tous les modèles de mailjet dans le code en erb/html/mjml (à voir loic.delmairebeta.gouv.fr un avis ?) réutiliser au maximum le code (il y a de nombreux modules/sections réutilisées) API-757 Permettre à Dorine de pré-visualiser les emails
lors du développement dorine.lambinetbeta.gouv.fr doit pouvoir visualiser les emails sur lesquels elle travaille via : Conception via : https://demo.mailjet.com/ Visualisation via Rails tout simplement http://localhost:3000/rails/mailers Visualisation sur une PR, on clonera en local la branche et on check à la main |
934fc60
to
d9b4c9c
Compare
...iews/api_entreprise/authorization_request_mailer/embarquement_brouillon_en_attente.html.mjml
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oui c'est good pour moi.
Enjoy pour la suite :}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je suis ok, j'admets avoir relu un peu de travers cela dit.
181a794
to
93952eb
Compare
ba89801
to
e147b4a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C’est un peu indigeste à lire, parce qu’il y a pas mal de choses qui:
- Ne servent pas
- Ne sont pas DRY
D’ailleurs des erreurs se sont glissés certainement à cause de ça:
- Des différences de styles (http://localhost:3000/rails/mailers/api_entreprise/authorization_request_mailer/embarquement_modifications_demandees et http://localhost:3000/rails/mailers/api_entreprise/authorization_request_mailer/embarquement_demande_refusee )
- Des listing potentiellement en double ( http://localhost:3000/rails/mailers/api_entreprise/authorization_request_mailer/embarquement_valide_to_demandeur_not_tech )
Il faut que cela soit maintenable et iso avec les autres vues, pour cela il faut:
- Introduire des composants et des classes
- Introduire du i18n
Je te conseille de d’abord faire 1. (sur une vue), puis sur toutes les vues, puis 2. viendra tout seul (si tu supprime les trucs dégueu avec du span qui changent seulement la taille de police)
Pour les composants, on voit qu’il y a de commun:
- Un subheader (qui change de couleur en fonction du type)
- Du texte raw
- Des CtA (2 types, pourquoi d’ailleurs ..? imo faut simplifier)
- Du bloc fond gris
- La liste des scopes
Tu peux ici faire des partials avec yield (ex: https://stackoverflow.com/questions/2951105/rails-render-partial-with-block)
Pour les classes, je t’invite à lire https://documentation.mjml.io/#mj-style
Pour ce qui ne sert pas, liste non exhaustive:
- Les padding 0
- Les data-testid
- Les class
Au passage, les vues que tu as migrés en mjml sont peu lisibles, faudrait espacer/fixer des polices/normaliser (mais avec mjml-style global ça devrait aller mieux tout de suite).
app/views/api_entreprise/authorization_request_mailer/_footer.html.mjml
Outdated
Show resolved
Hide resolved
app/views/api_entreprise/authorization_request_mailer/_footer.html.mjml
Outdated
Show resolved
Hide resolved
app/views/api_entreprise/authorization_request_mailer/_footer.html.mjml
Outdated
Show resolved
Hide resolved
app/views/api_entreprise/authorization_request_mailer/embarquement_demande_refusee.html.mjml
Outdated
Show resolved
Hide resolved
lib/mailer_previews/api_entreprise/authorization_request_mailer_preview.rb
Outdated
Show resolved
Hide resolved
app/views/api_entreprise/authorization_request_mailer/_footer.html.mjml
Outdated
Show resolved
Hide resolved
..._entreprise/authorization_request_mailer/embarquement_valide_to_demandeur_not_tech.html.mjml
Outdated
Show resolved
Hide resolved
spec/mailers/api_entreprise/authorization_request_mailer_spec.rb
Outdated
Show resolved
Hide resolved
@skelz0r OK je pensais qu'on voulait se contenter d'exporter les mails et utiliser tels quels modulo la factorisation des grosses parties communes (header etc) Je reprend du coup pour intégrer en composants plus finement |
Oui c'est ce qu'on veut, mais cela n'empêche pas de rendre ça maintenable: le code on l'écrit une fois on le lit 100 fois. Clairement là chaque itération sera painfull as fuck, on ne veut clairement pas ça (tout du moins moi je ne veux pas ça, no matter what j'ouvre ça je vois que c'est pas DRY je refactor, autant que tu le fasses direct plutôt que de laisser du code comme ça). |
9d2cef7
to
659d46b
Compare
6a74381
to
0657b7c
Compare
Also fixed a dummy test that wasn't testing anything
7a22686
to
03db348
Compare
03db348
to
71940db
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
GG, sacré morceau 😅
J'ai fait des suggestions sur les br
dans les titles (clairement ça va rendre n'importe quoi dans les clients emails. Déjà que c'est pas ouf dans un navigateur 🙄) mais globalement le code est OK pour moi.
L'étape d'après ici c'est de tester des vrais envois pour voir la gueule des emails. là où il faut faire attention:
- Les
br
dans les titles - Les images attachments: je ne suis pas sûr que ça fonctionne.
Si tu fais des tests hésite pas à m'en envoyer btw.
<mj-text> | ||
<h1> | ||
<b> | ||
<% if entity == "editeur" %> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
simple remarque, entity_type
aurait été mieux, entity
on s'attend à un modèle.
Honnêtement ce n'est pas très grave, ça pourra se scout commiter au besoin
app/views/api_entreprise/authorization_request_mailer/_banner_demande_valide.html.mjml
Outdated
Show resolved
Hide resolved
app/views/api_entreprise/authorization_request_mailer/_banner_demande_valide.html.mjml
Outdated
Show resolved
Hide resolved
app/views/api_entreprise/authorization_request_mailer/_block_accelerer_demande.html.mjml
Outdated
Show resolved
Hide resolved
app/views/api_entreprise/authorization_request_mailer/demande_recue.html.mjml
Outdated
Show resolved
Hide resolved
...iews/api_entreprise/authorization_request_mailer/embarquement_brouillon_en_attente.html.mjml
Outdated
Show resolved
Hide resolved
...s/api_entreprise/authorization_request_mailer/embarquement_modifications_demandees.html.mjml
Outdated
Show resolved
Hide resolved
...treprise/authorization_request_mailer/embarquement_relance_modifications_demandees.html.mjml
Outdated
Show resolved
Hide resolved
Et au fait j'ai approved, mais tant qu'un email n'est pas parti de la sandbox il ne faut pas merger imo |
Co-authored-by: Delmaire Loïc <skelz0r@gmail.com>
53a5299
to
f485313
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Franchement bien joué c'est quand même un gros morceaux que tu viens de pondre là.
@skelz0r les font ne fonctionnent pas -_- tu aurais une idée de pourquoi? (les images non plus mais je vais faire des attachments) |
Dans un de mes templates (le principal:
je sais pas si ça marche mais personne ne s'est plaint 🤷 |
J'ai ça aussi dans mon template:
dans le head |
Autre piste: reprend un des templates mailjet et voit comment ils ont fait |
407a903
to
4e0c3ca
Compare
4e0c3ca
to
affd4ed
Compare
fix https://linear.app/pole-api/issue/API-757/permettre-a-dorine-de-pre-visualiser-les-emails
fix https://linear.app/pole-api/issue/API-756/migrer-les-mails-api-entreprise-vers-admin
Review: commit-par-commit
Reste:
A réparer post tests sandbox: