diff --git a/android/app/build.gradle b/android/app/build.gradle index 53332cf..b62e5c5 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -28,13 +28,13 @@ android { ndkVersion "27.0.12077973" compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 coreLibraryDesugaringEnabled true - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { - jvmTarget = '1.8' + jvmTarget = '17' } sourceSets { @@ -65,5 +65,5 @@ flutter { dependencies { implementation 'com.android.support:multidex:2.0.1' - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.4' } diff --git a/android/settings.gradle b/android/settings.gradle index 67bf08a..35491da 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -20,7 +20,7 @@ pluginManagement { plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" id "com.android.application" version '8.7.3' apply false - id "org.jetbrains.kotlin.android" version "1.8.10" apply false + id "org.jetbrains.kotlin.android" version "2.1.10" apply false } include ":app" diff --git a/lib/api/marianumcloud/autocomplete/autocompleteResponse.dart b/lib/api/marianumcloud/autocomplete/autocompleteResponse.dart index 15e1ffc..8e72772 100644 --- a/lib/api/marianumcloud/autocomplete/autocompleteResponse.dart +++ b/lib/api/marianumcloud/autocomplete/autocompleteResponse.dart @@ -18,7 +18,7 @@ class AutocompleteResponseObject { String label; String? icon; String? source; - List? status; + String? status; String? subline; String? shareWithDisplayNameUniqe; diff --git a/lib/api/marianumcloud/autocomplete/autocompleteResponse.g.dart b/lib/api/marianumcloud/autocomplete/autocompleteResponse.g.dart index e029e0e..094f0b7 100644 --- a/lib/api/marianumcloud/autocomplete/autocompleteResponse.g.dart +++ b/lib/api/marianumcloud/autocomplete/autocompleteResponse.g.dart @@ -28,7 +28,7 @@ AutocompleteResponseObject _$AutocompleteResponseObjectFromJson( json['label'] as String, json['icon'] as String?, json['source'] as String?, - (json['status'] as List?)?.map((e) => e as String).toList(), + json['status'] as String?, json['subline'] as String?, json['shareWithDisplayNameUniqe'] as String?, ); diff --git a/lib/state/app/modules/app_modules.dart b/lib/state/app/modules/app_modules.dart index ecda3a1..744feef 100644 --- a/lib/state/app/modules/app_modules.dart +++ b/lib/state/app/modules/app_modules.dart @@ -31,7 +31,7 @@ class AppModule { var available = { Modules.timetable: AppModule( Modules.timetable, - name: 'Vertretung', + name: 'Stundenplan', icon: () => Icon(Icons.calendar_month), breakerArea: BreakerArea.timetable, create: Timetable.new, diff --git a/lib/view/pages/files/fileElement.dart b/lib/view/pages/files/fileElement.dart index 96aa306..cd8b772 100644 --- a/lib/view/pages/files/fileElement.dart +++ b/lib/view/pages/files/fileElement.dart @@ -1,11 +1,11 @@ import 'dart:io'; -import 'package:better_open_file/better_open_file.dart'; import 'package:filesize/filesize.dart'; import 'package:flowder/flowder.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:jiffy/jiffy.dart'; +import 'package:open_filex/open_filex.dart'; import '../../../widget/infoDialog.dart'; import 'package:nextcloud/nextcloud.dart'; import 'package:path_provider/path_provider.dart'; diff --git a/lib/view/pages/talk/chatDetails/participants/participantsListView.dart b/lib/view/pages/talk/chatDetails/participants/participantsListView.dart index 2bc863b..fd6013a 100644 --- a/lib/view/pages/talk/chatDetails/participants/participantsListView.dart +++ b/lib/view/pages/talk/chatDetails/participants/participantsListView.dart @@ -3,26 +3,28 @@ import 'package:flutter/material.dart'; import '../../../../../api/marianumcloud/talk/getParticipants/getParticipantsResponse.dart'; import '../../../../../widget/userAvatar.dart'; -class ParticipantsListView extends StatefulWidget { +class ParticipantsListView extends StatelessWidget { final GetParticipantsResponse participantsResponse; const ParticipantsListView(this.participantsResponse, {super.key}); @override - State createState() => _ParticipantsListViewState(); -} + Widget build(BuildContext context) { + final participants = participantsResponse.data.map((participant) => ListTile( + leading: UserAvatar(id: participant.actorId), + title: Text(participant.displayName), + subtitle: participant.statusMessage != null ? Text(participant.statusMessage!) : null, + )).toList(); -class _ParticipantsListViewState extends State { - @override - Widget build(BuildContext context) => Scaffold( + lastname(participant) => participant.title.toString().split(' ').last; + participants.sort((a, b) => lastname(a).compareTo(lastname(b))); + + return Scaffold( appBar: AppBar( title: const Text('Teilnehmende'), ), body: ListView( - children: widget.participantsResponse.data.map((participant) => ListTile( - leading: UserAvatar(id: participant.actorId), - title: Text(participant.displayName), - subtitle: participant.statusMessage != null ? Text(participant.statusMessage!) : null, - )).toList(), + children: participants, ), ); + } } diff --git a/lib/view/pages/talk/components/chatBubble.dart b/lib/view/pages/talk/components/chatBubble.dart index c4f5b56..1095be0 100644 --- a/lib/view/pages/talk/components/chatBubble.dart +++ b/lib/view/pages/talk/components/chatBubble.dart @@ -1,4 +1,3 @@ -import 'package:better_open_file/better_open_file.dart'; import 'package:bubble/bubble.dart'; import 'package:emoji_picker_flutter/emoji_picker_flutter.dart' as emojis; import 'package:flowder/flowder.dart'; @@ -6,6 +5,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:jiffy/jiffy.dart'; +import 'package:open_filex/open_filex.dart'; import '../../../../extensions/text.dart'; import 'package:provider/provider.dart'; diff --git a/lib/view/settings/defaultSettings.dart b/lib/view/settings/defaultSettings.dart index 36b2289..7b99b25 100644 --- a/lib/view/settings/defaultSettings.dart +++ b/lib/view/settings/defaultSettings.dart @@ -32,7 +32,7 @@ class DefaultSettings { hiddenModules: [], ), timetableSettings: TimetableSettings( - connectDoubleLessons: false, + connectDoubleLessons: true, timetableNameMode: TimetableNameMode.name ), talkSettings: TalkSettings( diff --git a/lib/view/settings/settings.dart b/lib/view/settings/settings.dart index 9784a29..0d3f58d 100644 --- a/lib/view/settings/settings.dart +++ b/lib/view/settings/settings.dart @@ -246,7 +246,7 @@ class _SettingsState extends State { ListTile( leading: const CenteredLeading(Icon(Icons.date_range_outlined)), title: const Text('Infos zu Web-/ Untis'), - subtitle: const Text('Für den Vertretungsplan'), + subtitle: const Text('Für den Stundenplan'), trailing: const Icon(Icons.arrow_right), onTap: () => PrivacyInfo(providerText: 'Untis', imprintUrl: 'https://www.untis.at/impressum', privacyUrl: 'https://www.untis.at/datenschutz-wu-apps').showPopup(context) ), diff --git a/lib/widget/fileViewer.dart b/lib/widget/fileViewer.dart index 8eb01e1..085caf4 100644 --- a/lib/widget/fileViewer.dart +++ b/lib/widget/fileViewer.dart @@ -1,8 +1,8 @@ import 'dart:io'; import 'dart:math'; -import 'package:better_open_file/better_open_file.dart'; import 'package:flutter/material.dart'; +import 'package:open_filex/open_filex.dart'; import 'package:photo_view/photo_view.dart'; import 'package:provider/provider.dart'; import 'package:share_plus/share_plus.dart'; @@ -93,7 +93,7 @@ class _FileViewerState extends State { ); default: - OpenFile.open(widget.path).then((result) { + OpenFilex.open(widget.path).then((result) { Navigator.of(context).pop(); if(result.type != ResultType.done) { showDialog(context: context, builder: (context) => AlertDialog( diff --git a/pubspec.yaml b/pubspec.yaml index fe83157..4238ab5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 0.1.3+41 +version: 0.1.4+42 environment: sdk: '>3.0.0' @@ -42,7 +42,6 @@ dependencies: animated_digit: ^3.2.3 async: ^2.11.0 badges: ^3.1.2 - better_open_file: ^3.6.5 bloc: ^9.0.0 bottom_sheet: ^4.0.4 bubble: ^1.2.1 @@ -55,11 +54,11 @@ dependencies: easy_debounce: ^2.0.3 emoji_picker_flutter: ^4.3.0 fast_rsa: ^3.7.1 - file_picker: ^8.1.7 + file_picker: ^10.3.2 filesize: ^2.0.1 - firebase_core: ^3.10.1 - firebase_in_app_messaging: ^0.8.1+1 - firebase_messaging: ^15.2.1 + firebase_core: ^4.1.0 + firebase_in_app_messaging: ^0.9.0+1 + firebase_messaging: ^16.0.1 flowder: git: url: https://github.com/Harsh223/flowder.git @@ -67,11 +66,11 @@ dependencies: flutter_bloc: ^9.0.0 flutter_launcher_icons: ^0.14.3 flutter_linkify: ^6.0.0 - flutter_local_notifications: ^18.0.1 + flutter_local_notifications: ^19.4.1 flutter_login: ^5.0.0 flutter_native_splash: ^2.4.4 flutter_split_view: ^0.1.2 - freezed_annotation: ^2.4.4 + freezed_annotation: ^3.1.0 http: ^1.3.0 hydrated_bloc: ^10.0.0 image_picker: ^1.1.2 @@ -87,20 +86,21 @@ dependencies: url: https://github.com/provokateurin/nextcloud-neon package_info_plus: ^8.1.3 path_provider: ^2.1.5 - persistent_bottom_nav_bar_v2: ^5.3.1 + persistent_bottom_nav_bar_v2: ^6.1.0 photo_view: ^0.15.0 pretty_json: ^2.0.0 provider: ^6.1.2 qr_flutter: ^4.1.0 rrule: ^0.2.17 rrule_generator: ^0.9.0 - share_plus: ^10.1.4 + share_plus: ^11.1.0 shared_preferences: ^2.3.5 - syncfusion_flutter_calendar: ^28.1.41 - syncfusion_flutter_pdfviewer: ^28.1.41 + syncfusion_flutter_calendar: ^31.1.17 + syncfusion_flutter_pdfviewer: ^31.1.17 time_range_picker: ^2.3.0 url_launcher: ^6.3.1 uuid: ^4.5.1 + open_filex: ^4.7.0 dev_dependencies: flutter_test: