fixed project problems

This commit is contained in:
kima 2023-06-13 23:37:35 +02:00
parent 1c517a99f2
commit ea812e0b67
4 changed files with 74 additions and 75 deletions

View File

@ -54,11 +54,6 @@ Future loginApi({
"content-type": "application/x-www-form-urlencoded", "content-type": "application/x-www-form-urlencoded",
}; };
String nonceStr = await Provider.of<KretaClient>(context, listen: false)
.getAPI(KretaAPI.nonce, json: false);
Nonce nonce = getNonce(nonceStr, username, instituteCode);
Map? res = await Provider.of<KretaClient>(context, listen: false) Map? res = await Provider.of<KretaClient>(context, listen: false)
.postAPI(KretaAPI.login, .postAPI(KretaAPI.login,
headers: headers, headers: headers,

View File

@ -4,7 +4,6 @@ import 'dart:ui';
import 'package:filcnaplo/api/providers/database_provider.dart'; import 'package:filcnaplo/api/providers/database_provider.dart';
import 'package:filcnaplo/api/providers/status_provider.dart'; import 'package:filcnaplo/api/providers/status_provider.dart';
import 'package:filcnaplo/api/providers/user_provider.dart'; import 'package:filcnaplo/api/providers/user_provider.dart';
import 'package:filcnaplo/database/init.dart';
import 'package:filcnaplo/models/settings.dart'; import 'package:filcnaplo/models/settings.dart';
import 'package:filcnaplo/helpers/notification_helper.i18n.dart'; import 'package:filcnaplo/helpers/notification_helper.i18n.dart';
import 'package:filcnaplo_kreta_api/client/client.dart'; import 'package:filcnaplo_kreta_api/client/client.dart';
@ -19,7 +18,6 @@ class NotificationsHelper {
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin(); FlutterLocalNotificationsPlugin();
DatabaseProvider database = DatabaseProvider(); DatabaseProvider database = DatabaseProvider();
var db = await initDB(database);
await database.init(); await database.init();
SettingsProvider settingsProvider = SettingsProvider settingsProvider =
await database.query.getSettings(database); await database.query.getSettings(database);
@ -45,14 +43,15 @@ class NotificationsHelper {
// loop through grades and see which hasn't been seen yet // loop through grades and see which hasn't been seen yet
for (Grade grade in grades) { for (Grade grade in grades) {
// if the grade was added over a week ago, don't show it to avoid notification spam // if the grade was added over a week ago, don't show it to avoid notification spam
if (grade.seenDate.isAfter(lastSeenGrade) && grade.date.difference(DateTime.now()).inDays * -1 < 7) { if (grade.seenDate.isAfter(lastSeenGrade) &&
grade.date.difference(DateTime.now()).inDays * -1 < 7) {
// send notificiation about new grade // send notificiation about new grade
const AndroidNotificationDetails androidNotificationDetails = const AndroidNotificationDetails androidNotificationDetails =
AndroidNotificationDetails('GRADES', 'Jegyek', AndroidNotificationDetails('GRADES', 'Jegyek',
channelDescription: 'Értesítés jegyek beírásakor', channelDescription: 'Értesítés jegyek beírásakor',
importance: Importance.max, importance: Importance.max,
priority: Priority.max, priority: Priority.max,
color: const Color(0xFF3D7BF4), color: Color(0xFF3D7BF4),
ticker: 'Jegyek'); ticker: 'Jegyek');
const NotificationDetails notificationDetails = const NotificationDetails notificationDetails =
NotificationDetails(android: androidNotificationDetails); NotificationDetails(android: androidNotificationDetails);

View File

@ -6,7 +6,6 @@ import 'package:filcnaplo/api/providers/database_provider.dart';
import 'package:filcnaplo/database/init.dart'; import 'package:filcnaplo/database/init.dart';
import 'package:filcnaplo/helpers/notification_helper.dart'; import 'package:filcnaplo/helpers/notification_helper.dart';
import 'package:filcnaplo/models/settings.dart'; import 'package:filcnaplo/models/settings.dart';
import 'package:filcnaplo_kreta_api/client/client.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:filcnaplo/app.dart'; import 'package:filcnaplo/app.dart';
@ -57,50 +56,48 @@ class Startup {
// Get permission to show notifications // Get permission to show notifications
if (Platform.isAndroid) { if (Platform.isAndroid) {
await flutterLocalNotificationsPlugin await flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation< .resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin>()! AndroidFlutterLocalNotificationsPlugin>()!
.requestPermission(); .requestPermission();
} } else if (Platform.isIOS) {
else if (Platform.isIOS) {
await flutterLocalNotificationsPlugin await flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation< .resolvePlatformSpecificImplementation<
IOSFlutterLocalNotificationsPlugin>() IOSFlutterLocalNotificationsPlugin>()
?.requestPermissions( ?.requestPermissions(
alert: false, alert: false,
badge: true, badge: true,
sound: true, sound: true,
); );
} } else if (Platform.isMacOS) {
else if (Platform.isMacOS) {
await flutterLocalNotificationsPlugin await flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation< .resolvePlatformSpecificImplementation<
MacOSFlutterLocalNotificationsPlugin>() MacOSFlutterLocalNotificationsPlugin>()
?.requestPermissions( ?.requestPermissions(
alert: false, alert: false,
badge: true, badge: true,
sound: true, sound: true,
); );
} }
// Platform specific settings // Platform specific settings
final DarwinInitializationSettings initializationSettingsDarwin = const DarwinInitializationSettings initializationSettingsDarwin =
DarwinInitializationSettings( DarwinInitializationSettings(
requestSoundPermission: true, requestSoundPermission: true,
requestBadgePermission: true, requestBadgePermission: true,
requestAlertPermission: false, requestAlertPermission: false,
); );
const AndroidInitializationSettings initializationSettingsAndroid = const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('ic_notification'); AndroidInitializationSettings('ic_notification');
final InitializationSettings initializationSettings = InitializationSettings( const InitializationSettings initializationSettings =
android: initializationSettingsAndroid, InitializationSettings(
iOS: initializationSettingsDarwin, android: initializationSettingsAndroid,
macOS: initializationSettingsDarwin iOS: initializationSettingsDarwin,
); macOS: initializationSettingsDarwin);
// Initialize notifications // Initialize notifications
await flutterLocalNotificationsPlugin.initialize( await flutterLocalNotificationsPlugin.initialize(
initializationSettings, initializationSettings,
); );
} }
} }
@ -129,36 +126,44 @@ Widget errorBuilder(FlutterErrorDetails details) {
return Container(); return Container();
}); });
} }
Future<void> initPlatformState() async {
// Configure BackgroundFetch. Future<void> initPlatformState() async {
int status = await BackgroundFetch.configure(BackgroundFetchConfig( // Configure BackgroundFetch.
minimumFetchInterval: 15, int status = await BackgroundFetch.configure(
stopOnTerminate: false, BackgroundFetchConfig(
enableHeadless: true, minimumFetchInterval: 15,
requiresBatteryNotLow: false, stopOnTerminate: false,
requiresCharging: false, enableHeadless: true,
requiresStorageNotLow: false, requiresBatteryNotLow: false,
requiresDeviceIdle: false, requiresCharging: false,
requiredNetworkType: NetworkType.ANY, requiresStorageNotLow: false,
startOnBoot: true requiresDeviceIdle: false,
), (String taskId) async { // <-- Event handler requiredNetworkType: NetworkType.ANY,
startOnBoot: true), (String taskId) async {
// <-- Event handler
if (kDebugMode) {
print("[BackgroundFetch] Event received $taskId"); print("[BackgroundFetch] Event received $taskId");
NotificationsHelper().backgroundJob(); }
BackgroundFetch.finish(taskId); NotificationsHelper().backgroundJob();
}, (String taskId) async { // <-- Task timeout handler. BackgroundFetch.finish(taskId);
}, (String taskId) async {
// <-- Task timeout handler.
if (kDebugMode) {
print("[BackgroundFetch] TASK TIMEOUT taskId: $taskId"); print("[BackgroundFetch] TASK TIMEOUT taskId: $taskId");
BackgroundFetch.finish(taskId); }
}); BackgroundFetch.finish(taskId);
});
if (kDebugMode) {
print('[BackgroundFetch] configure success: $status'); print('[BackgroundFetch] configure success: $status');
BackgroundFetch.scheduleTask(TaskConfig(
taskId: "com.transistorsoft.refilcnotification",
delay: 900000, // 15 minutes
periodic: true,
forceAlarmManager: true,
stopOnTerminate: false,
enableHeadless: true
));
} }
BackgroundFetch.scheduleTask(TaskConfig(
taskId: "com.transistorsoft.refilcnotification",
delay: 900000, // 15 minutes
periodic: true,
forceAlarmManager: true,
stopOnTerminate: false,
enableHeadless: true));
}
@pragma('vm:entry-point') @pragma('vm:entry-point')
void backgroundHeadlessTask(HeadlessTask task) { void backgroundHeadlessTask(HeadlessTask task) {
@ -170,7 +175,7 @@ void backgroundHeadlessTask(HeadlessTask task) {
} }
BackgroundFetch.finish(taskId); BackgroundFetch.finish(taskId);
return; return;
} }
if (kDebugMode) { if (kDebugMode) {
print('[BackgroundFetch] Headless event received.'); print('[BackgroundFetch] Headless event received.');
} }

View File

@ -58,7 +58,7 @@ class _LiveCardState extends State<LiveCard> {
key: const Key('livecard.summary'), key: const Key('livecard.summary'),
title: '', title: '',
icon: FeatherIcons.arrowRight, icon: FeatherIcons.arrowRight,
description: Text(''), description: const Text(''),
onTap: () => Navigator.of(context).push( onTap: () => Navigator.of(context).push(
MaterialPageRoute( MaterialPageRoute(
builder: (BuildContext context) => const SummaryScreen( builder: (BuildContext context) => const SummaryScreen(