Kml parser utf-8 támogatás, induláskor minimum app verzió ellenőrzése

This commit is contained in:
2026-07-09 03:43:06 +02:00
parent 1e5601a10b
commit fc31acb80f
8 changed files with 301 additions and 29 deletions
+22 -1
View File
@@ -5,6 +5,7 @@
// SQLite → imported_layers tábla (metadata)
// Supabase → Storage (megosztás, később)
import 'dart:convert';
import 'dart:io';
import 'dart:typed_data';
import 'package:file_picker/file_picker.dart';
@@ -13,6 +14,7 @@ import 'package:get/get.dart';
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart';
import 'package:terepi_seged/enums/layer_import_source_type.dart';
import 'package:terepi_seged/services/layer_sync_service.dart';
import 'package:uuid/uuid.dart';
import '../models/imported_layer.dart';
@@ -201,6 +203,23 @@ class LayerImportService extends GetxService {
}
}
/// Réteg megosztása a projekt csapatával (feltöltés a Storage-ba +
/// metaadat a terepi_seged_layers táblába).
Future<void> publishLayer(String id) async {
if (!Get.isRegistered<LayerSyncService>()) return;
final projectUuid = ProjectService.to.activeProject.value?.uuid;
if (projectUuid == null) {
throw Exception('Nincs aktív (megosztott) projekt.');
}
final metas = await AppDatabase.instance.listImportedLayers();
final meta = metas.firstWhereOrNull((m) => m.id == id);
if (meta == null) throw Exception('A réteg nem található.');
await LayerSyncService.to
.publishLayer(layer: meta, projectUuid: projectUuid);
}
Future<void> removeLayer(String id) async {
final metas = await AppDatabase.instance.listImportedLayers();
final meta = metas.firstWhereOrNull((m) => m.id == id);
@@ -259,7 +278,9 @@ class LayerImportService extends GetxService {
return _parseGeoJson(String.fromCharCodes(bytes), name, id,
isVisible: isVisible);
case 'kml':
return _kmlParser.parseKml(String.fromCharCodes(bytes), name,
// return _kmlParser.parseKml(String.fromCharCodes(bytes), name,
// id: id, isVisible: isVisible);
return _kmlParser.parseKml(KmlParser.decodeText(bytes), name,
id: id, isVisible: isVisible);
case 'kmz':
return _kmlParser.parseKmz(bytes, name, id: id, isVisible: isVisible);