From 9b5a70b285a16cd4e0f673d90b126961351a9759 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Tue, 5 May 2026 22:00:07 +0200 Subject: [PATCH] api and storage restructure --- lib/api/holidays/getHolidaysCache.dart | 30 ++++----- .../autocomplete/autocompleteApi.dart | 38 +++++------- .../files-sharing/fileSharingApi.dart | 18 +++--- lib/api/marianumcloud/nextcloud_ocs.dart | 33 ++++++++++ .../talk/actions/talk_actions.dart | 50 +++++++++++++++ .../marianumcloud/talk/chat/getChatCache.dart | 38 +++++------- .../talk/deleteMessage/deleteMessage.dart | 18 ------ .../getParticipants/getParticipantsCache.dart | 25 +++----- .../talk/leaveRoom/leaveRoom.dart | 16 ----- .../marianumcloud/talk/room/getRoomCache.dart | 29 ++------- .../talk/sendMessage/sendMessageResponse.dart | 5 -- .../talk/setFavorite/setFavorite.dart | 25 -------- lib/api/marianumcloud/talk/talkApi.dart | 35 ++++------- .../marianumcloud/talk/votePoll/votePoll.dart | 26 -------- .../talk/votePoll/votePollParams.dart | 15 ----- .../talk/votePoll/votePollParams.g.dart | 17 ----- .../queries/listFiles/listFilesCache.dart | 34 +++------- .../breaker/getBreakers/getBreakersCache.dart | 17 +++-- .../get/getCustomTimetableEventCache.dart | 27 +++----- lib/api/requestCache.dart | 35 +++++++++++ .../queries/getHolidays/getHolidaysCache.dart | 24 ++----- .../queries/getRooms/getRoomsCache.dart | 25 ++------ .../queries/getSubjects/getSubjectsCache.dart | 25 ++------ .../getTimegridUnitsCache.dart | 20 +++--- .../getTimetable/getTimetableCache.dart | 62 +++++++++---------- lib/main.dart | 2 +- .../modules/settings/bloc/settings_cubit.dart | 2 +- ...sSettings.dart => dev_tools_settings.dart} | 2 +- ...tings.g.dart => dev_tools_settings.g.dart} | 2 +- .../fileSettings.dart => file_settings.dart} | 2 +- ...leSettings.g.dart => file_settings.g.dart} | 2 +- ...wSettings.dart => file_view_settings.dart} | 2 +- ...tings.g.dart => file_view_settings.g.dart} | 2 +- ...ysSettings.dart => holidays_settings.dart} | 2 +- ...ttings.g.dart => holidays_settings.g.dart} | 2 +- ...lesSettings.dart => modules_settings.dart} | 2 +- ...ettings.g.dart => modules_settings.g.dart} | 2 +- ...ttings.dart => notification_settings.dart} | 2 +- ...gs.g.dart => notification_settings.g.dart} | 2 +- lib/storage/{base => }/settings.dart | 16 ++--- lib/storage/{base => }/settings.g.dart | 0 .../talkSettings.dart => talk_settings.dart} | 2 +- ...lkSettings.g.dart => talk_settings.g.dart} | 2 +- ...eSettings.dart => timetable_settings.dart} | 4 +- ...tings.g.dart => timetable_settings.g.dart} | 2 +- lib/view/pages/overhang.dart | 2 +- .../pages/settings/data/default_settings.dart | 20 +++--- .../settings/sections/timetable_section.dart | 2 +- lib/view/pages/settings/settings.dart | 2 +- .../widgets/chat_message_options_dialog.dart | 2 +- lib/view/pages/talk/widgets/chat_tile.dart | 3 +- .../data/timetable_appointment_factory.dart | 4 +- .../timetable/data}/timetable_name_mode.dart | 2 +- 53 files changed, 318 insertions(+), 460 deletions(-) create mode 100644 lib/api/marianumcloud/nextcloud_ocs.dart create mode 100644 lib/api/marianumcloud/talk/actions/talk_actions.dart delete mode 100644 lib/api/marianumcloud/talk/deleteMessage/deleteMessage.dart delete mode 100644 lib/api/marianumcloud/talk/leaveRoom/leaveRoom.dart delete mode 100644 lib/api/marianumcloud/talk/sendMessage/sendMessageResponse.dart delete mode 100644 lib/api/marianumcloud/talk/setFavorite/setFavorite.dart delete mode 100644 lib/api/marianumcloud/talk/votePoll/votePoll.dart delete mode 100644 lib/api/marianumcloud/talk/votePoll/votePollParams.dart delete mode 100644 lib/api/marianumcloud/talk/votePoll/votePollParams.g.dart rename lib/storage/{devTools/devToolsSettings.dart => dev_tools_settings.dart} (93%) rename lib/storage/{devTools/devToolsSettings.g.dart => dev_tools_settings.g.dart} (96%) rename lib/storage/{file/fileSettings.dart => file_settings.dart} (94%) rename lib/storage/{file/fileSettings.g.dart => file_settings.g.dart} (96%) rename lib/storage/{fileView/fileViewSettings.dart => file_view_settings.dart} (91%) rename lib/storage/{fileView/fileViewSettings.g.dart => file_view_settings.g.dart} (94%) rename lib/storage/{holidays/holidaysSettings.dart => holidays_settings.dart} (92%) rename lib/storage/{holidays/holidaysSettings.g.dart => holidays_settings.g.dart} (95%) rename lib/storage/{general/modulesSettings.dart => modules_settings.dart} (93%) rename lib/storage/{general/modulesSettings.g.dart => modules_settings.g.dart} (97%) rename lib/storage/{notification/notificationSettings.dart => notification_settings.dart} (91%) rename lib/storage/{notification/notificationSettings.g.dart => notification_settings.g.dart} (94%) rename lib/storage/{base => }/settings.dart (78%) rename lib/storage/{base => }/settings.g.dart (100%) rename lib/storage/{talk/talkSettings.dart => talk_settings.dart} (94%) rename lib/storage/{talk/talkSettings.g.dart => talk_settings.g.dart} (96%) rename lib/storage/{timetable/timetableSettings.dart => timetable_settings.dart} (81%) rename lib/storage/{timetable/timetableSettings.g.dart => timetable_settings.g.dart} (96%) rename lib/{storage/timetable => view/pages/timetable/data}/timetable_name_mode.dart (92%) diff --git a/lib/api/holidays/getHolidaysCache.dart b/lib/api/holidays/getHolidaysCache.dart index 66e3147..2707916 100644 --- a/lib/api/holidays/getHolidaysCache.dart +++ b/lib/api/holidays/getHolidaysCache.dart @@ -1,26 +1,18 @@ -import 'dart:convert'; - import '../requestCache.dart'; import 'getHolidays.dart'; import 'getHolidaysResponse.dart'; -class GetHolidaysCache extends RequestCache { - GetHolidaysCache({void Function(GetHolidaysResponse)? onUpdate, bool? renew}) : super(RequestCache.cacheDay, onUpdate, renew: renew) { +class GetHolidaysCache extends SimpleCache { + GetHolidaysCache({super.onUpdate, super.renew}) + : super( + cacheTime: RequestCache.cacheDay, + loader: () => GetHolidays().query(), + fromJson: (json) => GetHolidaysResponse( + (json['data'] as List) + .map((i) => GetHolidaysResponseObject.fromJson(i as Map)) + .toList(), + ), + ) { start('state-holidays'); } - - @override - GetHolidaysResponse onLocalData(String json) { - List parsedListJson = jsonDecode(json)['data']; - return GetHolidaysResponse( - List.from( - parsedListJson.map( - (i) => GetHolidaysResponseObject.fromJson(i as Map) - ) - ) - ); - } - - @override - Future onLoad() => GetHolidays().query(); } diff --git a/lib/api/marianumcloud/autocomplete/autocompleteApi.dart b/lib/api/marianumcloud/autocomplete/autocompleteApi.dart index 8c67694..1539bd7 100644 --- a/lib/api/marianumcloud/autocomplete/autocompleteApi.dart +++ b/lib/api/marianumcloud/autocomplete/autocompleteApi.dart @@ -3,31 +3,25 @@ import 'dart:io'; import 'package:http/http.dart' as http; -import '../../../model/account_data.dart'; -import '../../../model/endpoint_data.dart'; +import '../nextcloud_ocs.dart'; import 'autocompleteResponse.dart'; class AutocompleteApi { Future find(String query) async { - var getParameters = { - 'search': query, - 'itemType': ' ', - 'itemId': ' ', - 'shareTypes[]': ['0'], - 'limit': '10', - }; - - var headers = {}; - headers.putIfAbsent('Accept', () => 'application/json'); - headers.putIfAbsent('OCS-APIRequest', () => 'true'); - headers.putIfAbsent('Authorization', AccountData().getBasicAuthHeader); - - var endpoint = Uri.https(EndpointData().nextcloud().domain, '${EndpointData().nextcloud().path}/ocs/v2.php/core/autocomplete/get', getParameters); - - var response = await http.get(endpoint, headers: headers); - if(response.statusCode != HttpStatus.ok) throw Exception('Api call failed with ${response.statusCode}: ${response.body}'); - var result = response.body; - return AutocompleteResponse.fromJson(jsonDecode(result)['ocs']); + final endpoint = NextcloudOcs.uri( + 'core/autocomplete/get', + queryParameters: { + 'search': query, + 'itemType': ' ', + 'itemId': ' ', + 'shareTypes[]': ['0'], + 'limit': '10', + }, + ); + final response = await http.get(endpoint, headers: NextcloudOcs.headers()); + if (response.statusCode != HttpStatus.ok) { + throw Exception('Api call failed with ${response.statusCode}: ${response.body}'); + } + return AutocompleteResponse.fromJson(jsonDecode(response.body)['ocs']); } - } diff --git a/lib/api/marianumcloud/files-sharing/fileSharingApi.dart b/lib/api/marianumcloud/files-sharing/fileSharingApi.dart index ab1b180..5914915 100644 --- a/lib/api/marianumcloud/files-sharing/fileSharingApi.dart +++ b/lib/api/marianumcloud/files-sharing/fileSharingApi.dart @@ -2,21 +2,17 @@ import 'dart:io'; import 'package:http/http.dart' as http; -import '../../../model/account_data.dart'; -import '../../../model/endpoint_data.dart'; +import '../nextcloud_ocs.dart'; import 'fileSharingApiParams.dart'; class FileSharingApi { Future share(FileSharingApiParams query) async { - var headers = {}; - headers.putIfAbsent('Accept', () => 'application/json'); - headers.putIfAbsent('OCS-APIRequest', () => 'true'); - headers.putIfAbsent('Authorization', AccountData().getBasicAuthHeader); - - var endpoint = Uri.https(EndpointData().nextcloud().domain, '${EndpointData().nextcloud().path}/ocs/v2.php/apps/files_sharing/api/v1/shares', query.toJson().map((key, value) => MapEntry(key, value.toString()))); - var response = await http.post(endpoint, headers: headers); - - if(response.statusCode != HttpStatus.ok) { + final endpoint = NextcloudOcs.uri( + 'apps/files_sharing/api/v1/shares', + queryParameters: query.toJson(), + ); + final response = await http.post(endpoint, headers: NextcloudOcs.headers()); + if (response.statusCode != HttpStatus.ok) { throw Exception('Api call failed with ${response.statusCode}: ${response.body}'); } } diff --git a/lib/api/marianumcloud/nextcloud_ocs.dart b/lib/api/marianumcloud/nextcloud_ocs.dart new file mode 100644 index 0000000..64c04f7 --- /dev/null +++ b/lib/api/marianumcloud/nextcloud_ocs.dart @@ -0,0 +1,33 @@ +import '../../model/account_data.dart'; +import '../../model/endpoint_data.dart'; + +/// Shared helpers for Nextcloud OCS v2 endpoints. +/// +/// Three call sites previously duplicated the same header dictionary and the +/// same URI scaffolding (TalkApi, AutocompleteApi, FileSharingApi). Anything +/// that talks to `https:////ocs/v2.php/...` should go through +/// these two helpers so additions like a new header or a different auth +/// scheme only need to change here. +class NextcloudOcs { + NextcloudOcs._(); + + /// The standard OCS request header set: JSON accept, OCS API marker, + /// HTTP Basic auth from the active [AccountData]. + static Map headers() => { + 'Accept': 'application/json', + 'OCS-APIRequest': 'true', + 'Authorization': AccountData().getBasicAuthHeader(), + }; + + /// Builds an OCS URI by appending [pathSuffix] under `/ocs/v2.php/` of + /// the configured Nextcloud endpoint. Query parameters are converted to + /// strings (Uri rejects non-string values). + static Uri uri(String pathSuffix, {Map? queryParameters}) { + final endpoint = EndpointData().nextcloud(); + return Uri.https( + endpoint.domain, + '${endpoint.path}/ocs/v2.php/$pathSuffix', + queryParameters?.map((key, value) => MapEntry(key, value.toString())), + ); + } +} diff --git a/lib/api/marianumcloud/talk/actions/talk_actions.dart b/lib/api/marianumcloud/talk/actions/talk_actions.dart new file mode 100644 index 0000000..88a83f3 --- /dev/null +++ b/lib/api/marianumcloud/talk/actions/talk_actions.dart @@ -0,0 +1,50 @@ +import 'package:http/http.dart' as http; + +import '../../../apiParams.dart'; +import '../../../apiResponse.dart'; +import '../talkApi.dart'; + +/// Small POST/DELETE-only Talk endpoints that have no response payload. +/// Each class extends [TalkApi] with `assemble` returning `null`. They share +/// no state — they're collected here purely to avoid eight near-empty files. + +class SetFavorite extends TalkApi { + final String chatToken; + final bool favoriteState; + + SetFavorite(this.chatToken, this.favoriteState) : super('v4/room/$chatToken/favorite', null); + + @override + ApiResponse? assemble(String raw) => null; + + @override + Future request(Uri uri, ApiParams? body, Map? headers) => + favoriteState ? http.post(uri, headers: headers) : http.delete(uri, headers: headers); +} + +class LeaveRoom extends TalkApi { + final String chatToken; + + LeaveRoom(this.chatToken) : super('v4/room/$chatToken/participants/self', null); + + @override + ApiResponse? assemble(String raw) => null; + + @override + Future request(Uri uri, ApiParams? body, Map? headers) => + http.delete(uri, headers: headers); +} + +class DeleteMessage extends TalkApi { + final String chatToken; + final int messageId; + + DeleteMessage(this.chatToken, this.messageId) : super('v1/chat/$chatToken/$messageId', null); + + @override + ApiResponse? assemble(String raw) => null; + + @override + Future request(Uri uri, ApiParams? body, Map? headers) => + http.delete(uri, headers: headers); +} diff --git a/lib/api/marianumcloud/talk/chat/getChatCache.dart b/lib/api/marianumcloud/talk/chat/getChatCache.dart index f564a48..92efd3b 100644 --- a/lib/api/marianumcloud/talk/chat/getChatCache.dart +++ b/lib/api/marianumcloud/talk/chat/getChatCache.dart @@ -1,36 +1,26 @@ -import 'dart:convert'; - import '../../../requestCache.dart'; import 'getChat.dart'; import 'getChatParams.dart'; import 'getChatResponse.dart'; -class GetChatCache extends RequestCache { - String chatToken; - +class GetChatCache extends SimpleCache { GetChatCache({ required void Function(GetChatResponse) onUpdate, - void Function(Exception)? onError, - required this.chatToken, + super.onError, + required String chatToken, }) : super( - RequestCache.cacheNothing, - onUpdate, - onError: onError ?? RequestCache.ignore, + cacheTime: RequestCache.cacheNothing, + loader: () => GetChat( + chatToken, + GetChatParams( + lookIntoFuture: GetChatParamsSwitch.off, + setReadMarker: GetChatParamsSwitch.on, + limit: 200, + ), + ).run(), + fromJson: GetChatResponse.fromJson, + onUpdate: onUpdate, ) { start('nc-chat-$chatToken'); } - - @override - Future onLoad() => GetChat( - chatToken, - GetChatParams( - lookIntoFuture: GetChatParamsSwitch.off, - setReadMarker: GetChatParamsSwitch.on, - limit: 200, - ) - ).run(); - - @override - GetChatResponse onLocalData(String json) => GetChatResponse.fromJson(jsonDecode(json)); - } diff --git a/lib/api/marianumcloud/talk/deleteMessage/deleteMessage.dart b/lib/api/marianumcloud/talk/deleteMessage/deleteMessage.dart deleted file mode 100644 index 580f899..0000000 --- a/lib/api/marianumcloud/talk/deleteMessage/deleteMessage.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'package:http/http.dart' as http; -import 'package:http/http.dart'; - -import '../../../apiParams.dart'; -import '../talkApi.dart'; - -class DeleteMessage extends TalkApi { - String chatToken; - int messageId; - DeleteMessage(this.chatToken, this.messageId) : super('v1/chat/$chatToken/$messageId', null); - - @override - assemble(String raw) => null; - - @override - Future? request(Uri uri, ApiParams? body, Map? headers) => http.delete(uri, headers: headers); - -} diff --git a/lib/api/marianumcloud/talk/getParticipants/getParticipantsCache.dart b/lib/api/marianumcloud/talk/getParticipants/getParticipantsCache.dart index a3fddc1..c869b26 100644 --- a/lib/api/marianumcloud/talk/getParticipants/getParticipantsCache.dart +++ b/lib/api/marianumcloud/talk/getParticipants/getParticipantsCache.dart @@ -1,22 +1,17 @@ -import 'dart:convert'; - import '../../../requestCache.dart'; import 'getParticipants.dart'; import 'getParticipantsResponse.dart'; -class GetParticipantsCache extends RequestCache { - String chatToken; - - GetParticipantsCache({required void Function(GetParticipantsResponse) onUpdate, required this.chatToken}) : super(RequestCache.cacheNothing, onUpdate) { +class GetParticipantsCache extends SimpleCache { + GetParticipantsCache({ + required void Function(GetParticipantsResponse) onUpdate, + required String chatToken, + }) : super( + cacheTime: RequestCache.cacheNothing, + loader: () => GetParticipants(chatToken).run(), + fromJson: GetParticipantsResponse.fromJson, + onUpdate: onUpdate, + ) { start('nc-chat-participants-$chatToken'); } - - @override - Future onLoad() => GetParticipants( - chatToken, - ).run(); - - @override - GetParticipantsResponse onLocalData(String json) => GetParticipantsResponse.fromJson(jsonDecode(json)); - } diff --git a/lib/api/marianumcloud/talk/leaveRoom/leaveRoom.dart b/lib/api/marianumcloud/talk/leaveRoom/leaveRoom.dart deleted file mode 100644 index ee1f090..0000000 --- a/lib/api/marianumcloud/talk/leaveRoom/leaveRoom.dart +++ /dev/null @@ -1,16 +0,0 @@ - -import 'package:http/http.dart' as http; -import 'package:http/http.dart'; - -import '../talkApi.dart'; -class LeaveRoom extends TalkApi { - String chatToken; - - LeaveRoom(this.chatToken) : super('v4/room/$chatToken/participants/self', null); - - @override - assemble(String raw) => null; - - @override - Future request(Uri uri, Object? body, Map? headers) => http.delete(uri, headers: headers); -} diff --git a/lib/api/marianumcloud/talk/room/getRoomCache.dart b/lib/api/marianumcloud/talk/room/getRoomCache.dart index d632b9e..03fd785 100644 --- a/lib/api/marianumcloud/talk/room/getRoomCache.dart +++ b/lib/api/marianumcloud/talk/room/getRoomCache.dart @@ -1,32 +1,15 @@ -import 'dart:convert'; - - import '../../../requestCache.dart'; import 'getRoom.dart'; import 'getRoomParams.dart'; import 'getRoomResponse.dart'; -class GetRoomCache extends RequestCache { - GetRoomCache({ - void Function(GetRoomResponse)? onUpdate, - void Function(Exception)? onError, - bool? renew, - }) : super( - RequestCache.cacheMinute, - onUpdate, - onError: onError ?? RequestCache.ignore, - renew: renew, +class GetRoomCache extends SimpleCache { + GetRoomCache({super.onUpdate, super.onError, super.renew}) + : super( + cacheTime: RequestCache.cacheMinute, + loader: () => GetRoom(GetRoomParams(includeStatus: true)).run(), + fromJson: GetRoomResponse.fromJson, ) { start('nc-rooms'); } - - @override - GetRoomResponse onLocalData(String json) => GetRoomResponse.fromJson(jsonDecode(json)); - - @override - Future onLoad() => GetRoom( - GetRoomParams( - includeStatus: true, - ) - ).run(); } diff --git a/lib/api/marianumcloud/talk/sendMessage/sendMessageResponse.dart b/lib/api/marianumcloud/talk/sendMessage/sendMessageResponse.dart deleted file mode 100644 index 5c9500b..0000000 --- a/lib/api/marianumcloud/talk/sendMessage/sendMessageResponse.dart +++ /dev/null @@ -1,5 +0,0 @@ -import '../../../apiResponse.dart'; - -class SendMessageResponse extends ApiResponse { - -} diff --git a/lib/api/marianumcloud/talk/setFavorite/setFavorite.dart b/lib/api/marianumcloud/talk/setFavorite/setFavorite.dart deleted file mode 100644 index 5f06d51..0000000 --- a/lib/api/marianumcloud/talk/setFavorite/setFavorite.dart +++ /dev/null @@ -1,25 +0,0 @@ - -import 'package:http/http.dart' as http; -import 'package:http/http.dart'; - -import '../talkApi.dart'; - -class SetFavorite extends TalkApi { - String chatToken; - bool favoriteState; - - SetFavorite(this.chatToken, this.favoriteState) : super('v4/room/$chatToken/favorite', null); - - @override - assemble(String raw) => null; - - @override - Future request(Uri uri, Object? body, Map? headers) { - if(favoriteState) { - return http.post(uri, headers: headers); - } else { - return http.delete(uri, headers: headers); - } - } - -} diff --git a/lib/api/marianumcloud/talk/talkApi.dart b/lib/api/marianumcloud/talk/talkApi.dart index 5f6c31e..617ee6f 100644 --- a/lib/api/marianumcloud/talk/talkApi.dart +++ b/lib/api/marianumcloud/talk/talkApi.dart @@ -2,12 +2,11 @@ import 'dart:developer'; import 'package:http/http.dart' as http; -import '../../../model/account_data.dart'; -import '../../../model/endpoint_data.dart'; import '../../apiError.dart'; import '../../apiParams.dart'; import '../../apiRequest.dart'; import '../../apiResponse.dart'; +import '../nextcloud_ocs.dart'; enum TalkApiMethod { get, @@ -19,7 +18,7 @@ enum TalkApiMethod { abstract class TalkApi extends ApiRequest { String path; ApiParams? body; - Map? headers = {}; + Map? headers; Map? getParameters; http.Response? response; @@ -30,36 +29,28 @@ abstract class TalkApi extends ApiRequest { T assemble(String raw); Future run() async { - getParameters?.forEach((key, value) { - getParameters?.update(key, (value) => value.toString()); - }); - - var endpoint = Uri.https(EndpointData().nextcloud().domain, '${EndpointData().nextcloud().path}/ocs/v2.php/apps/spreed/api/$path', getParameters); - - headers ??= {}; - headers?.putIfAbsent('Accept', () => 'application/json'); - headers?.putIfAbsent('OCS-APIRequest', () => 'true'); - headers?.putIfAbsent('Authorization', AccountData().getBasicAuthHeader); + final endpoint = NextcloudOcs.uri('apps/spreed/api/$path', queryParameters: getParameters); + final mergedHeaders = {...NextcloudOcs.headers(), ...?headers}; http.Response? data; - try { - data = await request(endpoint, body, headers); - if(data == null) throw Exception('No response Data'); - if(data.statusCode >= 400 || data.statusCode < 200) throw Exception("Response status code '${data.statusCode}' might indicate an error"); - } catch(e) { + data = await request(endpoint, body, mergedHeaders); + if (data == null) throw Exception('No response Data'); + if (data.statusCode >= 400 || data.statusCode < 200) { + throw Exception("Response status code '${data.statusCode}' might indicate an error"); + } + } catch (e) { log(e.toString()); throw ApiError('Request $endpoint could not be dispatched: ${e.toString()}'); } - //dynamic jsonData = jsonDecode(data.body); - T assembled; try { - assembled = assemble(data.body); + final assembled = assemble(data.body); assembled?.headers = data.headers; return assembled; } catch (e) { - var message = 'Error assembling Talk API ${T.toString()} message: ${e.toString()} response with request body: $body and request headers: ${headers.toString()}'; + final message = 'Error assembling Talk API ${T.toString()} message: ${e.toString()}' + ' response with request body: $body and request headers: $mergedHeaders'; log(message); throw Exception(message); } diff --git a/lib/api/marianumcloud/talk/votePoll/votePoll.dart b/lib/api/marianumcloud/talk/votePoll/votePoll.dart deleted file mode 100644 index 7cedfe1..0000000 --- a/lib/api/marianumcloud/talk/votePoll/votePoll.dart +++ /dev/null @@ -1,26 +0,0 @@ -import 'dart:convert'; - -import 'package:http/http.dart' as http; -import 'package:http/http.dart'; - -import '../getPoll/getPollStateResponse.dart'; -import '../talkApi.dart'; -import 'votePollParams.dart'; - -@Deprecated('VotePoll is broken') -class VotePoll extends TalkApi { - String token; - int pollId; - VotePoll({required this.token, required this.pollId, required VotePollParams params}) : super('v1/poll/$token/$pollId', params); - - @override - GetPollStateResponse assemble(String raw) => GetPollStateResponse.fromJson(jsonDecode(raw)['ocs']); - - @override - Future? request(Uri uri, Object? body, Map? headers) { - if(body is VotePollParams) { - return http.post(uri, headers: headers, body: body.toJson().toString()); - } - return null; - } -} diff --git a/lib/api/marianumcloud/talk/votePoll/votePollParams.dart b/lib/api/marianumcloud/talk/votePoll/votePollParams.dart deleted file mode 100644 index 151459d..0000000 --- a/lib/api/marianumcloud/talk/votePoll/votePollParams.dart +++ /dev/null @@ -1,15 +0,0 @@ -import 'package:json_annotation/json_annotation.dart'; - -import '../../../apiParams.dart'; - -part 'votePollParams.g.dart'; - -@JsonSerializable() -@Deprecated('VotePoll is broken') -class VotePollParams extends ApiParams { - List optionIds; - - VotePollParams({required this.optionIds}); - factory VotePollParams.fromJson(Map json) => _$VotePollParamsFromJson(json); - Map toJson() => _$VotePollParamsToJson(this); -} diff --git a/lib/api/marianumcloud/talk/votePoll/votePollParams.g.dart b/lib/api/marianumcloud/talk/votePoll/votePollParams.g.dart deleted file mode 100644 index 5b43858..0000000 --- a/lib/api/marianumcloud/talk/votePoll/votePollParams.g.dart +++ /dev/null @@ -1,17 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'votePollParams.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -VotePollParams _$VotePollParamsFromJson(Map json) => - VotePollParams( - optionIds: (json['optionIds'] as List) - .map((e) => (e as num).toInt()) - .toList(), - ); - -Map _$VotePollParamsToJson(VotePollParams instance) => - {'optionIds': instance.optionIds}; diff --git a/lib/api/marianumcloud/webdav/queries/listFiles/listFilesCache.dart b/lib/api/marianumcloud/webdav/queries/listFiles/listFilesCache.dart index ac7d5b3..3a61460 100644 --- a/lib/api/marianumcloud/webdav/queries/listFiles/listFilesCache.dart +++ b/lib/api/marianumcloud/webdav/queries/listFiles/listFilesCache.dart @@ -6,34 +6,20 @@ import 'listFiles.dart'; import 'listFilesParams.dart'; import 'listFilesResponse.dart'; -class ListFilesCache extends RequestCache { - String path; - +class ListFilesCache extends SimpleCache { ListFilesCache({ required void Function(ListFilesResponse) onUpdate, - void Function(ListFilesResponse)? onCacheData, - void Function(ListFilesResponse)? onNetworkData, - void Function(Exception)? onError, - required this.path, + super.onCacheData, + super.onNetworkData, + super.onError, + required String path, }) : super( - RequestCache.cacheNothing, - onUpdate, - onError: onError ?? RequestCache.ignore, - onCacheData: onCacheData, - onNetworkData: onNetworkData, + cacheTime: RequestCache.cacheNothing, + loader: () => ListFiles(ListFilesParams(path)).run(), + fromJson: ListFilesResponse.fromJson, + onUpdate: onUpdate, ) { - var bytes = utf8.encode('MarianumMobile-$path'); - var cacheName = md5.convert(bytes).toString(); + final cacheName = md5.convert(utf8.encode('MarianumMobile-$path')).toString(); start('wd-folder-$cacheName'); } - - @override - Future onLoad() async { - var data = await ListFiles(ListFilesParams(path)).run(); - return data; - } - - @override - ListFilesResponse onLocalData(String json) => ListFilesResponse.fromJson(jsonDecode(json)); - } diff --git a/lib/api/mhsl/breaker/getBreakers/getBreakersCache.dart b/lib/api/mhsl/breaker/getBreakers/getBreakersCache.dart index 9f7e24d..d7bc0f8 100644 --- a/lib/api/mhsl/breaker/getBreakers/getBreakersCache.dart +++ b/lib/api/mhsl/breaker/getBreakers/getBreakersCache.dart @@ -1,17 +1,14 @@ -import 'dart:convert'; import '../../../requestCache.dart'; import 'getBreakers.dart'; import 'getBreakersResponse.dart'; - -class GetBreakersCache extends RequestCache { - GetBreakersCache({void Function(GetBreakersResponse)? onUpdate, bool? renew}) : super(RequestCache.cacheMinute, onUpdate, renew: renew) { +class GetBreakersCache extends SimpleCache { + GetBreakersCache({super.onUpdate, super.renew}) + : super( + cacheTime: RequestCache.cacheMinute, + loader: () => GetBreakers().run(), + fromJson: GetBreakersResponse.fromJson, + ) { start('breakers'); } - - @override - GetBreakersResponse onLocalData(String json) => GetBreakersResponse.fromJson(jsonDecode(json)); - - @override - Future onLoad() => GetBreakers().run(); } diff --git a/lib/api/mhsl/customTimetableEvent/get/getCustomTimetableEventCache.dart b/lib/api/mhsl/customTimetableEvent/get/getCustomTimetableEventCache.dart index f0a0119..5adc186 100644 --- a/lib/api/mhsl/customTimetableEvent/get/getCustomTimetableEventCache.dart +++ b/lib/api/mhsl/customTimetableEvent/get/getCustomTimetableEventCache.dart @@ -1,30 +1,19 @@ -import 'dart:convert'; - import '../../../requestCache.dart'; import 'getCustomTimetableEvent.dart'; import 'getCustomTimetableEventParams.dart'; import 'getCustomTimetableEventResponse.dart'; -class GetCustomTimetableEventCache extends RequestCache { - GetCustomTimetableEventParams params; - +class GetCustomTimetableEventCache extends SimpleCache { GetCustomTimetableEventCache( - this.params, { - void Function(GetCustomTimetableEventResponse)? onUpdate, - void Function(Exception)? onError, - bool? renew, + GetCustomTimetableEventParams params, { + super.onUpdate, + super.onError, + super.renew, }) : super( - RequestCache.cacheMinute, - onUpdate, - onError: onError ?? RequestCache.ignore, - renew: renew, + cacheTime: RequestCache.cacheMinute, + loader: () => GetCustomTimetableEvent(params).run(), + fromJson: GetCustomTimetableEventResponse.fromJson, ) { start('customTimetableEvents'); } - - @override - Future onLoad() => GetCustomTimetableEvent(params).run(); - - @override - GetCustomTimetableEventResponse onLocalData(String json) => GetCustomTimetableEventResponse.fromJson(jsonDecode(json)); } diff --git a/lib/api/requestCache.dart b/lib/api/requestCache.dart index acfe990..df88c25 100644 --- a/lib/api/requestCache.dart +++ b/lib/api/requestCache.dart @@ -79,3 +79,38 @@ abstract class RequestCache { Future onLoad(); } + +/// Concrete [RequestCache] that delegates the two overrides to functions +/// passed in the constructor. Used to collapse the dozens of one-class-per- +/// endpoint cache files that all just forward to `().run()` and +/// `.fromJson(jsonDecode(...))`. +class SimpleCache extends RequestCache { + final Future Function() _loader; + final T Function(Map json) _fromJson; + + SimpleCache({ + required int cacheTime, + required Future Function() loader, + required T Function(Map json) fromJson, + void Function(T)? onUpdate, + void Function(T)? onCacheData, + void Function(T)? onNetworkData, + void Function(Exception)? onError, + bool? renew, + }) : _loader = loader, + _fromJson = fromJson, + super( + cacheTime, + onUpdate, + onError: onError ?? RequestCache.ignore, + renew: renew, + onCacheData: onCacheData, + onNetworkData: onNetworkData, + ); + + @override + Future onLoad() => _loader(); + + @override + T onLocalData(String json) => _fromJson(jsonDecode(json)); +} diff --git a/lib/api/webuntis/queries/getHolidays/getHolidaysCache.dart b/lib/api/webuntis/queries/getHolidays/getHolidaysCache.dart index e986965..d6a2ff4 100644 --- a/lib/api/webuntis/queries/getHolidays/getHolidaysCache.dart +++ b/lib/api/webuntis/queries/getHolidays/getHolidaysCache.dart @@ -1,26 +1,14 @@ -import 'dart:convert'; - import '../../../requestCache.dart'; import 'getHolidays.dart'; import 'getHolidaysResponse.dart'; -class GetHolidaysCache extends RequestCache { - GetHolidaysCache({ - void Function(GetHolidaysResponse)? onUpdate, - void Function(Exception)? onError, - bool? renew, - }) : super( - RequestCache.cacheDay, - onUpdate, - onError: onError ?? RequestCache.ignore, - renew: renew, +class GetHolidaysCache extends SimpleCache { + GetHolidaysCache({super.onUpdate, super.onError, super.renew}) + : super( + cacheTime: RequestCache.cacheDay, + loader: () => GetHolidays().run(), + fromJson: GetHolidaysResponse.fromJson, ) { start('wu-holidays'); } - - @override - Future onLoad() => GetHolidays().run(); - - @override - GetHolidaysResponse onLocalData(String json) => GetHolidaysResponse.fromJson(jsonDecode(json)); } diff --git a/lib/api/webuntis/queries/getRooms/getRoomsCache.dart b/lib/api/webuntis/queries/getRooms/getRoomsCache.dart index 00c155f..4f8e064 100644 --- a/lib/api/webuntis/queries/getRooms/getRoomsCache.dart +++ b/lib/api/webuntis/queries/getRooms/getRoomsCache.dart @@ -1,27 +1,14 @@ -import 'dart:convert'; - import '../../../requestCache.dart'; import 'getRooms.dart'; import 'getRoomsResponse.dart'; -class GetRoomsCache extends RequestCache { - GetRoomsCache({ - void Function(GetRoomsResponse)? onUpdate, - void Function(Exception)? onError, - bool? renew, - }) : super( - RequestCache.cacheHour, - onUpdate, - onError: onError ?? RequestCache.ignore, - renew: renew, +class GetRoomsCache extends SimpleCache { + GetRoomsCache({super.onUpdate, super.onError, super.renew}) + : super( + cacheTime: RequestCache.cacheHour, + loader: () => GetRooms().run(), + fromJson: GetRoomsResponse.fromJson, ) { start('wu-rooms'); } - - @override - Future onLoad() => GetRooms().run(); - - @override - GetRoomsResponse onLocalData(String json) => GetRoomsResponse.fromJson(jsonDecode(json)); - } diff --git a/lib/api/webuntis/queries/getSubjects/getSubjectsCache.dart b/lib/api/webuntis/queries/getSubjects/getSubjectsCache.dart index 6e834a4..5eeb8d3 100644 --- a/lib/api/webuntis/queries/getSubjects/getSubjectsCache.dart +++ b/lib/api/webuntis/queries/getSubjects/getSubjectsCache.dart @@ -1,27 +1,14 @@ -import 'dart:convert'; - import '../../../requestCache.dart'; import 'getSubjects.dart'; import 'getSubjectsResponse.dart'; -class GetSubjectsCache extends RequestCache { - GetSubjectsCache({ - void Function(GetSubjectsResponse)? onUpdate, - void Function(Exception)? onError, - bool? renew, - }) : super( - RequestCache.cacheHour, - onUpdate, - onError: onError ?? RequestCache.ignore, - renew: renew, +class GetSubjectsCache extends SimpleCache { + GetSubjectsCache({super.onUpdate, super.onError, super.renew}) + : super( + cacheTime: RequestCache.cacheHour, + loader: () => GetSubjects().run(), + fromJson: GetSubjectsResponse.fromJson, ) { start('wu-subjects'); } - - @override - Future onLoad() => GetSubjects().run(); - - @override - onLocalData(String json) => GetSubjectsResponse.fromJson(jsonDecode(json)); - } diff --git a/lib/api/webuntis/queries/getTimegridUnits/getTimegridUnitsCache.dart b/lib/api/webuntis/queries/getTimegridUnits/getTimegridUnitsCache.dart index 6de483d..200aa9c 100644 --- a/lib/api/webuntis/queries/getTimegridUnits/getTimegridUnitsCache.dart +++ b/lib/api/webuntis/queries/getTimegridUnits/getTimegridUnitsCache.dart @@ -1,20 +1,14 @@ -import 'dart:convert'; - import '../../../requestCache.dart'; import 'getTimegridUnits.dart'; import 'getTimegridUnitsResponse.dart'; -class GetTimegridUnitsCache extends RequestCache { - GetTimegridUnitsCache({ - void Function(GetTimegridUnitsResponse)? onUpdate, - bool? renew, - }) : super(RequestCache.cacheDay, onUpdate, renew: renew) { +class GetTimegridUnitsCache extends SimpleCache { + GetTimegridUnitsCache({super.onUpdate, super.renew}) + : super( + cacheTime: RequestCache.cacheDay, + loader: () => GetTimegridUnits().run(), + fromJson: GetTimegridUnitsResponse.fromJson, + ) { start('wu-timegrid'); } - - @override - Future onLoad() => GetTimegridUnits().run(); - - @override - GetTimegridUnitsResponse onLocalData(String json) => GetTimegridUnitsResponse.fromJson(jsonDecode(json)); } diff --git a/lib/api/webuntis/queries/getTimetable/getTimetableCache.dart b/lib/api/webuntis/queries/getTimetable/getTimetableCache.dart index c834030..8a8cd7e 100644 --- a/lib/api/webuntis/queries/getTimetable/getTimetableCache.dart +++ b/lib/api/webuntis/queries/getTimetable/getTimetableCache.dart @@ -1,49 +1,43 @@ -import 'dart:convert'; - import '../../../requestCache.dart'; import '../authenticate/authenticate.dart'; import 'getTimetable.dart'; import 'getTimetableParams.dart'; import 'getTimetableResponse.dart'; -class GetTimetableCache extends RequestCache { - int startdate; - int enddate; - +class GetTimetableCache extends SimpleCache { GetTimetableCache({ required void Function(GetTimetableResponse) onUpdate, - void Function(Exception)? onError, - required this.startdate, - required this.enddate, - bool? renew, + super.onError, + required int startdate, + required int enddate, + super.renew, }) : super( - RequestCache.cacheMinute, - onUpdate, - onError: onError ?? RequestCache.ignore, - renew: renew, + cacheTime: RequestCache.cacheMinute, + loader: () => _load(startdate, enddate), + fromJson: GetTimetableResponse.fromJson, + onUpdate: onUpdate, ) { start('wu-timetable-$startdate-$enddate'); } - @override - GetTimetableResponse onLocalData(String json) => GetTimetableResponse.fromJson(jsonDecode(json)); - - @override - Future onLoad() async => GetTimetable( - GetTimetableParams( - options: GetTimetableParamsOptions( - element: GetTimetableParamsOptionsElement( - id: (await Authenticate.getSession()).personId, - type: (await Authenticate.getSession()).personType, - keyType: GetTimetableParamsOptionsElementKeyType.id, - ), - startDate: startdate, - endDate: enddate, - teacherFields: GetTimetableParamsOptionsFields.all, - subjectFields: GetTimetableParamsOptionsFields.all, - roomFields: GetTimetableParamsOptionsFields.all, - klasseFields: GetTimetableParamsOptionsFields.all, - ) - ) + static Future _load(int startdate, int enddate) async { + final session = await Authenticate.getSession(); + return GetTimetable( + GetTimetableParams( + options: GetTimetableParamsOptions( + element: GetTimetableParamsOptionsElement( + id: session.personId, + type: session.personType, + keyType: GetTimetableParamsOptionsElementKeyType.id, + ), + startDate: startdate, + endDate: enddate, + teacherFields: GetTimetableParamsOptionsFields.all, + subjectFields: GetTimetableParamsOptionsFields.all, + roomFields: GetTimetableParamsOptionsFields.all, + klasseFields: GetTimetableParamsOptionsFields.all, + ), + ), ).run(); + } } diff --git a/lib/main.dart b/lib/main.dart index 307af7b..cb92177 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -28,7 +28,7 @@ import 'state/app/modules/chat/bloc/chat_bloc.dart'; import 'state/app/modules/chatList/bloc/chat_list_bloc.dart'; import 'state/app/modules/settings/bloc/settings_cubit.dart'; import 'state/app/modules/timetable/bloc/timetable_bloc.dart'; -import 'storage/base/settings.dart'; +import 'storage/settings.dart'; import 'theming/dark_app_theme.dart'; import 'theming/light_app_theme.dart'; import 'view/login/login.dart'; diff --git a/lib/state/app/modules/settings/bloc/settings_cubit.dart b/lib/state/app/modules/settings/bloc/settings_cubit.dart index 0fde846..a80d47c 100644 --- a/lib/state/app/modules/settings/bloc/settings_cubit.dart +++ b/lib/state/app/modules/settings/bloc/settings_cubit.dart @@ -3,7 +3,7 @@ import 'dart:developer'; import 'package:easy_debounce/easy_debounce.dart'; import 'package:hydrated_bloc/hydrated_bloc.dart'; -import '../../../../../storage/base/settings.dart'; +import '../../../../../storage/settings.dart'; import '../../../../../view/pages/settings/data/default_settings.dart'; import '../../app_modules.dart'; diff --git a/lib/storage/devTools/devToolsSettings.dart b/lib/storage/dev_tools_settings.dart similarity index 93% rename from lib/storage/devTools/devToolsSettings.dart rename to lib/storage/dev_tools_settings.dart index 4a882ed..03e2fac 100644 --- a/lib/storage/devTools/devToolsSettings.dart +++ b/lib/storage/dev_tools_settings.dart @@ -1,6 +1,6 @@ import 'package:json_annotation/json_annotation.dart'; -part 'devToolsSettings.g.dart'; +part 'dev_tools_settings.g.dart'; @JsonSerializable() class DevToolsSettings { diff --git a/lib/storage/devTools/devToolsSettings.g.dart b/lib/storage/dev_tools_settings.g.dart similarity index 96% rename from lib/storage/devTools/devToolsSettings.g.dart rename to lib/storage/dev_tools_settings.g.dart index 3f480fe..a1cc6de 100644 --- a/lib/storage/devTools/devToolsSettings.g.dart +++ b/lib/storage/dev_tools_settings.g.dart @@ -1,6 +1,6 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -part of 'devToolsSettings.dart'; +part of 'dev_tools_settings.dart'; // ************************************************************************** // JsonSerializableGenerator diff --git a/lib/storage/file/fileSettings.dart b/lib/storage/file_settings.dart similarity index 94% rename from lib/storage/file/fileSettings.dart rename to lib/storage/file_settings.dart index 9dec6ca..c493f7a 100644 --- a/lib/storage/file/fileSettings.dart +++ b/lib/storage/file_settings.dart @@ -2,7 +2,7 @@ import 'package:json_annotation/json_annotation.dart'; import '../../view/pages/files/files.dart'; -part 'fileSettings.g.dart'; +part 'file_settings.g.dart'; @JsonSerializable() class FileSettings { diff --git a/lib/storage/file/fileSettings.g.dart b/lib/storage/file_settings.g.dart similarity index 96% rename from lib/storage/file/fileSettings.g.dart rename to lib/storage/file_settings.g.dart index 9855925..38d4aa5 100644 --- a/lib/storage/file/fileSettings.g.dart +++ b/lib/storage/file_settings.g.dart @@ -1,6 +1,6 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -part of 'fileSettings.dart'; +part of 'file_settings.dart'; // ************************************************************************** // JsonSerializableGenerator diff --git a/lib/storage/fileView/fileViewSettings.dart b/lib/storage/file_view_settings.dart similarity index 91% rename from lib/storage/fileView/fileViewSettings.dart rename to lib/storage/file_view_settings.dart index 1f0f1b3..736377f 100644 --- a/lib/storage/fileView/fileViewSettings.dart +++ b/lib/storage/file_view_settings.dart @@ -1,6 +1,6 @@ import 'package:json_annotation/json_annotation.dart'; -part 'fileViewSettings.g.dart'; +part 'file_view_settings.g.dart'; @JsonSerializable() class FileViewSettings { diff --git a/lib/storage/fileView/fileViewSettings.g.dart b/lib/storage/file_view_settings.g.dart similarity index 94% rename from lib/storage/fileView/fileViewSettings.g.dart rename to lib/storage/file_view_settings.g.dart index f34915a..44d2e30 100644 --- a/lib/storage/fileView/fileViewSettings.g.dart +++ b/lib/storage/file_view_settings.g.dart @@ -1,6 +1,6 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -part of 'fileViewSettings.dart'; +part of 'file_view_settings.dart'; // ************************************************************************** // JsonSerializableGenerator diff --git a/lib/storage/holidays/holidaysSettings.dart b/lib/storage/holidays_settings.dart similarity index 92% rename from lib/storage/holidays/holidaysSettings.dart rename to lib/storage/holidays_settings.dart index 6a25292..d4034e5 100644 --- a/lib/storage/holidays/holidaysSettings.dart +++ b/lib/storage/holidays_settings.dart @@ -1,6 +1,6 @@ import 'package:json_annotation/json_annotation.dart'; -part 'holidaysSettings.g.dart'; +part 'holidays_settings.g.dart'; @JsonSerializable() class HolidaysSettings { diff --git a/lib/storage/holidays/holidaysSettings.g.dart b/lib/storage/holidays_settings.g.dart similarity index 95% rename from lib/storage/holidays/holidaysSettings.g.dart rename to lib/storage/holidays_settings.g.dart index f229202..976acb6 100644 --- a/lib/storage/holidays/holidaysSettings.g.dart +++ b/lib/storage/holidays_settings.g.dart @@ -1,6 +1,6 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -part of 'holidaysSettings.dart'; +part of 'holidays_settings.dart'; // ************************************************************************** // JsonSerializableGenerator diff --git a/lib/storage/general/modulesSettings.dart b/lib/storage/modules_settings.dart similarity index 93% rename from lib/storage/general/modulesSettings.dart rename to lib/storage/modules_settings.dart index 387982f..14edc66 100644 --- a/lib/storage/general/modulesSettings.dart +++ b/lib/storage/modules_settings.dart @@ -2,7 +2,7 @@ import 'package:freezed_annotation/freezed_annotation.dart'; import '../../state/app/modules/app_modules.dart'; -part 'modulesSettings.g.dart'; +part 'modules_settings.g.dart'; @JsonSerializable() class ModulesSettings { diff --git a/lib/storage/general/modulesSettings.g.dart b/lib/storage/modules_settings.g.dart similarity index 97% rename from lib/storage/general/modulesSettings.g.dart rename to lib/storage/modules_settings.g.dart index dbc7318..fd51b41 100644 --- a/lib/storage/general/modulesSettings.g.dart +++ b/lib/storage/modules_settings.g.dart @@ -1,6 +1,6 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -part of 'modulesSettings.dart'; +part of 'modules_settings.dart'; // ************************************************************************** // JsonSerializableGenerator diff --git a/lib/storage/notification/notificationSettings.dart b/lib/storage/notification_settings.dart similarity index 91% rename from lib/storage/notification/notificationSettings.dart rename to lib/storage/notification_settings.dart index ce02847..ae08533 100644 --- a/lib/storage/notification/notificationSettings.dart +++ b/lib/storage/notification_settings.dart @@ -1,6 +1,6 @@ import 'package:json_annotation/json_annotation.dart'; -part 'notificationSettings.g.dart'; +part 'notification_settings.g.dart'; @JsonSerializable() class NotificationSettings { diff --git a/lib/storage/notification/notificationSettings.g.dart b/lib/storage/notification_settings.g.dart similarity index 94% rename from lib/storage/notification/notificationSettings.g.dart rename to lib/storage/notification_settings.g.dart index 0229204..ac37ecb 100644 --- a/lib/storage/notification/notificationSettings.g.dart +++ b/lib/storage/notification_settings.g.dart @@ -1,6 +1,6 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -part of 'notificationSettings.dart'; +part of 'notification_settings.dart'; // ************************************************************************** // JsonSerializableGenerator diff --git a/lib/storage/base/settings.dart b/lib/storage/settings.dart similarity index 78% rename from lib/storage/base/settings.dart rename to lib/storage/settings.dart index 2914e1a..af3abbb 100644 --- a/lib/storage/base/settings.dart +++ b/lib/storage/settings.dart @@ -1,14 +1,14 @@ import 'package:flutter/material.dart'; import 'package:json_annotation/json_annotation.dart'; -import '../devTools/devToolsSettings.dart'; -import '../file/fileSettings.dart'; -import '../fileView/fileViewSettings.dart'; -import '../general/modulesSettings.dart'; -import '../holidays/holidaysSettings.dart'; -import '../notification/notificationSettings.dart'; -import '../talk/talkSettings.dart'; -import '../timetable/timetableSettings.dart'; +import 'dev_tools_settings.dart'; +import 'file_settings.dart'; +import 'file_view_settings.dart'; +import 'modules_settings.dart'; +import 'holidays_settings.dart'; +import 'notification_settings.dart'; +import 'talk_settings.dart'; +import 'timetable_settings.dart'; part 'settings.g.dart'; diff --git a/lib/storage/base/settings.g.dart b/lib/storage/settings.g.dart similarity index 100% rename from lib/storage/base/settings.g.dart rename to lib/storage/settings.g.dart diff --git a/lib/storage/talk/talkSettings.dart b/lib/storage/talk_settings.dart similarity index 94% rename from lib/storage/talk/talkSettings.dart rename to lib/storage/talk_settings.dart index 7c3123a..180dc45 100644 --- a/lib/storage/talk/talkSettings.dart +++ b/lib/storage/talk_settings.dart @@ -1,6 +1,6 @@ import 'package:json_annotation/json_annotation.dart'; -part 'talkSettings.g.dart'; +part 'talk_settings.g.dart'; @JsonSerializable() class TalkSettings { diff --git a/lib/storage/talk/talkSettings.g.dart b/lib/storage/talk_settings.g.dart similarity index 96% rename from lib/storage/talk/talkSettings.g.dart rename to lib/storage/talk_settings.g.dart index 568988e..0b3e55b 100644 --- a/lib/storage/talk/talkSettings.g.dart +++ b/lib/storage/talk_settings.g.dart @@ -1,6 +1,6 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -part of 'talkSettings.dart'; +part of 'talk_settings.dart'; // ************************************************************************** // JsonSerializableGenerator diff --git a/lib/storage/timetable/timetableSettings.dart b/lib/storage/timetable_settings.dart similarity index 81% rename from lib/storage/timetable/timetableSettings.dart rename to lib/storage/timetable_settings.dart index 72d6a93..c4db103 100644 --- a/lib/storage/timetable/timetableSettings.dart +++ b/lib/storage/timetable_settings.dart @@ -1,8 +1,8 @@ import 'package:json_annotation/json_annotation.dart'; -import 'timetable_name_mode.dart'; +import '../../../view/pages/timetable/data/timetable_name_mode.dart'; -part 'timetableSettings.g.dart'; +part 'timetable_settings.g.dart'; @JsonSerializable() class TimetableSettings { diff --git a/lib/storage/timetable/timetableSettings.g.dart b/lib/storage/timetable_settings.g.dart similarity index 96% rename from lib/storage/timetable/timetableSettings.g.dart rename to lib/storage/timetable_settings.g.dart index 2ea7c43..87c60d7 100644 --- a/lib/storage/timetable/timetableSettings.g.dart +++ b/lib/storage/timetable_settings.g.dart @@ -1,6 +1,6 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -part of 'timetableSettings.dart'; +part of 'timetable_settings.dart'; // ************************************************************************** // JsonSerializableGenerator diff --git a/lib/view/pages/overhang.dart b/lib/view/pages/overhang.dart index c43412f..f27445f 100644 --- a/lib/view/pages/overhang.dart +++ b/lib/view/pages/overhang.dart @@ -9,7 +9,7 @@ import '../../extensions/render_not_null.dart'; import '../../routing/app_routes.dart'; import '../../state/app/modules/app_modules.dart'; import '../../state/app/modules/settings/bloc/settings_cubit.dart'; -import '../../storage/base/settings.dart' as model; +import '../../storage/settings.dart' as model; import '../../widget/centered_leading.dart'; import '../../widget/info_dialog.dart'; import 'settings/data/default_settings.dart'; diff --git a/lib/view/pages/settings/data/default_settings.dart b/lib/view/pages/settings/data/default_settings.dart index 18088d0..49640a1 100644 --- a/lib/view/pages/settings/data/default_settings.dart +++ b/lib/view/pages/settings/data/default_settings.dart @@ -3,16 +3,16 @@ import 'dart:io'; import 'package:flutter/material.dart'; import '../../../../state/app/modules/app_modules.dart'; -import '../../../../storage/base/settings.dart'; -import '../../../../storage/devTools/devToolsSettings.dart'; -import '../../../../storage/file/fileSettings.dart'; -import '../../../../storage/fileView/fileViewSettings.dart'; -import '../../../../storage/general/modulesSettings.dart'; -import '../../../../storage/holidays/holidaysSettings.dart'; -import '../../../../storage/notification/notificationSettings.dart'; -import '../../../../storage/talk/talkSettings.dart'; -import '../../../../storage/timetable/timetable_name_mode.dart'; -import '../../../../storage/timetable/timetableSettings.dart'; +import '../../../../storage/settings.dart'; +import '../../../../storage/dev_tools_settings.dart'; +import '../../../../storage/file_settings.dart'; +import '../../../../storage/file_view_settings.dart'; +import '../../../../storage/modules_settings.dart'; +import '../../../../storage/holidays_settings.dart'; +import '../../../../storage/notification_settings.dart'; +import '../../../../storage/talk_settings.dart'; +import '../../../../view/pages/timetable/data/timetable_name_mode.dart'; +import '../../../../storage/timetable_settings.dart'; import '../../files/files.dart'; class DefaultSettings { diff --git a/lib/view/pages/settings/sections/timetable_section.dart b/lib/view/pages/settings/sections/timetable_section.dart index a755eb5..a402cd9 100644 --- a/lib/view/pages/settings/sections/timetable_section.dart +++ b/lib/view/pages/settings/sections/timetable_section.dart @@ -3,7 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../../state/app/modules/settings/bloc/settings_cubit.dart'; import '../../../../state/app/modules/timetable/bloc/timetable_bloc.dart'; -import '../../../../storage/timetable/timetable_name_mode.dart'; +import '../../../../view/pages/timetable/data/timetable_name_mode.dart'; class TimetableSection extends StatelessWidget { const TimetableSection({super.key}); diff --git a/lib/view/pages/settings/settings.dart b/lib/view/pages/settings/settings.dart index b584bd4..196d5e5 100644 --- a/lib/view/pages/settings/settings.dart +++ b/lib/view/pages/settings/settings.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../state/app/modules/settings/bloc/settings_cubit.dart'; -import '../../../storage/base/settings.dart' as model; +import '../../../storage/settings.dart' as model; import 'sections/about_section.dart'; import 'sections/account_section.dart'; import 'sections/appearance_section.dart'; diff --git a/lib/view/pages/talk/widgets/chat_message_options_dialog.dart b/lib/view/pages/talk/widgets/chat_message_options_dialog.dart index 02600f4..1de61f6 100644 --- a/lib/view/pages/talk/widgets/chat_message_options_dialog.dart +++ b/lib/view/pages/talk/widgets/chat_message_options_dialog.dart @@ -5,7 +5,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../../api/marianumcloud/talk/chat/getChatResponse.dart'; -import '../../../../api/marianumcloud/talk/deleteMessage/deleteMessage.dart'; +import '../../../../api/marianumcloud/talk/actions/talk_actions.dart'; import '../../../../api/marianumcloud/talk/reactMessage/reactMessage.dart'; import '../../../../api/marianumcloud/talk/reactMessage/reactMessageParams.dart'; import '../../../../api/marianumcloud/talk/room/getRoomResponse.dart'; diff --git a/lib/view/pages/talk/widgets/chat_tile.dart b/lib/view/pages/talk/widgets/chat_tile.dart index 1696479..bfce9c5 100644 --- a/lib/view/pages/talk/widgets/chat_tile.dart +++ b/lib/view/pages/talk/widgets/chat_tile.dart @@ -3,10 +3,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:jiffy/jiffy.dart'; +import '../../../../api/marianumcloud/talk/actions/talk_actions.dart'; import '../../../../api/marianumcloud/talk/chat/richObjectStringProcessor.dart'; -import '../../../../api/marianumcloud/talk/leaveRoom/leaveRoom.dart'; import '../../../../api/marianumcloud/talk/room/getRoomResponse.dart'; -import '../../../../api/marianumcloud/talk/setFavorite/setFavorite.dart'; import '../../../../api/marianumcloud/talk/setReadMarker/setReadMarker.dart'; import '../../../../api/marianumcloud/talk/setReadMarker/setReadMarkerParams.dart'; import '../../../../model/account_data.dart'; diff --git a/lib/view/pages/timetable/data/timetable_appointment_factory.dart b/lib/view/pages/timetable/data/timetable_appointment_factory.dart index 868bc60..3d14aa8 100644 --- a/lib/view/pages/timetable/data/timetable_appointment_factory.dart +++ b/lib/view/pages/timetable/data/timetable_appointment_factory.dart @@ -5,8 +5,8 @@ import '../../../../api/mhsl/customTimetableEvent/customTimetableEvent.dart'; import '../../../../api/webuntis/queries/getRooms/getRoomsResponse.dart'; import '../../../../api/webuntis/queries/getSubjects/getSubjectsResponse.dart'; import '../../../../api/webuntis/queries/getTimetable/getTimetableResponse.dart'; -import '../../../../storage/timetable/timetableSettings.dart'; -import '../../../../storage/timetable/timetable_name_mode.dart'; +import '../../../../storage/timetable_settings.dart'; +import 'timetable_name_mode.dart'; import '../custom_events/custom_event_colors.dart'; import 'arbitrary_appointment.dart'; import 'lesson_color.dart'; diff --git a/lib/storage/timetable/timetable_name_mode.dart b/lib/view/pages/timetable/data/timetable_name_mode.dart similarity index 92% rename from lib/storage/timetable/timetable_name_mode.dart rename to lib/view/pages/timetable/data/timetable_name_mode.dart index 36e0f7e..7e534a9 100644 --- a/lib/storage/timetable/timetable_name_mode.dart +++ b/lib/view/pages/timetable/data/timetable_name_mode.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import '../../widget/dropdown_display.dart'; +import '../../../../widget/dropdown_display.dart'; enum TimetableNameMode { name, longName, alternateName }