Files
HiddingselAppOriginal/lib/appflow/controller/initial_start.dart
2026-02-13 15:53:22 +01:00

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();
}
}