Online tracking, deviceidentityservice

This commit is contained in:
2026-06-23 15:21:20 +02:00
parent 65b355edd9
commit aa78c7bb6f
13 changed files with 850 additions and 33 deletions
@@ -6,6 +6,7 @@ import 'package:intl/intl.dart';
import 'package:latlong2/latlong.dart';
import 'package:share_plus/share_plus.dart';
import 'package:terepi_seged/services/project_service.dart';
import 'package:terepi_seged/services/track_sync_service.dart';
import '../../../../services/location_source.dart';
import '../../../../services/phone_gps_source.dart';
@@ -150,6 +151,20 @@ class TrackingController extends GetxController {
callback: startTrackingCallback,
);
if (!(currentTrack.value?.isLocalOnly ?? true)) {
TrackSyncService.to
.createRemoteTrack(currentTrack.value!)
.then((supabaseId) async {
if (supabaseId == null) return;
final updated = currentTrack.value!.copyWith(supabaseId: supabaseId);
await _db.updateTrack(updated);
currentTrack.value = updated;
TrackSyncService.to.startSession(updated);
});
} else {
TrackSyncService.to.startSession(currentTrack.value!);
}
// GPS stream feliratkozás
_positionSub = _source!.positionStream.listen(
_onPosition,
@@ -207,6 +222,7 @@ class TrackingController extends GetxController {
pointCount: livePoints.length,
);
await _db.updateTrack(finished);
await TrackSyncService.to.stopSession(finished);
currentTrack.value = finished;
}
@@ -236,7 +252,7 @@ class TrackingController extends GetxController {
try {
final path = await _exporter.export(track);
await Share.shareXFiles([XFile(path)],
subject: 'Nyomvonal: ${track.name}');
subject: 'Nyomvonal: ${track.name}.gpx');
} catch (e) {
Get.snackbar('Export hiba', e.toString(),
backgroundColor: Colors.red, colorText: Colors.white);
@@ -289,6 +305,8 @@ class TrackingController extends GetxController {
);
await _db.addPoint(point, _accumulatedDistance);
TrackSyncService.to.onNewPoint(point);
_lastPoint = point;
// UI frissítés