From a70a3386085ee00f6a9ac34e82df0e15f74f449c Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 10 Feb 2026 14:15:34 +0700 Subject: [PATCH] feat: Use execute in parallel for faster request time --- .../labels/data/network/label_api.dart | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/lib/features/labels/data/network/label_api.dart b/lib/features/labels/data/network/label_api.dart index 085435652..7bb304431 100644 --- a/lib/features/labels/data/network/label_api.dart +++ b/lib/features/labels/data/network/label_api.dart @@ -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 createdIds = changesResult.created.toList(); - final List updatedIds = changesResult.updated.toList(); - List 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}'); + final [updatedResult, createdResult] = await Future.wait([ + _fetchLabelsIfNeeded( + session: session, + accountId: accountId, + labelIds: changes.updated.toList(), + sinceState: sinceState, + logPrefix: 'Updated', + ), + _fetchLabelsIfNeeded( + session: session, + accountId: accountId, + labelIds: changes.created.toList(), + sinceState: sinceState, + logPrefix: 'Created', + ) + ]); - State? newStateLabel; + final allDestroyedIds = [ + ...changes.destroyed, + ...updatedResult.notFoundIds, + ...createdResult.notFoundIds, + ]; - final updatedResult = await _fetchLabelsIfNeeded( - session: session, - accountId: accountId, - labelIds: updatedIds, - sinceState: sinceState, - logPrefix: 'Updated', - ); - if (updatedResult.notFoundIds.isNotEmpty) { - destroyedLabelIds.addAll(updatedResult.notFoundIds); - } - newStateLabel = updatedResult.state ?? newStateLabel; + final newStateLabel = createdResult.state ?? updatedResult.state; - final createdResult = await _fetchLabelsIfNeeded( - session: session, - accountId: accountId, - labelIds: createdIds, - 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'); + 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, ); } }