fix: make the UI more responsive to GroupInvite retries

pull/3052/head
Audric Ackermann 1 year ago
parent d2af48f6fc
commit 95cd940948

@ -51,7 +51,18 @@ async function addJob({ groupPk, member }: JobExtraArgs) {
nextAttemptTimestamp: Date.now(), nextAttemptTimestamp: Date.now(),
}); });
window.log.debug(`addGroupInviteJob: adding group invite for ${groupPk}:${member} `); window.log.debug(`addGroupInviteJob: adding group invite for ${groupPk}:${member} `);
try {
updateFailedStateForMember(groupPk, member, false);
// we have to reset the error state so that the UI shows "sending" even if the last try failed.
await MetaGroupWrapperActions.memberSetInvited(groupPk, member, false);
} catch (e) {
window.log.warn('GroupInviteJob memberSetInvited (before) failed with', e.message);
}
window?.inboxStore?.dispatch(groupInfoActions.refreshGroupDetailsFromWrapper({ groupPk }));
await runners.groupInviteJobRunner.addJob(groupInviteJob); await runners.groupInviteJobRunner.addJob(groupInviteJob);
window?.inboxStore?.dispatch( window?.inboxStore?.dispatch(
groupInfoActions.setInvitePending({ groupPk, pubkey: member, sending: true }) groupInfoActions.setInvitePending({ groupPk, pubkey: member, sending: true })
); );
@ -154,17 +165,19 @@ class GroupInviteJob extends PersistedJob<GroupInvitePersistedData> {
if (storedAt !== null) { if (storedAt !== null) {
failed = false; failed = false;
} }
} finally { } catch (e) {
window?.inboxStore?.dispatch( window.log.warn(
groupInfoActions.setInvitePending({ groupPk, pubkey: member, sending: false }) `${jobType} with groupPk:"${groupPk}" member: ${member} id:"${identifier}" failed with ${e.message}`
); );
} finally {
updateFailedStateForMember(groupPk, member, failed);
try { try {
await MetaGroupWrapperActions.memberSetInvited(groupPk, member, failed); await MetaGroupWrapperActions.memberSetInvited(groupPk, member, failed);
} catch (e) { } catch (e) {
window.log.warn('GroupInviteJob memberSetInvited failed with', e.message); window.log.warn('GroupInviteJob memberSetInvited failed with', e.message);
} }
updateFailedStateForMember(groupPk, member, failed);
window?.inboxStore?.dispatch(groupInfoActions.refreshGroupDetailsFromWrapper({ groupPk }));
} }
// return true so this job is marked as a success and we don't need to retry it // return true so this job is marked as a success and we don't need to retry it
return RunJobResult.Success; return RunJobResult.Success;

Loading…
Cancel
Save