From f43a7cf41eae75635307179f3048991a5aa8f8d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Tue, 22 Oct 2024 21:51:45 +0200 Subject: [PATCH 1/2] Enhancement and Bugfixes for Android Calendar Widget (#292) --- README.md | 2 +- android/app/build.gradle | 2 +- .../de/tum/in/tumcampus/util/DateTimeUtils.kt | 20 +-- .../widgets/calendar/WidgetCalendarItem.kt | 1 + .../main/res/color/widget_header_color.xml | 5 - .../drawable-v21/app_widget_background.xml | 10 -- .../app_widget_inner_view_background.xml | 10 -- .../src/main/res/drawable/ic_filter_list.xml | 9 -- ...get_content_rounded_corners_background.xml | 8 -- ...dget_header_rounded_corners_background.xml | 8 -- .../src/main/res/layout/calendar_widget.xml | 13 +- .../main/res/layout/calendar_widget_item.xml | 3 + .../app/src/main/res/values-de/strings.xml | 10 +- .../src/main/res/values-night-v31/themes.xml | 10 -- .../app/src/main/res/values-v21/styles.xml | 14 -- .../app/src/main/res/values-v31/styles.xml | 16 --- .../app/src/main/res/values-v31/themes.xml | 19 +-- android/app/src/main/res/values/strings.xml | 10 +- android/app/src/main/res/values/styles.xml | 6 +- android/app/src/main/res/values/themes.xml | 14 +- .../main/res/xml-v31/calendar_widget_info.xml | 13 ++ .../src/main/res/xml/calendar_widget_info.xml | 6 +- lib/base/networking/cache/cache_entry.g.dart | 133 ++++++++++-------- .../model/calendar_event.g.dart | 3 +- pubspec.lock | 100 ++++++------- pubspec.yaml | 4 +- 26 files changed, 200 insertions(+), 249 deletions(-) delete mode 100644 android/app/src/main/res/color/widget_header_color.xml delete mode 100644 android/app/src/main/res/drawable-v21/app_widget_background.xml delete mode 100644 android/app/src/main/res/drawable-v21/app_widget_inner_view_background.xml delete mode 100644 android/app/src/main/res/drawable/ic_filter_list.xml delete mode 100644 android/app/src/main/res/drawable/widget_content_rounded_corners_background.xml delete mode 100644 android/app/src/main/res/drawable/widget_header_rounded_corners_background.xml delete mode 100644 android/app/src/main/res/values-night-v31/themes.xml delete mode 100644 android/app/src/main/res/values-v21/styles.xml delete mode 100644 android/app/src/main/res/values-v31/styles.xml create mode 100644 android/app/src/main/res/xml-v31/calendar_widget_info.xml diff --git a/README.md b/README.md index 833a88aa..9481e82f 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ To update the generated stubs for the Campus, you need protoc installed, then ac dart pub global activate protoc_plugin export PATH="$PATH:$HOME/.pub-cache/bin" curl -o protos/tumdev/campus_backend.proto https://raw.githubusercontent.com/TUM-Dev/Campus-Backend/main/server/api/tumdev/campus_backend.proto -protoc --dart_out=grpc:lib/base/networking/apis -I./protos google/protobuf/timestamp.proto google/protobuf/empty.proto protos/tumdev/campus_backend.proto +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 diff --git a/android/app/build.gradle b/android/app/build.gradle index 0004d8cd..e7b7a46b 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -44,7 +44,7 @@ android { defaultConfig { applicationId "de.tum.in.tumcampus" - minSdkVersion 26 + minSdkVersion 29 targetSdkVersion flutter.targetSdkVersion ndkVersion "26.1.10909125" versionCode flutterVersionCode.toInteger() diff --git a/android/app/src/main/kotlin/de/tum/in/tumcampus/util/DateTimeUtils.kt b/android/app/src/main/kotlin/de/tum/in/tumcampus/util/DateTimeUtils.kt index 254edd8a..32e37191 100644 --- a/android/app/src/main/kotlin/de/tum/in/tumcampus/util/DateTimeUtils.kt +++ b/android/app/src/main/kotlin/de/tum/in/tumcampus/util/DateTimeUtils.kt @@ -20,18 +20,18 @@ fun LocalDateTime.timeAgo(context: Context): String { val now = LocalDateTime.now() val duration = Duration.between(this, now) - val years = duration.toDays() / 365 - val months = duration.toDays() / 30 - val days = duration.toDays() - val hours = duration.toHours() - val minutes = duration.toMinutes() + val years = (duration.toDays() / 365).toInt() + val months = (duration.toDays() / 30).toInt() + val days = duration.toDays().toInt() + val hours = duration.toHours().toInt() + val minutes = duration.toMinutes().toInt() return when { - years > 0 -> context.resources.getQuantityString(R.plurals.yearsAgo, years.toInt()) - months > 0 -> context.resources.getQuantityString(R.plurals.monthsAgo, months.toInt()) - days > 0 -> context.resources.getQuantityString(R.plurals.daysAgo, days.toInt()) - hours > 0 -> context.resources.getQuantityString(R.plurals.hoursAgo, hours.toInt()) - minutes > 0 -> context.resources.getQuantityString(R.plurals.minutesAgo, minutes.toInt()) + years > 0 -> context.resources.getQuantityString(R.plurals.yearsAgo, years, years) + months > 0 -> context.resources.getQuantityString(R.plurals.monthsAgo, months, months) + days > 0 -> context.resources.getQuantityString(R.plurals.daysAgo, days, days) + hours > 0 -> context.resources.getQuantityString(R.plurals.hoursAgo, hours, hours) + minutes > 0 -> context.resources.getQuantityString(R.plurals.minutesAgo, minutes, minutes) else -> context.resources.getString(R.string.just_now) } } diff --git a/android/app/src/main/kotlin/de/tum/in/tumcampus/widgets/calendar/WidgetCalendarItem.kt b/android/app/src/main/kotlin/de/tum/in/tumcampus/widgets/calendar/WidgetCalendarItem.kt index 33ff067f..853768fe 100644 --- a/android/app/src/main/kotlin/de/tum/in/tumcampus/widgets/calendar/WidgetCalendarItem.kt +++ b/android/app/src/main/kotlin/de/tum/in/tumcampus/widgets/calendar/WidgetCalendarItem.kt @@ -25,6 +25,7 @@ data class WidgetCalendarItem( val endDate: LocalDateTime, val location: String? = null, val color: Long? = null, + val isVisible: Boolean? = null, var isFirstOnDay: Boolean = false ) { fun getEventColor(context: Context): Int { diff --git a/android/app/src/main/res/color/widget_header_color.xml b/android/app/src/main/res/color/widget_header_color.xml deleted file mode 100644 index a79bc007..00000000 --- a/android/app/src/main/res/color/widget_header_color.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/drawable-v21/app_widget_background.xml b/android/app/src/main/res/drawable-v21/app_widget_background.xml deleted file mode 100644 index 785445c6..00000000 --- a/android/app/src/main/res/drawable-v21/app_widget_background.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/drawable-v21/app_widget_inner_view_background.xml b/android/app/src/main/res/drawable-v21/app_widget_inner_view_background.xml deleted file mode 100644 index 007e2872..00000000 --- a/android/app/src/main/res/drawable-v21/app_widget_inner_view_background.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/drawable/ic_filter_list.xml b/android/app/src/main/res/drawable/ic_filter_list.xml deleted file mode 100644 index d19a788c..00000000 --- a/android/app/src/main/res/drawable/ic_filter_list.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/android/app/src/main/res/drawable/widget_content_rounded_corners_background.xml b/android/app/src/main/res/drawable/widget_content_rounded_corners_background.xml deleted file mode 100644 index abdb9700..00000000 --- a/android/app/src/main/res/drawable/widget_content_rounded_corners_background.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/drawable/widget_header_rounded_corners_background.xml b/android/app/src/main/res/drawable/widget_header_rounded_corners_background.xml deleted file mode 100644 index 412726a4..00000000 --- a/android/app/src/main/res/drawable/widget_header_rounded_corners_background.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/layout/calendar_widget.xml b/android/app/src/main/res/layout/calendar_widget.xml index b945b8db..70dc326a 100644 --- a/android/app/src/main/res/layout/calendar_widget.xml +++ b/android/app/src/main/res/layout/calendar_widget.xml @@ -2,11 +2,12 @@ + android:padding="@dimen/widget_margin" + android:theme="@style/Theme.AppWidget.AppWidgetContainer"> @@ -34,7 +35,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:textAlignment="viewEnd" - android:textColor="@color/text_primary" + android:textColor="?android:attr/textColorPrimary" android:textSize="14sp" tools:text="Date" /> @@ -58,7 +59,7 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/calendar_widget_no_lectures" - android:textColor="@color/text_dark_gray" + android:textColor="?android:attr/textColorPrimary" android:visibility="gone" tools:visibility="visible" /> @@ -69,7 +70,7 @@ android:layout_gravity="center" android:text="@string/calendar_widget_old_data" android:textAlignment="center" - android:textColor="@color/text_primary" + android:textColor="?android:attr/textColorPrimary" android:visibility="gone" tools:visibility="visible" /> diff --git a/android/app/src/main/res/layout/calendar_widget_item.xml b/android/app/src/main/res/layout/calendar_widget_item.xml index eff81f14..038f57c3 100644 --- a/android/app/src/main/res/layout/calendar_widget_item.xml +++ b/android/app/src/main/res/layout/calendar_widget_item.xml @@ -12,6 +12,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="38dp" + android:textColor="?android:attr/textColorPrimary" android:visibility="gone" tools:text="Month" tools:visibility="visible" /> @@ -28,6 +29,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:background="@android:color/transparent" + android:textColor="?android:attr/textColorPrimary" android:textSize="18sp" android:textStyle="bold" tools:text="8" /> @@ -39,6 +41,7 @@ android:layout_marginTop="-6dp" android:layout_weight="1" android:background="@android:color/transparent" + android:textColor="?android:attr/textColorPrimary" android:textSize="13sp" tools:text="Do." /> diff --git a/android/app/src/main/res/values-de/strings.xml b/android/app/src/main/res/values-de/strings.xml index 65e6ecc8..57d74f70 100644 --- a/android/app/src/main/res/values-de/strings.xml +++ b/android/app/src/main/res/values-de/strings.xml @@ -12,23 +12,23 @@ Gerade eben Gestern - Vor 1 Jahr + Vor %d Jahr Vor %d Jahren - Vor 1 Monaten + Vor %d Monaten Vor %d Monaten - Vor 1 Tag + Vor %d Tag Vor %d Tagen - Vor 1 Stunde + Vor %d Stunde Vor %d Stunden - Vor 1 Minute + Vor %d Minute Vor %d Minuten \ No newline at end of file diff --git a/android/app/src/main/res/values-night-v31/themes.xml b/android/app/src/main/res/values-night-v31/themes.xml deleted file mode 100644 index f253c9da..00000000 --- a/android/app/src/main/res/values-night-v31/themes.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/values-v21/styles.xml b/android/app/src/main/res/values-v21/styles.xml deleted file mode 100644 index 0b35f7d8..00000000 --- a/android/app/src/main/res/values-v21/styles.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/values-v31/styles.xml b/android/app/src/main/res/values-v31/styles.xml deleted file mode 100644 index 6b133976..00000000 --- a/android/app/src/main/res/values-v31/styles.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/values-v31/themes.xml b/android/app/src/main/res/values-v31/themes.xml index badd306a..f70dc6f3 100644 --- a/android/app/src/main/res/values-v31/themes.xml +++ b/android/app/src/main/res/values-v31/themes.xml @@ -1,11 +1,14 @@ - + - - + \ No newline at end of file diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 07ec7f99..ce4c3a9c 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -13,23 +13,23 @@ Yesterday %1$s–%2$s - 1 year ago + %d year ago %d years ago - 1 month ago + %d month ago %d months ago - 1 day ago + %d day ago %d days ago - 1 hour ago + %d hour ago %d hours ago - 1 minute ago + %d minute ago %d minutes ago \ No newline at end of file diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index d1d13fc7..d9c6cb68 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -16,13 +16,13 @@ ?android:colorBackground - - diff --git a/android/app/src/main/res/values/themes.xml b/android/app/src/main/res/values/themes.xml index dcd8899e..fb94a839 100644 --- a/android/app/src/main/res/values/themes.xml +++ b/android/app/src/main/res/values/themes.xml @@ -1,16 +1,16 @@ + - - diff --git a/android/app/src/main/res/xml-v31/calendar_widget_info.xml b/android/app/src/main/res/xml-v31/calendar_widget_info.xml new file mode 100644 index 00000000..474289c5 --- /dev/null +++ b/android/app/src/main/res/xml-v31/calendar_widget_info.xml @@ -0,0 +1,13 @@ + + diff --git a/android/app/src/main/res/xml/calendar_widget_info.xml b/android/app/src/main/res/xml/calendar_widget_info.xml index 9beadf7a..474289c5 100644 --- a/android/app/src/main/res/xml/calendar_widget_info.xml +++ b/android/app/src/main/res/xml/calendar_widget_info.xml @@ -8,8 +8,6 @@ android:minResizeWidth="270dp" android:minResizeHeight="110dp" android:previewImage="@drawable/appwidget_preview" - android:previewLayout="@layout/calendar_widget" android:resizeMode="horizontal|vertical" - android:updatePeriodMillis="86400000" - android:widgetCategory="home_screen" /> + android:updatePeriodMillis="600000" + android:widgetCategory="home_screen" /> diff --git a/lib/base/networking/cache/cache_entry.g.dart b/lib/base/networking/cache/cache_entry.g.dart index 1d352c3d..9d64d21e 100644 --- a/lib/base/networking/cache/cache_entry.g.dart +++ b/lib/base/networking/cache/cache_entry.g.dart @@ -340,61 +340,78 @@ typedef $$CacheEntryTableUpdateCompanionBuilder = CacheEntryCompanion Function({ }); class $$CacheEntryTableFilterComposer - extends FilterComposer<_$CacheDatabase, $CacheEntryTable> { - $$CacheEntryTableFilterComposer(super.$state); - ColumnFilters get id => $state.composableBuilder( - column: $state.table.id, - builder: (column, joinBuilders) => - ColumnFilters(column, joinBuilders: joinBuilders)); - - ColumnFilters get url => $state.composableBuilder( - column: $state.table.url, - builder: (column, joinBuilders) => - ColumnFilters(column, joinBuilders: joinBuilders)); - - ColumnFilters get validUntil => $state.composableBuilder( - column: $state.table.validUntil, - builder: (column, joinBuilders) => - ColumnFilters(column, joinBuilders: joinBuilders)); - - ColumnFilters get saved => $state.composableBuilder( - column: $state.table.saved, - builder: (column, joinBuilders) => - ColumnFilters(column, joinBuilders: joinBuilders)); - - ColumnFilters get body => $state.composableBuilder( - column: $state.table.body, - builder: (column, joinBuilders) => - ColumnFilters(column, joinBuilders: joinBuilders)); + extends Composer<_$CacheDatabase, $CacheEntryTable> { + $$CacheEntryTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get id => $composableBuilder( + column: $table.id, builder: (column) => ColumnFilters(column)); + + ColumnFilters get url => $composableBuilder( + column: $table.url, builder: (column) => ColumnFilters(column)); + + ColumnFilters get validUntil => $composableBuilder( + column: $table.validUntil, builder: (column) => ColumnFilters(column)); + + ColumnFilters get saved => $composableBuilder( + column: $table.saved, builder: (column) => ColumnFilters(column)); + + ColumnFilters get body => $composableBuilder( + column: $table.body, builder: (column) => ColumnFilters(column)); } class $$CacheEntryTableOrderingComposer - extends OrderingComposer<_$CacheDatabase, $CacheEntryTable> { - $$CacheEntryTableOrderingComposer(super.$state); - ColumnOrderings get id => $state.composableBuilder( - column: $state.table.id, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); - - ColumnOrderings get url => $state.composableBuilder( - column: $state.table.url, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); - - ColumnOrderings get validUntil => $state.composableBuilder( - column: $state.table.validUntil, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); - - ColumnOrderings get saved => $state.composableBuilder( - column: $state.table.saved, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); - - ColumnOrderings get body => $state.composableBuilder( - column: $state.table.body, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); + extends Composer<_$CacheDatabase, $CacheEntryTable> { + $$CacheEntryTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get url => $composableBuilder( + column: $table.url, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get validUntil => $composableBuilder( + column: $table.validUntil, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get saved => $composableBuilder( + column: $table.saved, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get body => $composableBuilder( + column: $table.body, builder: (column) => ColumnOrderings(column)); +} + +class $$CacheEntryTableAnnotationComposer + extends Composer<_$CacheDatabase, $CacheEntryTable> { + $$CacheEntryTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get url => + $composableBuilder(column: $table.url, builder: (column) => column); + + GeneratedColumn get validUntil => $composableBuilder( + column: $table.validUntil, builder: (column) => column); + + GeneratedColumn get saved => + $composableBuilder(column: $table.saved, builder: (column) => column); + + GeneratedColumn get body => + $composableBuilder(column: $table.body, builder: (column) => column); } class $$CacheEntryTableTableManager extends RootTableManager< @@ -403,6 +420,7 @@ class $$CacheEntryTableTableManager extends RootTableManager< CacheEntryData, $$CacheEntryTableFilterComposer, $$CacheEntryTableOrderingComposer, + $$CacheEntryTableAnnotationComposer, $$CacheEntryTableCreateCompanionBuilder, $$CacheEntryTableUpdateCompanionBuilder, ( @@ -415,10 +433,12 @@ class $$CacheEntryTableTableManager extends RootTableManager< : super(TableManagerState( db: db, table: table, - filteringComposer: - $$CacheEntryTableFilterComposer(ComposerState(db, table)), - orderingComposer: - $$CacheEntryTableOrderingComposer(ComposerState(db, table)), + createFilteringComposer: () => + $$CacheEntryTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$CacheEntryTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$CacheEntryTableAnnotationComposer($db: db, $table: table), updateCompanionCallback: ({ Value id = const Value.absent(), Value url = const Value.absent(), @@ -464,6 +484,7 @@ typedef $$CacheEntryTableProcessedTableManager = ProcessedTableManager< CacheEntryData, $$CacheEntryTableFilterComposer, $$CacheEntryTableOrderingComposer, + $$CacheEntryTableAnnotationComposer, $$CacheEntryTableCreateCompanionBuilder, $$CacheEntryTableUpdateCompanionBuilder, ( diff --git a/lib/calendarComponent/model/calendar_event.g.dart b/lib/calendarComponent/model/calendar_event.g.dart index 37f61b1e..bfcaa047 100644 --- a/lib/calendarComponent/model/calendar_event.g.dart +++ b/lib/calendarComponent/model/calendar_event.g.dart @@ -17,7 +17,7 @@ CalendarEvent _$CalendarEventFromJson(Map json) => endDate: DateTime.parse(json['dtend'] as String), location: json['location'] as String?, color: (json['color'] as num?)?.toInt(), - ); + )..isVisible = json['isVisible'] as bool?; Map _$CalendarEventToJson(CalendarEvent instance) => { @@ -30,6 +30,7 @@ Map _$CalendarEventToJson(CalendarEvent instance) => 'dtend': instance.endDate.toIso8601String(), 'location': instance.location, 'color': instance.color, + 'isVisible': instance.isVisible, }; CalendarEvents _$CalendarEventsFromJson(Map json) => diff --git a/pubspec.lock b/pubspec.lock index a069e49e..5b11f588 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -58,10 +58,10 @@ packages: dependency: transitive description: name: args - sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" + sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.6.0" async: dependency: transitive description: @@ -250,26 +250,26 @@ packages: dependency: transitive description: name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" coverage: dependency: transitive description: name: coverage - sha256: c1fb2dce3c0085f39dc72668e85f8e0210ec7de05345821ff58530567df345a5 + sha256: "88b0fddbe4c92910fefc09cc0248f5e7f0cd23e450ded4c28f16ab8ee8f83268" url: "https://pub.dev" source: hosted - version: "1.9.2" + version: "1.10.0" crypto: dependency: transitive description: name: crypto - sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.6" csslib: dependency: transitive description: @@ -290,10 +290,10 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: a7fd703482b391a87d60b6061d04dfdeab07826b96f9abd8f5ed98068acc0074 + sha256: db03b2d2a3fa466a4627709e1db58692c3f7f658e36a5942d342d86efedc4091 url: "https://pub.dev" source: hosted - version: "10.1.2" + version: "11.0.0" device_info_plus_platform_interface: dependency: transitive description: @@ -322,18 +322,18 @@ packages: dependency: "direct main" description: name: drift - sha256: d6ff1ec6a0f3fa097dda6b776cf601f1f3d88b53b287288e09c1306f394fb1b3 + sha256: df027d168a2985a2e9da900adeba2ab0136f0d84436592cf3cd5135f82c8579c url: "https://pub.dev" source: hosted - version: "2.20.3" + version: "2.21.0" drift_dev: dependency: "direct dev" description: name: drift_dev - sha256: "3ee987578ca2281b5ff91eadd757cd6dd36001458d6e33784f990d67ff38f756" + sha256: "27bab15e7869b69259663590381180117873b9b273a1ea9ebb21bb73133d1233" url: "https://pub.dev" source: hosted - version: "2.20.3" + version: "2.21.0" easy_localization: dependency: "direct main" description: @@ -370,10 +370,10 @@ packages: dependency: transitive description: name: file - sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.0.1" firebase_core: dependency: "direct main" description: @@ -442,10 +442,10 @@ packages: dependency: transitive description: name: fixnum - sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" flutter: dependency: "direct main" description: flutter @@ -510,10 +510,10 @@ packages: dependency: "direct main" description: name: flutter_riverpod - sha256: "0f1974eff5bbe774bf1d870e406fc6f29e3d6f1c46bd9c58e7172ff68a785d7d" + sha256: "711d916456563f715bde1e139d7cfdca009f8264befab3ac9f8ded8b6ec26405" url: "https://pub.dev" source: hosted - version: "2.5.1" + version: "2.5.3" flutter_secure_storage: dependency: "direct main" description: @@ -696,18 +696,18 @@ packages: dependency: transitive description: name: google_maps_flutter_android - sha256: a591ff8d0816436e6a4d9f32bbdf10ebb30bb26f72f6db2a51ddb2426ff7d9ec + sha256: "6caec25edb8014ec7d503babc597794de2d4c1baf3e3d20b57c41bd3e439b916" url: "https://pub.dev" source: hosted - version: "2.14.8" + version: "2.14.10" google_maps_flutter_ios: dependency: transitive description: name: google_maps_flutter_ios - sha256: "3a484846fc56f15e47e3de1f5ea80a7ff2b31721d2faa88f390f3b3cf580c953" + sha256: "753ebf6a2bc24c5eba8e714c901345d858abd9694b1f878c43614fd3f06b8060" url: "https://pub.dev" source: hosted - version: "2.13.0" + version: "2.13.1" google_maps_flutter_platform_interface: dependency: transitive description: @@ -801,10 +801,10 @@ packages: dependency: transitive description: name: image - sha256: "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8" + sha256: f31d52537dc417fdcde36088fdf11d191026fd5e4fae742491ebd40e5a8bea7d url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "4.3.0" intl: dependency: "direct main" description: @@ -897,10 +897,10 @@ packages: dependency: "direct main" description: name: lottie - sha256: "6a24ade5d3d918c306bb1c21a6b9a04aab0489d51a2582522eea820b4093b62b" + sha256: "7afc60865a2429d994144f7d66ced2ae4305fe35d82890b8766e3359872d872c" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" macros: dependency: transitive description: @@ -977,10 +977,10 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: a75164ade98cb7d24cfd0a13c6408927c6b217fa60dee5a7ff5c116a58f28918 + sha256: "894f37107424311bdae3e476552229476777b8752c5a2a2369c0cb9a2d5442ef" url: "https://pub.dev" source: hosted - version: "8.0.2" + version: "8.0.3" package_info_plus_platform_interface: dependency: transitive description: @@ -1209,10 +1209,10 @@ packages: dependency: transitive description: name: riverpod - sha256: f21b32ffd26a36555e501b04f4a5dca43ed59e16343f1a30c13632b2351dfa4d + sha256: c86fedfb45dd1da98ee6493dd9374325cdf494e7d523ebfb0c387eecc5f7b5c9 url: "https://pub.dev" source: hosted - version: "2.5.1" + version: "2.5.3" rxdart: dependency: "direct main" description: @@ -1414,10 +1414,10 @@ packages: dependency: transitive description: name: sqflite_platform_interface - sha256: b62ab81e1284341783222aefbbb44f984ebf4663d672ae10408c9a8ddab4bfb6 + sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" url: "https://pub.dev" source: hosted - version: "2.4.0-0" + version: "2.4.0" sqlite3: dependency: "direct main" description: @@ -1438,10 +1438,10 @@ packages: dependency: transitive description: name: sqlparser - sha256: "852cf80f9e974ac8e1b613758a8aa640215f7701352b66a7f468e95711eb570b" + sha256: c5f63dff8677407ddcddfa4744c176ea6dc44286c47ba9e69e76d8071398034d url: "https://pub.dev" source: hosted - version: "0.38.1" + version: "0.39.1" stack_trace: dependency: transitive description: @@ -1486,34 +1486,34 @@ packages: dependency: "direct main" description: name: syncfusion_flutter_calendar - sha256: c2105449ffb46a9a79e5b622ceb8a78e2937c88e69747469244051803fba6b52 + sha256: d5efcd867d8e9a678a95446e3bb1eed29a90cb92d61b32d3099ed3dd4bfce34d url: "https://pub.dev" source: hosted - version: "27.1.52" + version: "27.1.53" syncfusion_flutter_charts: dependency: "direct main" description: name: syncfusion_flutter_charts - sha256: "4e89e0893297780d8e06be0c482b9b0a23ecf54c3d64e6e40ff06cf30952bce6" + sha256: df13f25d2095bf747c0c67460a06b655a6cce6d74380d9e4ef24d9a523a2e1b6 url: "https://pub.dev" source: hosted - version: "27.1.52" + version: "27.1.53" syncfusion_flutter_core: dependency: "direct main" description: name: syncfusion_flutter_core - sha256: "7130fc3259247946b59fe9b76ee89500c775c3f7e5c1d0826f3105e1dd0bebf6" + sha256: becd190595cba56feac5ec17b805b35df9f006171c131c209f79b5c58fc780eb url: "https://pub.dev" source: hosted - version: "27.1.52" + version: "27.1.53" syncfusion_flutter_datepicker: dependency: "direct main" description: name: syncfusion_flutter_datepicker - sha256: "61efc09e962d7b7cc3c7d33a2e44ec027112403af49590d5cc1025a255cc34fa" + sha256: "5638805bea1c70a6d46dea9d39ef67f0085176e1c15cf57f7036cf67c1568816" url: "https://pub.dev" source: hosted - version: "27.1.52" + version: "27.1.53" synchronized: dependency: transitive description: @@ -1598,10 +1598,10 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3" + sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603" url: "https://pub.dev" source: hosted - version: "6.3.0" + version: "6.3.1" url_launcher_android: dependency: transitive description: @@ -1710,10 +1710,10 @@ packages: dependency: transitive description: name: video_player_android - sha256: ae5287ca367e206eb74d7b3dc1ce0b8912ab9a3fc0597b6a101a0a5239f229d3 + sha256: "340b29bc38b2c341ed3afa08148f3d9f351220403cdd2b3a9eb38b71a4be1a9d" url: "https://pub.dev" source: hosted - version: "2.7.9" + version: "2.7.12" video_player_avfoundation: dependency: transitive description: @@ -1790,10 +1790,10 @@ packages: dependency: transitive description: name: win32 - sha256: "4d45dc9069dba4619dc0ebd93c7cec5e66d8482cb625a370ac806dcc8165f2ec" + sha256: e5c39a90447e7c81cfec14b041cdbd0d0916bd9ebbc7fe02ab69568be703b9bd url: "https://pub.dev" source: hosted - version: "5.5.5" + version: "5.6.0" win32_registry: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 2c3f9086..76eaa513 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: campus_flutter description: "A new Flutter project." publish_to: 'none' -version: 5.1.0+1 +version: 5.1.1+1 environment: sdk: '>=3.2.3 <4.0.0' @@ -53,7 +53,7 @@ dependencies: ref: master # helpers - device_info_plus: ^10.0.1 + device_info_plus: ^11.0.0 flutter_secure_storage: ^9.0.0 geolocator: ^13.0.1 package_info_plus: ^8.0.0 From 8bc8738e528c88e306a4670ebda72a0629f0ffef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Tue, 22 Oct 2024 22:07:41 +0200 Subject: [PATCH 2/2] Preserve State of SegmentedButton in Calendar (#286) --- ios/Podfile.lock | 28 +++---- lib/base/enums/user_preference.dart | 3 +- lib/base/routing/router_service.dart | 4 +- .../services}/user_preferences_service.dart | 0 .../viewModels/calendar_viewmodel.dart | 16 ++++ .../views/calendars_view.dart | 13 +++- .../viewmodel/departures_viewmodel.dart | 2 +- .../viewmodel/home_viewmodel.dart | 2 +- lib/main.dart | 2 +- .../viewModels/onboarding_viewmodel.dart | 6 +- .../viewModels/cafeterias_viewmodel.dart | 2 +- .../viewModels/study_rooms_viewmodel.dart | 2 +- ...viewmodel.dart => settings_viewmodel.dart} | 10 +-- .../views/appearance_settings_view.dart | 10 +-- .../views/calendar_settings_view.dart | 6 +- pubspec.lock | 76 +++++++++---------- 16 files changed, 102 insertions(+), 80 deletions(-) rename lib/{settingsComponent/service => base/services}/user_preferences_service.dart (100%) rename lib/settingsComponent/viewModels/{user_preferences_viewmodel.dart => settings_viewmodel.dart} (92%) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 22263ef5..fc0ffc13 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -20,15 +20,15 @@ PODS: - Firebase/RemoteConfig (= 11.2.0) - firebase_core - Flutter - - FirebaseABTesting (11.3.0): + - FirebaseABTesting (11.4.0): - FirebaseCore (~> 11.0) - FirebaseCore (11.2.0): - FirebaseCoreInternal (~> 11.0) - GoogleUtilities/Environment (~> 8.0) - GoogleUtilities/Logger (~> 8.0) - - FirebaseCoreExtension (11.3.0): + - FirebaseCoreExtension (11.4.1): - FirebaseCore (~> 11.0) - - FirebaseCoreInternal (11.3.0): + - FirebaseCoreInternal (11.4.0): - "GoogleUtilities/NSData+zlib (~> 8.0)" - FirebaseCrashlytics (11.2.0): - FirebaseCore (~> 11.0) @@ -39,7 +39,7 @@ PODS: - GoogleUtilities/Environment (~> 8.0) - nanopb (~> 3.30910.0) - PromisesObjC (~> 2.4) - - FirebaseInstallations (11.3.0): + - FirebaseInstallations (11.4.0): - FirebaseCore (~> 11.0) - GoogleUtilities/Environment (~> 8.0) - GoogleUtilities/UserDefaults (~> 8.0) @@ -52,7 +52,7 @@ PODS: - FirebaseSharedSwift (~> 11.0) - GoogleUtilities/Environment (~> 8.0) - "GoogleUtilities/NSData+zlib (~> 8.0)" - - FirebaseRemoteConfigInterop (11.3.0) + - FirebaseRemoteConfigInterop (11.4.0) - FirebaseSessions (11.3.0): - FirebaseCore (~> 11.0) - FirebaseCoreExtension (~> 11.0) @@ -62,7 +62,7 @@ PODS: - GoogleUtilities/UserDefaults (~> 8.0) - nanopb (~> 3.30910.0) - PromisesSwift (~> 2.1) - - FirebaseSharedSwift (11.3.0) + - FirebaseSharedSwift (11.4.0) - Flutter (1.0.0) - flutter_native_splash (0.0.1): - Flutter @@ -233,21 +233,21 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/video_player_avfoundation/darwin" SPEC CHECKSUMS: - device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d + device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342 Firebase: 98e6bf5278170668a7983e12971a66b2cd57fc8c firebase_core: 2bedc3136ec7c7b8561c6123ed0239387b53f2af firebase_crashlytics: 37d104d457b51760b48504a93a12b3bf70995d77 firebase_remote_config: d522653d828836503715498f1662901a6efcd809 - FirebaseABTesting: c4559fcd2eba9f6bdaf0599e2c37ded01c343e4c + FirebaseABTesting: aef1719704fade00b200827e7973f352efc4caee FirebaseCore: a282032ae9295c795714ded2ec9c522fc237f8da - FirebaseCoreExtension: 30bb063476ef66cd46925243d64ad8b2c8ac3264 - FirebaseCoreInternal: ac26d09a70c730e497936430af4e60fb0c68ec4e + FirebaseCoreExtension: f1bc67a4702931a7caa097d8e4ac0a1b0d16720e + FirebaseCoreInternal: 5c2b016f06a96fbf20d9b443459f80427a827d7b FirebaseCrashlytics: cfc69af5b53565dc6a5e563788809b5778ac4eac - FirebaseInstallations: 58cf94dabf1e2bb2fa87725a9be5c2249171cda0 + FirebaseInstallations: 6ef4a1c7eb2a61ee1f74727d7f6ce2e72acf1414 FirebaseRemoteConfig: fca0b2d017fc1de52b28a4e5bcf2007c1a840457 - FirebaseRemoteConfigInterop: c3a5c31b3c22079f41ba1dc645df889d9ce38cb9 + FirebaseRemoteConfigInterop: e76f46ffa4d6a65e273d4dfebb6a79e588cec136 FirebaseSessions: 655ff17f3cc1a635cbdc2d69b953878001f9e25b - FirebaseSharedSwift: d39c2ad64a11a8d936ce25a42b00df47078bb59c + FirebaseSharedSwift: 505dae2d05969dbf6d43749a642bb1bf230f0252 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_native_splash: edf599c81f74d093a4daf8e17bd7a018854bc778 flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12 @@ -260,7 +260,7 @@ SPEC CHECKSUMS: home_widget: 0434835a4c9a75704264feff6be17ea40e0f0d57 map_launcher: 5fde49ac9a52672bf99da746599f507b4490d7b5 nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 - package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c + package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4 path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 diff --git a/lib/base/enums/user_preference.dart b/lib/base/enums/user_preference.dart index c1e0faf9..9f68bd0d 100644 --- a/lib/base/enums/user_preference.dart +++ b/lib/base/enums/user_preference.dart @@ -8,7 +8,8 @@ enum UserPreference { browser(bool), failedGrades(bool), weekends(bool), - hiddenCalendarEntries(bool); + hiddenCalendarEntries(bool), + calendarTab(int); final Type type; diff --git a/lib/base/routing/router_service.dart b/lib/base/routing/router_service.dart index c18ea1a3..d9e6f3f4 100644 --- a/lib/base/routing/router_service.dart +++ b/lib/base/routing/router_service.dart @@ -1,6 +1,6 @@ import 'package:campus_flutter/base/routing/routes.dart'; import 'package:campus_flutter/onboardingComponent/viewModels/onboarding_viewmodel.dart'; -import 'package:campus_flutter/settingsComponent/viewModels/user_preferences_viewmodel.dart'; +import 'package:campus_flutter/settingsComponent/viewModels/settings_viewmodel.dart'; import 'package:campus_flutter/studentCardComponent/viewModel/student_card_viewmodel.dart'; import 'package:flutter_native_splash/flutter_native_splash.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; @@ -17,7 +17,7 @@ class RouterService { Future routingCallback(GoRouterState state) async { if (!_isInitialized) { if (await ref.read(onboardingViewModel).checkLogin() == true) { - await ref.read(userPreferencesViewModel).loadPreferences(); + await ref.read(settingsViewModel).loadPreferences(); await ref.read(studentCardViewModel).fetch(false); _isInitialized = true; FlutterNativeSplash.remove(); diff --git a/lib/settingsComponent/service/user_preferences_service.dart b/lib/base/services/user_preferences_service.dart similarity index 100% rename from lib/settingsComponent/service/user_preferences_service.dart rename to lib/base/services/user_preferences_service.dart diff --git a/lib/calendarComponent/viewModels/calendar_viewmodel.dart b/lib/calendarComponent/viewModels/calendar_viewmodel.dart index eb9925e1..9a246afe 100644 --- a/lib/calendarComponent/viewModels/calendar_viewmodel.dart +++ b/lib/calendarComponent/viewModels/calendar_viewmodel.dart @@ -1,9 +1,11 @@ import 'dart:convert'; +import 'package:campus_flutter/base/enums/user_preference.dart'; import 'package:campus_flutter/calendarComponent/model/calendar_event.dart'; import 'package:campus_flutter/calendarComponent/services/calendar_preference_service.dart'; import 'package:campus_flutter/calendarComponent/services/calendar_service.dart'; import 'package:campus_flutter/main.dart'; +import 'package:campus_flutter/base/services/user_preferences_service.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:home_widget/home_widget.dart'; @@ -153,6 +155,20 @@ class CalendarViewModel { updateHomeWidget(events.value ?? []); } + int getTabPreference() { + return (getIt().load( + UserPreference.calendarTab, + ) as int?) ?? + 0; + } + + void saveTabPreference(int currentTab) { + getIt().save( + UserPreference.calendarTab, + currentTab, + ); + } + void resetPreferences() { _resetEventColors(); _resetVisibility(); diff --git a/lib/calendarComponent/views/calendars_view.dart b/lib/calendarComponent/views/calendars_view.dart index cb064e45..d517ec3a 100644 --- a/lib/calendarComponent/views/calendars_view.dart +++ b/lib/calendarComponent/views/calendars_view.dart @@ -41,7 +41,7 @@ class _CalendarsViewState extends ConsumerState ref .read(selectedDate.notifier) .addListener((state) => _selectedDateListener(state)); - _selectedCalendarTab = 0; + _selectedCalendarTab = ref.read(calendarViewModel).getTabPreference(); super.initState(); } @@ -98,9 +98,14 @@ class _CalendarsViewState extends ConsumerState selected: { _selectedCalendarTab, }, - onSelectionChanged: (newSelection) => setState(() { - _selectedCalendarTab = newSelection.first; - }), + onSelectionChanged: (newSelection) { + setState(() { + _selectedCalendarTab = newSelection.first; + }); + ref.read(calendarViewModel).saveTabPreference( + _selectedCalendarTab, + ); + }, ), ), ], diff --git a/lib/homeComponent/viewmodel/departures_viewmodel.dart b/lib/homeComponent/viewmodel/departures_viewmodel.dart index 9195efa9..1c1ab344 100644 --- a/lib/homeComponent/viewmodel/departures_viewmodel.dart +++ b/lib/homeComponent/viewmodel/departures_viewmodel.dart @@ -11,7 +11,7 @@ import 'package:campus_flutter/homeComponent/model/mvv_response.dart'; import 'package:campus_flutter/homeComponent/model/station.dart'; import 'package:campus_flutter/homeComponent/service/departures_service.dart'; import 'package:campus_flutter/main.dart'; -import 'package:campus_flutter/settingsComponent/service/user_preferences_service.dart'; +import 'package:campus_flutter/base/services/user_preferences_service.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:geolocator/geolocator.dart'; diff --git a/lib/homeComponent/viewmodel/home_viewmodel.dart b/lib/homeComponent/viewmodel/home_viewmodel.dart index 95454fc1..6d01a3a5 100644 --- a/lib/homeComponent/viewmodel/home_viewmodel.dart +++ b/lib/homeComponent/viewmodel/home_viewmodel.dart @@ -6,7 +6,7 @@ import 'package:campus_flutter/homeComponent/view/departure/departures_widget_vi import 'package:campus_flutter/main.dart'; import 'package:campus_flutter/placesComponent/views/homeWidget/cafeteria_widget_view.dart'; import 'package:campus_flutter/placesComponent/views/homeWidget/study_room_widget_view.dart'; -import 'package:campus_flutter/settingsComponent/service/user_preferences_service.dart'; +import 'package:campus_flutter/base/services/user_preferences_service.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; diff --git a/lib/main.dart b/lib/main.dart index 0e796b31..726ed0cd 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -16,7 +16,7 @@ import 'package:campus_flutter/calendarComponent/services/calendar_view_service. import 'package:campus_flutter/onboardingComponent/services/onboarding_service.dart'; import 'package:campus_flutter/navigation_service.dart'; import 'package:campus_flutter/placesComponent/services/map_theme_service.dart'; -import 'package:campus_flutter/settingsComponent/service/user_preferences_service.dart'; +import 'package:campus_flutter/base/services/user_preferences_service.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:easy_logger/easy_logger.dart'; import 'package:firebase_remote_config/firebase_remote_config.dart'; diff --git a/lib/onboardingComponent/viewModels/onboarding_viewmodel.dart b/lib/onboardingComponent/viewModels/onboarding_viewmodel.dart index 1cbde077..8aa4047b 100644 --- a/lib/onboardingComponent/viewModels/onboarding_viewmodel.dart +++ b/lib/onboardingComponent/viewModels/onboarding_viewmodel.dart @@ -12,8 +12,8 @@ import 'package:campus_flutter/onboardingComponent/services/onboarding_service.d import 'package:campus_flutter/main.dart'; import 'package:campus_flutter/personComponent/viewModel/person_details_viewmodel.dart'; import 'package:campus_flutter/personComponent/viewModel/profile_viewmodel.dart'; -import 'package:campus_flutter/settingsComponent/service/user_preferences_service.dart'; -import 'package:campus_flutter/settingsComponent/viewModels/user_preferences_viewmodel.dart'; +import 'package:campus_flutter/base/services/user_preferences_service.dart'; +import 'package:campus_flutter/settingsComponent/viewModels/settings_viewmodel.dart'; import 'package:campus_flutter/studentCardComponent/viewModel/student_card_viewmodel.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; @@ -147,7 +147,7 @@ class OnboardingViewModel { Future resetPreferences(WidgetRef ref) async { getIt().resetAll(); getIt().resetPreferences(); - ref.read(userPreferencesViewModel).loadPreferences(); + ref.read(settingsViewModel).loadPreferences(); ref.read(calendarViewModel).resetPreferences(); } diff --git a/lib/placesComponent/viewModels/cafeterias_viewmodel.dart b/lib/placesComponent/viewModels/cafeterias_viewmodel.dart index f79760b6..e445d29a 100644 --- a/lib/placesComponent/viewModels/cafeterias_viewmodel.dart +++ b/lib/placesComponent/viewModels/cafeterias_viewmodel.dart @@ -9,7 +9,7 @@ import 'package:campus_flutter/placesComponent/model/cafeterias/dish.dart'; import 'package:campus_flutter/placesComponent/model/cafeterias/mensa_menu.dart'; import 'package:campus_flutter/placesComponent/services/cafeterias_service.dart'; import 'package:campus_flutter/placesComponent/services/mealplan_service.dart'; -import 'package:campus_flutter/settingsComponent/service/user_preferences_service.dart'; +import 'package:campus_flutter/base/services/user_preferences_service.dart'; import 'package:collection/collection.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; diff --git a/lib/placesComponent/viewModels/study_rooms_viewmodel.dart b/lib/placesComponent/viewModels/study_rooms_viewmodel.dart index 5c0a29eb..db6e70d2 100644 --- a/lib/placesComponent/viewModels/study_rooms_viewmodel.dart +++ b/lib/placesComponent/viewModels/study_rooms_viewmodel.dart @@ -7,7 +7,7 @@ import 'package:campus_flutter/placesComponent/model/studyRooms/study_room.dart' import 'package:campus_flutter/placesComponent/model/studyRooms/study_room_data.dart'; import 'package:campus_flutter/placesComponent/model/studyRooms/study_room_group.dart'; import 'package:campus_flutter/placesComponent/services/study_rooms_service.dart'; -import 'package:campus_flutter/settingsComponent/service/user_preferences_service.dart'; +import 'package:campus_flutter/base/services/user_preferences_service.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:collection/collection.dart'; diff --git a/lib/settingsComponent/viewModels/user_preferences_viewmodel.dart b/lib/settingsComponent/viewModels/settings_viewmodel.dart similarity index 92% rename from lib/settingsComponent/viewModels/user_preferences_viewmodel.dart rename to lib/settingsComponent/viewModels/settings_viewmodel.dart index 27f49d6e..761daf69 100644 --- a/lib/settingsComponent/viewModels/user_preferences_viewmodel.dart +++ b/lib/settingsComponent/viewModels/settings_viewmodel.dart @@ -3,19 +3,19 @@ import 'package:campus_flutter/base/enums/user_preference.dart'; import 'package:campus_flutter/base/extensions/context.dart'; import 'package:campus_flutter/base/util/icon_text.dart'; import 'package:campus_flutter/main.dart'; -import 'package:campus_flutter/settingsComponent/service/user_preferences_service.dart'; +import 'package:campus_flutter/base/services/user_preferences_service.dart'; import 'package:campus_flutter/settingsComponent/views/settings_view.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -final userPreferencesViewModel = Provider( - (ref) => UserPreferencesViewModel(ref), +final settingsViewModel = Provider( + (ref) => SettingsViewModel(ref), ); -class UserPreferencesViewModel { +class SettingsViewModel { final Ref ref; - UserPreferencesViewModel(this.ref); + SettingsViewModel(this.ref); Future loadPreferences() async { return Future(() async { diff --git a/lib/settingsComponent/views/appearance_settings_view.dart b/lib/settingsComponent/views/appearance_settings_view.dart index db515795..e8248044 100644 --- a/lib/settingsComponent/views/appearance_settings_view.dart +++ b/lib/settingsComponent/views/appearance_settings_view.dart @@ -4,7 +4,7 @@ import 'package:campus_flutter/base/util/seperated_list.dart'; import 'package:campus_flutter/studiesComponent/viewModel/grade_viewmodel.dart'; import 'package:campus_flutter/homeComponent/view/widget/widget_frame_view.dart'; import 'package:campus_flutter/main.dart'; -import 'package:campus_flutter/settingsComponent/viewModels/user_preferences_viewmodel.dart'; +import 'package:campus_flutter/settingsComponent/viewModels/settings_viewmodel.dart'; import 'package:campus_flutter/settingsComponent/views/settings_view.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; @@ -39,14 +39,14 @@ class AppearanceSettingsView extends ConsumerWidget { trailing: DropdownButton( onChanged: (Appearance? newAppearance) { if (newAppearance != null) { - ref.read(userPreferencesViewModel).savePreference( + ref.read(settingsViewModel).savePreference( UserPreference.theme, newAppearance, ); } }, value: ref.watch(appearance), - items: UserPreferencesViewModel.getAppearanceEntries(context), + items: SettingsViewModel.getAppearanceEntries(context), ), ); } @@ -61,7 +61,7 @@ class AppearanceSettingsView extends ConsumerWidget { trailing: Switch( value: ref.watch(useWebView), onChanged: (showWebView) { - ref.read(userPreferencesViewModel).savePreference( + ref.read(settingsViewModel).savePreference( UserPreference.browser, showWebView, ); @@ -81,7 +81,7 @@ class AppearanceSettingsView extends ConsumerWidget { trailing: Switch( value: ref.watch(hideFailedGrades), onChanged: (value) { - ref.read(userPreferencesViewModel).savePreference( + ref.read(settingsViewModel).savePreference( UserPreference.failedGrades, value, ); diff --git a/lib/settingsComponent/views/calendar_settings_view.dart b/lib/settingsComponent/views/calendar_settings_view.dart index 20b60443..7cae9f08 100644 --- a/lib/settingsComponent/views/calendar_settings_view.dart +++ b/lib/settingsComponent/views/calendar_settings_view.dart @@ -3,7 +3,7 @@ import 'package:campus_flutter/base/util/seperated_list.dart'; import 'package:campus_flutter/calendarComponent/viewModels/calendar_viewmodel.dart'; import 'package:campus_flutter/calendarComponent/views/calendars_view.dart'; import 'package:campus_flutter/homeComponent/view/widget/widget_frame_view.dart'; -import 'package:campus_flutter/settingsComponent/viewModels/user_preferences_viewmodel.dart'; +import 'package:campus_flutter/settingsComponent/viewModels/settings_viewmodel.dart'; import 'package:campus_flutter/settingsComponent/views/settings_view.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; @@ -38,7 +38,7 @@ class CalendarSettingsView extends ConsumerWidget { trailing: Switch( value: ref.watch(showWeekends), onChanged: (value) { - ref.read(userPreferencesViewModel).savePreference( + ref.read(settingsViewModel).savePreference( UserPreference.weekends, value, ); @@ -59,7 +59,7 @@ class CalendarSettingsView extends ConsumerWidget { trailing: Switch( value: ref.watch(showHiddenCalendarEntries), onChanged: (value) { - ref.read(userPreferencesViewModel).savePreference( + ref.read(settingsViewModel).savePreference( UserPreference.hiddenCalendarEntries, value, ); diff --git a/pubspec.lock b/pubspec.lock index 5b11f588..c5eafa6a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -290,10 +290,10 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: db03b2d2a3fa466a4627709e1db58692c3f7f658e36a5942d342d86efedc4091 + sha256: c4af09051b4f0508f6c1dc0a5c085bf014d5c9a4a0678ce1799c2b4d716387a0 url: "https://pub.dev" source: hosted - version: "11.0.0" + version: "11.1.0" device_info_plus_platform_interface: dependency: transitive description: @@ -494,10 +494,10 @@ packages: dependency: "direct main" description: name: flutter_native_splash - sha256: aa06fec78de2190f3db4319dd60fdc8d12b2626e93ef9828633928c2dcaea840 + sha256: ee5c9bd2b74ea8676442fd4ab876b5d41681df49276488854d6c81a5377c0ef1 url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -510,10 +510,10 @@ packages: dependency: "direct main" description: name: flutter_riverpod - sha256: "711d916456563f715bde1e139d7cfdca009f8264befab3ac9f8ded8b6ec26405" + sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1" url: "https://pub.dev" source: hosted - version: "2.5.3" + version: "2.6.1" flutter_secure_storage: dependency: "direct main" description: @@ -648,10 +648,10 @@ packages: dependency: "direct main" description: name: get_it - sha256: ff97e5e7b2e82e63c82f5658c6ba2605ea831f0f7489b0d2fb255d817ec4eb5e + sha256: "35c253f83f9e03cbac65ffa159510e41ae15f49b37291ab8c522d7a0b6f330cd" url: "https://pub.dev" source: hosted - version: "8.0.0" + version: "8.0.1" glob: dependency: transitive description: @@ -889,10 +889,10 @@ packages: dependency: transitive description: name: logging - sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" lottie: dependency: "direct main" description: @@ -977,10 +977,10 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: "894f37107424311bdae3e476552229476777b8752c5a2a2369c0cb9a2d5442ef" + sha256: df3eb3e0aed5c1107bb0fdb80a8e82e778114958b1c5ac5644fb1ac9cae8a998 url: "https://pub.dev" source: hosted - version: "8.0.3" + version: "8.1.0" package_info_plus_platform_interface: dependency: transitive description: @@ -1065,10 +1065,10 @@ packages: dependency: transitive description: name: permission_handler_android - sha256: "76e4ab092c1b240d31177bb64d2b0bea43f43d0e23541ec866151b9f7b2490fa" + sha256: "71bbecfee799e65aff7c744761a57e817e73b738fedf62ab7afd5593da21f9f1" url: "https://pub.dev" source: hosted - version: "12.0.12" + version: "12.0.13" permission_handler_apple: dependency: transitive description: @@ -1113,10 +1113,10 @@ packages: dependency: transitive description: name: platform - sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" url: "https://pub.dev" source: hosted - version: "3.1.5" + version: "3.1.6" plugin_platform_interface: dependency: transitive description: @@ -1209,10 +1209,10 @@ packages: dependency: transitive description: name: riverpod - sha256: c86fedfb45dd1da98ee6493dd9374325cdf494e7d523ebfb0c387eecc5f7b5c9 + sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959" url: "https://pub.dev" source: hosted - version: "2.5.3" + version: "2.6.1" rxdart: dependency: "direct main" description: @@ -1422,18 +1422,18 @@ packages: dependency: "direct main" description: name: sqlite3 - sha256: "45f168ae2213201b54e09429ed0c593dc2c88c924a1488d6f9c523a255d567cb" + sha256: bb174b3ec2527f9c5f680f73a89af8149dd99782fbb56ea88ad0807c5638f2ed url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.4.7" sqlite3_flutter_libs: dependency: "direct main" description: name: sqlite3_flutter_libs - sha256: "62bbb4073edbcdf53f40c80775f33eea01d301b7b81417e5b3fb7395416258c1" + sha256: ccd29dd6cf6fb9351fa07cd6f92895809adbf0779c1d986acf5e3d53b3250e33 url: "https://pub.dev" source: hosted - version: "0.5.24" + version: "0.5.25" sqlparser: dependency: transitive description: @@ -1486,34 +1486,34 @@ packages: dependency: "direct main" description: name: syncfusion_flutter_calendar - sha256: d5efcd867d8e9a678a95446e3bb1eed29a90cb92d61b32d3099ed3dd4bfce34d + sha256: "1fdbcb8435abc4a1fb36914b83d9690eb0dea617df3ac2772519fba7a3011828" url: "https://pub.dev" source: hosted - version: "27.1.53" + version: "27.1.55" syncfusion_flutter_charts: dependency: "direct main" description: name: syncfusion_flutter_charts - sha256: df13f25d2095bf747c0c67460a06b655a6cce6d74380d9e4ef24d9a523a2e1b6 + sha256: ec08668a7b3c95075aee32f6d73b7a053c6f1361de1e85f88a433d63f835beed url: "https://pub.dev" source: hosted - version: "27.1.53" + version: "27.1.55" syncfusion_flutter_core: dependency: "direct main" description: name: syncfusion_flutter_core - sha256: becd190595cba56feac5ec17b805b35df9f006171c131c209f79b5c58fc780eb + sha256: bc86234c9a0a87b6c3288b9065175e74e9a73e22b2237989a8bbdeff0c8befd7 url: "https://pub.dev" source: hosted - version: "27.1.53" + version: "27.1.55" syncfusion_flutter_datepicker: dependency: "direct main" description: name: syncfusion_flutter_datepicker - sha256: "5638805bea1c70a6d46dea9d39ef67f0085176e1c15cf57f7036cf67c1568816" + sha256: "54fe7e7a660ecdf072cceec890425d7531b42f647245f9244565c61e96fbca4a" url: "https://pub.dev" source: hosted - version: "27.1.53" + version: "27.1.55" synchronized: dependency: transitive description: @@ -1582,10 +1582,10 @@ packages: dependency: transitive description: name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.4.0" universal_io: dependency: transitive description: @@ -1654,10 +1654,10 @@ packages: dependency: transitive description: name: url_launcher_windows - sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185" + sha256: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" uuid: dependency: "direct main" description: @@ -1710,10 +1710,10 @@ packages: dependency: transitive description: name: video_player_android - sha256: "340b29bc38b2c341ed3afa08148f3d9f351220403cdd2b3a9eb38b71a4be1a9d" + sha256: "2800d68d6d5b4c22da62453568ed68e63c35bea524d4fa42062e53d6bb591433" url: "https://pub.dev" source: hosted - version: "2.7.12" + version: "2.7.13" video_player_avfoundation: dependency: transitive description: @@ -1790,10 +1790,10 @@ packages: dependency: transitive description: name: win32 - sha256: e5c39a90447e7c81cfec14b041cdbd0d0916bd9ebbc7fe02ab69568be703b9bd + sha256: e1d0cc62e65dc2561f5071fcbccecf58ff20c344f8f3dc7d4922df372a11df1f url: "https://pub.dev" source: hosted - version: "5.6.0" + version: "5.7.1" win32_registry: dependency: transitive description: