From c44b0464a48cd65b7dd4536df76fe19baa991ba9 Mon Sep 17 00:00:00 2001 From: lars Date: Tue, 10 Jun 2025 20:19:44 +0200 Subject: [PATCH 1/7] sorted participants list alphabetically --- .../participants/participantsListView.dart | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/view/pages/talk/chatDetails/participants/participantsListView.dart b/lib/view/pages/talk/chatDetails/participants/participantsListView.dart index 2bc863b..3741cc3 100644 --- a/lib/view/pages/talk/chatDetails/participants/participantsListView.dart +++ b/lib/view/pages/talk/chatDetails/participants/participantsListView.dart @@ -13,16 +13,23 @@ class ParticipantsListView extends StatefulWidget { class _ParticipantsListViewState extends State { @override - Widget build(BuildContext context) => Scaffold( + Widget build(BuildContext context) { + final participants = widget.participantsResponse.data.map((participant) => ListTile( + leading: UserAvatar(id: participant.actorId), + title: Text(participant.displayName), + subtitle: participant.statusMessage != null ? Text(participant.statusMessage!) : null, + )).toList(); + + 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, ), ); + } } From 5938c6b3c3de953ff0bf57a118ea12793b347c1d Mon Sep 17 00:00:00 2001 From: lars Date: Mon, 23 Jun 2025 11:16:39 +0200 Subject: [PATCH 2/7] fixed chat search --- lib/api/marianumcloud/autocomplete/autocompleteApi.dart | 2 ++ lib/api/marianumcloud/autocomplete/autocompleteResponse.dart | 2 +- lib/api/marianumcloud/autocomplete/autocompleteResponse.g.dart | 2 +- lib/view/pages/talk/joinChat.dart | 3 +++ 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/api/marianumcloud/autocomplete/autocompleteApi.dart b/lib/api/marianumcloud/autocomplete/autocompleteApi.dart index f11b91c..ed58cc1 100644 --- a/lib/api/marianumcloud/autocomplete/autocompleteApi.dart +++ b/lib/api/marianumcloud/autocomplete/autocompleteApi.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:developer'; import 'dart:io'; import 'package:http/http.dart' as http; @@ -26,6 +27,7 @@ class AutocompleteApi { 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; + log(response.body); return AutocompleteResponse.fromJson(jsonDecode(result)['ocs']); } 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/view/pages/talk/joinChat.dart b/lib/view/pages/talk/joinChat.dart index e51815a..5a9ea7b 100644 --- a/lib/view/pages/talk/joinChat.dart +++ b/lib/view/pages/talk/joinChat.dart @@ -1,4 +1,6 @@ +import 'dart:developer'; + import 'package:async/async.dart'; import 'package:flutter/material.dart'; @@ -76,6 +78,7 @@ class JoinChat extends SearchDelegate { } ); } else if(snapshot.hasError) { + log(snapshot.error.toString()); return const PlaceholderView(icon: Icons.search_off, text: 'Ein fehler ist aufgetreten. Bist du mit dem Internet verbunden?'); } From c702b610c576d69a7f154cab6f073a759b5c5ee6 Mon Sep 17 00:00:00 2001 From: lars Date: Mon, 23 Jun 2025 11:17:59 +0200 Subject: [PATCH 3/7] removed logging --- lib/api/marianumcloud/autocomplete/autocompleteApi.dart | 2 -- lib/view/pages/talk/joinChat.dart | 3 --- 2 files changed, 5 deletions(-) diff --git a/lib/api/marianumcloud/autocomplete/autocompleteApi.dart b/lib/api/marianumcloud/autocomplete/autocompleteApi.dart index ed58cc1..f11b91c 100644 --- a/lib/api/marianumcloud/autocomplete/autocompleteApi.dart +++ b/lib/api/marianumcloud/autocomplete/autocompleteApi.dart @@ -1,5 +1,4 @@ import 'dart:convert'; -import 'dart:developer'; import 'dart:io'; import 'package:http/http.dart' as http; @@ -27,7 +26,6 @@ class AutocompleteApi { 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; - log(response.body); return AutocompleteResponse.fromJson(jsonDecode(result)['ocs']); } diff --git a/lib/view/pages/talk/joinChat.dart b/lib/view/pages/talk/joinChat.dart index 5a9ea7b..e51815a 100644 --- a/lib/view/pages/talk/joinChat.dart +++ b/lib/view/pages/talk/joinChat.dart @@ -1,6 +1,4 @@ -import 'dart:developer'; - import 'package:async/async.dart'; import 'package:flutter/material.dart'; @@ -78,7 +76,6 @@ class JoinChat extends SearchDelegate { } ); } else if(snapshot.hasError) { - log(snapshot.error.toString()); return const PlaceholderView(icon: Icons.search_off, text: 'Ein fehler ist aufgetreten. Bist du mit dem Internet verbunden?'); } From 0c676dc3d6e7ba696d634d1a19f7a2b87e1171bc Mon Sep 17 00:00:00 2001 From: lars Date: Mon, 23 Jun 2025 17:54:12 +0200 Subject: [PATCH 4/7] made perticipants list stateless --- .../chatDetails/participants/participantsListView.dart | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/lib/view/pages/talk/chatDetails/participants/participantsListView.dart b/lib/view/pages/talk/chatDetails/participants/participantsListView.dart index 3741cc3..fd6013a 100644 --- a/lib/view/pages/talk/chatDetails/participants/participantsListView.dart +++ b/lib/view/pages/talk/chatDetails/participants/participantsListView.dart @@ -3,18 +3,13 @@ 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(); -} - -class _ParticipantsListViewState extends State { @override Widget build(BuildContext context) { - final participants = widget.participantsResponse.data.map((participant) => ListTile( + final participants = participantsResponse.data.map((participant) => ListTile( leading: UserAvatar(id: participant.actorId), title: Text(participant.displayName), subtitle: participant.statusMessage != null ? Text(participant.statusMessage!) : null, From 85f99884534d9df399216b07252c35a05d11ed92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Sat, 6 Sep 2025 14:12:13 +0200 Subject: [PATCH 5/7] renamed timetable in ui --- lib/state/app/modules/app_modules.dart | 2 +- lib/view/settings/defaultSettings.dart | 2 +- lib/view/settings/settings.dart | 2 +- pubspec.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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/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/pubspec.yaml b/pubspec.yaml index fe83157..565e3e7 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' From f330ef3f56c323003d8c62f20c6c8f610fb01cef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Sat, 6 Sep 2025 14:47:08 +0200 Subject: [PATCH 6/7] updated project dependencies and sdk. Comptaible with Flutter 3.35.3 --- android/app/build.gradle | 8 +++---- android/settings.gradle | 2 +- lib/view/pages/files/fileElement.dart | 2 +- .../pages/talk/components/chatBubble.dart | 2 +- lib/widget/fileViewer.dart | 4 ++-- pubspec.yaml | 22 +++++++++---------- 6 files changed, 20 insertions(+), 20 deletions(-) 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/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/components/chatBubble.dart b/lib/view/pages/talk/components/chatBubble.dart index 6e72b52..71bc520 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/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 565e3e7..fd1762a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -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: ^29.1.38 + syncfusion_flutter_pdfviewer: ^29.1.38 time_range_picker: ^2.3.0 url_launcher: ^6.3.1 uuid: ^4.5.1 + open_filex: ^4.7.0 dev_dependencies: flutter_test: From 46971a8d4673e92bf17d5f693255f1b5f43122f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Sat, 6 Sep 2025 14:51:14 +0200 Subject: [PATCH 7/7] upgraded syncfusion dependencies --- pubspec.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index fd1762a..4238ab5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -95,8 +95,8 @@ dependencies: rrule_generator: ^0.9.0 share_plus: ^11.1.0 shared_preferences: ^2.3.5 - syncfusion_flutter_calendar: ^29.1.38 - syncfusion_flutter_pdfviewer: ^29.1.38 + 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