init refilc-plus
This commit is contained in:
commit
6edc2029bd
37 changed files with 6988 additions and 0 deletions
68
lib/providers/goal_provider.dart
Normal file
68
lib/providers/goal_provider.dart
Normal file
|
@ -0,0 +1,68 @@
|
|||
import 'package:refilc/api/providers/database_provider.dart';
|
||||
import 'package:refilc/api/providers/user_provider.dart';
|
||||
import 'package:refilc_kreta_api/models/subject.dart';
|
||||
import 'package:refilc_kreta_api/providers/grade_provider.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
class GoalProvider extends ChangeNotifier {
|
||||
final DatabaseProvider _db;
|
||||
final UserProvider _user;
|
||||
|
||||
late bool _done = false;
|
||||
late GradeSubject? _doneSubject;
|
||||
|
||||
bool get hasDoneGoals => _done;
|
||||
GradeSubject? get doneSubject => _doneSubject;
|
||||
|
||||
GoalProvider({
|
||||
required DatabaseProvider database,
|
||||
required UserProvider user,
|
||||
}) : _db = database,
|
||||
_user = user;
|
||||
|
||||
Future<void> fetchDone({required GradeProvider gradeProvider}) async {
|
||||
var goalAvgs = await _db.userQuery.subjectGoalAverages(userId: _user.id!);
|
||||
var beforeAvgs = await _db.userQuery.subjectGoalBefores(userId: _user.id!);
|
||||
|
||||
List<GradeSubject> subjects = gradeProvider.grades
|
||||
.map((e) => e.subject)
|
||||
.toSet()
|
||||
.toList()
|
||||
..sort((a, b) => a.name.compareTo(b.name));
|
||||
|
||||
goalAvgs.forEach((k, v) {
|
||||
if (beforeAvgs[k] == v) {
|
||||
_done = true;
|
||||
_doneSubject = subjects.where((e) => e.id == k).toList()[0];
|
||||
|
||||
notifyListeners();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void lock() {
|
||||
_done = false;
|
||||
_doneSubject = null;
|
||||
}
|
||||
|
||||
Future<void> clearGoal(GradeSubject subject) async {
|
||||
final goalPlans = await _db.userQuery.subjectGoalPlans(userId: _user.id!);
|
||||
final goalAvgs = await _db.userQuery.subjectGoalAverages(userId: _user.id!);
|
||||
final goalBeforeGrades =
|
||||
await _db.userQuery.subjectGoalBefores(userId: _user.id!);
|
||||
final goalPinDates =
|
||||
await _db.userQuery.subjectGoalPinDates(userId: _user.id!);
|
||||
|
||||
goalPlans.remove(subject.id);
|
||||
goalAvgs.remove(subject.id);
|
||||
goalBeforeGrades.remove(subject.id);
|
||||
goalPinDates.remove(subject.id);
|
||||
|
||||
await _db.userStore.storeSubjectGoalPlans(goalPlans, userId: _user.id!);
|
||||
await _db.userStore.storeSubjectGoalAverages(goalAvgs, userId: _user.id!);
|
||||
await _db.userStore
|
||||
.storeSubjectGoalBefores(goalBeforeGrades, userId: _user.id!);
|
||||
await _db.userStore
|
||||
.storeSubjectGoalPinDates(goalPinDates, userId: _user.id!);
|
||||
}
|
||||
}
|
31
lib/providers/plus_provider.dart
Normal file
31
lib/providers/plus_provider.dart
Normal file
|
@ -0,0 +1,31 @@
|
|||
import 'package:refilc/models/settings.dart';
|
||||
import 'package:refilc_plus/api/auth.dart';
|
||||
import 'package:refilc_plus/models/premium_scopes.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
class PlusProvider extends ChangeNotifier {
|
||||
final SettingsProvider _settings;
|
||||
List<String> get scopes => _settings.premiumScopes;
|
||||
// bool hasScope(String scope) => false;
|
||||
bool hasScope(String scope) =>
|
||||
scopes.contains(scope) || scopes.contains(PremiumScopes.all);
|
||||
String get accessToken => _settings.premiumAccessToken;
|
||||
String get login => _settings.premiumLogin;
|
||||
bool get hasPremium =>
|
||||
_settings.plusSessionId != "" && _settings.premiumScopes.isNotEmpty;
|
||||
|
||||
late final PremiumAuth _auth;
|
||||
PremiumAuth get auth => _auth;
|
||||
|
||||
PlusProvider({required SettingsProvider settings}) : _settings = settings {
|
||||
_auth = PremiumAuth(settings: _settings);
|
||||
_settings.addListener(() {
|
||||
notifyListeners();
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> activate({bool removePremium = false}) async {
|
||||
await _auth.refreshAuth(removePremium: removePremium);
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue