From 7ac749d0be669b27cac5f5d7945859f5fe8da77a Mon Sep 17 00:00:00 2001 From: Efrain Date: Sat, 10 Jul 2021 19:12:32 -0500 Subject: [PATCH] [Application] Added a event to delete all the sessions and one to delete all the items inside a session --- .../calculator_asc_materials_bloc.dart | 4 ++ .../calculator_asc_materials_event.dart | 2 + ...alculator_asc_materials_sessions_bloc.dart | 56 ++++++++++--------- ...lculator_asc_materials_sessions_event.dart | 2 + lib/domain/services/data_service.dart | 4 ++ lib/domain/services/telemetry_service.dart | 2 +- 6 files changed, 44 insertions(+), 26 deletions(-) diff --git a/lib/application/calculator_asc_materials/calculator_asc_materials_bloc.dart b/lib/application/calculator_asc_materials/calculator_asc_materials_bloc.dart index b84e7aa42..46bd81d52 100644 --- a/lib/application/calculator_asc_materials/calculator_asc_materials_bloc.dart +++ b/lib/application/calculator_asc_materials/calculator_asc_materials_bloc.dart @@ -175,6 +175,10 @@ class CalculatorAscMaterialsBloc extends Bloc _initialState, + clearAllItems: (e) async { + await _dataService.deleteAllCalAscMatSessionItems(e.sessionKey); + return const CalculatorAscMaterialsState.initial(items: [], summary: []); + }, ); yield s; diff --git a/lib/application/calculator_asc_materials/calculator_asc_materials_event.dart b/lib/application/calculator_asc_materials/calculator_asc_materials_event.dart index e4b8bb573..3083408f6 100644 --- a/lib/application/calculator_asc_materials/calculator_asc_materials_event.dart +++ b/lib/application/calculator_asc_materials/calculator_asc_materials_event.dart @@ -56,4 +56,6 @@ class CalculatorAscMaterialsEvent with _$CalculatorAscMaterialsEvent { }) = _RemoveItem; const factory CalculatorAscMaterialsEvent.close() = _Close; + + const factory CalculatorAscMaterialsEvent.clearAllItems(int sessionKey) = _ClearAllItems; } diff --git a/lib/application/calculator_asc_materials_sessions/calculator_asc_materials_sessions_bloc.dart b/lib/application/calculator_asc_materials_sessions/calculator_asc_materials_sessions_bloc.dart index f307e928a..7781ca639 100644 --- a/lib/application/calculator_asc_materials_sessions/calculator_asc_materials_sessions_bloc.dart +++ b/lib/application/calculator_asc_materials_sessions/calculator_asc_materials_sessions_bloc.dart @@ -22,31 +22,37 @@ class CalculatorAscMaterialsSessionsBloc extends Bloc mapEventToState(CalculatorAscMaterialsSessionsEvent event) async* { final s = await event.map( - init: (_) async { - await _telemetryService.trackCalculatorAscMaterialsSessionsLoaded(); - final sessions = _dataService.getAllCalAscMatSessions(); - return CalculatorAscMaterialsSessionsState.loaded(sessions: sessions); - }, - createSession: (e) async { - await _telemetryService.trackCalculatorAscMaterialsSessionsCreated(); - await _dataService.createCalAscMatSession(e.name.trim(), currentState.sessions.length); - final sessions = _dataService.getAllCalAscMatSessions(); - return CalculatorAscMaterialsSessionsState.loaded(sessions: sessions); - }, - updateSession: (e) async { - final position = currentState.sessions.firstWhere((el) => el.key == e.key).position; - await _telemetryService.trackCalculatorAscMaterialsSessionsUpdated(); - await _dataService.updateCalAscMatSession(e.key, e.name.trim(), position); - final sessions = _dataService.getAllCalAscMatSessions(); - return CalculatorAscMaterialsSessionsState.loaded(sessions: sessions); - }, - deleteSession: (e) async { - await _telemetryService.trackCalculatorAscMaterialsSessionsDeleted(); - await _dataService.deleteCalAscMatSession(e.key); - final sessions = _dataService.getAllCalAscMatSessions(); - return CalculatorAscMaterialsSessionsState.loaded(sessions: sessions); - }, - close: (e) async => const CalculatorAscMaterialsSessionsState.loaded(sessions: [])); + init: (_) async { + await _telemetryService.trackCalculatorAscMaterialsSessionsLoaded(); + final sessions = _dataService.getAllCalAscMatSessions(); + return CalculatorAscMaterialsSessionsState.loaded(sessions: sessions); + }, + createSession: (e) async { + await _telemetryService.trackCalculatorAscMaterialsSessionsCreated(); + await _dataService.createCalAscMatSession(e.name.trim(), currentState.sessions.length); + final sessions = _dataService.getAllCalAscMatSessions(); + return CalculatorAscMaterialsSessionsState.loaded(sessions: sessions); + }, + updateSession: (e) async { + final position = currentState.sessions.firstWhere((el) => el.key == e.key).position; + await _telemetryService.trackCalculatorAscMaterialsSessionsUpdated(); + await _dataService.updateCalAscMatSession(e.key, e.name.trim(), position); + final sessions = _dataService.getAllCalAscMatSessions(); + return CalculatorAscMaterialsSessionsState.loaded(sessions: sessions); + }, + deleteSession: (e) async { + await _telemetryService.trackCalculatorAscMaterialsSessionsDeleted(); + await _dataService.deleteCalAscMatSession(e.key); + final sessions = _dataService.getAllCalAscMatSessions(); + return CalculatorAscMaterialsSessionsState.loaded(sessions: sessions); + }, + close: (e) async => const CalculatorAscMaterialsSessionsState.loaded(sessions: []), + deleteAllSessions: (_) async { + await _telemetryService.trackCalculatorAscMaterialsSessionsDeleted(all: true); + await _dataService.deleteAllCalAscMatSession(); + return const CalculatorAscMaterialsSessionsState.loaded(sessions: []); + }, + ); yield s; } diff --git a/lib/application/calculator_asc_materials_sessions/calculator_asc_materials_sessions_event.dart b/lib/application/calculator_asc_materials_sessions/calculator_asc_materials_sessions_event.dart index dd59cfc85..8b8515f38 100644 --- a/lib/application/calculator_asc_materials_sessions/calculator_asc_materials_sessions_event.dart +++ b/lib/application/calculator_asc_materials_sessions/calculator_asc_materials_sessions_event.dart @@ -18,4 +18,6 @@ class CalculatorAscMaterialsSessionsEvent with _$CalculatorAscMaterialsSessionsE }) = _DeleteSession; const factory CalculatorAscMaterialsSessionsEvent.close() = _Close; + + const factory CalculatorAscMaterialsSessionsEvent.deleteAllSessions() = _DeleteAllSessions; } diff --git a/lib/domain/services/data_service.dart b/lib/domain/services/data_service.dart index fdd869d00..2cfb7c4c6 100644 --- a/lib/domain/services/data_service.dart +++ b/lib/domain/services/data_service.dart @@ -13,6 +13,8 @@ abstract class DataService { Future deleteCalAscMatSession(int sessionKey); + Future deleteAllCalAscMatSession(); + Future addCalAscMatSessionItems(int sessionKey, List items); /// Adds a new calc. item to the provided session by using the [sessionKey]. @@ -37,6 +39,8 @@ abstract class DataService { Future deleteCalAscMatSessionItem(int sessionKey, int itemIndex, {bool redistribute = true}); + Future deleteAllCalAscMatSessionItems(int sessionKey); + List getAllCharactersInInventory(); List getAllWeaponsInInventory(); diff --git a/lib/domain/services/telemetry_service.dart b/lib/domain/services/telemetry_service.dart index 4b0678614..9e11bb363 100644 --- a/lib/domain/services/telemetry_service.dart +++ b/lib/domain/services/telemetry_service.dart @@ -46,7 +46,7 @@ abstract class TelemetryService { Future trackCalculatorAscMaterialsSessionsUpdated(); - Future trackCalculatorAscMaterialsSessionsDeleted(); + Future trackCalculatorAscMaterialsSessionsDeleted({bool all = false}); Future trackItemAddedToInventory(String key, int quantity);