feat: Use execute in parallel for faster request time

This commit is contained in:
dab246
2026-02-10 14:15:34 +07:00
committed by Dat H. Pham
parent add55a9d55
commit a70a338608
+31 -31
View File
@@ -208,53 +208,53 @@ class LabelApi
AccountId accountId,
State sinceState,
) async {
final changesResult = await getLabelChanges(accountId, sinceState);
final changes = await getLabelChanges(accountId, sinceState);
final List<Id> createdIds = changesResult.created.toList();
final List<Id> updatedIds = changesResult.updated.toList();
List<Id> destroyedLabelIds = changesResult.destroyed.toList();
final State newStateChanges = changesResult.newState;
final bool hasMoreChanges = changesResult.hasMoreChanges;
log('LabelAPI::getChanges: '
'created=${changes.created.length} | '
'updated=${changes.updated.length} | '
'destroyed=${changes.destroyed.length}');
log('LabelAPI::getChanges:createdIds = ${createdIds.length} | updatedIds = ${updatedIds.length} | destroyedIds = ${destroyedLabelIds.length}');
State? newStateLabel;
final updatedResult = await _fetchLabelsIfNeeded(
final [updatedResult, createdResult] = await Future.wait([
_fetchLabelsIfNeeded(
session: session,
accountId: accountId,
labelIds: updatedIds,
labelIds: changes.updated.toList(),
sinceState: sinceState,
logPrefix: 'Updated',
);
if (updatedResult.notFoundIds.isNotEmpty) {
destroyedLabelIds.addAll(updatedResult.notFoundIds);
}
newStateLabel = updatedResult.state ?? newStateLabel;
final createdResult = await _fetchLabelsIfNeeded(
),
_fetchLabelsIfNeeded(
session: session,
accountId: accountId,
labelIds: createdIds,
labelIds: changes.created.toList(),
sinceState: sinceState,
logPrefix: 'Created',
);
if (createdResult.notFoundIds.isNotEmpty) {
destroyedLabelIds.addAll(createdResult.notFoundIds);
}
newStateLabel = createdResult.state ?? newStateLabel;
)
]);
log('LabelAPI::getChanges:newStateChanges = $newStateChanges | newStateLabel = $newStateLabel | hasMoreChanges = $hasMoreChanges');
log('LabelAPI::getChanges:updatedLabelSize = ${updatedResult.labels?.length} | createdLabelSize = ${createdResult.labels?.length}');
log('LabelAPI::getChanges:destroyedLabelIds = $destroyedLabelIds');
final allDestroyedIds = [
...changes.destroyed,
...updatedResult.notFoundIds,
...createdResult.notFoundIds,
];
final newStateLabel = createdResult.state ?? updatedResult.state;
log('LabelAPI::getChanges: '
'newStateChanges=${changes.newState} | '
'newStateLabel=$newStateLabel | '
'hasMore=${changes.hasMoreChanges}'
'updatedFetched=${updatedResult.labels?.length} | '
'createdFetched=${createdResult.labels?.length} | '
'totalDestroyed=${allDestroyedIds.length}');
return LabelChangeResponse(
updated: updatedResult.labels,
created: createdResult.labels,
destroyed: destroyedLabelIds,
destroyed: allDestroyedIds,
newStateLabel: newStateLabel,
newStateChanges: newStateChanges,
hasMoreChanges: hasMoreChanges,
newStateChanges: changes.newState,
hasMoreChanges: changes.hasMoreChanges,
);
}
}