65 lines
2.8 KiB
Dart
65 lines
2.8 KiB
Dart
|
|
import 'package:flutter/services.dart';
|
|
import 'package:get_it/get_it.dart';
|
|
import 'package:hiddingsel_app/appflow/controller/events.dart';
|
|
import 'package:hiddingsel_app/appflow/model/pois.dart';
|
|
import 'package:hiddingsel_app/appflow/model/represented_organisations.dart';
|
|
import 'package:hiddingsel_app/constants/constant.dart';
|
|
import 'package:hiddingsel_app/appflow/model/event_organisations.dart';
|
|
import 'package:hiddingsel_app/services/storage.dart';
|
|
import 'package:hiddingsel_app/todo/scheduled_notification.dart';
|
|
|
|
import '../model/companies.dart';
|
|
import '../model/topics.dart';
|
|
import '../../services/notification.dart';
|
|
import 'package:timezone/data/latest_all.dart' as tz;
|
|
|
|
class InitialStartController {
|
|
|
|
static Future<void> ensureInitialized() async {
|
|
await initializeAlways();
|
|
|
|
SettingsConnector.getBool(SystemStrings.keyFirstTime, true).then((firstTime)
|
|
{if(firstTime) {
|
|
initializeFirstTime();
|
|
SettingsConnector.setBool(SystemStrings.keyFirstTime, false);
|
|
}});
|
|
}
|
|
|
|
static Future<void> initializeAlways() async {
|
|
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
|
|
statusBarColor: UIColors.white,
|
|
statusBarIconBrightness: Brightness.dark,
|
|
statusBarBrightness: Brightness.light,
|
|
));
|
|
|
|
//RemoteConfigConnector.initialize();
|
|
ExternalNotificationConnector.initialize();
|
|
await ScheduledNotificationConnector.initialize();
|
|
tz.initializeTimeZones();
|
|
|
|
await load<PointOfInterestModel>(SystemStrings.assetPois, PointOfInterestModel.fromJson);
|
|
await load<CompanyModel>(SystemStrings.assetCompanies, CompanyModel.fromJson);
|
|
await load<RepresentedOrganisationModel>(SystemStrings.assetRepresentedOrganisations, RepresentedOrganisationModel.fromJson);
|
|
await load<EventOrganisationModel>(SystemStrings.assetEventOrganisations, EventOrganisationModel.fromJson);
|
|
await load<PushNotificationTopicModel>(SystemStrings.assetTopics, PushNotificationTopicModel.fromJson);
|
|
|
|
EventController.scheduleNotificationsBySettings();
|
|
}
|
|
|
|
static Future<void> load<T>(asset, fromJson) async {
|
|
final jsonData = await AssetConnector.getJson(asset);
|
|
List<T> list = jsonData.map((json) => fromJson(json)).toList().cast<T>();
|
|
GetIt.I.registerSingleton<List<T>>(list);
|
|
}
|
|
|
|
static void initializeFirstTime() async {
|
|
PushNotificationTopicModel.values.forEach((e) => e.subscribe(false));
|
|
CompanyModel.values.forEach((e) => e.subscribe(false));
|
|
RepresentedOrganisationModel.values.forEach((e) => e.favorize(false));
|
|
EventOrganisationModel.values.forEach((e) => e.allowEventNotification(false));
|
|
EventOrganisationModel.values.where((e) => e.id == "garbage").forEach((e) => e.allowEventNotification(true));
|
|
EventOrganisationModel.values.where((e) => e.id == "dorfgemeinschaft").forEach((e) => e.allowEventNotification(true));
|
|
EventController.scheduleNotificationsBySettings();
|
|
}
|
|
} |