import 'dart:convert'; import 'dart:io'; import 'package:manager_api/api.dart'; import 'package:mymuseum_visitapp/Helpers/DatabaseHelper.dart'; import 'package:mymuseum_visitapp/Helpers/networkCheck.dart'; import 'package:mymuseum_visitapp/Models/resourceModel.dart'; import 'package:mymuseum_visitapp/Models/visitContext.dart'; import 'package:mymuseum_visitapp/client.dart'; class ApiService { static Future?> getConfigurations(Client client, VisitAppContext? visitAppContext) async { try { List? configurations; bool isOnline = await hasNetwork(); if(isOnline) { configurations = await client.configurationApi!.configurationGet(instanceId: visitAppContext?.instanceId); } return configurations; } catch (e) { print(e); print("IN CATCH"); return []; } } static Future?> getAllSections(Client client, String configurationId) async { try { bool isOnline = await hasNetwork(); if(isOnline) { List? sections = await client.sectionApi!.sectionGetFromConfiguration(configurationId); return sections; } else { return []; // TODO return local list.. } } catch (e) { print(e); print("IN CATCH"); return []; } } static Future getAndDownloadImage(Client client, ImageDTO imageDTO) async { try { bool isOnline = await hasNetwork(); if(isOnline) { var source = imageDTO.source_; if(imageDTO.source_!.contains("localhost:5000")) { source = imageDTO.source_!.replaceAll("http://localhost:5000", client.apiApi!.basePath); } HttpClient client2 = HttpClient(); var _downloadData = []; client2.getUrl(Uri.parse(source!)) .then((HttpClientRequest request) { return request.close(); }) .then((HttpClientResponse response) { response.listen((d) => _downloadData.addAll(d), onDone: () async { final base64Str = base64.encode(_downloadData); ResourceModel resourceModel = ResourceModel(id: imageDTO.resourceId, data: base64Str, type: ResourceType.Image); await DatabaseHelper.instance.insert(DatabaseTableType.resources, resourceModel.toMap()); //var test = base64.decode(base64Str); //return base64Str; /*setState(() { base64TEST = base64Str; });*/ } ); }); //return file; } else { //return null; } } catch (e) { print(e); print("IN CATCH"); //return []; } } }