Added Nextcloud base

This commit is contained in:
2023-02-20 10:56:51 +01:00
parent e54ae9c2ff
commit fea36b9a6d
63 changed files with 1863 additions and 700 deletions

View File

@ -0,0 +1,29 @@
import 'dart:developer';
import 'package:marianum_mobile/api/marianumcloud/talk/room/getRoomCache.dart';
import 'package:marianum_mobile/api/marianumcloud/talk/room/getRoomResponse.dart';
import 'package:marianum_mobile/data/dataHolder.dart';
import '../../api/apiResponse.dart';
class ChatListProps extends DataHolder {
GetRoomResponse? _getRoomResponse;
GetRoomResponse get getRoomsResponse => _getRoomResponse!;
@override
List<ApiResponse?> properties() {
return [_getRoomResponse];
}
@override
void run() {
log("RUN CACHE");
GetRoomCache(
onUpdate: (GetRoomResponse data) => {
_getRoomResponse = data,
notifyListeners(),
}
);
}
}

View File

@ -0,0 +1,35 @@
import 'package:marianum_mobile/api/apiResponse.dart';
import 'package:marianum_mobile/api/marianumcloud/talk/chat/getChatCache.dart';
import 'package:marianum_mobile/api/marianumcloud/talk/chat/getChatResponse.dart';
import 'package:marianum_mobile/data/dataHolder.dart';
class ChatProps extends DataHolder {
String _queryToken = "";
GetChatResponse? _getChatResponse;
GetChatResponse get getChatResponse => _getChatResponse!;
@override
List<ApiResponse?> properties() {
return [_getChatResponse];
}
@override
void run() {
notifyListeners();
GetChatCache(
chatToken: _queryToken,
onUpdate: (GetChatResponse data) => {
_getChatResponse = data,
notifyListeners(),
}
);
}
void setQueryToken(String token) {
_queryToken = token;
_getChatResponse = null;
run();
}
}

View File

@ -1,11 +1,18 @@
import 'package:flutter/cupertino.dart';
import 'package:localstore/localstore.dart';
import '../api/apiResponse.dart';
abstract class DataHolder extends ChangeNotifier {
CollectionRef storage(String path) {
return Localstore.instance.collection(path);
}
Future<void> run();
void run();
List<ApiResponse?> properties();
bool primaryLoading() {
return properties().where((element) => element != null).isEmpty;
}
}

View File

@ -1,12 +0,0 @@
import 'dart:async';
import 'package:flutter/widgets.dart';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';
class PersistantTimetable {
final int id;
final String json;
PersistantTimetable(this.id, this.json);
}

View File

@ -1,60 +0,0 @@
import 'dart:collection';
import 'dart:convert';
import 'dart:developer';
import 'package:intl/intl.dart';
import 'package:marianum_mobile/api/webuntis/queries/authenticate/authenticate.dart';
import 'package:marianum_mobile/api/webuntis/queries/authenticate/authenticateResponse.dart';
import 'package:marianum_mobile/api/webuntis/queries/getRooms/getRoomsCache.dart';
import 'package:marianum_mobile/api/webuntis/queries/getRooms/getRoomsResponse.dart';
import 'package:marianum_mobile/api/webuntis/queries/getSubjects/getSubjectsCache.dart';
import 'package:marianum_mobile/api/webuntis/queries/getSubjects/getSubjectsResponse.dart';
import 'package:marianum_mobile/data/dataHolder.dart';
import '../../api/webuntis/queries/getTimetable/getTimetable.dart';
import '../../api/webuntis/queries/getTimetable/getTimetableCache.dart';
import '../../api/webuntis/queries/getTimetable/getTimetableParams.dart';
import '../../api/webuntis/queries/getTimetable/getTimetableResponse.dart';
class Timetable extends DataHolder {
int day = int.parse(DateFormat("yyyyMMdd").format(DateTime.now()));
Timetable() : super();
GetTimetableResponse? _getTimetableResponse;
GetTimetableResponse? get getTimetableResponse => _getTimetableResponse;
GetRoomsResponse? _getRoomsResponse;
GetRoomsResponse? get getRoomsResponse => _getRoomsResponse;
GetSubjectsResponse? _getSubjectsResponse;
GetSubjectsResponse? get getSubjectsResponse => _getSubjectsResponse;
@override
Future<void> run() async {
GetTimetableCache(
day: day,
onUpdate: (data) =>
{
_getTimetableResponse = data,
notifyListeners(),
}
);
GetRoomsCache(
onUpdate: (data) =>
{
_getRoomsResponse = data,
notifyListeners(),
}
);
GetSubjectsCache(
onUpdate: (data) =>
{
_getSubjectsResponse = data,
notifyListeners(),
}
);
}
}

View File

@ -0,0 +1,101 @@
import 'dart:collection';
import 'dart:convert';
import 'dart:developer';
import 'package:intl/intl.dart';
import 'package:marianum_mobile/api/apiResponse.dart';
import 'package:marianum_mobile/api/webuntis/queries/authenticate/authenticate.dart';
import 'package:marianum_mobile/api/webuntis/queries/authenticate/authenticateResponse.dart';
import 'package:marianum_mobile/api/webuntis/queries/getHolidays/getHolidaysCache.dart';
import 'package:marianum_mobile/api/webuntis/queries/getHolidays/getHolidaysResponse.dart';
import 'package:marianum_mobile/api/webuntis/queries/getRooms/getRoomsCache.dart';
import 'package:marianum_mobile/api/webuntis/queries/getRooms/getRoomsResponse.dart';
import 'package:marianum_mobile/api/webuntis/queries/getSubjects/getSubjectsCache.dart';
import 'package:marianum_mobile/api/webuntis/queries/getSubjects/getSubjectsResponse.dart';
import 'package:marianum_mobile/data/dataHolder.dart';
import '../../api/webuntis/queries/getTimetable/getTimetable.dart';
import '../../api/webuntis/queries/getTimetable/getTimetableCache.dart';
import '../../api/webuntis/queries/getTimetable/getTimetableParams.dart';
import '../../api/webuntis/queries/getTimetable/getTimetableResponse.dart';
class TimetableProps extends DataHolder {
late DateTime queryDate;
GetTimetableResponse? _getTimetableResponse;
GetTimetableResponse get getTimetableResponse => _getTimetableResponse!;
GetRoomsResponse? _getRoomsResponse;
GetRoomsResponse get getRoomsResponse => _getRoomsResponse!;
GetSubjectsResponse? _getSubjectsResponse;
GetSubjectsResponse get getSubjectsResponse => _getSubjectsResponse!;
GetHolidaysResponse? _getHolidaysResponse;
GetHolidaysResponse get getHolidaysResponse => _getHolidaysResponse!;
TimetableProps() {
nearest();
}
@override
List<ApiResponse?> properties() {
return [_getTimetableResponse, _getRoomsResponse, _getSubjectsResponse, _getHolidaysResponse];
}
@override
void run() {
GetTimetableCache(
day: int.parse(DateFormat("yyyyMMdd").format(queryDate)),
onUpdate: (GetTimetableResponse data) => {
_getTimetableResponse = data,
notifyListeners(),
}
);
GetRoomsCache(
onUpdate: (GetRoomsResponse data) => {
_getRoomsResponse = data,
notifyListeners(),
}
);
GetSubjectsCache(
onUpdate: (GetSubjectsResponse data) => {
_getSubjectsResponse = data,
notifyListeners(),
}
);
GetHolidaysCache(
onUpdate: (GetHolidaysResponse data) => {
_getHolidaysResponse = data,
notifyListeners(),
}
);
}
void nearest() {
queryDate = DateTime.now();
while(isWeekend(queryDate)) {
next();
}
run();
}
void next({previous = false}) {
do {
if(previous) {
queryDate = queryDate.subtract(const Duration(days: 1));
} else {
queryDate = queryDate.add(const Duration(days: 1));
}
} while(isWeekend(queryDate));
run();
}
bool isWeekend(DateTime queryDate) {
return queryDate.weekday == DateTime.saturday || queryDate.weekday == DateTime.sunday;
}
}