Skip to content

Commit e91fec7

Browse files
authored
Merge pull request #2 from CoderJava/bugfix/perbaikan-data-lokal-yang-tidak-sync-ke-server
Bugfix - Perbaikan data lokal yang tidak sync ke server
2 parents 4c83efd + 43d2b31 commit e91fec7

File tree

9 files changed

+32
-17
lines changed

9 files changed

+32
-17
lines changed

lib/core/util/dio_logging_interceptor_refresh_token.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class DioLoggingInterceptorRefreshToken extends InterceptorsWrapper {
5555
);
5656
}
5757

58-
if (responseCode == 401 || responseCode == null) {
58+
if (responseCode == 401) {
5959
final strRefreshToken = sharedPreferencesManager.getString(SharedPreferencesManager.keyRefreshToken) ?? '';
6060
if (strRefreshToken.isEmpty) {
6161
return handler.next(err);

lib/feature/database/dao/track/track_dao.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ abstract class TrackDao {
77
Future<List<Track>> findAllTrack(String userId);
88

99
@insert
10-
Future<void> insertTrack(Track track);
10+
Future<int> insertTrack(Track track);
1111

1212
@Query('DELETE FROM track WHERE id = :id')
1313
Future<void> deleteTrackById(int id);

lib/feature/presentation/bloc/tracking/tracking_bloc.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@ class TrackingBloc extends Bloc<TrackingEvent, TrackingState> {
4242
final response = result.response;
4343
final failure = result.failure;
4444
if (response != null) {
45-
emit(SuccessCreateTimeTrackingState(files: event.body.files));
45+
emit(
46+
SuccessCreateTimeTrackingState(
47+
files: event.body.files,
48+
trackEntityId: event.trackEntityId,
49+
),
50+
);
4651
return;
4752
}
4853

@@ -102,4 +107,4 @@ class TrackingBloc extends Bloc<TrackingEvent, TrackingState> {
102107
),
103108
);
104109
}
105-
}
110+
}

lib/feature/presentation/bloc/tracking/tracking_event.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,16 @@ abstract class TrackingEvent {
66

77
class CreateTimeTrackingEvent extends TrackingEvent {
88
final CreateTrackBody body;
9+
final int trackEntityId;
910

10-
CreateTimeTrackingEvent({required this.body});
11+
CreateTimeTrackingEvent({
12+
required this.body,
13+
required this.trackEntityId,
14+
});
1115

1216
@override
1317
String toString() {
14-
return 'CreateTimeTrackingEvent{body: $body}';
18+
return 'CreateTimeTrackingEvent{body: $body, trackEntityId: $trackEntityId}';
1519
}
1620
}
1721

lib/feature/presentation/bloc/tracking/tracking_state.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,16 @@ class FailureTrackingState extends TrackingState {
2121

2222
class SuccessCreateTimeTrackingState extends TrackingState {
2323
final List<String> files;
24+
final int trackEntityId;
2425

2526
SuccessCreateTimeTrackingState({
2627
required this.files,
28+
required this.trackEntityId,
2729
});
2830

2931
@override
3032
String toString() {
31-
return 'SuccessCreateTimeTrackingState{files: $files}';
33+
return 'SuccessCreateTimeTrackingState{files: $files, trackEntityId: $trackEntityId}';
3234
}
3335
}
3436

lib/feature/presentation/page/home/home_page.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ class _HomePageState extends State<HomePage> with TrayListener, WindowListener {
7777
var counterActivity = 0;
7878
DateTime? startTime;
7979
DateTime? finishTime;
80-
Track? trackEntity;
8180
DateTime? infoDateTime;
8281

8382
@override
@@ -329,9 +328,7 @@ class _HomePageState extends State<HomePage> with TrayListener, WindowListener {
329328
BlocListener<TrackingBloc, TrackingState>(
330329
listener: (context, state) {
331330
if (state is FailureTrackingState) {
332-
if (trackEntity != null) {
333-
trackDao.insertTrack(trackEntity!);
334-
}
331+
/* Nothing to do in here */
335332
} else if (state is SuccessCreateTimeTrackingState) {
336333
final files = state.files;
337334
for (final path in files) {
@@ -340,6 +337,8 @@ class _HomePageState extends State<HomePage> with TrayListener, WindowListener {
340337
file.deleteSync();
341338
}
342339
}
340+
final trackEntityId = state.trackEntityId;
341+
trackDao.deleteTrackById(trackEntityId);
343342
} else if (state is SuccessCronTrackingState) {
344343
// TODO: tampilkan info last sync at: 22:09 04 Jul 2023
345344
// TODO: info ini akan ditampilkan dibagian paling bawah sama seperti tampilan hubstaff
@@ -973,7 +972,7 @@ class _HomePageState extends State<HomePage> with TrayListener, WindowListener {
973972

974973
final activity = percentActivity.round();
975974

976-
trackEntity = Track(
975+
final trackEntity = Track(
977976
userId: userId,
978977
taskId: taskId!,
979978
startDate: formattedStartDateTime,
@@ -984,6 +983,7 @@ class _HomePageState extends State<HomePage> with TrayListener, WindowListener {
984983
projectName: selectedProject?.name ?? '',
985984
taskName: selectedTask?.name ?? '',
986985
);
986+
final trackEntityId = await trackDao.insertTrack(trackEntity);
987987

988988
trackingBloc.add(
989989
CreateTimeTrackingEvent(
@@ -996,6 +996,7 @@ class _HomePageState extends State<HomePage> with TrayListener, WindowListener {
996996
duration: durationInSeconds,
997997
files: files.split(','),
998998
),
999+
trackEntityId: trackEntityId,
9991000
),
10001001
);
10011002
}

test/feature/presentation/bloc/tracking/tracking_bloc_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ void main() {
5656
),
5757
);
5858
final tParams = ParamsCreateTrack(body: tBody);
59-
final tEvent = CreateTimeTrackingEvent(body: tBody);
59+
final tEvent = CreateTimeTrackingEvent(body: tBody, trackEntityId: 1);
6060

6161
blocTest(
6262
'pastikan emit [LoadingTrackingState, SuccessCreateTimeTrackingState] ketika terima event '

test/feature/presentation/bloc/tracking/tracking_event_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ void main() {
1414
fixture('create_track_body.json'),
1515
),
1616
);
17-
final tEvent = CreateTimeTrackingEvent(body: tBody);
17+
final tEvent = CreateTimeTrackingEvent(body: tBody, trackEntityId: 0);
1818

1919
test(
2020
'pastikan output dari fungsi toString',
2121
() async {
2222
// assert
2323
expect(
2424
tEvent.toString(),
25-
'CreateTimeTrackingEvent{body: ${tEvent.body}}',
25+
'CreateTimeTrackingEvent{body: ${tEvent.body}, trackEntityId: ${tEvent.trackEntityId}}',
2626
);
2727
},
2828
);

test/feature/presentation/bloc/tracking/tracking_state_test.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,18 @@ void main() {
1818
});
1919

2020
group('SuccessCreateTimeTrackingState', () {
21-
final tState = SuccessCreateTimeTrackingState(files: ['1', '2']);
21+
final tState = SuccessCreateTimeTrackingState(
22+
files: ['1', '2'],
23+
trackEntityId: 1,
24+
);
2225

2326
test(
2427
'pastikan output dari fungsi toString',
2528
() async {
2629
// assert
2730
expect(
2831
tState.toString(),
29-
'SuccessCreateTimeTrackingState{files: ${tState.files}}',
32+
'SuccessCreateTimeTrackingState{files: ${tState.files}, trackEntityId: ${tState.trackEntityId}}',
3033
);
3134
},
3235
);

0 commit comments

Comments
 (0)