Skip to content

Commit e087a8c

Browse files
committed
init commit
1 parent a219f88 commit e087a8c

File tree

7 files changed

+35
-75
lines changed

7 files changed

+35
-75
lines changed

lib/data/local/event_storage.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class EventStorage {
2424

2525
Future<void> addEvent(TrackEvent event) async {
2626
await _queue(callback: () async {
27-
final cachedEvents = await readCache();
27+
final cachedEvents = await getCachedEvents();
2828
cachedEvents.add(event);
2929
final json = cachedEvents.map((e) => e.toJson()).toList();
3030
await _writeToFile(jsonEncode(json));
@@ -33,15 +33,15 @@ class EventStorage {
3333

3434
Future<void> removeEvents(List<TrackEvent> events) async {
3535
await _queue(callback: () async {
36-
final cache = await readCache();
36+
final cache = await getCachedEvents();
3737
final remaining =
3838
cache.where((event) => !events.contains(event)).toList();
3939
final json = remaining.map((e) => e.toJson()).toList();
4040
await _writeToFile(jsonEncode(json));
4141
});
4242
}
4343

44-
Future<List<TrackEvent>> readCache() async {
44+
Future<List<TrackEvent>> getCachedEvents() async {
4545
final file = File(_storagePath);
4646
final content = await file.readAsString();
4747
if (content.isEmpty) return [];

lib/data/tracking_exceptions.dart

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1-
abstract class TrackingException {}
1+
abstract class TrackingException {
2+
final String message;
23

3-
final class TrackingTimeoutException {}
4+
TrackingException({required this.message});
5+
}
6+
7+
final class TrackingTimeoutException extends TrackingException {
8+
TrackingTimeoutException() : super(message: "Local caching timed out");
9+
}
10+
11+
final class TrackingNotInitialisedException extends TrackingException {
12+
TrackingNotInitialisedException()
13+
: super(
14+
message:
15+
"Plugin not initialised. Remember to call initialize() after instantiation.",
16+
);
17+
}

lib/data/utils.dart

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1 @@
1-
import 'dart:io';
2-
31
typedef Json = Map<String, dynamic>;
4-
5-
Future<File> createFile(String path) async {
6-
final file = File(path);
7-
await file.create(recursive: true);
8-
return file;
9-
}

lib/domain/event_tracker/event_tracker.dart

Lines changed: 0 additions & 5 deletions
This file was deleted.

lib/domain/route_time_tracker/page_time_tracker.dart

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,40 +30,34 @@ class PageTimeTracker extends RouteObserver {
3030
}
3131

3232
_addTime(routePath);
33-
34-
print(
35-
"qqq time for $routePath=${_pageTimes[routePath]!.toDouble() / (1000)}");
3633
}
3734
}
3835

3936
@override
4037
void didPush(Route route, Route? previousRoute) {
41-
print("qqq didPush");
4238
_trackRouteTime(previousRoute);
39+
super.didPush(route, previousRoute);
4340
}
4441

4542
@override
4643
void didPop(Route route, Route? previousRoute) {
47-
print("qqq didPop");
4844
_trackRouteTime(route);
45+
super.didPop(route, previousRoute);
4946
}
5047

5148
@override
5249
void didRemove(Route route, Route? previousRoute) {
53-
print("qqq didRemove");
5450
_trackRouteTime(route);
5551
super.didRemove(route, previousRoute);
5652
}
5753

5854
@override
5955
void didChangeTop(Route topRoute, Route? previousTopRoute) {
60-
print("qqq didChangeTop");
6156
_trackRouteTime(previousTopRoute);
6257
}
6358

6459
@override
6560
void didReplace({Route? newRoute, Route? oldRoute}) {
66-
print("qqq didReplace");
6761
_trackRouteTime(oldRoute);
6862
}
6963

lib/domain/route_time_tracker/router_tracker.dart

Lines changed: 0 additions & 44 deletions
This file was deleted.

lib/tracking.dart

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,37 @@
11
import 'package:tracking/data/local/event_storage.dart';
22
import 'package:tracking/data/remote/tracking_client.dart';
3+
import 'package:tracking/data/tracking_exceptions.dart';
34
import 'package:tracking/domain/event_tracker/track_event.dart';
45

56
class Tracker {
67
final _eventStorage = EventStorage();
78
final TrackingClient _trackingClient;
89
final int batchSize;
10+
bool isInitialised = false;
911

1012
Tracker({required String serviceBaseUrl, this.batchSize = 5})
1113
: _trackingClient = TrackingClient(serviceBaseUrl);
1214

1315
Future<void> initialize() async {
1416
await _eventStorage.init();
17+
isInitialised = true;
18+
await sendAll();
1519
}
1620

1721
Future<void> track(TrackEvent event) async {
22+
if (!isInitialised) throw TrackingNotInitialisedException();
1823
await _eventStorage.addEvent(event);
19-
final cachedEvents = await _eventStorage.readCache();
20-
print("qqq events = ${cachedEvents.length}");
21-
if (cachedEvents.length > batchSize - 1) {
24+
final cachedEvents = await _eventStorage.getCachedEvents();
25+
if (cachedEvents.length >= batchSize) {
2226
await _trackingClient.sendMultipleEvents(cachedEvents);
2327
await _eventStorage.removeEvents(cachedEvents);
24-
final rem = await _eventStorage.readCache();
25-
print("qqq events = ${rem.length}");
2628
}
2729
}
30+
31+
Future<void> sendAll() async {
32+
if (!isInitialised) throw TrackingNotInitialisedException();
33+
final cachedEvents = await _eventStorage.getCachedEvents();
34+
await _trackingClient.sendMultipleEvents(cachedEvents);
35+
await _eventStorage.removeEvents(cachedEvents);
36+
}
2837
}

0 commit comments

Comments
 (0)