Moved method validateJsonSchema()
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m5s
Pull Request Pipeline / lint (pull_request) Successful in 2m6s

This commit is contained in:
2025-11-22 00:47:44 +01:00
parent 70307016b3
commit 2ebd4274f0
2 changed files with 25 additions and 28 deletions

View File

@@ -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<SettingsView> createState() => _SettingsViewState();
static Future<bool> 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<SettingsView> {

View File

@@ -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<String, dynamic> jsonData =
json.decode(jsonString) as Map<String, dynamic>;
@@ -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<bool> _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;
}
}
}