1
1
import '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' ;
6
2
import 'package:equatable/equatable.dart' ;
7
3
import 'package:timefly/blocs/habit/habit_bloc.dart' ;
8
4
import 'package:timefly/blocs/habit/habit_event.dart' ;
9
5
import 'package:timefly/blocs/habit/habit_state.dart' ;
6
+ import 'package:timefly/db/database_provider.dart' ;
10
7
import 'package:timefly/models/habit.dart' ;
11
8
12
9
class RecordState extends Equatable {
@@ -18,9 +15,8 @@ class RecordState extends Equatable {
18
15
19
16
class RecordLoadSuccess extends RecordState {
20
17
final List <HabitRecord > records;
21
- final bool isAdd;
22
18
23
- RecordLoadSuccess (this .records, { this .isAdd = false } );
19
+ RecordLoadSuccess (this .records);
24
20
25
21
@override
26
22
List <Object > get props => [records];
@@ -61,12 +57,12 @@ class RecordAdd extends RecordEvent {
61
57
62
58
class RecordDelete extends RecordEvent {
63
59
final String habitId;
64
- final HabitRecord record ;
60
+ final int time ;
65
61
66
- RecordDelete (this .habitId, this .record );
62
+ RecordDelete (this .habitId, this .time );
67
63
68
64
@override
69
- List <Object > get props => [habitId, record ];
65
+ List <Object > get props => [habitId, time ];
70
66
}
71
67
72
68
///更新
@@ -130,43 +126,34 @@ class RecordBloc extends Bloc<RecordEvent, RecordState> {
130
126
}
131
127
132
128
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 ) {
140
131
final List <HabitRecord > records =
141
132
List .from ((state as RecordLoadSuccess ).records)
142
- ..insert (0 , addedRecord );
143
-
133
+ ..insert (0 , event.record );
134
+ DatabaseProvider .db. insertHabitRecord (event.record);
144
135
if (habitsBloc.state is HabitLoadSuccess ) {
145
136
Habit currentHabit = (habitsBloc.state as HabitLoadSuccess )
146
137
.habits
147
- .firstWhere ((habit) => habit.id == addedRecord .habitId);
138
+ .firstWhere ((habit) => habit.id == event.record .habitId);
148
139
habitsBloc.add (HabitUpdate (currentHabit.copyWith (
149
- records: List .from (currentHabit.records)..add (addedRecord ))));
140
+ records: List .from (currentHabit.records)..add (event.record ))));
150
141
}
151
- yield RecordLoadSuccess (records, isAdd: true );
152
- } catch (e) {
153
- print ('save record error : ${BmobError .convert (e )}' );
142
+ yield RecordLoadSuccess (records);
154
143
}
155
- }
144
+ } catch (e) {}
156
145
}
157
146
158
147
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 ) {
164
150
final List <HabitRecord > records = (state as RecordLoadSuccess )
165
151
.records
166
152
.map ((record) =>
167
153
record.time == event.record.time ? event.record : record)
168
154
.toList ();
169
155
yield RecordLoadSuccess (records);
156
+ DatabaseProvider .db.updateHabitRecord (event.record);
170
157
171
158
if (habitsBloc.state is HabitLoadSuccess ) {
172
159
Habit currentHabit = (habitsBloc.state as HabitLoadSuccess )
@@ -182,35 +169,28 @@ class RecordBloc extends Bloc<RecordEvent, RecordState> {
182
169
habitsBloc.add (
183
170
HabitUpdate (currentHabit.copyWith (records: currentHabitRecords)));
184
171
}
185
- } catch (e) {
186
- print ('update error : ${BmobError .convert (e )}' );
187
172
}
188
- }
173
+ } catch (e) {}
189
174
}
190
175
191
176
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 ) {
198
179
final List <HabitRecord > records =
199
180
List .from ((state as RecordLoadSuccess ).records)
200
- ..removeWhere ((record) => record.time == event.record. time);
181
+ ..removeWhere ((record) => record.time == event.time);
201
182
yield RecordLoadSuccess (records);
183
+ DatabaseProvider .db.deleteHabitRecord (event.habitId, event.time);
202
184
203
185
if (habitsBloc.state is HabitLoadSuccess ) {
204
186
Habit currentHabit = (habitsBloc.state as HabitLoadSuccess )
205
187
.habits
206
188
.firstWhere ((habit) => habit.id == event.habitId);
207
189
habitsBloc.add (HabitUpdate (currentHabit.copyWith (
208
190
records: List .from (currentHabit.records)
209
- ..removeWhere ((record) => record.time == event.record. time))));
191
+ ..removeWhere ((record) => record.time == event.time))));
210
192
}
211
- } catch (e) {
212
- print ('delete record error : ${BmobError .convert (e )}' );
213
193
}
214
- }
194
+ } catch (e) {}
215
195
}
216
196
}
0 commit comments