From 2ebd4274f05b22bde0dcb9f927de2e55d49f3f1a Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Sat, 22 Nov 2025 00:47:44 +0100 Subject: [PATCH] Moved method validateJsonSchema() --- .../views/main_menu/settings_view.dart | 25 ----------------- lib/services/data_transfer_service.dart | 28 +++++++++++++++++-- 2 files changed, 25 insertions(+), 28 deletions(-) diff --git a/lib/presentation/views/main_menu/settings_view.dart b/lib/presentation/views/main_menu/settings_view.dart index 70f7663..6ebb7fb 100644 --- a/lib/presentation/views/main_menu/settings_view.dart +++ b/lib/presentation/views/main_menu/settings_view.dart @@ -1,39 +1,14 @@ -import 'dart:convert'; - import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:game_tracker/core/custom_theme.dart'; import 'package:game_tracker/core/enums.dart'; import 'package:game_tracker/presentation/widgets/tiles/settings_list_tile.dart'; import 'package:game_tracker/services/data_transfer_service.dart'; -import 'package:json_schema/json_schema.dart'; class SettingsView extends StatefulWidget { const SettingsView({super.key}); @override State createState() => _SettingsViewState(); - - static Future validateJsonSchema(String jsonString) async { - final String schemaString; - - schemaString = await rootBundle.loadString('assets/schema.json'); - - try { - final schema = JsonSchema.create(json.decode(schemaString)); - final jsonData = json.decode(jsonString); - final result = schema.validate(jsonData); - - if (result.isValid) { - return true; - } - return false; - } catch (e, stack) { - print('[validateJsonSchema] $e'); - print(stack); - return false; - } - } } class _SettingsViewState extends State { diff --git a/lib/services/data_transfer_service.dart b/lib/services/data_transfer_service.dart index 13eb658..eaa9633 100644 --- a/lib/services/data_transfer_service.dart +++ b/lib/services/data_transfer_service.dart @@ -1,15 +1,15 @@ import 'dart:convert'; import 'dart:io'; -import 'dart:typed_data'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:game_tracker/core/enums.dart'; import 'package:game_tracker/data/db/database.dart'; import 'package:game_tracker/data/dto/game.dart'; import 'package:game_tracker/data/dto/group.dart'; import 'package:game_tracker/data/dto/player.dart'; -import 'package:game_tracker/presentation/views/main_menu/settings_view.dart'; +import 'package:json_schema/json_schema.dart'; import 'package:provider/provider.dart'; class DataTransferService { @@ -85,7 +85,7 @@ class DataTransferService { return ImportResult.fileReadError; } - if (await SettingsView.validateJsonSchema(jsonString)) { + if (await _validateJsonSchema(jsonString)) { final Map jsonData = json.decode(jsonString) as Map; @@ -136,4 +136,26 @@ class DataTransferService { if (file.path != null) return await File(file.path!).readAsString(); return null; } + + /// Validates the given JSON string against the predefined schema. + static Future _validateJsonSchema(String jsonString) async { + final String schemaString; + + schemaString = await rootBundle.loadString('assets/schema.json'); + + try { + final schema = JsonSchema.create(json.decode(schemaString)); + final jsonData = json.decode(jsonString); + final result = schema.validate(jsonData); + + if (result.isValid) { + return true; + } + return false; + } catch (e, stack) { + print('[validateJsonSchema] $e'); + print(stack); + return false; + } + } }