import 'package:flutter/material.dart'; import 'package:manager_api_new/api.dart'; import 'package:mymuseum_visitapp/Models/articleRead.dart'; import 'package:mymuseum_visitapp/Services/statisticsService.dart'; import 'package:mymuseum_visitapp/Models/beaconSection.dart'; import 'package:mymuseum_visitapp/Models/resourceModel.dart'; import 'package:mymuseum_visitapp/client.dart'; import 'package:mymuseum_visitapp/constants.dart'; class VisitAppContext with ChangeNotifier { Client clientAPI = Client(kApiBaseUrl); String? id = ""; String? language = ""; String? instanceId = kInstanceId; String? apiKey; List? configurations; ConfigurationDTO? configuration; List? sectionIds; // Use to valid QR code found List? beaconSections; List? currentSections; List readSections = []; bool isContentCurrentlyShown = false; bool isScanningBeacons = false; bool isScanBeaconAlreadyAllowed = false; bool isMaximizeTextSize = false; Size? puzzleSize; List audiosNotWorking = []; ApplicationInstanceDTO? applicationInstanceDTO; // null = assistant non activé StatisticsService? statisticsService; /// Retourne l'AppConfigurationLink de l'instance mobile pour la configuration courante. /// Contient roundedValue, isSectionImageBackground, etc. AppConfigurationLink? get currentAppConfigurationLink { if (applicationInstanceDTO == null || configuration == null) return null; return applicationInstanceDTO!.configurations ?.where((c) => c.configurationId == configuration!.id) .firstOrNull; } bool? isAdmin = false; bool? isAllLanguages = false; String? localPath; VisitAppContext({this.language, this.id, this.configuration, this.isAdmin, this.isAllLanguages, this.instanceId, this.apiKey}); Map toMap() { return { 'id': id, 'instanceId': instanceId, 'language': language, 'isAdmin': isAdmin != null ? isAdmin! ? 1 : 0 : 0, 'isAllLanguages': isAllLanguages != null ? isAllLanguages! ? 1 : 0 : 0, 'apiKey': apiKey, }; } factory VisitAppContext.fromJson(Map json) { return VisitAppContext( id: json['id'] as String, instanceId: json['instanceId'] as String, language: json['language'] as String, configuration: json['configuration'] == null ? null : ConfigurationDTO.fromJson(json['configuration']), apiKey: json['apiKey'] as String?, ); } @override String toString() { return 'VisitAppContext{id: $id, instanceId: $instanceId, language: $language, configuration: $configuration, beaconSections: $beaconSections, isAdmin: $isAdmin}'; } }