import 'dart:async'; import 'package:comunes_flutter/comunes_flutter.dart'; import 'package:fires_flutter/models/yourLocationPersist.dart'; import 'package:flutter/material.dart'; import 'package:flutter_simple_dependency_injection/injector.dart'; import 'package:redux/redux.dart'; import 'package:sentry/sentry.dart'; import 'firebaseMessagingConf.dart'; import 'firesApp.dart'; import 'globals.dart' as globals; import 'models/appState.dart'; import 'models/firesApi.dart'; import 'redux/fetchDataMiddleware.dart'; import 'redux/reducers.dart'; Future> loadSecrets() async { return await SecretLoader(secretPath: 'assets/private-settings.json').load(); } void mainCommon(List> otherMiddleware) { final injector = Injector.getInjector(); injector.map((i) => new FiresApi(), isSingleton: true); loadSecrets().then((secrets) { final store = new Store(appStateReducer, initialState: new AppState( gmapKey: secrets['gmapKey'], firesApiKey: secrets['firesApiKey'], firesApiUrl: secrets['firesApiUrl'] + "api/v1/"), middleware: List.from(otherMiddleware) ..add(fetchYourLocationsMiddleware)); injector.map((i) => store.state.firesApiUrl, key: "firesApiUrl"); injector.map((i) => store.state.firesApiKey, key: "firesApiKey"); injector.map((i) => store.state.gmapKey, key: "gmapKey"); VoidCallback mainFn = () { loadYourLocations().then((yl) { firebaseConfig(store); // Run baby run! runApp(new FiresApp(store)); }); }; if (!globals.isDevelopment) // Run in production with sentry catch main(mainFn, secrets['sentryDSN']); else mainFn(); // Listen to store changes, and re-render when the state is updated store.onChange.listen((state) { // print('Store onChange'); }); }); } main(mainFn, key) async { SentryClient sentry = new SentryClient(dsn: key); mainFn(); try {} catch (error, stackTrace) { await sentry.captureException( exception: error, stackTrace: stackTrace, ); } }