fix notifications
This commit is contained in:
parent
88daf43c3a
commit
51ececc34a
@ -67,7 +67,11 @@ const userDataDB = DatabaseStruct("user_data", {
|
|||||||
// renamed teachers // non kreta data
|
// renamed teachers // non kreta data
|
||||||
"renamed_teachers": String,
|
"renamed_teachers": String,
|
||||||
// "subject_lesson_count": String, // non kreta data
|
// "subject_lesson_count": String, // non kreta data
|
||||||
|
// notifications and surprise grades // non kreta data
|
||||||
"last_seen_grade": int,
|
"last_seen_grade": int,
|
||||||
|
"last_seen_absence": int,
|
||||||
|
"last_seen_message": int,
|
||||||
|
"last_seen_lesson": int,
|
||||||
// goal planning // non kreta data
|
// goal planning // non kreta data
|
||||||
"goal_plans": String,
|
"goal_plans": String,
|
||||||
"goal_averages": String,
|
"goal_averages": String,
|
||||||
@ -131,6 +135,9 @@ Future<Database> initDB(DatabaseProvider database) async {
|
|||||||
"renamed_teachers": "{}",
|
"renamed_teachers": "{}",
|
||||||
// "subject_lesson_count": "{}", // non kreta data
|
// "subject_lesson_count": "{}", // non kreta data
|
||||||
"last_seen_grade": 0,
|
"last_seen_grade": 0,
|
||||||
|
"last_seen_absence": 0,
|
||||||
|
"last_seen_message": 0,
|
||||||
|
"last_seen_lesson": 0,
|
||||||
// goal planning // non kreta data
|
// goal planning // non kreta data
|
||||||
"goal_plans": "{}",
|
"goal_plans": "{}",
|
||||||
"goal_averages": "{}",
|
"goal_averages": "{}",
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'package:refilc/api/providers/database_provider.dart';
|
import 'package:refilc/api/providers/database_provider.dart';
|
||||||
import 'package:refilc/models/linked_account.dart';
|
import 'package:refilc/models/linked_account.dart';
|
||||||
|
import 'package:refilc/helpers/notification_helper.dart';
|
||||||
import 'package:refilc/models/self_note.dart';
|
import 'package:refilc/models/self_note.dart';
|
||||||
import 'package:refilc/models/subject_lesson_count.dart';
|
import 'package:refilc/models/subject_lesson_count.dart';
|
||||||
import 'package:refilc/models/user.dart';
|
import 'package:refilc/models/user.dart';
|
||||||
@ -213,11 +214,11 @@ class UserDatabaseQuery {
|
|||||||
return lessonCount;
|
return lessonCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<DateTime> lastSeenGrade({required String userId}) async {
|
Future<DateTime> lastSeen({required String userId, required LastSeenCategory category}) async {
|
||||||
List<Map> userData =
|
List<Map> userData =
|
||||||
await db.query("user_data", where: "id = ?", whereArgs: [userId]);
|
await db.query("user_data", where: "id = ?", whereArgs: [userId]);
|
||||||
if (userData.isEmpty) return DateTime(0);
|
if (userData.isEmpty) return DateTime(0);
|
||||||
int? lastSeenDate = userData.elementAt(0)["last_seen_grade"] as int?;
|
int? lastSeenDate = userData.elementAt(0)["last_seen_${category.name}"] as int?;
|
||||||
if (lastSeenDate == null) return DateTime(0);
|
if (lastSeenDate == null) return DateTime(0);
|
||||||
DateTime lastSeen = DateTime.fromMillisecondsSinceEpoch(lastSeenDate);
|
DateTime lastSeen = DateTime.fromMillisecondsSinceEpoch(lastSeenDate);
|
||||||
return lastSeen;
|
return lastSeen;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'package:refilc/models/linked_account.dart';
|
import 'package:refilc/models/linked_account.dart';
|
||||||
|
import 'package:refilc/helpers/notification_helper.dart';
|
||||||
import 'package:refilc/models/self_note.dart';
|
import 'package:refilc/models/self_note.dart';
|
||||||
import 'package:refilc/models/subject_lesson_count.dart';
|
import 'package:refilc/models/subject_lesson_count.dart';
|
||||||
import 'package:refilc_kreta_api/models/week.dart';
|
import 'package:refilc_kreta_api/models/week.dart';
|
||||||
@ -129,10 +130,10 @@ class UserDatabaseStore {
|
|||||||
where: "id = ?", whereArgs: [userId]);
|
where: "id = ?", whereArgs: [userId]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> storeLastSeenGrade(DateTime date,
|
Future<void> storeLastSeen(DateTime date,
|
||||||
{required String userId}) async {
|
{required String userId, required LastSeenCategory category}) async {
|
||||||
int lastSeenDate = date.millisecondsSinceEpoch;
|
int lastSeenDate = date.millisecondsSinceEpoch;
|
||||||
await db.update("user_data", {"last_seen_grade": lastSeenDate},
|
await db.update("user_data", {"last_seen_${category.name}": lastSeenDate},
|
||||||
where: "id = ?", whereArgs: [userId]);
|
where: "id = ?", whereArgs: [userId]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,5 @@
|
|||||||
import 'package:i18n_extension/i18n_extension.dart';
|
import 'package:i18n_extension/i18n_extension.dart';
|
||||||
|
import 'package:refilc/api/providers/database_provider.dart';
|
||||||
|
|
||||||
extension Localization on String {
|
extension Localization on String {
|
||||||
static final _t = Translations.byLocale("hu_hu") +
|
static final _t = Translations.byLocale("hu_hu") +
|
||||||
@ -43,8 +44,19 @@ extension Localization on String {
|
|||||||
"body_lesson_substituted_multiuser": "(%s) Lektion Nr. %s (%s) wird am %s durch %s ersetzt"
|
"body_lesson_substituted_multiuser": "(%s) Lektion Nr. %s (%s) wird am %s durch %s ersetzt"
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
String get i18n {
|
||||||
|
// very hacky way to get app language in notifications
|
||||||
|
// i18n does not like being in background functions (it cannot retrieve locale sometimes)
|
||||||
|
final DatabaseProvider _databaseProvider = DatabaseProvider();
|
||||||
|
_databaseProvider.init().then((value) {
|
||||||
|
_databaseProvider.query.getSettings(_databaseProvider).then((settings) {
|
||||||
|
return localize(this, _t, locale: "${settings.language}_${settings.language.toUpperCase()}");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
String get i18n => localize(this, _t);
|
|
||||||
|
return localize(this, _t);
|
||||||
|
}
|
||||||
String fill(List<Object> params) => localizeFill(this, params);
|
String fill(List<Object> params) => localizeFill(this, params);
|
||||||
String plural(int value) => localizePlural(value, this, _t);
|
String plural(int value) => localizePlural(value, this, _t);
|
||||||
String version(Object modifier) => localizeVersion(modifier, this, _t);
|
String version(Object modifier) => localizeVersion(modifier, this, _t);
|
||||||
|
@ -50,6 +50,7 @@ class Absence {
|
|||||||
DateTime lessonStart;
|
DateTime lessonStart;
|
||||||
DateTime lessonEnd;
|
DateTime lessonEnd;
|
||||||
int? lessonIndex;
|
int? lessonIndex;
|
||||||
|
bool isSeen = json["isSeen"] ?? false;
|
||||||
if (json["Ora"] != null) {
|
if (json["Ora"] != null) {
|
||||||
lessonStart = json["Ora"]["KezdoDatum"] != null
|
lessonStart = json["Ora"]["KezdoDatum"] != null
|
||||||
? DateTime.parse(json["Ora"]["KezdoDatum"]).toLocal()
|
? DateTime.parse(json["Ora"]["KezdoDatum"]).toLocal()
|
||||||
@ -62,7 +63,6 @@ class Absence {
|
|||||||
lessonStart = DateTime(0);
|
lessonStart = DateTime(0);
|
||||||
lessonEnd = DateTime(0);
|
lessonEnd = DateTime(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Absence(
|
return Absence(
|
||||||
id: json["Uid"],
|
id: json["Uid"],
|
||||||
date: json["Datum"] != null
|
date: json["Datum"] != null
|
||||||
@ -89,10 +89,29 @@ class Absence {
|
|||||||
lessonIndex: lessonIndex,
|
lessonIndex: lessonIndex,
|
||||||
group:
|
group:
|
||||||
json["OsztalyCsoport"] != null ? json["OsztalyCsoport"]["Uid"] : "",
|
json["OsztalyCsoport"] != null ? json["OsztalyCsoport"]["Uid"] : "",
|
||||||
isSeen: false,
|
isSeen: json["isSeen"] ?? false,
|
||||||
json: json,
|
json: json,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
return {
|
||||||
|
"id": id,
|
||||||
|
"date": date.toIso8601String(),
|
||||||
|
"delay": delay,
|
||||||
|
"submitDate": submitDate.toIso8601String(),
|
||||||
|
"teacher": teacher,
|
||||||
|
"state": state.toString().split('.').last,
|
||||||
|
"justification": justification,
|
||||||
|
"type": type,
|
||||||
|
"mode": mode,
|
||||||
|
"subject": subject,
|
||||||
|
"lessonStart": lessonStart.toIso8601String(),
|
||||||
|
"lessonEnd": lessonEnd.toIso8601String(),
|
||||||
|
"lessonIndex": lessonIndex,
|
||||||
|
"group": group,
|
||||||
|
"isSeen": isSeen,
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Justification { excused, unexcused, pending }
|
enum Justification { excused, unexcused, pending }
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import 'package:refilc/api/providers/user_provider.dart';
|
import 'package:refilc/api/providers/user_provider.dart';
|
||||||
import 'package:refilc/api/providers/database_provider.dart';
|
import 'package:refilc/api/providers/database_provider.dart';
|
||||||
|
import 'package:refilc/helpers/notification_helper.dart';
|
||||||
import 'package:refilc/models/settings.dart';
|
import 'package:refilc/models/settings.dart';
|
||||||
import 'package:refilc/models/user.dart';
|
import 'package:refilc/models/user.dart';
|
||||||
import 'package:refilc_kreta_api/client/api.dart';
|
import 'package:refilc_kreta_api/client/api.dart';
|
||||||
@ -49,7 +50,7 @@ class GradeProvider with ChangeNotifier {
|
|||||||
String? userId = _user.id;
|
String? userId = _user.id;
|
||||||
if (userId != null) {
|
if (userId != null) {
|
||||||
final userStore = _database.userStore;
|
final userStore = _database.userStore;
|
||||||
userStore.storeLastSeenGrade(DateTime.now(), userId: userId);
|
userStore.storeLastSeen(DateTime.now(), userId: userId, category: LastSeenCategory.grade);
|
||||||
_lastSeen = DateTime.now();
|
_lastSeen = DateTime.now();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -58,7 +59,7 @@ class GradeProvider with ChangeNotifier {
|
|||||||
String? userId = _user.id;
|
String? userId = _user.id;
|
||||||
if (userId != null) {
|
if (userId != null) {
|
||||||
final userStore = _database.userStore;
|
final userStore = _database.userStore;
|
||||||
userStore.storeLastSeenGrade(DateTime(1969), userId: userId);
|
userStore.storeLastSeen(DateTime(1969), userId: userId, category: LastSeenCategory.grade);
|
||||||
_lastSeen = DateTime(1969);
|
_lastSeen = DateTime(1969);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -74,7 +75,7 @@ class GradeProvider with ChangeNotifier {
|
|||||||
await convertBySettings();
|
await convertBySettings();
|
||||||
_groupAvg = await userQuery.getGroupAverages(userId: userId);
|
_groupAvg = await userQuery.getGroupAverages(userId: userId);
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
DateTime lastSeenDB = await userQuery.lastSeenGrade(userId: userId);
|
DateTime lastSeenDB = await userQuery.lastSeen(userId: userId, category: LastSeenCategory.grade);
|
||||||
if (lastSeenDB.millisecondsSinceEpoch == 0 ||
|
if (lastSeenDB.millisecondsSinceEpoch == 0 ||
|
||||||
lastSeenDB.year == 0 ||
|
lastSeenDB.year == 0 ||
|
||||||
!_settings.gradeOpeningFun) {
|
!_settings.gradeOpeningFun) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user