11import 'package:bloc/bloc.dart' ;
2- import 'package:data_plugin/bmob/response/bmob_error.dart' ;
3- import 'package:data_plugin/bmob/response/bmob_handled.dart' ;
4- import 'package:data_plugin/bmob/response/bmob_saved.dart' ;
5- import 'package:data_plugin/bmob/response/bmob_updated.dart' ;
62import 'package:equatable/equatable.dart' ;
73import 'package:timefly/blocs/habit/habit_bloc.dart' ;
84import 'package:timefly/blocs/habit/habit_event.dart' ;
95import 'package:timefly/blocs/habit/habit_state.dart' ;
6+ import 'package:timefly/db/database_provider.dart' ;
107import 'package:timefly/models/habit.dart' ;
118
129class RecordState extends Equatable {
@@ -18,9 +15,8 @@ class RecordState extends Equatable {
1815
1916class RecordLoadSuccess extends RecordState {
2017 final List <HabitRecord > records;
21- final bool isAdd;
2218
23- RecordLoadSuccess (this .records, { this .isAdd = false } );
19+ RecordLoadSuccess (this .records);
2420
2521 @override
2622 List <Object > get props => [records];
@@ -61,12 +57,12 @@ class RecordAdd extends RecordEvent {
6157
6258class RecordDelete extends RecordEvent {
6359 final String habitId;
64- final HabitRecord record ;
60+ final int time ;
6561
66- RecordDelete (this .habitId, this .record );
62+ RecordDelete (this .habitId, this .time );
6763
6864 @override
69- List <Object > get props => [habitId, record ];
65+ List <Object > get props => [habitId, time ];
7066}
7167
7268///更新
@@ -130,43 +126,34 @@ class RecordBloc extends Bloc<RecordEvent, RecordState> {
130126 }
131127
132128 Stream <RecordState > _mapRecordAddToState (RecordAdd event) async * {
133- if (state is RecordLoadSuccess ) {
134- HabitRecord_ _habitRecord = HabitRecord_ (event.record);
135- try {
136- BmobSaved saved = await _habitRecord.save ();
137- print ('save record success ${saved .objectId }' );
138- HabitRecord addedRecord =
139- event.record.copyWith (objectId: saved.objectId);
129+ try {
130+ if (state is RecordLoadSuccess ) {
140131 final List <HabitRecord > records =
141132 List .from ((state as RecordLoadSuccess ).records)
142- ..insert (0 , addedRecord );
143-
133+ ..insert (0 , event.record );
134+ DatabaseProvider .db. insertHabitRecord (event.record);
144135 if (habitsBloc.state is HabitLoadSuccess ) {
145136 Habit currentHabit = (habitsBloc.state as HabitLoadSuccess )
146137 .habits
147- .firstWhere ((habit) => habit.id == addedRecord .habitId);
138+ .firstWhere ((habit) => habit.id == event.record .habitId);
148139 habitsBloc.add (HabitUpdate (currentHabit.copyWith (
149- records: List .from (currentHabit.records)..add (addedRecord ))));
140+ records: List .from (currentHabit.records)..add (event.record ))));
150141 }
151- yield RecordLoadSuccess (records, isAdd: true );
152- } catch (e) {
153- print ('save record error : ${BmobError .convert (e )}' );
142+ yield RecordLoadSuccess (records);
154143 }
155- }
144+ } catch (e) {}
156145 }
157146
158147 Stream <RecordState > _mapRecordUpdateToState (RecordUpdate event) async * {
159- if (state is RecordLoadSuccess ) {
160- HabitRecord_ _habitRecord = HabitRecord_ (event.record);
161- try {
162- BmobUpdated updated = await _habitRecord.update ();
163- print ('update success : ${updated .updatedAt }' );
148+ try {
149+ if (state is RecordLoadSuccess ) {
164150 final List <HabitRecord > records = (state as RecordLoadSuccess )
165151 .records
166152 .map ((record) =>
167153 record.time == event.record.time ? event.record : record)
168154 .toList ();
169155 yield RecordLoadSuccess (records);
156+ DatabaseProvider .db.updateHabitRecord (event.record);
170157
171158 if (habitsBloc.state is HabitLoadSuccess ) {
172159 Habit currentHabit = (habitsBloc.state as HabitLoadSuccess )
@@ -182,35 +169,28 @@ class RecordBloc extends Bloc<RecordEvent, RecordState> {
182169 habitsBloc.add (
183170 HabitUpdate (currentHabit.copyWith (records: currentHabitRecords)));
184171 }
185- } catch (e) {
186- print ('update error : ${BmobError .convert (e )}' );
187172 }
188- }
173+ } catch (e) {}
189174 }
190175
191176 Stream <RecordState > _mapRecordDeleteToState (RecordDelete event) async * {
192- if (state is RecordLoadSuccess ) {
193- HabitRecord_ _habitRecord = HabitRecord_ (event.record);
194-
195- try {
196- BmobHandled handled = await _habitRecord.delete ();
197- print ('delete record success : ${handled .msg }' );
177+ try {
178+ if (state is RecordLoadSuccess ) {
198179 final List <HabitRecord > records =
199180 List .from ((state as RecordLoadSuccess ).records)
200- ..removeWhere ((record) => record.time == event.record. time);
181+ ..removeWhere ((record) => record.time == event.time);
201182 yield RecordLoadSuccess (records);
183+ DatabaseProvider .db.deleteHabitRecord (event.habitId, event.time);
202184
203185 if (habitsBloc.state is HabitLoadSuccess ) {
204186 Habit currentHabit = (habitsBloc.state as HabitLoadSuccess )
205187 .habits
206188 .firstWhere ((habit) => habit.id == event.habitId);
207189 habitsBloc.add (HabitUpdate (currentHabit.copyWith (
208190 records: List .from (currentHabit.records)
209- ..removeWhere ((record) => record.time == event.record. time))));
191+ ..removeWhere ((record) => record.time == event.time))));
210192 }
211- } catch (e) {
212- print ('delete record error : ${BmobError .convert (e )}' );
213193 }
214- }
194+ } catch (e) {}
215195 }
216196}
0 commit comments