Collapse filing sync notifications into one batch surface
This commit is contained in:
@@ -129,6 +129,27 @@ export async function enqueueTask(input: EnqueueTaskInput) {
|
||||
}
|
||||
}
|
||||
|
||||
export async function findOrEnqueueTask(input: EnqueueTaskInput) {
|
||||
if (!input.resourceKey) {
|
||||
return await enqueueTask(input);
|
||||
}
|
||||
|
||||
const existingTask = await findInFlightTaskByResourceKey(
|
||||
input.userId,
|
||||
input.taskType,
|
||||
input.resourceKey
|
||||
);
|
||||
|
||||
if (existingTask) {
|
||||
const reconciledTask = await reconcileTaskWithWorkflow(existingTask);
|
||||
if (reconciledTask.status === 'queued' || reconciledTask.status === 'running') {
|
||||
return reconciledTask;
|
||||
}
|
||||
}
|
||||
|
||||
return await enqueueTask(input);
|
||||
}
|
||||
|
||||
export async function findInFlightTask(userId: string, taskType: TaskType, resourceKey: string) {
|
||||
const task = await findInFlightTaskByResourceKey(userId, taskType, resourceKey);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user