fixed premium features

This commit is contained in:
Kima
2023-05-27 10:27:09 +02:00
parent 4d6a1e2c22
commit ba52926d1f
4 changed files with 119 additions and 47 deletions

View File

@@ -2,7 +2,8 @@ import 'package:filcnaplo/api/providers/update_provider.dart';
import 'package:filcnaplo/models/settings.dart';
import 'package:filcnaplo/ui/date_widget.dart';
import 'package:filcnaplo/ui/filter/widgets/grades.dart' as grade_filter;
import 'package:filcnaplo/ui/filter/widgets/certifications.dart' as certification_filter;
import 'package:filcnaplo/ui/filter/widgets/certifications.dart'
as certification_filter;
import 'package:filcnaplo/ui/filter/widgets/messages.dart' as message_filter;
import 'package:filcnaplo/ui/filter/widgets/absences.dart' as absence_filter;
import 'package:filcnaplo/ui/filter/widgets/homework.dart' as homework_filter;
@@ -11,7 +12,8 @@ import 'package:filcnaplo/ui/filter/widgets/notes.dart' as note_filter;
import 'package:filcnaplo/ui/filter/widgets/events.dart' as event_filter;
import 'package:filcnaplo/ui/filter/widgets/lessons.dart' as lesson_filter;
import 'package:filcnaplo/ui/filter/widgets/update.dart' as update_filter;
import 'package:filcnaplo/ui/filter/widgets/missed_exams.dart' as missed_exam_filter;
import 'package:filcnaplo/ui/filter/widgets/missed_exams.dart'
as missed_exam_filter;
import 'package:filcnaplo_kreta_api/models/week.dart';
import 'package:filcnaplo_kreta_api/providers/absence_provider.dart';
import 'package:filcnaplo_kreta_api/providers/event_provider.dart';
@@ -28,11 +30,31 @@ import 'package:flutter/material.dart';
import 'package:animated_list_plus/transitions.dart';
import 'package:provider/provider.dart';
const List<FilterType> homeFilters = [FilterType.all, FilterType.grades, FilterType.messages, FilterType.absences];
const List<FilterType> homeFilters = [
FilterType.all,
FilterType.grades,
FilterType.messages,
FilterType.absences
];
enum FilterType { all, grades, newGrades, messages, absences, homework, exams, notes, events, lessons, updates, certifications, missedExams }
enum FilterType {
all,
grades,
newGrades,
messages,
absences,
homework,
exams,
notes,
events,
lessons,
updates,
certifications,
missedExams
}
Future<List<DateWidget>> getFilterWidgets(FilterType activeData, {bool absencesNoExcused = false, required BuildContext context}) async {
Future<List<DateWidget>> getFilterWidgets(FilterType activeData,
{bool absencesNoExcused = false, required BuildContext context}) async {
final gradeProvider = Provider.of<GradeProvider>(context);
final timetableProvider = Provider.of<TimetableProvider>(context);
final messageProvider = Provider.of<MessageProvider>(context);
@@ -53,7 +75,8 @@ Future<List<DateWidget>> getFilterWidgets(FilterType activeData, {bool absencesN
getFilterWidgets(FilterType.grades, context: context),
getFilterWidgets(FilterType.lessons, context: context),
getFilterWidgets(FilterType.messages, context: context),
getFilterWidgets(FilterType.absences, context: context, absencesNoExcused: true),
getFilterWidgets(FilterType.absences,
context: context, absencesNoExcused: true),
getFilterWidgets(FilterType.homework, context: context),
getFilterWidgets(FilterType.exams, context: context),
getFilterWidgets(FilterType.updates, context: context),
@@ -66,15 +89,18 @@ Future<List<DateWidget>> getFilterWidgets(FilterType activeData, {bool absencesN
// Grades
case FilterType.grades:
items = grade_filter.getWidgets(gradeProvider.grades, gradeProvider.lastSeenDate);
items = grade_filter.getWidgets(
gradeProvider.grades, gradeProvider.lastSeenDate);
if (settingsProvider.gradeOpeningFun) {
items.addAll(await getFilterWidgets(FilterType.newGrades, context: context));
items.addAll(
await getFilterWidgets(FilterType.newGrades, context: context));
}
break;
// Grades
case FilterType.newGrades:
items = grade_filter.getNewWidgets(gradeProvider.grades, gradeProvider.lastSeenDate);
items = grade_filter.getNewWidgets(
gradeProvider.grades, gradeProvider.lastSeenDate);
break;
// Certifications
@@ -93,7 +119,8 @@ Future<List<DateWidget>> getFilterWidgets(FilterType activeData, {bool absencesN
// Absences
case FilterType.absences:
items = absence_filter.getWidgets(absenceProvider.absences, noExcused: absencesNoExcused);
items = absence_filter.getWidgets(absenceProvider.absences,
noExcused: absencesNoExcused);
break;
// Homework
@@ -118,25 +145,30 @@ Future<List<DateWidget>> getFilterWidgets(FilterType activeData, {bool absencesN
// Changed Lessons
case FilterType.lessons:
items = lesson_filter.getWidgets(timetableProvider.getWeek(Week.current()) ?? []);
items = lesson_filter
.getWidgets(timetableProvider.getWeek(Week.current()) ?? []);
break;
// Updates
case FilterType.updates:
if (updateProvider.available) items = [update_filter.getWidget(updateProvider.releases.first)];
if (updateProvider.available)
items = [update_filter.getWidget(updateProvider.releases.first)];
break;
// Missed Exams
case FilterType.missedExams:
items = missed_exam_filter.getWidgets(timetableProvider.getWeek(Week.current()) ?? []);
items = missed_exam_filter
.getWidgets(timetableProvider.getWeek(Week.current()) ?? []);
break;
}
return items;
}
Widget filterItemBuilder(BuildContext context, Animation<double> animation, Widget item, int index) {
Widget filterItemBuilder(
BuildContext context, Animation<double> animation, Widget item, int index) {
if (item.key == const Key("\$premium")) {
return Provider.of<PremiumProvider>(context, listen: false).hasPremium || DateTime.now().weekday <= 5
return Provider.of<PremiumProvider>(context, listen: false).hasPremium ||
DateTime.now().weekday <= 5
? const SizedBox()
: const Padding(
padding: EdgeInsets.only(bottom: 24.0),
@@ -171,7 +203,9 @@ Widget filterItemBuilder(BuildContext context, Animation<double> animation, Widg
color: Theme.of(context).shadowColor.withOpacity(
Theme.of(context).shadowColor.opacity *
CurvedAnimation(
parent: CurvedAnimation(parent: animation, curve: Curves.easeInOutCubic),
parent: CurvedAnimation(
parent: animation,
curve: Curves.easeInOutCubic),
curve: const Interval(2 / 3, 1.0),
).value,
),