-
Notifications
You must be signed in to change notification settings - Fork 0
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/add snackbars #62
Conversation
WalkthroughAs parte das mudanças, o arquivo Changes
Possibly related issues
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
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.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (6)
src/domain/enums/snackbar.enum.ts (2)
1-3
: Considere um nome mais específico para o enumO nome atual
snackbarMessage
é muito genérico. Como este enum está sendo usado especificamente para mensagens de erro, sugiro renomear para algo mais específico comoSnackbarErrorMessages
ouToastErrorMessages
.Sugestão de refatoração:
-export enum snackbarMessage { +export enum SnackbarErrorMessages { SUGGEST_MOVIE_ERROR = "Ocorreu um erro na consulta. Tente novamente.", }
1-3
: Considere estruturar o enum para diferentes tipos de mensagensPara melhor organização e escalabilidade, sugiro estruturar o enum para acomodar diferentes tipos de mensagens (erro, sucesso, aviso, etc.).
Exemplo de estruturação:
export enum SnackbarMessages { // Mensagens de Erro ERROR_SUGGEST_MOVIE = "Ocorreu um erro na consulta. Tente novamente.", // Mensagens de Sucesso SUCCESS_SUGGEST_MOVIE = "Sugestão de filme obtida com sucesso!", // Mensagens de Aviso WARNING_SUGGEST_MOVIE = "Atenção: Esta funcionalidade está em fase beta.", }src/pages/_app.tsx (2)
7-12
: Considere personalizar as configurações do ToastContainerA implementação está correta, porém seria interessante configurar as propriedades do ToastContainer para melhor adequação ao design do projeto.
Sugestão de implementação com configurações personalizadas:
- <ToastContainer /> + <ToastContainer + position="top-right" + autoClose={3000} + hideProgressBar={false} + closeOnClick + pauseOnHover + draggable + theme="light" + />
7-12
: Boa escolha arquitetural!A implementação do ToastContainer no componente App garante que as notificações estarão disponíveis globalmente na aplicação, seguindo as melhores práticas do React para elementos de UI globais.
package.json (1)
26-27
: Aprovado com sugestão de melhoria na gestão de versões!As alterações estão corretas e alinhadas com o objetivo de adicionar snackbars usando react-toastify. No entanto, para garantir maior consistência e previsibilidade nas builds, considere fixar as versões exatas das dependências removendo o caractere
^
. Isso evita atualizações automáticas que podem introduzir incompatibilidades.- "react-dom": "^18", - "react-toastify": "^10.0.6" + "react-dom": "18.2.0", + "react-toastify": "10.0.6"src/pages/index.tsx (1)
72-80
: Sugestões de melhorias no tratamento de errosO tratamento de erros pode ser aprimorado das seguintes formas:
- Tipagem do erro no bloco catch
- Mensagens de erro mais específicas baseadas no tipo do erro
- Prevenção de múltiplos cliques durante o carregamento
Considere aplicar estas melhorias:
try { const result = await makeGetMovieSuggestionUsecase().exec(listMovies); setSuggestedMovie(new MovieEntity(result)); -} catch (e) { +} catch (error: unknown) { + if (error instanceof Error) { + toast.error(error.message || snackbarMessage.SUGGEST_MOVIE_ERROR); + } else { toast.error(snackbarMessage.SUGGEST_MOVIE_ERROR); + } } finally { setLoading(false); }Além disso, para prevenir múltiplos cliques durante o carregamento, você pode desabilitar o botão:
<Button icon={<Puzzle />} onClick={handleGetSuggestMovie} fullWidth - disabled={selectedMovies.length === 0} + disabled={selectedMovies.length === 0 || loading} >
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
📒 Files selected for processing (4)
package.json
(1 hunks)src/domain/enums/snackbar.enum.ts
(1 hunks)src/pages/_app.tsx
(1 hunks)src/pages/index.tsx
(2 hunks)
🔇 Additional comments (3)
src/pages/_app.tsx (2)
2-2
: Importação do CSS do react-toastify está correta!
A importação do arquivo CSS está posicionada adequadamente junto com outros imports de estilo.
4-4
: Importação do componente ToastContainer está correta!
A importação do componente está bem estruturada e segue o padrão de importações do projeto.
src/pages/index.tsx (1)
26-27
: Importações adequadas para o sistema de notificações!
As importações necessárias para o sistema de notificações foram adicionadas corretamente.
Summary by CodeRabbit
Novos Recursos
react-toastify
para notificações em toast.Melhorias
Correções de Bugs