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

Refactor: Migra QuizStartPage de dialog para página #397

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

pedrox-hs
Copy link
Member

@pedrox-hs pedrox-hs commented Jan 19, 2025

Contexto do funcionamento

O Quiz é utilizado no processo de Onboarding e no Manual de Fuga, a implementação padrão do Quiz recebe por parâmetros os dados necessários para exibir o conteúdo inicial para permitir a primeira interação da usuária sem precisar fazer uma requisição na própria página.

No Manual de Fuga temos ele em dois casos:

  1. para iniciar ou continuar o preenchimento questionário do manual (botão maior abaixo da introdução da página), na resposta da API do Manual de Fuga já são incluidos os dados necessários para navegar para a implementação padrão do Quiz semelhante ao que é feito no Onboarding;
  2. e, para complementar alguma informação que pode ser respondido separadamente do fluxo acima após o manual já ter sido iniciado (botões dentro dos blocos, exemplo "Revisar Transporte"), onde nesse caso a API não provê os dados iniciais para o quiz (se não me engano por não poder ter mais de um quiz ativo por usuário), necessitando fazer uma requisição antes de acessar o quiz de fato para iniciá-lo e nisso receber os dados iniciais.

Por conta da particularidade citada no segundo ponto e considerando o desacoplamento e dinamismo que seria interessante para o Manual, foi criada uma rota encarregada de fazer essa requisição e utilizar seu retorno para inicializar a página padrão do quiz, dessa maneira o Manual não precisa se preocupar e "conhecer" como essa chamada é feita e não impactaria em nada a implementação existente, não necessitando de mais regras para atender esse caso isolado.

Com isso, quando um bloco precisa exibir algum botão que leva para uma outra tela, a rota da navegação pode ser usada não importando qual o destino desde que suportado pelo app.

Atual

Atualmente, por conta da simplicidade da regra e pensando também na experiência de usuário (para evitar que o usuário perceba que duas navegações foram feitas apenas com um clique) essa rota para inicializar o quiz foi implementada como dialog, fazendo o proveito de um recurso semelhante ao que o Flutter trás nativamente e o Modular permitia isso em suas versões mais antigas.

Sucesso Erro
quiz-start-page_actual_success quiz-start-page_actual_error-handling

Proposta

Devido a necessidade de atualizar as dependencias do projeto e das mudanças feitas em versões mais recentes do Modular, a abordagem aplicada para atender a essa necessidade citada acima não é mais suportada e impedia a atualização da lib, como solução rápida, na proposta desse PR essa página deixa de ser representada como dialog mas sim como uma página completa (precisando navegar duas vezes com apenas uma ação).

Sucesso Erro
quiz-start-page_after-changes_success quiz-start-page_after-changes_error-handling

fixes #348

@pedrox-hs pedrox-hs marked this pull request as ready for review January 21, 2025 02:37
@pedrox-hs pedrox-hs requested a review from a team as a code owner January 21, 2025 02:37
Copy link

codeclimate bot commented Jan 21, 2025

Code Climate has analyzed commit 8a04a10 and detected 0 issues on this pull request.

View more on Code Climate.

@pedrox-hs pedrox-hs added the refactor Envolve melhorias no código, como substituir o componentes obsoletos label Jan 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
refactor Envolve melhorias no código, como substituir o componentes obsoletos
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Substituir ModularState por State na classe QuizStartPage
2 participants