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: