forked from firka/student-legacy
fixed project problems
This commit is contained in:
parent
1c517a99f2
commit
ea812e0b67
@ -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,
|
||||||
|
@ -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);
|
||||||
|
@ -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';
|
||||||
@ -60,8 +59,7 @@ class Startup {
|
|||||||
.resolvePlatformSpecificImplementation<
|
.resolvePlatformSpecificImplementation<
|
||||||
AndroidFlutterLocalNotificationsPlugin>()!
|
AndroidFlutterLocalNotificationsPlugin>()!
|
||||||
.requestPermission();
|
.requestPermission();
|
||||||
}
|
} else if (Platform.isIOS) {
|
||||||
else if (Platform.isIOS) {
|
|
||||||
await flutterLocalNotificationsPlugin
|
await flutterLocalNotificationsPlugin
|
||||||
.resolvePlatformSpecificImplementation<
|
.resolvePlatformSpecificImplementation<
|
||||||
IOSFlutterLocalNotificationsPlugin>()
|
IOSFlutterLocalNotificationsPlugin>()
|
||||||
@ -70,8 +68,7 @@ class Startup {
|
|||||||
badge: true,
|
badge: true,
|
||||||
sound: true,
|
sound: true,
|
||||||
);
|
);
|
||||||
}
|
} else if (Platform.isMacOS) {
|
||||||
else if (Platform.isMacOS) {
|
|
||||||
await flutterLocalNotificationsPlugin
|
await flutterLocalNotificationsPlugin
|
||||||
.resolvePlatformSpecificImplementation<
|
.resolvePlatformSpecificImplementation<
|
||||||
MacOSFlutterLocalNotificationsPlugin>()
|
MacOSFlutterLocalNotificationsPlugin>()
|
||||||
@ -83,7 +80,7 @@ class Startup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Platform specific settings
|
// Platform specific settings
|
||||||
final DarwinInitializationSettings initializationSettingsDarwin =
|
const DarwinInitializationSettings initializationSettingsDarwin =
|
||||||
DarwinInitializationSettings(
|
DarwinInitializationSettings(
|
||||||
requestSoundPermission: true,
|
requestSoundPermission: true,
|
||||||
requestBadgePermission: true,
|
requestBadgePermission: true,
|
||||||
@ -91,11 +88,11 @@ class Startup {
|
|||||||
);
|
);
|
||||||
const AndroidInitializationSettings initializationSettingsAndroid =
|
const AndroidInitializationSettings initializationSettingsAndroid =
|
||||||
AndroidInitializationSettings('ic_notification');
|
AndroidInitializationSettings('ic_notification');
|
||||||
final InitializationSettings initializationSettings = InitializationSettings(
|
const InitializationSettings initializationSettings =
|
||||||
|
InitializationSettings(
|
||||||
android: initializationSettingsAndroid,
|
android: initializationSettingsAndroid,
|
||||||
iOS: initializationSettingsDarwin,
|
iOS: initializationSettingsDarwin,
|
||||||
macOS: initializationSettingsDarwin
|
macOS: initializationSettingsDarwin);
|
||||||
);
|
|
||||||
|
|
||||||
// Initialize notifications
|
// Initialize notifications
|
||||||
await flutterLocalNotificationsPlugin.initialize(
|
await flutterLocalNotificationsPlugin.initialize(
|
||||||
@ -129,9 +126,11 @@ Widget errorBuilder(FlutterErrorDetails details) {
|
|||||||
return Container();
|
return Container();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
Future<void> initPlatformState() async {
|
|
||||||
|
Future<void> initPlatformState() async {
|
||||||
// Configure BackgroundFetch.
|
// Configure BackgroundFetch.
|
||||||
int status = await BackgroundFetch.configure(BackgroundFetchConfig(
|
int status = await BackgroundFetch.configure(
|
||||||
|
BackgroundFetchConfig(
|
||||||
minimumFetchInterval: 15,
|
minimumFetchInterval: 15,
|
||||||
stopOnTerminate: false,
|
stopOnTerminate: false,
|
||||||
enableHeadless: true,
|
enableHeadless: true,
|
||||||
@ -140,25 +139,31 @@ Widget errorBuilder(FlutterErrorDetails details) {
|
|||||||
requiresStorageNotLow: false,
|
requiresStorageNotLow: false,
|
||||||
requiresDeviceIdle: false,
|
requiresDeviceIdle: false,
|
||||||
requiredNetworkType: NetworkType.ANY,
|
requiredNetworkType: NetworkType.ANY,
|
||||||
startOnBoot: true
|
startOnBoot: true), (String taskId) async {
|
||||||
), (String taskId) async { // <-- Event handler
|
// <-- Event handler
|
||||||
|
if (kDebugMode) {
|
||||||
print("[BackgroundFetch] Event received $taskId");
|
print("[BackgroundFetch] Event received $taskId");
|
||||||
|
}
|
||||||
NotificationsHelper().backgroundJob();
|
NotificationsHelper().backgroundJob();
|
||||||
BackgroundFetch.finish(taskId);
|
BackgroundFetch.finish(taskId);
|
||||||
}, (String taskId) async { // <-- Task timeout handler.
|
}, (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(
|
BackgroundFetch.scheduleTask(TaskConfig(
|
||||||
taskId: "com.transistorsoft.refilcnotification",
|
taskId: "com.transistorsoft.refilcnotification",
|
||||||
delay: 900000, // 15 minutes
|
delay: 900000, // 15 minutes
|
||||||
periodic: true,
|
periodic: true,
|
||||||
forceAlarmManager: true,
|
forceAlarmManager: true,
|
||||||
stopOnTerminate: false,
|
stopOnTerminate: false,
|
||||||
enableHeadless: true
|
enableHeadless: true));
|
||||||
));
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@pragma('vm:entry-point')
|
@pragma('vm:entry-point')
|
||||||
void backgroundHeadlessTask(HeadlessTask task) {
|
void backgroundHeadlessTask(HeadlessTask task) {
|
||||||
|
@ -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(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user