Skip to content
Merged
15 changes: 0 additions & 15 deletions mobile/lib/src/application/night_stats/night_stats_cubit.dart

This file was deleted.

11 changes: 0 additions & 11 deletions mobile/lib/src/application/night_stats/night_stats_state.dart

This file was deleted.

33 changes: 0 additions & 33 deletions mobile/lib/src/application/sleep_history/sleep_history_cubit.dart

This file was deleted.

11 changes: 0 additions & 11 deletions mobile/lib/src/application/sleep_history/sleep_history_state.dart

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import 'dart:async';

import 'package:bloc/bloc.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:polydodo/src/application/sleep_sequence_stats/sleep_sequence_stats_cubit.dart';
import 'package:polydodo/src/domain/sleep_sequence/i_sleep_sequence_repository.dart';
import 'package:polydodo/src/domain/sleep_sequence/sleep_sequence_stats.dart';
import 'sleep_sequence_history_state.dart';

class SleepSequenceHistoryCubit extends Cubit<SleepSequenceHistoryState> {
final ISleepSequenceRepository _sleepHistoryRepository;
final SleepSequenceStatsCubit _sleepSequenceStatsCubit;
final StreamController<String> _selectText =
StreamController<String>.broadcast();

List<SleepSequenceStats> _selectedSequences;

SleepSequenceHistoryCubit(
this._sleepHistoryRepository, this._sleepSequenceStatsCubit)
: super(SleepSequenceHistoryInitial()) {
loadHistory();
}

void loadHistory() {
emit(SleepSequenceHistoryLoaded(
_sleepHistoryRepository.getSleepSequences()));
}

void loadSleepSequence(SleepSequenceStats sequence) {
_sleepSequenceStatsCubit.loadSleepSequence(sequence);
}

void toggleSelectMode() {
if (state is SleepSequenceHistoryEditInProgress) {
_disableSelection();
} else {
_enableSelection();
}
}

void _enableSelection() {
_selectedSequences = [];
_selectText.add('Done');
emit(SleepSequenceHistoryEditInProgress(
_sleepHistoryRepository.getSleepSequences(), _selectedSequences));
}

void _disableSelection() {
_selectedSequences = null;
_selectText.add('Select');
emit(SleepSequenceHistoryLoaded(
_sleepHistoryRepository.getSleepSequences()));
}

void toggleSelectSequenceForDeletion(SleepSequenceStats sequence) {
if (_selectedSequences.contains(sequence)) {
_selectedSequences.remove(sequence);
} else {
_selectedSequences.add(sequence);
}

emit(SleepSequenceHistoryEditInProgress(
_sleepHistoryRepository.getSleepSequences(), _selectedSequences));
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'imagine que ce sera async. Il faudrait probablement utiliser Future ISleepHistoryRepository::getSleepSequences(); J'imagine que les ajouts et suppression de la persistence retourneront aussi un Future.

}

void deleteSelected() {
_sleepHistoryRepository.deleteSleepSequences(_selectedSequences);
_disableSelection();
Comment thread
MouradLachhab marked this conversation as resolved.
}

Stream<String> get selectStream => _selectText.stream;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import 'package:polydodo/src/domain/sleep_sequence/sleep_sequence_stats.dart';

abstract class SleepSequenceHistoryState {}

class SleepSequenceHistoryInitial extends SleepSequenceHistoryState {}

class SleepSequenceHistoryLoaded extends SleepSequenceHistoryState {
final List<SleepSequenceStats> history;

SleepSequenceHistoryLoaded(this.history);
}

class SleepSequenceHistoryEditInProgress extends SleepSequenceHistoryState {
final List<SleepSequenceStats> history;
final List<SleepSequenceStats> selectedSequences;

SleepSequenceHistoryEditInProgress(this.history, this.selectedSequences);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import 'package:bloc/bloc.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:polydodo/src/domain/sleep_sequence/sleep_sequence_stats.dart';
import 'sleep_sequence_stats_state.dart';

class SleepSequenceStatsCubit extends Cubit<SleepSequenceStatsState> {
String titleText = '';

SleepSequenceStatsCubit() : super(SleepSequenceStatsInitial());

void loadSleepSequence(SleepSequenceStats sequence) {
titleText = sequence.stringId;
emit(SleepSequenceStatsLoaded(sequence));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import 'package:polydodo/src/domain/sleep_sequence/sleep_sequence_stats.dart';

abstract class SleepSequenceStatsState {}

class SleepSequenceStatsInitial extends SleepSequenceStatsState {}

class SleepSequenceStatsLoaded extends SleepSequenceStatsState {
final SleepSequenceStats stats;

SleepSequenceStatsLoaded(this.stats);
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import 'package:polydodo/src/domain/sleep_sequence/sleep_sequence_stats.dart';

abstract class ISleepSequenceRepository {
List<SleepSequenceStats> getSleepSequences();

void deleteSleepSequences(List<SleepSequenceStats> sequence);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:polydodo/src/domain/entity.dart';
import 'package:flutter/foundation.dart';

class NightStats extends Entity {
class SleepSequenceStats extends Entity {
final DateTimeRange recordingTime;
final DateTime effectiveSleepTime;
final double sleepEfficiency;
Expand All @@ -12,7 +12,7 @@ class NightStats extends Entity {
final int remLatency;
final int numberTransitions;

NightStats(
SleepSequenceStats(
{id,
@required this.recordingTime,
@required this.effectiveSleepTime,
Expand All @@ -24,5 +24,5 @@ class NightStats extends Entity {
@required this.numberTransitions})
: super(id);

String get fileName => id.toString();
String get stringId => id.toString();
}
6 changes: 3 additions & 3 deletions mobile/lib/src/infrastructure/sleep_history/mock_data.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:polydodo/src/domain/sleep_history/night_stats.dart';
import 'package:polydodo/src/domain/sleep_sequence/sleep_sequence_stats.dart';
import 'package:polydodo/src/domain/unique_id.dart';

NightStats mock_data_1 = NightStats(
SleepSequenceStats mock_data_1 = SleepSequenceStats(
id: UniqueId.from('test'),
awakenings: 3,
effectiveSleepTime: DateTime.now(),
Expand All @@ -13,7 +13,7 @@ NightStats mock_data_1 = NightStats(
sleepLatency: 10,
waso: DateTime.now());

NightStats mock_data_2 = NightStats(
SleepSequenceStats mock_data_2 = SleepSequenceStats(
id: UniqueId.from('test2'),
awakenings: 100,
effectiveSleepTime: DateTime.now(),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,35 +1,26 @@
import 'dart:async';

import 'package:polydodo/src/domain/sleep_history/i_sleep_history_repository.dart';
import 'package:polydodo/src/domain/sleep_history/night_stats.dart';
import 'package:polydodo/src/domain/sleep_sequence/i_sleep_sequence_repository.dart';
import 'package:polydodo/src/domain/sleep_sequence/sleep_sequence_stats.dart';
import 'package:polydodo/src/infrastructure/sleep_history/mock_data.dart';

class SleepHistoryRepository implements ISleepHistoryRepository {
final List<NightStats> _sleepHistoryPersistency = [];
final streamController = StreamController<List<NightStats>>();
final nightStreamController = StreamController<NightStats>();
class SleepHistoryRepository implements ISleepSequenceRepository {
final List<SleepSequenceStats> _sleepHistoryPersistency = [];
final sequenceStreamController = StreamController<SleepSequenceStats>();

SleepHistoryRepository();

@override
void initializeRepository() {
SleepHistoryRepository() {
_sleepHistoryPersistency.add(mock_data_1);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Si le Repository est mock je propose qu'on le renomme MockSleepHistoryRepository. Lorsqu'on voudra implémenter la vrai version, on aura juste à créer une nouvelle classe SleepHistoryRepository et l'injecter dans l'app à la place de MockSleepRepository.


_sleepHistoryPersistency.add(mock_data_2);

streamController.add(_sleepHistoryPersistency);
}

@override
void selectNight(NightStats stat) {
nightStreamController.add(stat);
}

@override
Stream<NightStats> getSelectedNight() => nightStreamController.stream;
List<SleepSequenceStats> getSleepSequences() => _sleepHistoryPersistency;

@override
Stream<List<NightStats>> watch() {
return streamController.stream;
void deleteSleepSequences(List<SleepSequenceStats> sequences) {
for (var sequence in sequences) {
_sleepHistoryPersistency.remove(sequence);
}
}
}
20 changes: 10 additions & 10 deletions mobile/lib/src/locator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it/get_it.dart';
import 'package:polydodo/src/application/device/device_selector_cubit.dart';
import 'package:polydodo/src/application/eeg_data/data_cubit.dart';
import 'package:polydodo/src/application/night_stats/night_stats_cubit.dart';
import 'package:polydodo/src/application/sleep_history/sleep_history_cubit.dart';
import 'package:polydodo/src/application/sleep_sequence_history/sleep_sequence_history_cubit.dart';
import 'package:polydodo/src/application/sleep_sequence_stats/sleep_sequence_stats_cubit.dart';
import 'package:polydodo/src/domain/acquisition_device/i_acquisition_device_repository.dart';
import 'package:polydodo/src/domain/eeg_data/i_eeg_data_repository.dart';
import 'package:polydodo/src/domain/sleep_history/i_sleep_history_repository.dart';
import 'package:polydodo/src/domain/sleep_sequence/i_sleep_sequence_repository.dart';
import 'package:polydodo/src/infrastructure/connection_repositories/acquisition_device_repository.dart';
import 'package:polydodo/src/infrastructure/connection_repositories/eeg_data_repository.dart';
import 'package:polydodo/src/infrastructure/sleep_history/sleep_history_repository.dart';
Expand All @@ -19,7 +19,7 @@ void registerServices() {
AcquisitionDeviceRepository());
_serviceLocator.registerSingleton<IEEGDataRepository>(EEGDataRepository());
_serviceLocator
.registerSingleton<ISleepHistoryRepository>(SleepHistoryRepository());
.registerSingleton<ISleepSequenceRepository>(SleepHistoryRepository());
}

/// This function creates all the BlocProviders used in this app
Expand All @@ -35,10 +35,10 @@ List<BlocProvider> createBlocProviders() => [
_serviceLocator.get<IEEGDataRepository>(),
),
),
BlocProvider<SleepHistoryCubit>(
create: (context) => SleepHistoryCubit(
_serviceLocator.get<ISleepHistoryRepository>())),
BlocProvider<NightStatsCubit>(
create: (context) =>
NightStatsCubit(_serviceLocator.get<ISleepHistoryRepository>())),
BlocProvider<SleepSequenceStatsCubit>(
create: (context) => SleepSequenceStatsCubit()),
BlocProvider<SleepSequenceHistoryCubit>(
create: (context) => SleepSequenceHistoryCubit(
_serviceLocator.get<ISleepSequenceRepository>(),
BlocProvider.of<SleepSequenceStatsCubit>(context))),
];
2 changes: 1 addition & 1 deletion mobile/lib/src/presentation/navigation/navdrawer_tabs.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ enum NavdrawerTab {
RecordSleep,
BluetoothSelector,
History,
NightStats
SleepSequenceStats
}
6 changes: 3 additions & 3 deletions mobile/lib/src/presentation/navigation/routes/router.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@ import 'package:polydodo/src/presentation/pages/dashboard/dashboard_page.dart';
import 'package:polydodo/src/presentation/pages/record_sleep/record_sleep_guide_page.dart';
import 'package:polydodo/src/presentation/pages/record_sleep/record_sleep_recording_page.dart';
import 'package:polydodo/src/presentation/pages/record_sleep/record_sleep_validate_page.dart';

import 'package:polydodo/src/presentation/pages/sleep_history_page/sleep_history_page.dart';
import 'package:polydodo/src/presentation/pages/night_stats_page/night_stats_page.dart';
import 'package:polydodo/src/presentation/pages/sleep_sequence_stats_page/sleep_sequence_stats_page.dart';

@MaterialAutoRouter(
generateNavigationHelperExtension: true,
Expand All @@ -32,6 +31,7 @@ import 'package:polydodo/src/presentation/pages/night_stats_page/night_stats_pag
page: SleepHistoryPage,
transitionsBuilder: TransitionsBuilders.fadeIn),
CustomRoute(
page: NightStatsPage, transitionsBuilder: TransitionsBuilders.fadeIn),
page: SleepSequenceStatsPage,
transitionsBuilder: TransitionsBuilders.fadeIn),
])
class $Router {}
Loading