From 62781615ae6b9c9f0cd8a2f7261b4ad2a5ed411e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:02:44 +0100 Subject: [PATCH 1/5] Bump Dependencies --- .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/settings.gradle | 2 +- ios/Podfile.lock | 8 +- pubspec.lock | 93 ++++++++++--------- pubspec.yaml | 13 ++- 5 files changed, 66 insertions(+), 52 deletions(-) diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 348c409e..afa1e8eb 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip diff --git a/android/settings.gradle b/android/settings.gradle index 69a41be9..28065e5a 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -18,7 +18,7 @@ pluginManagement { plugins { 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.8.0' apply false id "org.jetbrains.kotlin.android" version "1.9.20" apply false id "org.jetbrains.kotlin.plugin.serialization" version "2.0.21" apply false id "com.google.gms.google-services" version "4.4.2" apply false diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 5580328f..60ee3c08 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -52,7 +52,7 @@ PODS: - FirebaseSharedSwift (~> 11.0) - GoogleUtilities/Environment (~> 8.0) - "GoogleUtilities/NSData+zlib (~> 8.0)" - - FirebaseRemoteConfigInterop (11.6.0) + - FirebaseRemoteConfigInterop (11.7.0) - FirebaseSessions (11.6.0): - FirebaseCore (~> 11.6.0) - FirebaseCoreExtension (~> 11.6.0) @@ -62,7 +62,7 @@ PODS: - GoogleUtilities/UserDefaults (~> 8.0) - nanopb (~> 3.30910.0) - PromisesSwift (~> 2.1) - - FirebaseSharedSwift (11.6.0) + - FirebaseSharedSwift (11.7.0) - Flutter (1.0.0) - flutter_native_splash (2.4.3): - Flutter @@ -246,9 +246,9 @@ SPEC CHECKSUMS: FirebaseCrashlytics: b21c665fb50138766480bce73ebdb1aa30f7f300 FirebaseInstallations: efc0946fc756e4d22d8113f7c761948120322e8c FirebaseRemoteConfig: ee5161282c4e857ad81c0197cd8baec9d5dfef0e - FirebaseRemoteConfigInterop: e75e348953352a000331eb77caf01e424248e176 + FirebaseRemoteConfigInterop: ca12abf9da0003efd3a476b2dff4f7a04fd31b4f FirebaseSessions: 9529d14180868e29a8da164b3a729c036204918b - FirebaseSharedSwift: a4e5dfca3e210633bb3a3dfb94176c019211948b + FirebaseSharedSwift: a45efd84d60ebbfdcdbaebc66948af3630459e62 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_native_splash: 6cad9122ea0fad137d23137dd14b937f3e90b145 flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13 diff --git a/pubspec.lock b/pubspec.lock index a6a40815..c09354d5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -42,10 +42,10 @@ packages: dependency: transitive description: name: archive - sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d + sha256: "6199c74e3db4fbfbd04f66d739e72fe11c8a8957d5f219f1f4482dbde6420b5a" url: "https://pub.dev" source: hosted - version: "3.6.1" + version: "4.0.2" args: dependency: transitive description: @@ -282,10 +282,10 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: "4fa68e53e26ab17b70ca39f072c285562cfc1589df5bb1e9295db90f6645f431" + sha256: b37d37c2f912ad4e8ec694187de87d05de2a3cb82b465ff1f65f65a2d05de544 url: "https://pub.dev" source: hosted - version: "11.2.0" + version: "11.2.1" device_info_plus_platform_interface: dependency: transitive description: @@ -510,10 +510,10 @@ packages: dependency: "direct main" description: name: flutter_secure_storage - sha256: "1913841ac4c7bf57cd2e05b717e1fbff7841b542962feff827b16525a781b3e4" + sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea" url: "https://pub.dev" source: hosted - version: "9.2.3" + version: "9.2.4" flutter_secure_storage_linux: dependency: transitive description: @@ -566,10 +566,10 @@ packages: dependency: "direct main" description: name: flutter_svg - sha256: "54900a1a1243f3c4a5506d853a2b5c2dbc38d5f27e52a52618a8054401431123" + sha256: c200fd79c918a40c5cd50ea0877fa13f81bdaf6f0a5d3dbcc2a13e3285d6aa1b url: "https://pub.dev" source: hosted - version: "2.0.16" + version: "2.0.17" flutter_test: dependency: "direct dev" description: flutter @@ -688,10 +688,10 @@ packages: dependency: transitive description: name: google_maps_flutter_android - sha256: bccf64ccbb2ea672dc62a61177b315a340af86b0228564484b023657544a3fd5 + sha256: "1b69fbb3ab76e7a7dfcf25e60f32f81ae5d9b88285343eecb5479116d54be869" url: "https://pub.dev" source: hosted - version: "2.14.11" + version: "2.14.12" google_maps_flutter_ios: dependency: transitive description: @@ -744,10 +744,11 @@ packages: home_widget: dependency: "direct main" description: - name: home_widget - sha256: b313e3304c0429669fddf1286e1fbf61a64b873f38ba30b3eb890ef0d7560b12 - url: "https://pub.dev" - source: hosted + path: "packages/home_widget" + ref: main + resolved-ref: bef7e0d76dd3294f138835d91095d45f8531370e + url: "https://github.com/jakobkoerber/home_widget.git" + source: git version: "0.7.0" html: dependency: "direct main" @@ -793,10 +794,10 @@ packages: dependency: transitive description: name: image - sha256: f31d52537dc417fdcde36088fdf11d191026fd5e4fae742491ebd40e5a8bea7d + sha256: "8346ad4b5173924b5ddddab782fc7d8a6300178c8b1dc427775405a01701c4a6" url: "https://pub.dev" source: hosted - version: "4.3.0" + version: "4.5.2" intl: dependency: "direct main" description: @@ -833,10 +834,10 @@ packages: dependency: "direct main" description: name: json_serializable - sha256: "8f52361c07497a7f2c16c13aac159f9be6fb12b1d67719eac98a21d9a205d571" + sha256: b0a98230538fe5d0b60a22fb6bf1b6cb03471b53e3324ff6069c591679dd59c9 url: "https://pub.dev" source: hosted - version: "6.9.2" + version: "6.9.3" leak_tracker: dependency: transitive description: @@ -889,10 +890,10 @@ packages: dependency: "direct main" description: name: lottie - sha256: "377d87b8dcef640c04717e93afb86a510f0e1117a399ab94dc4b3f39c85eaa87" + sha256: c5fa04a80a620066c15cf19cc44773e19e9b38e989ff23ea32e5903ef1015950 url: "https://pub.dev" source: hosted - version: "3.3.0" + version: "3.3.1" macros: dependency: transitive description: @@ -969,10 +970,10 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: "70c421fe9d9cc1a9a7f3b05ae56befd469fe4f8daa3b484823141a55442d858d" + sha256: "739e0a5c3c4055152520fa321d0645ee98e932718b4c8efeeb51451968fe0790" url: "https://pub.dev" source: hosted - version: "8.1.2" + version: "8.1.3" package_info_plus_platform_interface: dependency: transitive description: @@ -1125,6 +1126,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.1" + posix: + dependency: transitive + description: + name: posix + sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a + url: "https://pub.dev" + source: hosted + version: "6.0.1" protobuf: dependency: "direct main" description: @@ -1233,10 +1242,10 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: "02a7d8a9ef346c9af715811b01fbd8e27845ad2c41148eefd31321471b41863d" + sha256: bf808be89fe9dc467475e982c1db6c2faf3d2acf54d526cd5ec37d86c99dbd84 url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" shared_preferences_foundation: dependency: transitive description: @@ -1414,10 +1423,10 @@ packages: dependency: "direct main" description: name: sqlite3 - sha256: cb7f4e9dc1b52b1fa350f7b3d41c662e75fc3d399555fa4e5efcf267e9a4fbb5 + sha256: c284434c408d207863800341298cadfde23abe074a0f01b19c9d8cce4edb8eaa url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.6.0" sqlite3_flutter_libs: dependency: "direct main" description: @@ -1478,34 +1487,34 @@ packages: dependency: "direct main" description: name: syncfusion_flutter_calendar - sha256: d03cab85998b3cb95929f7fae1e2fb50167a7a16b7189677a7238c65338bb184 + sha256: "85763ff5901d10345b5b5bc67a923931d58480122a1f20b500d34660f41daf9f" url: "https://pub.dev" source: hosted - version: "28.1.38" + version: "28.1.39" syncfusion_flutter_charts: dependency: "direct main" description: name: syncfusion_flutter_charts - sha256: "9745a1afb3d14f2f8973a4422767d0124217d6727eacbbf4b2ed0dd66bc58887" + sha256: "117823c9e2ffcb7fb9868c73263df88751e3bb1f3d81f617cbaf63112f530e9c" url: "https://pub.dev" source: hosted - version: "28.1.38" + version: "28.1.39" syncfusion_flutter_core: dependency: "direct main" description: name: syncfusion_flutter_core - sha256: "12735505d616320aebe39a6fc90b6608a09116378d66aee9636b0eddf7b75971" + sha256: "794870919ca73e29c6cb25392a097cdfe58da4d6f3f3d3eccc529ecf52f78752" url: "https://pub.dev" source: hosted - version: "28.1.38" + version: "28.1.39" syncfusion_flutter_datepicker: dependency: "direct main" description: name: syncfusion_flutter_datepicker - sha256: "22250ad8830df87beb40dace8e2fd3101e2052add524b1cb41ba8211aa37e1ca" + sha256: dd7a2b5b272fc073d91e205240acc586b91159b3b864a9bc56328861857f57d1 url: "https://pub.dev" source: hosted - version: "28.1.38" + version: "28.1.39" synchronized: dependency: transitive description: @@ -1638,18 +1647,18 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e" + sha256: "3ba963161bd0fe395917ba881d320b9c4f6dd3c4a233da62ab18a5025c85f1e9" url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.4.0" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4" + sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "3.1.4" uuid: dependency: "direct main" description: @@ -1710,10 +1719,10 @@ packages: dependency: transitive description: name: video_player_avfoundation - sha256: "33224c19775fd244be2d6e3dbd8e1826ab162877bd61123bf71890772119a2b7" + sha256: "8a4e73a3faf2b13512978a43cf1cdda66feeeb900a0527f1fbfd7b19cf3458d3" url: "https://pub.dev" source: hosted - version: "2.6.5" + version: "2.6.7" video_player_platform_interface: dependency: transitive description: @@ -1815,10 +1824,10 @@ packages: description: path: "." ref: master - resolved-ref: "6120a04a6e7cc7edecae69fcb9cc966fde4d6f23" + resolved-ref: "16be22e34b678c6f27b1754188df94b6e8499935" url: "https://github.com/jakobkoerber/xml2json.git" source: git - version: "6.2.5" + version: "6.2.6" yaml: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index d6076804..ab401793 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -38,10 +38,10 @@ dependencies: auto_size_text: ^3.0.0 quick_actions: ^1.0.7 flutter_native_splash: ^2.2.19 - syncfusion_flutter_core: ^28.1.33 - syncfusion_flutter_calendar: ^28.1.33 - syncfusion_flutter_charts: ^28.1.33 - syncfusion_flutter_datepicker: ^28.1.33 + syncfusion_flutter_core: ^28.1.39 + syncfusion_flutter_calendar: ^28.1.39 + syncfusion_flutter_charts: ^28.1.39 + syncfusion_flutter_datepicker: ^28.1.39 google_maps_flutter: ^2.5.3 video_player: ^2.6.1 barcode_widget: ^2.0.4 @@ -90,6 +90,11 @@ dependency_overrides: git: url: https://github.com/jakobkoerber/flutter_linkify ref: master + home_widget: + git: + url: https://github.com/jakobkoerber/home_widget.git + ref: main + path: packages/home_widget dev_dependencies: # code generation From fa9a058131acdf83e9fa6a0535466b351a82b0c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:06:50 +0100 Subject: [PATCH 2/5] Fix News Titles and Sorting, Add Scrollbars to Campus Tab --- lib/campusComponent/screen/campus_screen.dart | 16 +++++----- lib/campusComponent/screen/movie_screen.dart | 12 ++++---- lib/campusComponent/screen/news_screen.dart | 30 ++++++++++--------- .../screen/student_clubs_screen.dart | 12 ++++---- .../view/news/news_card_view.dart | 3 +- .../viewmodel/news_viewmodel.dart | 5 ++++ 6 files changed, 46 insertions(+), 32 deletions(-) diff --git a/lib/campusComponent/screen/campus_screen.dart b/lib/campusComponent/screen/campus_screen.dart index e5a56482..d7f70766 100644 --- a/lib/campusComponent/screen/campus_screen.dart +++ b/lib/campusComponent/screen/campus_screen.dart @@ -27,13 +27,15 @@ class CampusScreen extends StatelessWidget { } Widget body() { - return const SingleChildScrollView( - child: Column( - children: [ - NewsWidgetView(), - StudentClubWidgetView(), - MovieWidgetView(), - ], + return const Scrollbar( + child: SingleChildScrollView( + child: Column( + children: [ + NewsWidgetView(), + StudentClubWidgetView(), + MovieWidgetView(), + ], + ), ), ); } diff --git a/lib/campusComponent/screen/movie_screen.dart b/lib/campusComponent/screen/movie_screen.dart index 6c381be9..a546709e 100644 --- a/lib/campusComponent/screen/movie_screen.dart +++ b/lib/campusComponent/screen/movie_screen.dart @@ -33,11 +33,13 @@ class MovieScreen extends ConsumerWidget { ), body: () { if (snapshot.hasData) { - return MovieGridView( - movies: snapshot.data!, - padding: EdgeInsets.all(context.padding), - crossAxisCount: GridUtility.campusCrossAxisCount(context), - withinScrollView: false, + return Scrollbar( + child: MovieGridView( + movies: snapshot.data!, + padding: EdgeInsets.all(context.padding), + crossAxisCount: GridUtility.campusCrossAxisCount(context), + withinScrollView: false, + ), ); } else if (snapshot.hasError) { return Center( diff --git a/lib/campusComponent/screen/news_screen.dart b/lib/campusComponent/screen/news_screen.dart index 7e856f23..ae979aa0 100644 --- a/lib/campusComponent/screen/news_screen.dart +++ b/lib/campusComponent/screen/news_screen.dart @@ -36,21 +36,23 @@ class NewsScreen extends ConsumerWidget { return TabBarView( children: [ for (var collection in snapshot.data!.values) - GridView.count( - crossAxisCount: crossAxisCount(context), - mainAxisSpacing: context.padding, - crossAxisSpacing: context.padding, - padding: EdgeInsets.all(context.padding), - childAspectRatio: 1.1, - children: [ - for (var news in collection) - LayoutBuilder( - builder: (context, constraints) => NewsCardView( - news: news, - width: constraints.maxWidth, + Scrollbar( + child: GridView.count( + crossAxisCount: crossAxisCount(context), + mainAxisSpacing: context.padding, + crossAxisSpacing: context.padding, + padding: EdgeInsets.all(context.padding), + childAspectRatio: 1.1, + children: [ + for (var news in collection) + LayoutBuilder( + builder: (context, constraints) => NewsCardView( + news: news, + width: constraints.maxWidth, + ), ), - ), - ], + ], + ), ), ], ); diff --git a/lib/campusComponent/screen/student_clubs_screen.dart b/lib/campusComponent/screen/student_clubs_screen.dart index 5575da6a..191f659b 100644 --- a/lib/campusComponent/screen/student_clubs_screen.dart +++ b/lib/campusComponent/screen/student_clubs_screen.dart @@ -49,11 +49,13 @@ class StudentClubsScreen extends ConsumerWidget { return TabBarView( children: [ for (var collection in snapshot.data!) - StudentClubGridView( - studentClubs: collection.clubs, - padding: EdgeInsets.all(context.padding), - crossAxisCount: crossAxisCount(context), - withinScrollView: false, + Scrollbar( + child: StudentClubGridView( + studentClubs: collection.clubs, + padding: EdgeInsets.all(context.padding), + crossAxisCount: crossAxisCount(context), + withinScrollView: false, + ), ), ], ); diff --git a/lib/campusComponent/view/news/news_card_view.dart b/lib/campusComponent/view/news/news_card_view.dart index d281bc56..05ee2457 100644 --- a/lib/campusComponent/view/news/news_card_view.dart +++ b/lib/campusComponent/view/news/news_card_view.dart @@ -1,4 +1,5 @@ import 'package:cached_network_image/cached_network_image.dart'; +import 'package:campus_flutter/base/extensions/string_capitalize.dart'; import 'package:campus_flutter/base/util/string_parser.dart'; import 'package:campus_flutter/base/networking/apis/tumdev/campus_backend.pbgrpc.dart'; import 'package:campus_flutter/base/routing/routes.dart'; @@ -87,7 +88,7 @@ class NewsCardView extends ConsumerWidget { Expanded( flex: 3, child: Text( - news.title, + news.title.capitalizeFirstLetter(), style: Theme.of(context) .textTheme .titleMedium diff --git a/lib/campusComponent/viewmodel/news_viewmodel.dart b/lib/campusComponent/viewmodel/news_viewmodel.dart index 8e5c5a5a..0448aada 100644 --- a/lib/campusComponent/viewmodel/news_viewmodel.dart +++ b/lib/campusComponent/viewmodel/news_viewmodel.dart @@ -16,6 +16,11 @@ class NewsViewModel { return NewsService.fetchRecentNews(forcedRefresh).then( (value) { lastFetched.add(value.$1); + value.$2.sort((news1, news2) { + final date1 = news1.date.toDateTime(); + final date2 = news2.date.toDateTime(); + return date2.compareTo(date1); + }); newsBySource.add(mapNewsBySource(value.$2)); news.add(value.$2); }, From c2d09d605b7c02093fd8ce1d0f2340ec31c2d276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:07:06 +0100 Subject: [PATCH 3/5] Fix Privacy Policy Link --- lib/settingsComponent/views/contact_view.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/settingsComponent/views/contact_view.dart b/lib/settingsComponent/views/contact_view.dart index 47b9903f..9f82aef2 100644 --- a/lib/settingsComponent/views/contact_view.dart +++ b/lib/settingsComponent/views/contact_view.dart @@ -36,7 +36,7 @@ class ContactView extends ConsumerWidget { ), HyperLinkListTile( dense: true, - link: "https://www.tum.app/privacy", + link: "https://www.tum.dev/privacy", label: context.tr("privacyPolicy"), ), _licensesButton(context), From e30502b5d758cd2c7d9a97efef42d678874f0ae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:12:27 +0100 Subject: [PATCH 4/5] Update README.md --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 9481e82f..7d3eb99c 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Please refer to the respective installation instructions: |------------------------------------------|------------------------------------------|----------------------------------------------| | `Flutter` (includes the `Dart` compiler) | SDK to develop this app | https://docs.flutter.dev/get-started/install | -### Updating the `.proto` files of the +### Updating the `.proto` files To update the generated stubs for the Campus, you need protoc installed, then activte it in dart and then you can generate the new client @@ -70,15 +70,16 @@ curl -o protos/tumdev/campus_backend.proto https://raw.githubusercontent.com/TUM protoc --dart_out=grpc:lib/base/networking/apis -I./protos google/protobuf/timestamp.proto google/protobuf/empty.proto tumdev/campus_backend.proto ``` -### Current needed Forks +### Currently needed Forks To ensure that campus_flutter runs on every supported platform, we need to make some modifications to packages. -| Package | Reason | Link | -|-----------------|-------------------------------------|----------------------------------------------| -| gRPC | Caching | https://github.com/jakobkoerber/grpc-dart | -| Xml2Json | Fix Parsing of XML to JSON | https://github.com/jakobkoerber/xml2json | +| Package | Reason | Link | +|-----------------|-------------------------------------|-------------------------------------------------| +| gRPC | Caching | https://github.com/jakobkoerber/grpc-dart | +| Xml2Json | Fix Parsing of XML to JSON | https://github.com/jakobkoerber/xml2json | | flutter_linkify | Fix Selection Menu and Text Scaling | https://github.com/jakobkoerber/flutter_linkify | +| home_widget | Fix App Crash | https://github.com/jakobkoerber/home_widget | From 11c6ce00db8264d37a9a16041d3924f13831b0c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:12:47 +0100 Subject: [PATCH 5/5] Improve Wording in Settings, Add TUM.sexy Link --- assets/translations/de.json | 1 + assets/translations/en.json | 1 + lib/settingsComponent/views/contact_view.dart | 5 +++++ lib/settingsComponent/views/settings_view.dart | 2 +- 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/assets/translations/de.json b/assets/translations/de.json index f9f5c173..d6c2c851 100644 --- a/assets/translations/de.json +++ b/assets/translations/de.json @@ -21,6 +21,7 @@ "tokenPermissions": "Berechtigungen für Token", "permissionChangePossibleInTUMonline": "Du kannst deine Berechtigungen in TUMOnline ändern", "login": "Anmelden", + "logout": "Abmelden", "notLoggedIn": "Nicht angemeldet!", "profileError": "Profil konnte nicht geladen werden!", "welcomeToTheApp": "Willkommen in der\n TUM Campus App", diff --git a/assets/translations/en.json b/assets/translations/en.json index 69dcaf0f..09570c12 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -21,6 +21,7 @@ "tokenPermissions": "Token Permissions", "permissionChangePossibleInTUMonline": "You can change your permissions on TUMOnline", "login": "Login", + "logout": "Logout", "notLoggedIn": "Not Logged In!", "profileError": "Error fetching profile!", "welcomeToTheApp": "Welcome to the TUM Campus App", diff --git a/lib/settingsComponent/views/contact_view.dart b/lib/settingsComponent/views/contact_view.dart index 9f82aef2..ada91747 100644 --- a/lib/settingsComponent/views/contact_view.dart +++ b/lib/settingsComponent/views/contact_view.dart @@ -34,6 +34,11 @@ class ContactView extends ConsumerWidget { link: "https://app.tum.de", label: "TUM-Dev Website", ), + const HyperLinkListTile( + dense: true, + link: "https://tum.sexy/", + label: "TUM.sexy", + ), HyperLinkListTile( dense: true, link: "https://www.tum.dev/privacy", diff --git a/lib/settingsComponent/views/settings_view.dart b/lib/settingsComponent/views/settings_view.dart index 943e9783..24b6af24 100644 --- a/lib/settingsComponent/views/settings_view.dart +++ b/lib/settingsComponent/views/settings_view.dart @@ -111,7 +111,7 @@ class SettingsView extends ConsumerWidget { textAlign: TextAlign.center, ) : Text( - context.tr("resetLogin"), + context.tr("logout"), style: Theme.of(context).textTheme.bodyMedium?.copyWith( color: Colors.red, fontWeight: FontWeight.w500,