Skip to content
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

feat(snippets): confirm before discussing #721

Merged
merged 9 commits into from
Dec 11, 2024

Conversation

wJoenn
Copy link
Collaborator

@wJoenn wJoenn commented Dec 3, 2024

Summary of changes and context

Le goal de cette PR est d'afficher une alerte JavaScript avant de creer un thread slack pour eviter que les users des snippets concerné soient tag pour qu'ensuite personne ne demande rien.
Je suis partit du principe que cela arrivait a cause d'un manque de comprehension de ce que le bouton ferait.

Mon idée etait donc que, dans le cas ou le thread n'existe pas encore, un confirm dialog apparaitrait donnant plus de contexte au user qu'il devra ensuite confirmer pour que le thread soit creer dans Slack. Une fois confirmé une nouvelle page s'ouvre et cette page redirige vers Slack comme actuellement.

Si le thread existe deja alors aucune confirmation n'est requise et le user est directement redirigé vers slack

image

Ma premiere approche etait d'utiliser turbo_confirm sur le bouton pour afficher le message mais j'ai decouvert qu'il n'etait pas possible d'associer target: :_blank et data-turbo-confirm sur un meme form du coup pour que turbo_confirm fonctionne il aurait fallut qu'on redirige depuis la meme page ce qui serait une regression par rapport a la UX actuelle

La deuxieme solution etait de creer un controller Stimulus pour gerer le confirm et le submit par nous meme. C'est ce que j'ai fais Ca aurait été le 3ème controller utilisé dans box_component et seulement a cet endroit donc j'ai decidé de refactoré le JS:ReactionsController et le JS:ShowMoreController en uyn unique JS:SnippetsController et d'ajouter une nouvelle methode handleDiscuss dedans.

Sanity checks

  • Linters pass
  • Tests pass
  • Related GitHub issues are linked in the description
  • Merge conflicts are resolved

@wJoenn wJoenn requested a review from Aquaj December 3, 2024 21:19
app/javascript/controllers/snippets_controller.js Outdated Show resolved Hide resolved
Copy link
Collaborator

@Aquaj Aquaj Dec 4, 2024

Choose a reason for hiding this comment

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

Je suis pas fan d'avoir fusionné les controllers.
Pour la facilité de maintenabilité et de compréhension, la philosophie des controllers Stimulus est plutôt d'encapsuler un comportement par controller (ou quelques comportements étroitement liés). Ici on est en train de faire devenir ça un controller plus proche d'un composant à la React, qui pilote toutes les interactions d'un élément graphique spécifique. On sort du cadre prévu de l'outil et j'ai peur qu'on finisse par se battre contre Stimulus.

Pas atroce mais juste mon gut feeling à la lecture 🙂

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

En l'occurence sans les mergé on se retrouverait avec 3 controller different utilisé sur le meme element html et qui ont fonctionnalité propre a ce seul element donc je trouvais que ca faisait plus de sens de tout mettre ensemble.
Je vais les reseparer du coup

@wJoenn wJoenn force-pushed the feat/snippets/confirm-before-discussing branch 5 times, most recently from 35e70c0 to a96e5a6 Compare December 7, 2024 16:49
@wJoenn wJoenn force-pushed the feat/snippets/confirm-before-discussing branch from a96e5a6 to 8f8aa4c Compare December 7, 2024 16:50
@pil0u
Copy link
Owner

pil0u commented Dec 8, 2024

J'ai pas testé en local, mais le code me paraît plus respectueux du Single Responsibility Principle 👍

@Aquaj si c'est bon pour toi c'est bon pour moi !

@Aquaj Aquaj merged commit 04fc954 into main Dec 11, 2024
5 checks passed
@Aquaj Aquaj deleted the feat/snippets/confirm-before-discussing branch December 11, 2024 21:06
Aquaj added a commit that referenced this pull request Dec 11, 2024
* refactor(snippets): js:ReactionController -> SnippetsController

* feat(snippets): add handleDiscuss to js:SnippetsController

* feat(snippets): require slack_linked? to discuss

* refactor(snippets): move JS:ShowMoreController to JS:SnippetsController

* fix: linter

* refactor(js): externalise expandable logic from JS:snippetsController

* refactore(js): externalise confirm ogic from js:SnippetsController

* refactor(js): rename js:SnippetsController -> ReactionsController

* refactor: undo useless changes

Co-authored-by: Louis Ramos <75388869+wJoenn@users.noreply.github.com>
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.

3 participants