Refactor codebase resolving warnings and remove self-package imports
This commit is contained in:
17
lib/model/accountModel.dart
Normal file
17
lib/model/accountModel.dart
Normal file
@ -0,0 +1,17 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class AccountModel extends ChangeNotifier {
|
||||
bool _isLoggedIn = false;
|
||||
|
||||
bool get isLoggedIn => _isLoggedIn;
|
||||
|
||||
void logout() {
|
||||
_isLoggedIn = false;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void login() {
|
||||
_isLoggedIn = true;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
36
lib/model/appTheme.dart
Normal file
36
lib/model/appTheme.dart
Normal file
@ -0,0 +1,36 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class AppTheme extends ChangeNotifier {
|
||||
ThemeMode _mode = ThemeMode.system;
|
||||
ThemeMode get getMode => _mode;
|
||||
|
||||
void setTheme(ThemeMode newMode) {
|
||||
_mode = newMode;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
static ThemeModeDisplay getDisplayOptions(ThemeMode theme) {
|
||||
switch(theme) {
|
||||
case ThemeMode.system:
|
||||
return ThemeModeDisplay(icon: Icons.auto_fix_high_outlined, displayName: "Systemvorgabe");
|
||||
|
||||
case ThemeMode.light:
|
||||
return ThemeModeDisplay(icon: Icons.dark_mode_outlined, displayName: "Hell");
|
||||
|
||||
case ThemeMode.dark:
|
||||
return ThemeModeDisplay(icon: Icons.dark_mode, displayName: "Dunkel");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
static bool isDarkMode(BuildContext context) {
|
||||
return Theme.of(context).brightness == Brightness.dark;
|
||||
}
|
||||
}
|
||||
|
||||
class ThemeModeDisplay {
|
||||
final IconData icon;
|
||||
final String displayName;
|
||||
|
||||
ThemeModeDisplay({required this.icon, required this.displayName});
|
||||
}
|
27
lib/model/chatList/chatListProps.dart
Normal file
27
lib/model/chatList/chatListProps.dart
Normal file
@ -0,0 +1,27 @@
|
||||
|
||||
import '../../api/apiResponse.dart';
|
||||
import '../../api/marianumcloud/talk/room/getRoomCache.dart';
|
||||
import '../../api/marianumcloud/talk/room/getRoomResponse.dart';
|
||||
import '../dataHolder.dart';
|
||||
|
||||
class ChatListProps extends DataHolder {
|
||||
GetRoomResponse? _getRoomResponse;
|
||||
GetRoomResponse get getRoomsResponse => _getRoomResponse!;
|
||||
|
||||
@override
|
||||
List<ApiResponse?> properties() {
|
||||
return [_getRoomResponse];
|
||||
}
|
||||
|
||||
@override
|
||||
void run({renew}) {
|
||||
GetRoomCache(
|
||||
renew: renew,
|
||||
onUpdate: (GetRoomResponse data) => {
|
||||
_getRoomResponse = data,
|
||||
notifyListeners(),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
35
lib/model/chatList/chatProps.dart
Normal file
35
lib/model/chatList/chatProps.dart
Normal file
@ -0,0 +1,35 @@
|
||||
import '../../api/apiResponse.dart';
|
||||
import '../../api/marianumcloud/talk/chat/getChatCache.dart';
|
||||
import '../../api/marianumcloud/talk/chat/getChatResponse.dart';
|
||||
import '../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();
|
||||
}
|
||||
|
||||
}
|
23
lib/model/dataHolder.dart
Normal file
23
lib/model/dataHolder.dart
Normal file
@ -0,0 +1,23 @@
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
void run();
|
||||
List<ApiResponse?> properties();
|
||||
|
||||
bool primaryLoading() {
|
||||
for(ApiResponse? element in properties()) {
|
||||
if(element == null) return true;
|
||||
}
|
||||
return false;
|
||||
//return properties().where((element) => element != null).isEmpty;
|
||||
}
|
||||
}
|
54
lib/model/files/filesProps.dart
Normal file
54
lib/model/files/filesProps.dart
Normal file
@ -0,0 +1,54 @@
|
||||
|
||||
import '../../api/apiResponse.dart';
|
||||
import '../../api/marianumcloud/webdav/queries/listFiles/listFilesCache.dart';
|
||||
import '../../api/marianumcloud/webdav/queries/listFiles/listFilesResponse.dart';
|
||||
import '../dataHolder.dart';
|
||||
|
||||
extension ExtendedList on List {
|
||||
T indexOrNull<T>(int index) => index +1 <= length ? this[index] : null;
|
||||
T firstOrNull<T>() => isEmpty ? null : first;
|
||||
T lastOrNull<T>() => isEmpty ? null : last;
|
||||
}
|
||||
|
||||
class FilesProps extends DataHolder {
|
||||
List<String> folderPath = List<String>.empty(growable: true);
|
||||
String currentFolderName = "Home";
|
||||
|
||||
ListFilesResponse? _listFilesResponse;
|
||||
ListFilesResponse get listFilesResponse => _listFilesResponse!;
|
||||
|
||||
void runPath(List<String> path) {
|
||||
folderPath = path;
|
||||
run();
|
||||
}
|
||||
|
||||
@override
|
||||
List<ApiResponse?> properties() {
|
||||
return [_listFilesResponse];
|
||||
}
|
||||
|
||||
@override
|
||||
void run() {
|
||||
_listFilesResponse = null;
|
||||
notifyListeners();
|
||||
ListFilesCache(
|
||||
path: folderPath.isEmpty ? "/" : folderPath.join("/"),
|
||||
onUpdate: (ListFilesResponse data) => {
|
||||
_listFilesResponse = data,
|
||||
notifyListeners(),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
void enterFolder(String name) {
|
||||
folderPath.add(name);
|
||||
currentFolderName = name;
|
||||
run();
|
||||
}
|
||||
|
||||
void popFolder() {
|
||||
folderPath.removeLast();
|
||||
if(folderPath.isEmpty) currentFolderName = "Home";
|
||||
run();
|
||||
}
|
||||
}
|
27
lib/model/message/messageProps.dart
Normal file
27
lib/model/message/messageProps.dart
Normal file
@ -0,0 +1,27 @@
|
||||
|
||||
import '../../api/apiResponse.dart';
|
||||
import '../../api/mhsl/message/getMessages/getMessagesCache.dart';
|
||||
import '../../api/mhsl/message/getMessages/getMessagesResponse.dart';
|
||||
import '../dataHolder.dart';
|
||||
|
||||
class MessageProps extends DataHolder {
|
||||
GetMessagesResponse? _getMessagesResponse;
|
||||
GetMessagesResponse get getMessagesResponse => _getMessagesResponse!;
|
||||
|
||||
@override
|
||||
List<ApiResponse?> properties() {
|
||||
return [_getMessagesResponse];
|
||||
}
|
||||
|
||||
@override
|
||||
void run({renew}) {
|
||||
GetMessagesCache(
|
||||
renew: renew,
|
||||
onUpdate: (GetMessagesResponse data) => {
|
||||
_getMessagesResponse = data,
|
||||
notifyListeners(),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
108
lib/model/timetable/timetableProps.dart
Normal file
108
lib/model/timetable/timetableProps.dart
Normal file
@ -0,0 +1,108 @@
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
import '../../api/apiResponse.dart';
|
||||
import '../../api/webuntis/queries/getHolidays/getHolidaysCache.dart';
|
||||
import '../../api/webuntis/queries/getHolidays/getHolidaysResponse.dart';
|
||||
import '../../api/webuntis/queries/getRooms/getRoomsCache.dart';
|
||||
import '../../api/webuntis/queries/getRooms/getRoomsResponse.dart';
|
||||
import '../../api/webuntis/queries/getSubjects/getSubjectsCache.dart';
|
||||
import '../../api/webuntis/queries/getSubjects/getSubjectsResponse.dart';
|
||||
import '../../api/webuntis/queries/getTimetable/getTimetableCache.dart';
|
||||
import '../../api/webuntis/queries/getTimetable/getTimetableResponse.dart';
|
||||
import '../../api/webuntis/webuntisError.dart';
|
||||
import '../dataHolder.dart';
|
||||
|
||||
extension DateTimeExtension on DateTime {
|
||||
DateTime jumpToNextWeekDay(int day) {
|
||||
return add(
|
||||
Duration(
|
||||
days: (day - weekday) % DateTime.daysPerWeek,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class TimetableProps extends DataHolder {
|
||||
final _queryWeek = DateTime.now().add(const Duration(days: 2));
|
||||
|
||||
late DateTime startDate = getDate(_queryWeek.subtract(Duration(days: _queryWeek.weekday - 1)));
|
||||
late DateTime endDate = getDate(_queryWeek.add(Duration(days: DateTime.daysPerWeek - _queryWeek.weekday)));
|
||||
|
||||
GetTimetableResponse? _getTimetableResponse;
|
||||
GetTimetableResponse get getTimetableResponse => _getTimetableResponse!; //TODO failed null check when no cache
|
||||
|
||||
GetRoomsResponse? _getRoomsResponse;
|
||||
GetRoomsResponse get getRoomsResponse => _getRoomsResponse!;
|
||||
|
||||
GetSubjectsResponse? _getSubjectsResponse;
|
||||
GetSubjectsResponse get getSubjectsResponse => _getSubjectsResponse!;
|
||||
|
||||
GetHolidaysResponse? _getHolidaysResponse;
|
||||
GetHolidaysResponse get getHolidaysResponse => _getHolidaysResponse!;
|
||||
|
||||
WebuntisError? error;
|
||||
WebuntisError? get getError => error;
|
||||
bool get hasError => error != null;
|
||||
|
||||
@override
|
||||
List<ApiResponse?> properties() {
|
||||
return [_getTimetableResponse, _getRoomsResponse, _getSubjectsResponse, _getHolidaysResponse];
|
||||
}
|
||||
|
||||
@override
|
||||
void run() {
|
||||
GetTimetableCache(
|
||||
startdate: int.parse(DateFormat("yyyyMMdd").format(startDate)),
|
||||
enddate: int.parse(DateFormat("yyyyMMdd").format(endDate)),
|
||||
onUpdate: (GetTimetableResponse data) => {
|
||||
_getTimetableResponse = data,
|
||||
notifyListeners(),
|
||||
},
|
||||
onError: (Exception e) => {
|
||||
error = e as WebuntisError?,
|
||||
notifyListeners(),
|
||||
}
|
||||
);
|
||||
|
||||
GetRoomsCache(
|
||||
onUpdate: (GetRoomsResponse data) => {
|
||||
_getRoomsResponse = data,
|
||||
notifyListeners(),
|
||||
}
|
||||
);
|
||||
|
||||
GetSubjectsCache(
|
||||
onUpdate: (GetSubjectsResponse data) => {
|
||||
_getSubjectsResponse = data,
|
||||
notifyListeners(),
|
||||
}
|
||||
);
|
||||
|
||||
GetHolidaysCache(
|
||||
onUpdate: (GetHolidaysResponse data) => {
|
||||
_getHolidaysResponse = data,
|
||||
notifyListeners(),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
DateTime getDate(DateTime d) => DateTime(d.year, d.month, d.day);
|
||||
|
||||
bool isWeekend(DateTime queryDate) {
|
||||
return queryDate.weekday == DateTime.saturday || queryDate.weekday == DateTime.sunday;
|
||||
}
|
||||
|
||||
void updateWeek(DateTime start, DateTime end) {
|
||||
properties().forEach((element) => element = null);
|
||||
error = null;
|
||||
notifyListeners();
|
||||
startDate = start.subtract(const Duration(days: 7));
|
||||
endDate = end.add(const Duration(days: 7));
|
||||
try {
|
||||
run();
|
||||
} on WebuntisError catch(e) {
|
||||
error = e;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user