changed everything from filcnaplo to refilc finally
This commit is contained in:
137
refilc/lib/providers/third_party_provider.dart
Normal file
137
refilc/lib/providers/third_party_provider.dart
Normal file
@@ -0,0 +1,137 @@
|
||||
import 'package:extension_google_sign_in_as_googleapis_auth/extension_google_sign_in_as_googleapis_auth.dart';
|
||||
import 'package:refilc_kreta_api/controllers/timetable_controller.dart';
|
||||
import 'package:refilc_kreta_api/models/lesson.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:googleapis/calendar/v3.dart';
|
||||
import 'package:google_sign_in/google_sign_in.dart';
|
||||
|
||||
class ThirdPartyProvider with ChangeNotifier {
|
||||
late List<Event>? _googleEvents;
|
||||
// late BuildContext _context;
|
||||
|
||||
static final _googleSignIn = GoogleSignIn(scopes: [
|
||||
CalendarApi.calendarScope,
|
||||
CalendarApi.calendarEventsScope,
|
||||
]);
|
||||
|
||||
List<Event> get googleEvents => _googleEvents ?? [];
|
||||
|
||||
ThirdPartyProvider({
|
||||
required BuildContext context,
|
||||
}) {
|
||||
// _context = context;
|
||||
}
|
||||
|
||||
Future<GoogleSignInAccount?> googleSignIn() async {
|
||||
if (!await _googleSignIn.isSignedIn()) {
|
||||
return _googleSignIn.signIn();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Future<void> fetchGoogle() async {
|
||||
// try {
|
||||
// var httpClient = (await _googleSignIn.authenticatedClient())!;
|
||||
// var calendarApi = CalendarApi(httpClient);
|
||||
|
||||
// var calendarList = await calendarApi.calendarList.list();
|
||||
|
||||
// if (calendarList.items == null) return;
|
||||
// if (calendarList.items!.isEmpty) return;
|
||||
|
||||
// _googleEvents = (await calendarApi.events.list(
|
||||
// '13342d17fe1e68680c43c0c44dcb7e30cb0171cc4e4ee9ee13c9ff3082d3279c@group.calendar.google.com'))
|
||||
// .items;
|
||||
|
||||
// print(calendarList.items!
|
||||
// .map((e) => (e.id ?? 'noid') + '-' + (e.description ?? 'nodesc')));
|
||||
// print(_googleEvents!.map((e) => e.toJson()));
|
||||
// } catch (e) {
|
||||
// print(e);
|
||||
// await _googleSignIn.signOut();
|
||||
// }
|
||||
// }
|
||||
|
||||
Future<Event?> pushEvent({
|
||||
required String title,
|
||||
required String calendarId,
|
||||
required DateTime start,
|
||||
required DateTime end,
|
||||
}) async {
|
||||
try {
|
||||
var httpClient = (await _googleSignIn.authenticatedClient())!;
|
||||
var calendarApi = CalendarApi(httpClient);
|
||||
|
||||
Event event = Event(
|
||||
created: DateTime.now(),
|
||||
creator: EventCreator(self: true),
|
||||
start: EventDateTime(dateTime: start),
|
||||
end: EventDateTime(dateTime: end),
|
||||
summary: title,
|
||||
);
|
||||
|
||||
return await calendarApi.events.insert(event, calendarId);
|
||||
} catch (e) {
|
||||
if (kDebugMode) print(e);
|
||||
await _googleSignIn.signOut();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
Future<Calendar?> createCalendar({
|
||||
required String name,
|
||||
required String description,
|
||||
}) async {
|
||||
try {
|
||||
var httpClient = (await _googleSignIn.authenticatedClient())!;
|
||||
var calendarApi = CalendarApi(httpClient);
|
||||
|
||||
Calendar calendar = Calendar(
|
||||
summary: name,
|
||||
description: description,
|
||||
timeZone: 'Europe/Budapest',
|
||||
);
|
||||
|
||||
return await calendarApi.calendars.insert(calendar);
|
||||
} catch (e) {
|
||||
if (kDebugMode) print(e);
|
||||
await _googleSignIn.signOut();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
Future<void> pushTimetable(
|
||||
BuildContext context, TimetableController controller) async {
|
||||
Calendar? calendar = await createCalendar(
|
||||
name: 'reFilc - Órarend',
|
||||
description:
|
||||
'Ez egy automatikusan generált naptár, melyet a reFilc hozott létre az órarend számára.',
|
||||
);
|
||||
|
||||
if (calendar == null) return;
|
||||
|
||||
final days = controller.days!;
|
||||
final everyLesson = days.expand((x) => x).toList();
|
||||
everyLesson.sort((a, b) => a.start.compareTo(b.start));
|
||||
|
||||
for (Lesson l in everyLesson) {
|
||||
Event? event = await pushEvent(
|
||||
title: l.name,
|
||||
calendarId: calendar.id!,
|
||||
start: l.start,
|
||||
end: l.end,
|
||||
);
|
||||
|
||||
// temp shit (DONT BULLY ME, ILL CUM)
|
||||
if (kDebugMode) {
|
||||
if (false != true) print(event);
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
// print('finished');
|
||||
}
|
||||
}
|
||||
98
refilc/lib/providers/todo_notes_provider.dart
Normal file
98
refilc/lib/providers/todo_notes_provider.dart
Normal file
@@ -0,0 +1,98 @@
|
||||
// // ignore_for_file: no_leading_underscores_for_local_identifiers
|
||||
|
||||
// import 'package:refilc/api/providers/user_provider.dart';
|
||||
// import 'package:refilc/api/providers/database_provider.dart';
|
||||
// import 'package:refilc/models/user.dart';
|
||||
// import 'package:refilc_kreta_api/client/api.dart';
|
||||
// import 'package:refilc_kreta_api/client/client.dart';
|
||||
// import 'package:refilc_kreta_api/models/absence.dart';
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:provider/provider.dart';
|
||||
|
||||
// class TodoNotesProvider with ChangeNotifier {
|
||||
// late Map<> _absences;
|
||||
// late BuildContext _context;
|
||||
// List<Absence> get absences => _absences;
|
||||
|
||||
// TodoNotesProvider({
|
||||
// List<Absence> initialAbsences = const [],
|
||||
// required BuildContext context,
|
||||
// }) {
|
||||
// _absences = List.castFrom(initialAbsences);
|
||||
// _context = context;
|
||||
|
||||
// if (_absences.isEmpty) restore();
|
||||
// }
|
||||
|
||||
// Future<void> restore() async {
|
||||
// String? userId = Provider.of<UserProvider>(_context, listen: false).id;
|
||||
|
||||
// // Load absences from the database
|
||||
// if (userId != null) {
|
||||
// var dbAbsences =
|
||||
// await Provider.of<DatabaseProvider>(_context, listen: false)
|
||||
// .userQuery
|
||||
// .getAbsences(userId: userId);
|
||||
// _absences = dbAbsences;
|
||||
// await convertBySettings();
|
||||
// }
|
||||
// }
|
||||
|
||||
// // for renamed subjects
|
||||
// Future<void> convertBySettings() async {
|
||||
// final _database = Provider.of<DatabaseProvider>(_context, listen: false);
|
||||
// Map<String, String> renamedSubjects =
|
||||
// (await _database.query.getSettings(_database)).renamedSubjectsEnabled
|
||||
// ? await _database.userQuery.renamedSubjects(
|
||||
// userId:
|
||||
// // ignore: use_build_context_synchronously
|
||||
// Provider.of<UserProvider>(_context, listen: false).user!.id)
|
||||
// : {};
|
||||
// Map<String, String> renamedTeachers =
|
||||
// (await _database.query.getSettings(_database)).renamedTeachersEnabled
|
||||
// ? await _database.userQuery.renamedTeachers(
|
||||
// userId:
|
||||
// // ignore: use_build_context_synchronously
|
||||
// Provider.of<UserProvider>(_context, listen: false).user!.id)
|
||||
// : {};
|
||||
|
||||
// for (Absence absence in _absences) {
|
||||
// absence.subject.renamedTo = renamedSubjects.isNotEmpty
|
||||
// ? renamedSubjects[absence.subject.id]
|
||||
// : null;
|
||||
// absence.teacher.renamedTo = renamedTeachers.isNotEmpty
|
||||
// ? renamedTeachers[absence.teacher.id]
|
||||
// : null;
|
||||
// }
|
||||
|
||||
// notifyListeners();
|
||||
// }
|
||||
|
||||
// // Fetches Absences from the Kreta API then stores them in the database
|
||||
// Future<void> fetch() async {
|
||||
// User? user = Provider.of<UserProvider>(_context, listen: false).user;
|
||||
// if (user == null) throw "Cannot fetch Absences for User null";
|
||||
// String iss = user.instituteCode;
|
||||
|
||||
// List? absencesJson = await Provider.of<KretaClient>(_context, listen: false)
|
||||
// .getAPI(KretaAPI.absences(iss));
|
||||
// if (absencesJson == null) throw "Cannot fetch Absences for User ${user.id}";
|
||||
// List<Absence> absences =
|
||||
// absencesJson.map((e) => Absence.fromJson(e)).toList();
|
||||
|
||||
// if (absences.isNotEmpty || _absences.isNotEmpty) await store(absences);
|
||||
// }
|
||||
|
||||
// // Stores Absences in the database
|
||||
// Future<void> store(List<Absence> absences) async {
|
||||
// User? user = Provider.of<UserProvider>(_context, listen: false).user;
|
||||
// if (user == null) throw "Cannot store Absences for User null";
|
||||
// String userId = user.id;
|
||||
|
||||
// await Provider.of<DatabaseProvider>(_context, listen: false)
|
||||
// .userStore
|
||||
// .storeAbsences(absences, userId: userId);
|
||||
// _absences = absences;
|
||||
// await convertBySettings();
|
||||
// }
|
||||
// }
|
||||
Reference in New Issue
Block a user