@@ -19,36 +19,39 @@ final class DevToolsBloc extends Bloc<DevToolsEvent, DevToolsState>
1919 final LoggingService ? _loggingService;
2020 final DownloaderService _downloaderService;
2121 final DocumentsService _documentsService;
22+ final CampaignService _campaignService;
2223
2324 Timer ? _resetCountTimer;
2425 StreamSubscription <SyncStats >? _syncStartsSub;
2526 StreamSubscription <int >? _documentsCountSub;
27+ StreamSubscription <Campaign ?>? _activeCampaignSub;
2628
2729 DevToolsBloc (
2830 this ._devToolsService,
2931 this ._syncManager,
3032 this ._loggingService,
3133 this ._downloaderService,
3234 this ._documentsService,
35+ this ._campaignService,
3336 ) : super (const DevToolsState ()) {
3437 on < DevToolsEnablerTappedEvent > (_handleEnablerTap);
3538 on < DevToolsEnablerTapResetEvent > (_handleTapCountReset);
36- on < RecoverDataEvent > (_handleRecoverData);
37- on < UpdateSystemInfoEvent > (_handleUpdateSystemInfo);
39+ on < InitDataEvent > (_handleInitData);
3840 on < SyncDocumentsEvent > (_handleSyncDocuments);
39- on < UpdateAllEvent > (_handleUpdateAll);
40- on < WatchSystemInfoEvent > (_handleWatchSystemInfoEvent);
41- on < StopWatchingSystemInfoEvent > (_handleStopWatchingSystemInfoEvent);
42- on < WatchDocumentsEvent > (_handleWatchDocumentsEvent);
43- on < StopWatchingDocumentsEvent > (_handleStopWatchingDocumentsEvent);
44- on < DocumentsCountChangedEvent > (_updateDocumentsCount);
41+ on < WatchSystemInfoEvent > (_handleWatchSystemInfo);
42+ on < StopWatchingSystemInfoEvent > (_handleStopWatchingSystemInfo);
43+ on < WatchDocumentsEvent > (_handleWatchDocuments);
44+ on < StopWatchingDocumentsEvent > (_handleStopWatchingDocuments);
45+ on < WatchActiveCampaignEvent > (_handleWatchActiveCampaign);
46+ on < StopWatchingActiveCampaignEvent > (_handleStopWatchingActiveCampaign);
47+ on < DocumentsCountChangedEvent > (_updateDocumentsCountChanged);
4548 on < SyncStatsChangedEvent > (_handleSyncStatsChanged);
4649 on < ChangeLogLevelEvent > (_handleChangeLogLevel);
47- on < ChangeCollectLogsEvent > (_handleChangeCollectLogs);
50+ on < ChangeCollectLogsEvent > (_handleChangeCollectLogsEvent);
51+ on < ChangeActiveCampaignEvent > (_handleChangeActiveCampaign);
4852 on < PrepareAndExportLogsEvent > (_handleExportLogs);
4953 on < ClearDocumentsEvent > (_handleClearDocuments);
50-
51- add (const RecoverDataEvent ());
54+ on < ActiveCampaignChangedEvent > (_handleActiveCampaignChanged);
5255 }
5356
5457 @override
@@ -62,10 +65,31 @@ final class DevToolsBloc extends Bloc<DevToolsEvent, DevToolsState>
6265 await _documentsCountSub? .cancel ();
6366 _documentsCountSub = null ;
6467
68+ await _activeCampaignSub? .cancel ();
69+ _activeCampaignSub = null ;
70+
6571 return super .close ();
6672 }
6773
68- Future <void > _handleChangeCollectLogs (
74+ void _handleActiveCampaignChanged (ActiveCampaignChangedEvent event, Emitter <DevToolsState > emit) {
75+ emit (state.copyWithActiveCampaign (event.campaign));
76+ }
77+
78+ Future <void > _handleChangeActiveCampaign (
79+ ChangeActiveCampaignEvent event,
80+ Emitter <DevToolsState > emit,
81+ ) async {
82+ final previousCampaign = state.campaign.activeCampaign;
83+ try {
84+ emit (state.copyWithActiveCampaign (event.campaign));
85+ await _campaignService.setActiveCampaign (event.campaign);
86+ } catch (error, stackTrace) {
87+ _logger.severe ('handleChangeActiveCampaign' , error, stackTrace);
88+ emit (state.copyWithActiveCampaign (previousCampaign));
89+ }
90+ }
91+
92+ Future <void > _handleChangeCollectLogsEvent (
6993 ChangeCollectLogsEvent event,
7094 Emitter <DevToolsState > emit,
7195 ) async {
@@ -142,19 +166,21 @@ final class DevToolsBloc extends Bloc<DevToolsEvent, DevToolsState>
142166 final content = await _loggingService! .prepareForExportCollectedLogs ();
143167 final encodedContent = utf8.encode (content);
144168
145- final filename = 'catalyst_app_${DateTimeExt .now ().toIso8601String () }_logs.txt' ;
169+ final filename = 'catalyst_app_${DateTimeExt .now ().microsecondsSinceEpoch }_logs.txt' ;
146170
147171 await _downloaderService.download (data: encodedContent, filename: filename);
148172 } catch (error, stack) {
149173 _logger.severe ('Exporting logs failed' , error, stack);
150174 }
151175 }
152176
153- Future <void > _handleRecoverData ( RecoverDataEvent event, Emitter <DevToolsState > emit) async {
177+ Future <void > _handleInitData ( InitDataEvent event, Emitter <DevToolsState > emit) async {
154178 final isDeveloper = await _devToolsService.isDeveloper ();
155179 final syncStats = await _devToolsService.getStats ();
156180 final areLogsOptionsAvailable = _loggingService != null ;
157181 final loggingSettings = await _loggingService? .getSettings ();
182+ final activeCampaign = await _campaignService.getActiveCampaign ();
183+ final allCampaigns = await _campaignService.getAllCampaigns ();
158184
159185 if (! isClosed) {
160186 emit (
@@ -164,20 +190,32 @@ final class DevToolsBloc extends Bloc<DevToolsEvent, DevToolsState>
164190 areLogsOptionsAvailable: areLogsOptionsAvailable,
165191 logsLevel: Optional (loggingSettings? .effectiveLevel),
166192 collectLogs: loggingSettings? .effectiveCollectLogs ?? false ,
193+ campaign: DevToolsCampaignState (
194+ activeCampaign: activeCampaign,
195+ allCampaigns: allCampaigns,
196+ ),
167197 ),
168198 );
169199 }
170200 }
171201
172- Future <void > _handleStopWatchingDocumentsEvent (
202+ Future <void > _handleStopWatchingActiveCampaign (
203+ StopWatchingActiveCampaignEvent event,
204+ Emitter <DevToolsState > emit,
205+ ) async {
206+ await _activeCampaignSub? .cancel ();
207+ _activeCampaignSub = null ;
208+ }
209+
210+ Future <void > _handleStopWatchingDocuments (
173211 StopWatchingDocumentsEvent event,
174212 Emitter <DevToolsState > emit,
175213 ) async {
176214 await _documentsCountSub? .cancel ();
177215 _documentsCountSub = null ;
178216 }
179217
180- Future <void > _handleStopWatchingSystemInfoEvent (
218+ Future <void > _handleStopWatchingSystemInfo (
181219 StopWatchingSystemInfoEvent event,
182220 Emitter <DevToolsState > emit,
183221 ) async {
@@ -204,38 +242,16 @@ final class DevToolsBloc extends Bloc<DevToolsEvent, DevToolsState>
204242 emit (state.copyWith (enableTapCount: 0 ));
205243 }
206244
207- Future <void > _handleUpdateAll (UpdateAllEvent event, Emitter <DevToolsState > emit) async {
208- try {
209- final systemInfo = await _devToolsService.getSystemInfo ();
210- final syncStats = await _devToolsService.getStats ();
211-
212- if (! isClosed) {
213- emit (state.copyWith (systemInfo: Optional (systemInfo), syncStats: Optional (syncStats)));
214- }
215- } catch (error, stack) {
216- _logger.warning ('Updating all failed' , error, stack);
217- }
218- }
219-
220- Future <void > _handleUpdateSystemInfo (
221- UpdateSystemInfoEvent event,
245+ Future <void > _handleWatchActiveCampaign (
246+ WatchActiveCampaignEvent event,
222247 Emitter <DevToolsState > emit,
223248 ) async {
224- SystemInfo ? systemInfo;
225-
226- try {
227- systemInfo = await _devToolsService.getSystemInfo ();
228- } catch (error, stack) {
229- _logger.warning ('Updating system info failed' , error, stack);
230- systemInfo = null ;
231- } finally {
232- if (! isClosed) {
233- emit (state.copyWith (systemInfo: Optional (systemInfo)));
234- }
235- }
249+ _activeCampaignSub = _campaignService.watchActiveCampaign.listen ((value) {
250+ add (ActiveCampaignChangedEvent (value));
251+ });
236252 }
237253
238- Future <void > _handleWatchDocumentsEvent (
254+ Future <void > _handleWatchDocuments (
239255 WatchDocumentsEvent event,
240256 Emitter <DevToolsState > emit,
241257 ) async {
@@ -244,7 +260,7 @@ final class DevToolsBloc extends Bloc<DevToolsEvent, DevToolsState>
244260 );
245261 }
246262
247- Future <void > _handleWatchSystemInfoEvent (
263+ Future <void > _handleWatchSystemInfo (
248264 WatchSystemInfoEvent event,
249265 Emitter <DevToolsState > emit,
250266 ) async {
@@ -253,7 +269,7 @@ final class DevToolsBloc extends Bloc<DevToolsEvent, DevToolsState>
253269 );
254270 }
255271
256- void _updateDocumentsCount (DocumentsCountChangedEvent event, Emitter <DevToolsState > emit) {
272+ void _updateDocumentsCountChanged (DocumentsCountChangedEvent event, Emitter <DevToolsState > emit) {
257273 emit (state.copyWith (documentsCount: Optional (event.count)));
258274 }
259275}
0 commit comments