initial
This commit is contained in:
65
lib/appflow/controller/initial_start.dart
Normal file
65
lib/appflow/controller/initial_start.dart
Normal file
@@ -0,0 +1,65 @@
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user