fix some rendering flicker on conversation titile

This commit is contained in:
Roland Osborne 2023-02-02 14:31:04 -08:00
parent e054496827
commit 498413642a
8 changed files with 28 additions and 20 deletions

View File

@ -161,7 +161,6 @@ test('testing', async () => {
});
const renderCount = screen.getByTestId('profile').props.renderCount;
console.log("RENDER COUNT:", renderCount);
await act(async () => {
identity = { name: 'renderer' };
@ -169,8 +168,6 @@ console.log("RENDER COUNT:", renderCount);
await profile.actions.setRevision(2048);
});
console.log(renderCount);
await act(async () => {
expect(screen.getByTestId('profile').props.renderCount).toBe(renderCount + 1);
});

View File

@ -1,4 +1,4 @@
import { Input, List } from 'antd';
import { Input, List, Button } from 'antd';
import { CardsWrapper } from './Cards.styled';
import { SortAscendingOutlined, UpOutlined, DoubleRightOutlined, UserOutlined, SearchOutlined } from '@ant-design/icons';
import { useCards } from './useCards.hook';
@ -27,10 +27,7 @@ export function Cards({ closeCards, openContact, openListing }) {
</div>
{ state.display === 'small' && (
<div className="inline">
<div className="add" onClick={openListing}>
<UserOutlined />
<div className="label">New</div>
</div>
<Button type="primary" icon={<UserOutlined />} onClick={openListing}>Add</Button>
</div>
)}
{ state.display !== 'small' && (

View File

@ -10,7 +10,7 @@ export function useCards() {
const [state, setState] = useState({
tooltip: false,
sorted: false,
display: null,
display: 'small',
cards: [],
});
@ -22,6 +22,11 @@ export function useCards() {
setState((s) => ({ ...s, ...value }));
}
useEffect(() => {
const { display } = viewport.state;
updateState({ display });
}, [viewport.state]);
useEffect(() => {
const contacts = Array.from(card.state.cards.values()).map(item => {
const profile = item?.data?.cardProfile;

View File

@ -3,6 +3,7 @@ import { ChannelHeaderWrapper, StatusError } from './ChannelHeader.styled';
import { ExclamationCircleOutlined, SettingOutlined, CloseOutlined } from '@ant-design/icons';
import { Tooltip } from 'antd';
import { Logo } from 'logo/Logo';
import { useEffect } from 'react';
export function ChannelHeader({ closeConversation, openDetails, contentKey }) {

View File

@ -99,9 +99,14 @@ export function useChannelHeader(contentKey) {
let title;
try {
const detail = channelValue?.data?.channelDetail;
if (detail?.dataType === 'sealed' && contentKey) {
const unsealed = decryptChannelSubject(detail.data, contentKey);
title = unsealed.subject;
if (detail?.dataType === 'sealed') {
if (contentKey) {
const unsealed = decryptChannelSubject(detail.data, contentKey);
title = unsealed.subject;
}
else {
title = '...';
}
}
else if (detail?.dataType === 'superbasic') {
const data = JSON.parse(detail.data);

View File

@ -51,7 +51,7 @@ export function useConversation(cardId, channelId) {
const seals = getChannelSeals(data);
if (isUnsealed(seals, sealKey)) {
const contentKey = getContentKey(seals, sealKey);
updateState({ sealed: true, contentKey });
updateState({ sealed: true, wtf: true, contentKey });
}
else {
updateState({ sealed: true, contentKey: null });
@ -105,7 +105,6 @@ export function useConversation(cardId, channelId) {
const { card, channel } = conversationId.current;
loading.current = true;
conversationId.current = null;
updateState({ contentKey: null });
await conversation.actions.setChannel(card, channel);
loading.current = false;
await setChannel();
@ -258,7 +257,6 @@ export function useConversation(cardId, channelId) {
updateTopic: async (topic, text) => {
const { assets, textSize, textColor } = topic;
const message = { text, textSize, textColor, assets };
console.log("UPDATE", message);
if (!state.busy) {
updateState({ busy: true });

View File

@ -129,7 +129,7 @@ export function Details({ closeDetails, closeConversation, openContact }) {
<DetailsWrapper>
{ modalContext }
<div class="header">
<div class="label">Topic</div>
<div class="label">Topic Details</div>
{ state.display === 'xlarge' && (
<div class="dismiss" onClick={closeConversation}>
<DoubleRightOutlined />

View File

@ -25,7 +25,7 @@ export function useDetails() {
showEditSubject: false,
editSubject: null,
display: null,
display: 'small',
sealed: false,
contentKey: null,
seals: null,
@ -167,9 +167,14 @@ export function useDetails() {
let title;
try {
const detail = channelValue?.data?.channelDetail;
if (detail?.dataType === 'sealed' && state.contentKey) {
const unsealed = decryptChannelSubject(detail.data, state.contentKey);
title = unsealed.subject;
if (detail?.dataType === 'sealed') {
if (state.contentKey) {
const unsealed = decryptChannelSubject(detail.data, state.contentKey);
title = unsealed.subject;
}
else {
title = '...';
}
}
else if (detail?.dataType === 'superbasic') {
const data = JSON.parse(detail.data);