Skip to content
Snippets Groups Projects
configuration.dart 10.06 KiB
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'datamodel.dart';
import 'sensorconnector.dart';
import 'databaseconnector.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';

class Configuration extends StatefulWidget {
  const Configuration({Key? key}) : super(key: key);

  @override
  State<Configuration> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<Configuration> {
  late Future<Collection> futureCollection;
  late Future<List<Collection>> futureCollections;
  late Future<List<EventType>> futureEventTypes;
  late Future<List<Device>> futureDevices;
  late Future<String> futureAuthToken;
  var database = DatabaseInstance();
  SensorConnector connector = SensorConnector();
  final ConfigurationStoreInstance configuration = ConfigurationStoreInstance();


  Future<void> dumpToFile() async{
    var date = DateTime.now().toUtc();
    var isoDate = date.toIso8601String();

    String filename =
        date.year.toString().padLeft(4, '0') +
            date.month.toString().padLeft(2, '0') +
            date.day.toString().padLeft(2, '0') +
            date.hour.toString().padLeft(2, '0') +
            date.minute.toString().padLeft(2, '0') +
            date.second.toString().padLeft(2, '0') +
            '_events.json';

    String eventsJson = await database.eventDump();

    final Directory? directory = await getExternalStorageDirectory();
    if(directory != null) {
      String filepath = join(directory.path, filename);

      final File file = File(filepath);
      await file.writeAsString(eventsJson);
      debugPrint('Stored file at: ' + filepath);
    }
  }


  Future<void> updateConfiguration() async {
    final EventStoreInstance event = EventStoreInstance();

    futureAuthToken.then((value){ //NOTE: Counterintuitive async callback function
      debugPrint("Login credentials correct! Auth Token: " + value);

      futureDevices.then((value) {
        debugPrint("Device List complete");
        configuration.devices = value;

        futureEventTypes.then((value) async {
          debugPrint("Event Types List complete");
          configuration.eventTypes = value;

          debugPrint("EventType Json: " + jsonEncode(
              configuration.eventTypes[0]));