Merge branch 'develop' into develop-fileMessagesWithText

This commit is contained in:
2025-09-06 15:13:15 +02:00
12 changed files with 39 additions and 37 deletions

View File

@@ -28,13 +28,13 @@ android {
ndkVersion "27.0.12077973" ndkVersion "27.0.12077973"
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
coreLibraryDesugaringEnabled true coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
} }
kotlinOptions { kotlinOptions {
jvmTarget = '1.8' jvmTarget = '17'
} }
sourceSets { sourceSets {
@@ -65,5 +65,5 @@ flutter {
dependencies { dependencies {
implementation 'com.android.support:multidex:2.0.1' 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'
} }

View File

@@ -20,7 +20,7 @@ pluginManagement {
plugins { plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0" id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version '8.7.3' apply false 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" include ":app"

View File

@@ -18,7 +18,7 @@ class AutocompleteResponseObject {
String label; String label;
String? icon; String? icon;
String? source; String? source;
List<String>? status; String? status;
String? subline; String? subline;
String? shareWithDisplayNameUniqe; String? shareWithDisplayNameUniqe;

View File

@@ -28,7 +28,7 @@ AutocompleteResponseObject _$AutocompleteResponseObjectFromJson(
json['label'] as String, json['label'] as String,
json['icon'] as String?, json['icon'] as String?,
json['source'] as String?, json['source'] as String?,
(json['status'] as List<dynamic>?)?.map((e) => e as String).toList(), json['status'] as String?,
json['subline'] as String?, json['subline'] as String?,
json['shareWithDisplayNameUniqe'] as String?, json['shareWithDisplayNameUniqe'] as String?,
); );

View File

@@ -31,7 +31,7 @@ class AppModule {
var available = { var available = {
Modules.timetable: AppModule( Modules.timetable: AppModule(
Modules.timetable, Modules.timetable,
name: 'Vertretung', name: 'Stundenplan',
icon: () => Icon(Icons.calendar_month), icon: () => Icon(Icons.calendar_month),
breakerArea: BreakerArea.timetable, breakerArea: BreakerArea.timetable,
create: Timetable.new, create: Timetable.new,

View File

@@ -1,11 +1,11 @@
import 'dart:io'; import 'dart:io';
import 'package:better_open_file/better_open_file.dart';
import 'package:filesize/filesize.dart'; import 'package:filesize/filesize.dart';
import 'package:flowder/flowder.dart'; import 'package:flowder/flowder.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:jiffy/jiffy.dart'; import 'package:jiffy/jiffy.dart';
import 'package:open_filex/open_filex.dart';
import '../../../widget/infoDialog.dart'; import '../../../widget/infoDialog.dart';
import 'package:nextcloud/nextcloud.dart'; import 'package:nextcloud/nextcloud.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';

View File

@@ -3,26 +3,28 @@ import 'package:flutter/material.dart';
import '../../../../../api/marianumcloud/talk/getParticipants/getParticipantsResponse.dart'; import '../../../../../api/marianumcloud/talk/getParticipants/getParticipantsResponse.dart';
import '../../../../../widget/userAvatar.dart'; import '../../../../../widget/userAvatar.dart';
class ParticipantsListView extends StatefulWidget { class ParticipantsListView extends StatelessWidget {
final GetParticipantsResponse participantsResponse; final GetParticipantsResponse participantsResponse;
const ParticipantsListView(this.participantsResponse, {super.key}); const ParticipantsListView(this.participantsResponse, {super.key});
@override @override
State<ParticipantsListView> 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<ParticipantsListView> { lastname(participant) => participant.title.toString().split(' ').last;
@override participants.sort((a, b) => lastname(a).compareTo(lastname(b)));
Widget build(BuildContext context) => Scaffold(
return Scaffold(
appBar: AppBar( appBar: AppBar(
title: const Text('Teilnehmende'), title: const Text('Teilnehmende'),
), ),
body: ListView( body: ListView(
children: widget.participantsResponse.data.map((participant) => ListTile( children: participants,
leading: UserAvatar(id: participant.actorId),
title: Text(participant.displayName),
subtitle: participant.statusMessage != null ? Text(participant.statusMessage!) : null,
)).toList(),
), ),
); );
}
} }

View File

@@ -1,4 +1,3 @@
import 'package:better_open_file/better_open_file.dart';
import 'package:bubble/bubble.dart'; import 'package:bubble/bubble.dart';
import 'package:emoji_picker_flutter/emoji_picker_flutter.dart' as emojis; import 'package:emoji_picker_flutter/emoji_picker_flutter.dart' as emojis;
import 'package:flowder/flowder.dart'; import 'package:flowder/flowder.dart';
@@ -6,6 +5,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:jiffy/jiffy.dart'; import 'package:jiffy/jiffy.dart';
import 'package:open_filex/open_filex.dart';
import '../../../../extensions/text.dart'; import '../../../../extensions/text.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';

View File

@@ -32,7 +32,7 @@ class DefaultSettings {
hiddenModules: [], hiddenModules: [],
), ),
timetableSettings: TimetableSettings( timetableSettings: TimetableSettings(
connectDoubleLessons: false, connectDoubleLessons: true,
timetableNameMode: TimetableNameMode.name timetableNameMode: TimetableNameMode.name
), ),
talkSettings: TalkSettings( talkSettings: TalkSettings(

View File

@@ -246,7 +246,7 @@ class _SettingsState extends State<Settings> {
ListTile( ListTile(
leading: const CenteredLeading(Icon(Icons.date_range_outlined)), leading: const CenteredLeading(Icon(Icons.date_range_outlined)),
title: const Text('Infos zu Web-/ Untis'), 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), 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) onTap: () => PrivacyInfo(providerText: 'Untis', imprintUrl: 'https://www.untis.at/impressum', privacyUrl: 'https://www.untis.at/datenschutz-wu-apps').showPopup(context)
), ),

View File

@@ -1,8 +1,8 @@
import 'dart:io'; import 'dart:io';
import 'dart:math'; import 'dart:math';
import 'package:better_open_file/better_open_file.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:open_filex/open_filex.dart';
import 'package:photo_view/photo_view.dart'; import 'package:photo_view/photo_view.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:share_plus/share_plus.dart'; import 'package:share_plus/share_plus.dart';
@@ -93,7 +93,7 @@ class _FileViewerState extends State<FileViewer> {
); );
default: default:
OpenFile.open(widget.path).then((result) { OpenFilex.open(widget.path).then((result) {
Navigator.of(context).pop(); Navigator.of(context).pop();
if(result.type != ResultType.done) { if(result.type != ResultType.done) {
showDialog(context: context, builder: (context) => AlertDialog( showDialog(context: context, builder: (context) => AlertDialog(

View File

@@ -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 # 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 # 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. # 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: environment:
sdk: '>3.0.0' sdk: '>3.0.0'
@@ -42,7 +42,6 @@ dependencies:
animated_digit: ^3.2.3 animated_digit: ^3.2.3
async: ^2.11.0 async: ^2.11.0
badges: ^3.1.2 badges: ^3.1.2
better_open_file: ^3.6.5
bloc: ^9.0.0 bloc: ^9.0.0
bottom_sheet: ^4.0.4 bottom_sheet: ^4.0.4
bubble: ^1.2.1 bubble: ^1.2.1
@@ -55,11 +54,11 @@ dependencies:
easy_debounce: ^2.0.3 easy_debounce: ^2.0.3
emoji_picker_flutter: ^4.3.0 emoji_picker_flutter: ^4.3.0
fast_rsa: ^3.7.1 fast_rsa: ^3.7.1
file_picker: ^8.1.7 file_picker: ^10.3.2
filesize: ^2.0.1 filesize: ^2.0.1
firebase_core: ^3.10.1 firebase_core: ^4.1.0
firebase_in_app_messaging: ^0.8.1+1 firebase_in_app_messaging: ^0.9.0+1
firebase_messaging: ^15.2.1 firebase_messaging: ^16.0.1
flowder: flowder:
git: git:
url: https://github.com/Harsh223/flowder.git url: https://github.com/Harsh223/flowder.git
@@ -67,11 +66,11 @@ dependencies:
flutter_bloc: ^9.0.0 flutter_bloc: ^9.0.0
flutter_launcher_icons: ^0.14.3 flutter_launcher_icons: ^0.14.3
flutter_linkify: ^6.0.0 flutter_linkify: ^6.0.0
flutter_local_notifications: ^18.0.1 flutter_local_notifications: ^19.4.1
flutter_login: ^5.0.0 flutter_login: ^5.0.0
flutter_native_splash: ^2.4.4 flutter_native_splash: ^2.4.4
flutter_split_view: ^0.1.2 flutter_split_view: ^0.1.2
freezed_annotation: ^2.4.4 freezed_annotation: ^3.1.0
http: ^1.3.0 http: ^1.3.0
hydrated_bloc: ^10.0.0 hydrated_bloc: ^10.0.0
image_picker: ^1.1.2 image_picker: ^1.1.2
@@ -87,20 +86,21 @@ dependencies:
url: https://github.com/provokateurin/nextcloud-neon url: https://github.com/provokateurin/nextcloud-neon
package_info_plus: ^8.1.3 package_info_plus: ^8.1.3
path_provider: ^2.1.5 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 photo_view: ^0.15.0
pretty_json: ^2.0.0 pretty_json: ^2.0.0
provider: ^6.1.2 provider: ^6.1.2
qr_flutter: ^4.1.0 qr_flutter: ^4.1.0
rrule: ^0.2.17 rrule: ^0.2.17
rrule_generator: ^0.9.0 rrule_generator: ^0.9.0
share_plus: ^10.1.4 share_plus: ^11.1.0
shared_preferences: ^2.3.5 shared_preferences: ^2.3.5
syncfusion_flutter_calendar: ^28.1.41 syncfusion_flutter_calendar: ^31.1.17
syncfusion_flutter_pdfviewer: ^28.1.41 syncfusion_flutter_pdfviewer: ^31.1.17
time_range_picker: ^2.3.0 time_range_picker: ^2.3.0
url_launcher: ^6.3.1 url_launcher: ^6.3.1
uuid: ^4.5.1 uuid: ^4.5.1
open_filex: ^4.7.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: