handle context init

This commit is contained in:
Roland Osborne 2022-04-25 15:06:00 -07:00
parent aa85bede1f
commit f69c0d1d35
7 changed files with 20 additions and 12 deletions

View File

@ -4,6 +4,7 @@ import { getAccountStatus } from '../Api/getAccountStatus';
export function useAccountContext() {
const [state, setState] = useState({
init: false,
status: null,
});
const access = useRef(null);
@ -18,7 +19,7 @@ export function useAccountContext() {
if (next.current == null) {
if (revision.current != rev) {
let status = await getAccountStatus(access.current);
updateState({ status });
updateState({ init: true, status });
revision.current = rev;
}
if (next.current != null) {

View File

@ -20,6 +20,7 @@ import { removeCard } from '../Api/removeCard';
export function useCardContext() {
const [state, setState] = useState({
init: false,
cards: new Map(),
});
const access = useRef(null);
@ -86,14 +87,11 @@ export function useCardContext() {
}
if (cur.data.notifiedChannel != card.data.notifiedChannel) {
// update remote channels
console.log("UPDATE CHANNEL: ", cur.data.notifiedChannel, card.data.notifiedChannel);
await updateContactChannels(card.id, cur.data.cardProfile.guid, cur.data.cardDetail.token, cur.data.notifiedView, cur.data.notifiedChannel, cur.channels);
cur.data.notifiedChannel = card.data.notifiedChannel;
}
}
cur.revision = card.revision;
console.log("SAVE:", cur.data.notifiedChannel);
cards.current.set(card.id, cur);
}
else {
@ -103,8 +101,6 @@ console.log("SAVE:", cur.data.notifiedChannel);
}
const updateContactChannels = async (cardId, guid, token, viewRevision, channelRevision, channelMap) => {
console.log("UPDATE CONTACT CHANNELS: ", viewRevision, channelRevision);
let delta = await getContactChannels(guid + "." + token, viewRevision, channelRevision);
for (let channel of delta) {
if (channel.data) {
@ -142,7 +138,7 @@ console.log("UPDATE CONTACT CHANNELS: ", viewRevision, channelRevision);
next.current = rev;
if (revision.current != rev) {
await updateCards();
updateState({ cards: cards.current });
updateState({ init: true, cards: cards.current });
revision.current = rev;
}
let r = next.current;

View File

@ -8,6 +8,7 @@ import { getChannelTopic } from '../Api/getChannelTopic';
export function useChannelContext() {
const [state, setState] = useState({
init: false,
channels: new Map(),
});
const access = useRef(null);
@ -53,7 +54,7 @@ export function useChannelContext() {
next.current = rev;
if (revision.current != rev) {
await updateChannels();
updateState({ channels: channels.current });
updateState({ init: true, channels: channels.current });
revision.current = rev;
}
let r = next.current;

View File

@ -3,6 +3,7 @@ import { getGroups } from '../Api/getGroups';
export function useGroupContext() {
const [state, setState] = useState({
init: false,
groups: new Map(),
});
const access = useRef(null);
@ -30,7 +31,7 @@ export function useGroupContext() {
if (next.current == null) {
if (revision.current != rev) {
await updateGroups();
updateState({ groups: groups.current });
updateState({ init: true, groups: groups.current });
revision.current = rev;
}
if (next.current != null) {

View File

@ -6,6 +6,7 @@ import { getProfileImageUrl } from '../Api/getProfileImageUrl';
export function useProfileContext() {
const [state, setState] = useState({
init: false,
profile: {},
});
const access = useRef(null);
@ -20,7 +21,7 @@ export function useProfileContext() {
if (next.current == null) {
if (revision.current != rev) {
let profile = await getProfile(access.current);
updateState({ profile });
updateState({ init: true, profile });
revision.current = rev;
}
if (next.current != null) {

View File

@ -148,7 +148,7 @@ export function useContact() {
},
};
useEffect(() => {
const updateContact = () => {
let contact = card.actions.getCardByGuid(guid);
if (contact) {
let profile = contact.data.cardProfile;
@ -201,6 +201,12 @@ export function useContact() {
updateState({ status: 'unsaved' });
updateState({ showButtons: { save: true, saveRequest: true }});
}
}
useEffect(() => {
if (card.state.init) {
updateContact();
}
}, [card, guid])
return { state, actions };

View File

@ -101,7 +101,9 @@ export function useConversation() {
}
useEffect(() => {
updateConversation();
if (card.state.init && channel.state.init) {
updateConversation();
}
}, [card, channel]);
return { state, actions };