-
Notifications
You must be signed in to change notification settings - Fork 51
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
Active post modes #560
Active post modes #560
Conversation
src/pages/home/components/Sidebar/components/SocialAccordion/SocialAccordion.tsx
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.
Amassou Nico, parabéns!!!
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.
Amassou Nico, parabéns!!!
if (accounts.length > 0) { | ||
const initialTabId = accounts.length > 0 ? makeId(accounts[0]) : ''; | ||
setCurrentTab(initialTabId as TabId); |
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.
Se há o if para cair no initialTabId, o accounts.length > 0 vai ser sempre true, não há necessidade de fazer a mesma verificação dentro do if
if (accounts.length > 0) { | |
const initialTabId = accounts.length > 0 ? makeId(accounts[0]) : ''; | |
setCurrentTab(initialTabId as TabId); | |
if (accounts.length > 0) { | |
const initialTabId = makeId(accounts[0]); | |
setCurrentTab(initialTabId); |
setTabs(accountsToTabs(accounts, socialMedias)); | ||
} else { | ||
setTabs({}); | ||
setCurrentTab('' as unknown as TabId); |
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.
Necessário esse unknown? Por que?
setCurrentTab('' as unknown as TabId); | |
setCurrentTab('' as TabId); |
setTabs({}); | ||
setCurrentTab('' as unknown as TabId); | ||
} | ||
}, [accounts, socialMedias]); |
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.
O socialMedias precisa ficar nas dependências do useEffect? O tab não tem que ser setado apenas quando accounts mudar, que é na troca do activateSocialTab?
onChangePostMode={changePostMode} | ||
/> | ||
<MainComposerBase | ||
accountId={tabs[currentTab].account.id.toString()} | ||
onChange={handleContentChange} | ||
postMode={currentPostMode} | ||
postMode={currentPostMode ?? undefined} |
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.
Aqui já vai ser retornado PostMode ou undefined
postMode={currentPostMode ?? undefined} | |
postMode={currentPostMode} |
tabs[currentTab].posts[tabs[currentTab].postModeOnView]?.text ?? | ||
'' |
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.
Seria desejável colocar tabs[currentTab].posts[tabs[currentTab].postModeOnView]?.text ??
em uma variável e trocar os locais onde é chamada, seria uma sugestão, algo como:
tabs[currentTab].posts[tabs[currentTab].postModeOnView]?.text ?? | |
'' | |
postModeOnViewText ?? '' |
(reveja o nome da variável)
src/pages/home/components/Sidebar/components/SocialAccordion/SocialAccordion.tsx
Outdated
Show resolved
Hide resolved
Precisa corrigir os problemas das actions |
Coverage Report
File Coverage
|
Pull Request
Closes #502
Feature
Nesse PR criamos o componente define uma store global para gerenciar o estado das contas de redes sociais utilizando a biblioteca **Zustand**Ele permite adicionar e remover contas, mantendo a lista de contas atualizada de forma reativa.
Funcionalidades Principais:
Definição de Tipos:
AccountPost: Tipo que representa uma conta simplificada, contendo apenas os campos id, socialMediaId e userName.
StoreState: Tipo que define a estrutura da store, incluindo uma lista de contas e funções para adicionar e remover contas.
Criação da Store:
A store é criada usando a função create do Zustand, que inicializa um estado com uma lista de contas vazia e define as funções para manipulação desse estado.
Funções da Store:
addAccount: Adiciona uma nova conta à lista de contas.
Cada conta é representada por seu id, socialMediaId e userName.
removeAccount: Remove uma conta da lista de contas com base no id da conta.
Bugfix
Alteramos a lógica de preenchimento das abas de redes sociais no componente Tabber, que antes utilizava uma mock-API, para consumir dados de um estado global gerenciado com Zustand. Corrigimos várias incompatibilidades e garantimos que as abas refletem corretamente o estado dos switches das contas de redes sociais na sidebar.
Precisamos corrigir algumas incompatibilidades para a migracao da fonte dos dados:
As incompatibilidades surgiram devido à transição do uso de uma mock-API para um estado global.
Antes, as contas eram carregadas e exibidas diretamente a partir de dados mockados, sem integração real com os switches na sidebar.
Changelog
- Substituição da lógica de preenchimento de abas de redes sociais do componente `Tabber` para consumir dados do estado global gerenciado pelo Zustand. - Correção de incompatibilidades de tipo entre `AccountPost` e `Account`. - Adição de verificações de segurança para assegurar a correta manipulação de estados e dados. - Implementação de lógica para remover a última aba corretamente ao desativar a última conta.Visual evidences 🖼️
Checklist
Issue linked Build working correctly Tests createdAdditional info
Estado Global: O Zustand agora gerencia o estado das contas de redes sociais ativas, refletindo diretamente os switches na sidebar. Verificação de Tipos: Melhoramos a verificação de tipos em várias partes do código para garantir que os dados são manipulados corretamente. Melhorias na Interface: As abas agora reagem dinamicamente às mudanças nos switches, proporcionando uma melhor experiência do usuário e uma interface mais consistente.