claude refactorings, flutter best practices, platform dependent changes, general cleanup
This commit is contained in:
1 parent
4b1d4379a0
commit
4e1272aba9
281 files changed
+1948
-1041
No files matched your search
@@ -1,6 +1,6 @@
|
||||
import 'package:dio/dio.dart';
|
||||
|
||||
import '../../infrastructure/dataLoader/data_loader.dart';
|
||||
import '../../infrastructure/data_loader/data_loader.dart';
|
||||
|
||||
abstract class HolidayDataLoader<TResult> extends DataLoader<TResult> {
|
||||
HolidayDataLoader() : super(Dio(BaseOptions(
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:dio/dio.dart';
|
||||
|
||||
import '../../infrastructure/dataLoader/data_loader.dart';
|
||||
import '../../infrastructure/data_loader/data_loader.dart';
|
||||
|
||||
abstract class MhslDataLoader<TResult> extends DataLoader<TResult> {
|
||||
MhslDataLoader() : super(Dio(BaseOptions(
|
||||
|
||||
+4
-4
@@ -6,9 +6,9 @@ import 'package:dio/dio.dart';
|
||||
abstract class DataLoader<TResult> {
|
||||
final Dio dio;
|
||||
DataLoader(this.dio) {
|
||||
dio.options.connectTimeout = const Duration(seconds: 10).inMilliseconds;
|
||||
dio.options.sendTimeout = const Duration(seconds: 30).inMilliseconds;
|
||||
dio.options.receiveTimeout = const Duration(seconds: 30).inMilliseconds;
|
||||
dio.options.connectTimeout = const Duration(seconds: 10);
|
||||
dio.options.sendTimeout = const Duration(seconds: 30);
|
||||
dio.options.receiveTimeout = const Duration(seconds: 30);
|
||||
}
|
||||
|
||||
Future<TResult> run() async {
|
||||
@@ -26,7 +26,7 @@ abstract class DataLoader<TResult> {
|
||||
));
|
||||
} catch(trace, e) {
|
||||
log(trace.toString());
|
||||
throw(e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:bloc/bloc.dart';
|
||||
import 'package:connectivity_plus/connectivity_plus.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:jiffy/jiffy.dart';
|
||||
|
||||
import 'loadable_state_event.dart';
|
||||
@@ -21,7 +21,7 @@ class LoadableStateBloc extends Bloc<LoadableStateEvent, LoadableStateState> {
|
||||
}
|
||||
});
|
||||
|
||||
emitConnectivity(List<ConnectivityResult> result) => add(ConnectivityChanged(LoadableStateState(connections: result)));
|
||||
void emitConnectivity(List<ConnectivityResult> result) => add(ConnectivityChanged(LoadableStateState(connections: result)));
|
||||
|
||||
Connectivity().checkConnectivity().then(emitConnectivity);
|
||||
_updateStream = Connectivity().onConnectivityChanged.listen(emitConnectivity);
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+3
-4
@@ -1,10 +1,9 @@
|
||||
import 'package:bloc/bloc.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
|
||||
import '../../../../../widget/conditional_wrapper.dart';
|
||||
import '../../utilityWidgets/bloc_module.dart';
|
||||
import '../../utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../utility_widgets/bloc_module.dart';
|
||||
import '../../utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../bloc/loadable_state_bloc.dart';
|
||||
import '../bloc/loadable_state_state.dart';
|
||||
import '../loadable_state.dart';
|
||||
File renamed without changes.
+1
-1
@@ -1,5 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
|
||||
import '../../../../../widget/info_dialog.dart';
|
||||
import '../bloc/loadable_state_bloc.dart';
|
||||
File renamed without changes.
File renamed without changes.
+3
-3
@@ -3,10 +3,10 @@ import 'dart:developer';
|
||||
import 'package:hydrated_bloc/hydrated_bloc.dart';
|
||||
|
||||
import '../../../../../api/errors/error_mapper.dart';
|
||||
import '../../loadableState/loading_error.dart';
|
||||
import '../../loadable_state/loadable_state.dart';
|
||||
import '../../loadable_state/loading_error.dart';
|
||||
import '../../repository/repository.dart';
|
||||
import 'loadable_hydrated_bloc_event.dart';
|
||||
import '../../loadableState/loadable_state.dart';
|
||||
import 'loadable_save_context.dart';
|
||||
|
||||
abstract class LoadableHydratedBloc<
|
||||
@@ -90,7 +90,7 @@ abstract class LoadableHydratedBloc<
|
||||
}
|
||||
|
||||
@override
|
||||
fromJson(Map<String, dynamic> json) {
|
||||
LoadableState<TState> fromJson(Map<String, dynamic> json) {
|
||||
var rawData = LoadableSaveContext.unwrap(json);
|
||||
return LoadableState(
|
||||
isLoading: true,
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import '../../loadableState/loading_error.dart';
|
||||
import '../../loadable_state/loading_error.dart';
|
||||
|
||||
class LoadableHydratedBlocEvent<TState> {}
|
||||
class Emit<TState> extends LoadableHydratedBlocEvent<TState> {
|
||||
+1
-1
@@ -19,5 +19,5 @@ abstract class LoadableSaveContext with _$LoadableSaveContext {
|
||||
{dataKey: data, metaKey: LoadableSaveContext(timestamp: lastFetch).toJson()};
|
||||
|
||||
static ({Map<String, dynamic> data, LoadableSaveContext meta}) unwrap(Map<String, dynamic> data) =>
|
||||
(data: data[dataKey] as Map<String, dynamic>, meta: LoadableSaveContext.fromJson(data[metaKey]));
|
||||
(data: data[dataKey] as Map<String, dynamic>, meta: LoadableSaveContext.fromJson(data[metaKey] as Map<String, dynamic>));
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
@@ -1,10 +1,9 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:persistent_bottom_nav_bar_v2/persistent_bottom_nav_bar_v2.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
|
||||
import 'package:badges/badges.dart' as badges;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:persistent_bottom_nav_bar_v2/persistent_bottom_nav_bar_v2.dart';
|
||||
|
||||
import '../../../api/mhsl/breaker/getBreakers/getBreakersResponse.dart';
|
||||
import '../../../api/mhsl/breaker/get_breakers/get_breakers_response.dart';
|
||||
import '../../../routing/app_routes.dart';
|
||||
import '../../../view/pages/files/files.dart';
|
||||
import '../../../view/pages/grade_averages/grade_averages_view.dart';
|
||||
@@ -16,9 +15,9 @@ import '../../../view/pages/talk/chat_list.dart';
|
||||
import '../../../view/pages/timetable/timetable.dart';
|
||||
import '../../../widget/breaker/breaker.dart';
|
||||
import '../../../widget/centered_leading.dart';
|
||||
import '../infrastructure/loadableState/loadable_state.dart';
|
||||
import 'chatList/bloc/chat_list_bloc.dart';
|
||||
import 'chatList/bloc/chat_list_state.dart';
|
||||
import '../infrastructure/loadable_state/loadable_state.dart';
|
||||
import 'chat_list/bloc/chat_list_bloc.dart';
|
||||
import 'chat_list/bloc/chat_list_state.dart';
|
||||
import 'settings/bloc/settings_cubit.dart';
|
||||
|
||||
class AppModule {
|
||||
@@ -30,8 +29,8 @@ class AppModule {
|
||||
|
||||
AppModule(this.module, {required this.name, required this.icon, this.breakerArea = BreakerArea.global, required this.create});
|
||||
|
||||
static Map<Modules, AppModule> modules(BuildContext context, { showFiltered = false }) {
|
||||
var settings = context.read<SettingsCubit>();
|
||||
static Map<Modules, AppModule> modules(BuildContext context, {bool showFiltered = false}) {
|
||||
final settings = context.read<SettingsCubit>();
|
||||
var available = {
|
||||
Modules.timetable: AppModule(
|
||||
Modules.timetable,
|
||||
@@ -109,7 +108,7 @@ class AppModule {
|
||||
),
|
||||
};
|
||||
|
||||
if(!showFiltered) available.removeWhere((key, value) => settings.val().modulesSettings.hiddenModules.contains(key));
|
||||
if (!showFiltered) available.removeWhere((key, value) => settings.val().modulesSettings.hiddenModules.contains(key));
|
||||
|
||||
return { for (var element in settings.val().modulesSettings.moduleOrder.where((element) => available.containsKey(element))) element : available[element]! };
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:package_info_plus/package_info_plus.dart';
|
||||
|
||||
import '../../../../../api/mhsl/breaker/getBreakers/getBreakersResponse.dart';
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../../../api/mhsl/breaker/get_breakers/get_breakers_response.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../repository/breaker_repository.dart';
|
||||
import 'breaker_event.dart';
|
||||
import 'breaker_state.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import 'breaker_state.dart';
|
||||
|
||||
sealed class BreakerEvent extends LoadableHydratedBlocEvent<BreakerState> {}
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
import '../../../../../api/mhsl/breaker/getBreakers/getBreakersResponse.dart';
|
||||
import '../../../../../api/mhsl/breaker/get_breakers/get_breakers_response.dart';
|
||||
|
||||
part 'breaker_state.freezed.dart';
|
||||
part 'breaker_state.g.dart';
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
import 'dart:async';
|
||||
|
||||
import '../../../../../api/mhsl/breaker/getBreakers/getBreakersCache.dart';
|
||||
import '../../../../../api/mhsl/breaker/getBreakers/getBreakersResponse.dart';
|
||||
import '../../../../../api/mhsl/breaker/get_breakers/get_breakers_cache.dart';
|
||||
import '../../../../../api/mhsl/breaker/get_breakers/get_breakers_response.dart';
|
||||
|
||||
class BreakerDataProvider {
|
||||
Future<GetBreakersResponse> getBreakers() {
|
||||
@@ -1,6 +1,6 @@
|
||||
import '../../../infrastructure/repository/repository.dart';
|
||||
import '../bloc/breaker_state.dart';
|
||||
import '../dataProvider/breaker_data_provider.dart';
|
||||
import '../data_provider/breaker_data_provider.dart';
|
||||
|
||||
class BreakerRepository extends Repository<BreakerState> {
|
||||
final BreakerDataProvider _provider;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import '../../../../../api/errors/error_mapper.dart';
|
||||
import '../../../../../api/marianumcloud/talk/chat/getChatResponse.dart';
|
||||
import '../../../infrastructure/loadableState/loading_error.dart';
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../../../api/marianumcloud/talk/chat/get_chat_response.dart';
|
||||
import '../../../infrastructure/loadable_state/loading_error.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../repository/chat_repository.dart';
|
||||
import 'chat_event.dart';
|
||||
import 'chat_state.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import 'chat_state.dart';
|
||||
|
||||
sealed class ChatEvent extends LoadableHydratedBlocEvent<ChatState> {}
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
import '../../../../../api/marianumcloud/talk/chat/getChatResponse.dart';
|
||||
import '../../../../../api/marianumcloud/talk/chat/get_chat_response.dart';
|
||||
|
||||
part 'chat_state.freezed.dart';
|
||||
part 'chat_state.g.dart';
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
import '../../../../../api/marianumcloud/talk/chat/getChatCache.dart';
|
||||
import '../../../../../api/marianumcloud/talk/chat/getChatResponse.dart';
|
||||
import '../../../../../api/marianumcloud/talk/chat/get_chat_cache.dart';
|
||||
import '../../../../../api/marianumcloud/talk/chat/get_chat_response.dart';
|
||||
|
||||
class ChatDataProvider {
|
||||
Future<GetChatResponse> getChat({
|
||||
@@ -1,6 +1,6 @@
|
||||
import '../../../infrastructure/repository/repository.dart';
|
||||
import '../bloc/chat_state.dart';
|
||||
import '../dataProvider/chat_data_provider.dart';
|
||||
import '../data_provider/chat_data_provider.dart';
|
||||
|
||||
class ChatRepository extends Repository<ChatState> {
|
||||
final ChatDataProvider _provider;
|
||||
|
||||
+11
-6
@@ -1,9 +1,12 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter_app_badge/flutter_app_badge.dart';
|
||||
|
||||
import '../../../../../api/errors/error_mapper.dart';
|
||||
import '../../../infrastructure/loadableState/loading_error.dart';
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../../../api/marianumcloud/talk/room/get_room_response.dart';
|
||||
import '../../../infrastructure/loadable_state/loading_error.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../repository/chat_list_repository.dart';
|
||||
import 'chat_list_event.dart';
|
||||
import 'chat_list_state.dart';
|
||||
@@ -72,10 +75,12 @@ class ChatListBloc extends LoadableHydratedBloc<ChatListEvent, ChatListState, Ch
|
||||
await refresh();
|
||||
}
|
||||
|
||||
void _updateAppBadge(dynamic rooms) {
|
||||
void _updateAppBadge(GetRoomResponse rooms) {
|
||||
try {
|
||||
final unread = rooms.data.map((e) => e.unreadMessages).fold<int>(0, (a, b) => a + b as int);
|
||||
final unread = rooms.data.fold<int>(0, (a, room) => a + room.unreadMessages);
|
||||
FlutterAppBadge.count(unread);
|
||||
} catch (_) {}
|
||||
} on Object catch (e) {
|
||||
log('Failed to update app badge: $e');
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import 'chat_list_state.dart';
|
||||
|
||||
sealed class ChatListEvent extends LoadableHydratedBlocEvent<ChatListState> {}
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
import '../../../../../api/marianumcloud/talk/room/getRoomResponse.dart';
|
||||
import '../../../../../api/marianumcloud/talk/room/get_room_response.dart';
|
||||
|
||||
part 'chat_list_state.freezed.dart';
|
||||
part 'chat_list_state.g.dart';
|
||||
File renamed without changes.
File renamed without changes.
+4
-4
@@ -1,7 +1,7 @@
|
||||
import '../../../../../api/marianumcloud/talk/room/getRoomCache.dart';
|
||||
import '../../../../../api/marianumcloud/talk/room/getRoomResponse.dart';
|
||||
import '../../../../../api/marianumcloud/talk/createRoom/createRoom.dart';
|
||||
import '../../../../../api/marianumcloud/talk/createRoom/createRoomParams.dart';
|
||||
import '../../../../../api/marianumcloud/talk/create_room/create_room.dart';
|
||||
import '../../../../../api/marianumcloud/talk/create_room/create_room_params.dart';
|
||||
import '../../../../../api/marianumcloud/talk/room/get_room_cache.dart';
|
||||
import '../../../../../api/marianumcloud/talk/room/get_room_response.dart';
|
||||
|
||||
class ChatListDataProvider {
|
||||
Future<GetRoomResponse> getRooms({
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
import '../../../infrastructure/repository/repository.dart';
|
||||
import '../bloc/chat_list_state.dart';
|
||||
import '../dataProvider/chat_list_data_provider.dart';
|
||||
import '../data_provider/chat_list_data_provider.dart';
|
||||
|
||||
class ChatListRepository extends Repository<ChatListState> {
|
||||
final ChatListDataProvider _provider;
|
||||
@@ -1,8 +1,8 @@
|
||||
import '../../../../../api/errors/error_mapper.dart';
|
||||
import '../../../../../api/marianumcloud/webdav/queries/listFiles/listFilesResponse.dart';
|
||||
import '../../../infrastructure/loadableState/loading_error.dart';
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../../../api/marianumcloud/webdav/queries/list_files/list_files_response.dart';
|
||||
import '../../../infrastructure/loadable_state/loading_error.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../repository/files_repository.dart';
|
||||
import 'files_event.dart';
|
||||
import 'files_state.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import 'files_state.dart';
|
||||
|
||||
sealed class FilesEvent extends LoadableHydratedBlocEvent<FilesState> {}
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
import '../../../../../api/marianumcloud/webdav/queries/listFiles/listFilesResponse.dart';
|
||||
import '../../../../../api/marianumcloud/webdav/queries/list_files/list_files_response.dart';
|
||||
|
||||
part 'files_state.freezed.dart';
|
||||
part 'files_state.g.dart';
|
||||
|
||||
+3
-3
@@ -1,8 +1,8 @@
|
||||
import 'package:nextcloud/nextcloud.dart';
|
||||
|
||||
import '../../../../../api/marianumcloud/webdav/queries/listFiles/listFilesCache.dart';
|
||||
import '../../../../../api/marianumcloud/webdav/queries/listFiles/listFilesResponse.dart';
|
||||
import '../../../../../api/marianumcloud/webdav/webdavApi.dart';
|
||||
import '../../../../../api/marianumcloud/webdav/queries/list_files/list_files_cache.dart';
|
||||
import '../../../../../api/marianumcloud/webdav/queries/list_files/list_files_response.dart';
|
||||
import '../../../../../api/marianumcloud/webdav/webdav_api.dart';
|
||||
|
||||
class FilesDataProvider {
|
||||
/// Lists files at [path]. Cached payload is delivered via [onCacheData] as
|
||||
@@ -1,6 +1,6 @@
|
||||
import '../../../infrastructure/repository/repository.dart';
|
||||
import '../bloc/files_state.dart';
|
||||
import '../dataProvider/files_data_provider.dart';
|
||||
import '../data_provider/files_data_provider.dart';
|
||||
|
||||
class FilesRepository extends Repository<FilesState> {
|
||||
final FilesDataProvider _provider;
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,5 +1,5 @@
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../repository/holidays_repository.dart';
|
||||
import 'holidays_event.dart';
|
||||
import 'holidays_state.dart';
|
||||
@@ -22,16 +22,16 @@ class HolidaysBloc extends LoadableHydratedBloc<HolidaysEvent, HolidaysState, Ho
|
||||
.toList() ?? [];
|
||||
|
||||
@override
|
||||
fromNothing() => const HolidaysState(showPastHolidays: false, holidays: [], showDisclaimer: true);
|
||||
HolidaysState fromNothing() => const HolidaysState(showPastHolidays: false, holidays: [], showDisclaimer: true);
|
||||
@override
|
||||
fromStorage(Map<String, dynamic> json) => HolidaysState.fromJson(json);
|
||||
HolidaysState fromStorage(Map<String, dynamic> json) => HolidaysState.fromJson(json);
|
||||
@override
|
||||
Future<void> gatherData() async {
|
||||
var holidays = await repo.getHolidays();
|
||||
add(DataGathered((state) => state.copyWith(holidays: holidays)));
|
||||
}
|
||||
@override
|
||||
repository() => HolidaysRepository();
|
||||
HolidaysRepository repository() => HolidaysRepository();
|
||||
@override
|
||||
Map<String, dynamic>? toStorage(state) => state.toJson();
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import 'holidays_state.dart';
|
||||
|
||||
sealed class HolidaysEvent extends LoadableHydratedBlocEvent<HolidaysState> {}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
part 'holidays_state.freezed.dart';
|
||||
part 'holidays_state.g.dart';
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
import 'package:dio/dio.dart';
|
||||
|
||||
import '../../../basis/dataloader/holiday_data_loader.dart';
|
||||
import '../../../infrastructure/dataLoader/data_loader.dart';
|
||||
import '../../../infrastructure/data_loader/data_loader.dart';
|
||||
import '../bloc/holidays_state.dart';
|
||||
|
||||
class HolidaysGetHolidays extends HolidayDataLoader<List<Holiday>> {
|
||||
@@ -1,6 +1,6 @@
|
||||
import '../../../infrastructure/repository/repository.dart';
|
||||
import '../bloc/holidays_state.dart';
|
||||
import '../dataProvider/holidays_get_holidays.dart';
|
||||
import '../data_provider/holidays_get_holidays.dart';
|
||||
|
||||
class HolidaysRepository extends Repository<HolidaysState> {
|
||||
Future<List<Holiday>> getHolidays() => HolidaysGetHolidays().run();
|
||||
|
||||
+5
-5
@@ -1,5 +1,5 @@
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../repository/marianum_dates_repository.dart';
|
||||
import 'marianum_dates_event.dart';
|
||||
import 'marianum_dates_state.dart';
|
||||
@@ -18,16 +18,16 @@ class MarianumDatesBloc extends LoadableHydratedBloc<MarianumDatesEvent, Marianu
|
||||
.toList() ?? [];
|
||||
|
||||
@override
|
||||
fromNothing() => const MarianumDatesState(showPastEvents: false, events: []);
|
||||
MarianumDatesState fromNothing() => const MarianumDatesState(showPastEvents: false, events: []);
|
||||
@override
|
||||
fromStorage(Map<String, dynamic> json) => MarianumDatesState.fromJson(json);
|
||||
MarianumDatesState fromStorage(Map<String, dynamic> json) => MarianumDatesState.fromJson(json);
|
||||
@override
|
||||
Future<void> gatherData() async {
|
||||
final events = await repo.getEvents();
|
||||
add(DataGathered((state) => state.copyWith(events: events)));
|
||||
}
|
||||
@override
|
||||
repository() => MarianumDatesRepository();
|
||||
MarianumDatesRepository repository() => MarianumDatesRepository();
|
||||
@override
|
||||
Map<String, dynamic>? toStorage(state) => state.toJson();
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import 'marianum_dates_state.dart';
|
||||
|
||||
sealed class MarianumDatesEvent extends LoadableHydratedBlocEvent<MarianumDatesState> {}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
part 'marianum_dates_state.freezed.dart';
|
||||
part 'marianum_dates_state.g.dart';
|
||||
File renamed without changes.
File renamed without changes.
+2
-2
@@ -7,8 +7,8 @@ class MarianumDatesGetEvents {
|
||||
static const String url = 'https://public-cal.marianumlan.de/cal_public/ad4c5da8-7466-9c72-89cb-8b8d9a5cf26c';
|
||||
|
||||
final Dio _dio = Dio(BaseOptions(
|
||||
connectTimeout: const Duration(seconds: 10).inMilliseconds,
|
||||
receiveTimeout: const Duration(seconds: 30).inMilliseconds,
|
||||
connectTimeout: const Duration(seconds: 10),
|
||||
receiveTimeout: const Duration(seconds: 30),
|
||||
));
|
||||
|
||||
Future<List<MarianumDate>> run() async {
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
import '../../../infrastructure/repository/repository.dart';
|
||||
import '../bloc/marianum_dates_state.dart';
|
||||
import '../dataProvider/marianum_dates_get_events.dart';
|
||||
import '../data_provider/marianum_dates_get_events.dart';
|
||||
|
||||
class MarianumDatesRepository extends Repository<MarianumDatesState> {
|
||||
Future<List<MarianumDate>> getEvents() => MarianumDatesGetEvents().run();
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../repository/marianum_message_repository.dart';
|
||||
import 'marianum_message_event.dart';
|
||||
import 'marianum_message_state.dart';
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import 'marianum_message_state.dart';
|
||||
|
||||
sealed class MarianumMessageEvent extends LoadableHydratedBlocEvent<MarianumMessageState> {}
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
+2
-2
@@ -1,12 +1,12 @@
|
||||
import 'package:dio/dio.dart';
|
||||
|
||||
import '../../../infrastructure/dataLoader/data_loader.dart';
|
||||
import '../../../basis/dataloader/mhsl_data_loader.dart';
|
||||
import '../../../infrastructure/data_loader/data_loader.dart';
|
||||
import '../bloc/marianum_message_state.dart';
|
||||
|
||||
class MarianumMessageGetMessages extends MhslDataLoader<MarianumMessageList> {
|
||||
@override
|
||||
Future<Response<String>> fetch() async => dio.get('/message/messages.json');
|
||||
@override
|
||||
MarianumMessageList assemble(DataLoaderResult data) => MarianumMessageList.fromJson(data.json);
|
||||
MarianumMessageList assemble(DataLoaderResult data) => MarianumMessageList.fromJson(data.asMap());
|
||||
}
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
import '../../../infrastructure/repository/repository.dart';
|
||||
import '../bloc/marianum_message_state.dart';
|
||||
import '../dataProvider/marianum_message_get_messages.dart';
|
||||
import '../data_provider/marianum_message_get_messages.dart';
|
||||
|
||||
class MarianumMessageRepository extends Repository<MarianumMessageState> {
|
||||
Future<MarianumMessageList> getMessages() => MarianumMessageGetMessages().run();
|
||||
@@ -1,10 +1,10 @@
|
||||
import 'dart:async';
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:easy_debounce/easy_debounce.dart';
|
||||
import 'package:hydrated_bloc/hydrated_bloc.dart';
|
||||
|
||||
import '../../../../../storage/settings.dart';
|
||||
import '../../../../../utils/debouncer.dart';
|
||||
import '../../../../../view/pages/settings/data/default_settings.dart';
|
||||
import '../../app_modules.dart';
|
||||
|
||||
@@ -27,7 +27,7 @@ class SettingsCubit extends HydratedCubit<Settings> {
|
||||
_emitFreshInstance();
|
||||
});
|
||||
}
|
||||
EasyDebounce.debounce(_debounceTag, const Duration(milliseconds: 500), _emitFreshInstance);
|
||||
Debouncer.debounce(_debounceTag, const Duration(milliseconds: 500), _emitFreshInstance);
|
||||
}
|
||||
return state;
|
||||
}
|
||||
@@ -77,7 +77,7 @@ class SettingsCubit extends HydratedCubit<Settings> {
|
||||
oldMap.forEach((key, value) {
|
||||
if (merged.containsKey(key)) {
|
||||
if (value is Map<String, dynamic> && merged[key] is Map<String, dynamic>) {
|
||||
merged[key] = _mergeSettings(value, merged[key]);
|
||||
merged[key] = _mergeSettings(value, merged[key] as Map<String, dynamic>);
|
||||
} else {
|
||||
merged[key] = value;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
import '../../../../../api/mhsl/customTimetableEvent/customTimetableEvent.dart';
|
||||
import '../../../../../api/webuntis/queries/getTimetable/getTimetableResponse.dart';
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../../../api/mhsl/custom_timetable_event/custom_timetable_event.dart';
|
||||
import '../../../../../api/webuntis/queries/get_timetable/get_timetable_response.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../repository/timetable_repository.dart';
|
||||
import 'timetable_event.dart';
|
||||
import 'timetable_state.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart';
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import 'timetable_state.dart';
|
||||
|
||||
sealed class TimetableEvent extends LoadableHydratedBlocEvent<TimetableState> {}
|
||||
@@ -1,11 +1,11 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
import '../../../../../api/mhsl/customTimetableEvent/get/getCustomTimetableEventResponse.dart';
|
||||
import '../../../../../api/webuntis/queries/getHolidays/getHolidaysResponse.dart';
|
||||
import '../../../../../api/webuntis/queries/getRooms/getRoomsResponse.dart';
|
||||
import '../../../../../api/webuntis/queries/getSubjects/getSubjectsResponse.dart';
|
||||
import '../../../../../api/webuntis/queries/getTimegridUnits/getTimegridUnitsResponse.dart';
|
||||
import '../../../../../api/webuntis/queries/getTimetable/getTimetableResponse.dart';
|
||||
import '../../../../../api/mhsl/custom_timetable_event/get/get_custom_timetable_event_response.dart';
|
||||
import '../../../../../api/webuntis/queries/get_holidays/get_holidays_response.dart';
|
||||
import '../../../../../api/webuntis/queries/get_rooms/get_rooms_response.dart';
|
||||
import '../../../../../api/webuntis/queries/get_subjects/get_subjects_response.dart';
|
||||
import '../../../../../api/webuntis/queries/get_timegrid_units/get_timegrid_units_response.dart';
|
||||
import '../../../../../api/webuntis/queries/get_timetable/get_timetable_response.dart';
|
||||
|
||||
part 'timetable_state.freezed.dart';
|
||||
part 'timetable_state.g.dart';
|
||||
|
||||
+20
-20
@@ -1,25 +1,25 @@
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
import '../../../../../api/mhsl/customTimetableEvent/add/addCustomTimetableEvent.dart';
|
||||
import '../../../../../api/mhsl/customTimetableEvent/add/addCustomTimetableEventParams.dart';
|
||||
import '../../../../../api/mhsl/customTimetableEvent/customTimetableEvent.dart';
|
||||
import '../../../../../api/mhsl/customTimetableEvent/get/getCustomTimetableEventCache.dart';
|
||||
import '../../../../../api/mhsl/customTimetableEvent/get/getCustomTimetableEventParams.dart';
|
||||
import '../../../../../api/mhsl/customTimetableEvent/get/getCustomTimetableEventResponse.dart';
|
||||
import '../../../../../api/mhsl/customTimetableEvent/remove/removeCustomTimetableEvent.dart';
|
||||
import '../../../../../api/mhsl/customTimetableEvent/remove/removeCustomTimetableEventParams.dart';
|
||||
import '../../../../../api/mhsl/customTimetableEvent/update/updateCustomTimetableEvent.dart';
|
||||
import '../../../../../api/mhsl/customTimetableEvent/update/updateCustomTimetableEventParams.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/getTimegridUnits/getTimegridUnitsCache.dart';
|
||||
import '../../../../../api/webuntis/queries/getTimegridUnits/getTimegridUnitsResponse.dart';
|
||||
import '../../../../../api/webuntis/queries/getTimetable/getTimetableCache.dart';
|
||||
import '../../../../../api/webuntis/queries/getTimetable/getTimetableResponse.dart';
|
||||
import '../../../../../api/mhsl/custom_timetable_event/add/add_custom_timetable_event.dart';
|
||||
import '../../../../../api/mhsl/custom_timetable_event/add/add_custom_timetable_event_params.dart';
|
||||
import '../../../../../api/mhsl/custom_timetable_event/custom_timetable_event.dart';
|
||||
import '../../../../../api/mhsl/custom_timetable_event/get/get_custom_timetable_event_cache.dart';
|
||||
import '../../../../../api/mhsl/custom_timetable_event/get/get_custom_timetable_event_params.dart';
|
||||
import '../../../../../api/mhsl/custom_timetable_event/get/get_custom_timetable_event_response.dart';
|
||||
import '../../../../../api/mhsl/custom_timetable_event/remove/remove_custom_timetable_event.dart';
|
||||
import '../../../../../api/mhsl/custom_timetable_event/remove/remove_custom_timetable_event_params.dart';
|
||||
import '../../../../../api/mhsl/custom_timetable_event/update/update_custom_timetable_event.dart';
|
||||
import '../../../../../api/mhsl/custom_timetable_event/update/update_custom_timetable_event_params.dart';
|
||||
import '../../../../../api/webuntis/queries/get_holidays/get_holidays_cache.dart';
|
||||
import '../../../../../api/webuntis/queries/get_holidays/get_holidays_response.dart';
|
||||
import '../../../../../api/webuntis/queries/get_rooms/get_rooms_cache.dart';
|
||||
import '../../../../../api/webuntis/queries/get_rooms/get_rooms_response.dart';
|
||||
import '../../../../../api/webuntis/queries/get_subjects/get_subjects_cache.dart';
|
||||
import '../../../../../api/webuntis/queries/get_subjects/get_subjects_response.dart';
|
||||
import '../../../../../api/webuntis/queries/get_timegrid_units/get_timegrid_units_cache.dart';
|
||||
import '../../../../../api/webuntis/queries/get_timegrid_units/get_timegrid_units_response.dart';
|
||||
import '../../../../../api/webuntis/queries/get_timetable/get_timetable_cache.dart';
|
||||
import '../../../../../api/webuntis/queries/get_timetable/get_timetable_response.dart';
|
||||
import '../../../../../model/account_data.dart';
|
||||
|
||||
class TimetableDataProvider {
|
||||
@@ -1,6 +1,6 @@
|
||||
import '../../../infrastructure/repository/repository.dart';
|
||||
import '../bloc/timetable_state.dart';
|
||||
import '../dataProvider/timetable_data_provider.dart';
|
||||
import '../data_provider/timetable_data_provider.dart';
|
||||
|
||||
class TimetableRepository extends Repository<TimetableState> {
|
||||
final TimetableDataProvider _provider;
|
||||
|
||||
Reference in new issue
Block a user