Skip to content

Commit e223ab7

Browse files
authored
Add Room Search to Quick Actions (#284)
1 parent 883c51e commit e223ab7

File tree

61 files changed

+651
-727
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+651
-727
lines changed

android/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ android {
4646
applicationId "de.tum.in.tumcampus"
4747
minSdkVersion 29
4848
targetSdkVersion flutter.targetSdkVersion
49-
ndkVersion "26.1.10909125"
49+
ndkVersion "27.0.12077973"
5050
versionCode flutterVersionCode.toInteger()
5151
versionName flutterVersionName
5252
multiDexEnabled true

android/gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
33
zipStoreBase=GRADLE_USER_HOME
44
zipStorePath=wrapper/dists
5-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip
5+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip

android/settings.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pluginManagement {
1818

1919
plugins {
2020
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
21-
id "com.android.application" version '8.6.1' apply false
21+
id "com.android.application" version '8.7.0' apply false
2222
id "org.jetbrains.kotlin.android" version "1.9.20" apply false
2323
id "org.jetbrains.kotlin.plugin.serialization" version "2.0.21" apply false
2424
id "com.google.gms.google-services" version "4.4.2" apply false

ios/Podfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ SPEC CHECKSUMS:
251251
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
252252
flutter_native_splash: edf599c81f74d093a4daf8e17bd7a018854bc778
253253
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
254-
geolocator_apple: 6cbaf322953988e009e5ecb481f07efece75c450
254+
geolocator_apple: 9bcea1918ff7f0062d98345d238ae12718acfbc1
255255
Google-Maps-iOS-Utils: 66d6de12be1ce6d3742a54661e7a79cb317a9321
256256
google_maps_flutter_ios: e31555a04d1986ab130f2b9f24b6cdc861acc6d3
257257
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7

lib/base/enums/search_category.dart

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
1+
import 'package:campus_flutter/searchComponent/protocols/search_category_viewmodel.dart';
2+
import 'package:campus_flutter/searchComponent/viewModels/searchableViewModels/cafeteria_search_viewmodel.dart';
3+
import 'package:campus_flutter/searchComponent/viewModels/searchableViewModels/calendar_search_viewmodel.dart';
4+
import 'package:campus_flutter/searchComponent/viewModels/searchableViewModels/grades_search_viewmodel.dart';
5+
import 'package:campus_flutter/searchComponent/viewModels/searchableViewModels/lecture_search_viewmodel.dart';
6+
import 'package:campus_flutter/searchComponent/viewModels/searchableViewModels/movie_search_viewmodel.dart';
7+
import 'package:campus_flutter/searchComponent/viewModels/searchableViewModels/navigatum_search_viewmodel.dart';
8+
import 'package:campus_flutter/searchComponent/viewModels/searchableViewModels/news_search_viewmodel.dart';
9+
import 'package:campus_flutter/searchComponent/viewModels/searchableViewModels/person_search_viewmodel.dart';
10+
import 'package:campus_flutter/searchComponent/viewModels/searchableViewModels/personal_lecture_seach_viewmodel.dart';
11+
import 'package:campus_flutter/searchComponent/viewModels/searchableViewModels/student_club_search_viewmodel.dart';
12+
import 'package:campus_flutter/searchComponent/viewModels/searchableViewModels/study_room_search_viewmodel.dart';
113
import 'package:easy_localization/easy_localization.dart';
214
import 'package:flutter/cupertino.dart';
15+
import 'package:flutter_riverpod/flutter_riverpod.dart';
316

417
enum SearchCategory {
518
cafeterias,
@@ -62,4 +75,31 @@ extension SearchCategoryExtension on SearchCategory {
6275
SearchCategory.studentClub,
6376
];
6477
}
78+
79+
Provider<SearchCategoryViewModel> get viewModel {
80+
switch (this) {
81+
case SearchCategory.cafeterias:
82+
return cafeteriaSearchViewModel;
83+
case SearchCategory.calendar:
84+
return calendarSearchViewModel;
85+
case SearchCategory.grade:
86+
return gradesSearchViewModel;
87+
case SearchCategory.movie:
88+
return movieSearchViewModel;
89+
case SearchCategory.news:
90+
return newsSearchViewModel;
91+
case SearchCategory.studyRoom:
92+
return studyRoomSearchViewModel;
93+
case SearchCategory.lectures:
94+
return lectureSearchViewModel;
95+
case SearchCategory.personalLectures:
96+
return personalLectureSearchViewModel;
97+
case SearchCategory.persons:
98+
return personSearchViewModel;
99+
case SearchCategory.rooms:
100+
return navigaTumSearchViewModel;
101+
case SearchCategory.studentClub:
102+
return studentClubSearchViewModel;
103+
}
104+
}
65105
}

lib/base/enums/search_type.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
enum SearchType {
2+
general,
3+
room,
4+
person;
5+
}

lib/base/enums/shortcut_item.dart

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ enum ShortcutItemType {
77
cafeterias(en: "Cafeterias", de: "Mensen"),
88
studyRooms(en: "Study Rooms", de: "Lernräume"),
99
calendar(en: "Calendar", de: "Kalendar"),
10-
studies(en: "Studies", de: "Studium");
10+
studies(en: "Studies", de: "Studium"),
11+
roomSearch(en: "Room Search", de: "Raumsuche");
1112

1213
final String en;
1314
final String? de;
@@ -24,16 +25,7 @@ extension Routing on ShortcutItemType {
2425
return isGerman ? de! : en;
2526
}
2627

27-
String? get icon {
28-
switch (this) {
29-
case ShortcutItemType.home:
30-
case ShortcutItemType.cafeterias:
31-
case ShortcutItemType.studyRooms:
32-
case ShortcutItemType.calendar:
33-
case ShortcutItemType.studies:
34-
return null;
35-
}
36-
}
28+
String? get icon => null;
3729

3830
ShortcutItem shortcutItem(Locale? locale) {
3931
return ShortcutItem(
@@ -55,14 +47,16 @@ extension Routing on ShortcutItemType {
5547
return routes.calendar;
5648
case ShortcutItemType.studies:
5749
return routes.studies;
50+
case ShortcutItemType.roomSearch:
51+
return routes.roomSearch;
5852
}
5953
}
6054
}
6155

6256
extension ActiveShortcuts on ShortcutItemType {
6357
static List<ShortcutItemType> get items => [
6458
ShortcutItemType.cafeterias,
65-
ShortcutItemType.studyRooms,
59+
ShortcutItemType.roomSearch,
6660
ShortcutItemType.calendar,
6761
ShortcutItemType.studies,
6862
];

lib/base/routing/router.dart

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:campus_flutter/base/enums/campus.dart';
2+
import 'package:campus_flutter/base/enums/search_type.dart';
23
import 'package:campus_flutter/base/util/fullscreen_image_view.dart';
34
import 'package:campus_flutter/base/routing/router_service.dart';
45
import 'package:campus_flutter/base/routing/routes.dart';
@@ -31,8 +32,8 @@ import 'package:campus_flutter/placesComponent/views/campuses/campus_scaffold.da
3132
import 'package:campus_flutter/placesComponent/views/places_screen.dart';
3233
import 'package:campus_flutter/placesComponent/views/studyGroups/study_room_group_scaffold.dart';
3334
import 'package:campus_flutter/placesComponent/views/studyGroups/study_rooms_view.dart';
34-
import 'package:campus_flutter/searchComponent/views/appWideSearch/search_scaffold.dart';
35-
import 'package:campus_flutter/searchComponent/views/personRoomSearch/search_view.dart';
35+
import 'package:campus_flutter/searchComponent/viewModels/search_viewmodel.dart';
36+
import 'package:campus_flutter/searchComponent/views/search_scaffold.dart';
3637
import 'package:campus_flutter/settingsComponent/views/settings_scaffold.dart';
3738
import 'package:campus_flutter/studiesComponent/model/lecture.dart';
3839
import 'package:campus_flutter/studiesComponent/screen/studies_screen.dart';
@@ -220,7 +221,24 @@ final _router = GoRouter(
220221
),
221222
GoRoute(
222223
path: search,
223-
builder: (context, state) => const SearchScaffold(),
224+
builder: (context, state) => SearchScaffold(
225+
searchVM: searchViewModel(SearchType.general),
226+
searchString: state.extra as String?,
227+
),
228+
),
229+
GoRoute(
230+
path: roomSearch,
231+
builder: (context, state) => SearchScaffold(
232+
searchVM: searchViewModel(SearchType.room),
233+
searchString: state.extra as String?,
234+
),
235+
),
236+
GoRoute(
237+
path: personSearch,
238+
builder: (context, state) => SearchScaffold(
239+
searchVM: searchViewModel(SearchType.person),
240+
searchString: state.extra as String?,
241+
),
224242
),
225243
GoRoute(
226244
path: studyRoom,
@@ -244,16 +262,6 @@ final _router = GoRouter(
244262
imageData: state.extra as String,
245263
),
246264
),
247-
GoRoute(
248-
path: roomSearch,
249-
builder: (context, state) {
250-
final data = state.extra as (String?, bool?);
251-
return PersonRoomSearchScaffold(
252-
searchString: data.$1,
253-
isRoomSearch: data.$2 ?? true,
254-
);
255-
},
256-
),
257265
GoRoute(
258266
path: eventCreation,
259267
builder: (context, state) => EventCreationScaffold(

lib/base/routing/routes.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,15 @@ const menuSettings = "/menu+settings";
3737
const feedback = "$menuSettings/feedback";
3838
const feedbackSuccess = "$feedback/success";
3939

40-
/// General
40+
/// Search
4141
const search = "/search";
42+
const roomSearch = "/roomSearch";
43+
const personSearch = "/personSearch";
44+
45+
/// General
4246
const navigaTum = "/navigaTum";
4347
const personDetails = "/personDetails";
4448
const cafeteria = "/cafeteria";
4549
const studyRoom = "/studyRoom";
4650
const networkImage = "/networkImage";
4751
const localeImage = "/localeImage";
48-
const roomSearch = "/roomSearch";

lib/base/util/custom_back_button.dart

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,30 @@ import 'package:go_router/go_router.dart';
55
class CustomBackButton extends StatelessWidget {
66
const CustomBackButton({
77
super.key,
8+
this.beforeOnPressed,
89
this.onPressed,
910
this.color,
1011
});
1112

1213
final Function()? onPressed;
14+
final Function()? beforeOnPressed;
1315
final Color? color;
1416

1517
@override
1618
Widget build(BuildContext context) {
1719
return BackButton(
1820
color: color,
19-
onPressed: onPressed ?? () => defaultOnPressed(context),
21+
onPressed: () {
22+
if (beforeOnPressed != null) {
23+
beforeOnPressed!();
24+
}
25+
26+
if (onPressed != null) {
27+
onPressed!();
28+
} else {
29+
defaultOnPressed(context);
30+
}
31+
},
2032
);
2133
}
2234

0 commit comments

Comments
 (0)