Groups: Force a fetch right now if our update runs into a conflict
This commit is contained in:
parent
7ce89414bf
commit
35625f4200
2 changed files with 11 additions and 4 deletions
10
ts/groups.ts
10
ts/groups.ts
|
@ -1368,13 +1368,13 @@ export async function modifyGroupV2({
|
||||||
);
|
);
|
||||||
|
|
||||||
// eslint-disable-next-line no-await-in-loop
|
// eslint-disable-next-line no-await-in-loop
|
||||||
await conversation.fetchLatestGroupV2Data();
|
await conversation.fetchLatestGroupV2Data({ force: true });
|
||||||
} else if (error.code === 409) {
|
} else if (error.code === 409) {
|
||||||
window.log.error(
|
window.log.error(
|
||||||
`modifyGroupV2/${idLog}: Conflict while updating. Timed out; not retrying.`
|
`modifyGroupV2/${idLog}: Conflict while updating. Timed out; not retrying.`
|
||||||
);
|
);
|
||||||
// We don't wait here because we're breaking out of the loop immediately.
|
// We don't wait here because we're breaking out of the loop immediately.
|
||||||
conversation.fetchLatestGroupV2Data();
|
conversation.fetchLatestGroupV2Data({ force: true });
|
||||||
throw error;
|
throw error;
|
||||||
} else {
|
} else {
|
||||||
const errorString = error && error.stack ? error.stack : error;
|
const errorString = error && error.stack ? error.stack : error;
|
||||||
|
@ -2720,6 +2720,7 @@ type MaybeUpdatePropsType = {
|
||||||
receivedAt?: number;
|
receivedAt?: number;
|
||||||
sentAt?: number;
|
sentAt?: number;
|
||||||
dropInitialJoinMessage?: boolean;
|
dropInitialJoinMessage?: boolean;
|
||||||
|
force?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
const FIVE_MINUTES = 1000 * 60 * 5;
|
const FIVE_MINUTES = 1000 * 60 * 5;
|
||||||
|
@ -2742,7 +2743,10 @@ export async function waitThenMaybeUpdateGroup(
|
||||||
|
|
||||||
// Then make sure we haven't fetched this group too recently
|
// Then make sure we haven't fetched this group too recently
|
||||||
const { lastSuccessfulGroupFetch = 0 } = conversation;
|
const { lastSuccessfulGroupFetch = 0 } = conversation;
|
||||||
if (isMoreRecentThan(lastSuccessfulGroupFetch, FIVE_MINUTES)) {
|
if (
|
||||||
|
!options.force &&
|
||||||
|
isMoreRecentThan(lastSuccessfulGroupFetch, FIVE_MINUTES)
|
||||||
|
) {
|
||||||
const waitTime = lastSuccessfulGroupFetch + FIVE_MINUTES - Date.now();
|
const waitTime = lastSuccessfulGroupFetch + FIVE_MINUTES - Date.now();
|
||||||
window.log.info(
|
window.log.info(
|
||||||
`waitThenMaybeUpdateGroup/${conversation.idForLogging()}: group update ` +
|
`waitThenMaybeUpdateGroup/${conversation.idForLogging()}: group update ` +
|
||||||
|
|
|
@ -1008,12 +1008,15 @@ export class ConversationModel extends window.Backbone
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fetchLatestGroupV2Data(): Promise<void> {
|
async fetchLatestGroupV2Data(
|
||||||
|
options: { force?: boolean } = {}
|
||||||
|
): Promise<void> {
|
||||||
if (!isGroupV2(this.attributes)) {
|
if (!isGroupV2(this.attributes)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await window.Signal.Groups.waitThenMaybeUpdateGroup({
|
await window.Signal.Groups.waitThenMaybeUpdateGroup({
|
||||||
|
force: options.force,
|
||||||
conversation: this,
|
conversation: this,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue