Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,16 @@
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>

<!-- Deep linking -->
<meta-data android:name="flutter_deeplinking_enabled" android:value="true" />
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="thaliapp" android:host="thalia.nu" />
</intent-filter>

<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
Expand Down
2 changes: 1 addition & 1 deletion ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/webview_flutter/ios"

SPEC CHECKSUMS:
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c
flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec
flutter_web_auth: b7465086188ce4413d7e8b23622583784b9007a7
path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
Expand Down
15 changes: 15 additions & 0 deletions ios/Runner/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,20 @@
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>FlutterDeepLinkingEnabled</key>
<true/>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>thalia.nu</string>
<key>CFBundleURLSchemes</key>
<array>
<string>thaliapp</string>
</array>
</dict>
</array>
</dict>
</plist>
93 changes: 49 additions & 44 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:reaxit/navigation.dart';
import 'package:reaxit/providers/pizzas_provider.dart';
import 'package:reaxit/providers/settings_provider.dart';
import 'package:reaxit/providers/notifications_provider.dart';
import 'package:reaxit/providers/theme_mode_provider.dart';
import 'package:reaxit/ui/screens/splash_screen.dart';
import 'package:reaxit/ui/styles/theme.dart';

import 'package:provider/provider.dart';
Expand All @@ -16,55 +16,60 @@ void main() {
}

class ThaliApp extends StatelessWidget {
final _routeInformationParser = MyRouteInformationParser();
final _routerDelegate = MyRouterDelegate();

@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider<ThemeModeProvider>(
create: (_) => ThemeModeProvider(),
),
ChangeNotifierProvider<AuthProvider>(
create: (_) => AuthProvider(),
),
ChangeNotifierProxyProvider<AuthProvider, EventsProvider>(
create: (context) => EventsProvider(
Provider.of<AuthProvider>(context, listen: false),
),
update: (context, auth, events) => EventsProvider(auth),
),
ChangeNotifierProxyProvider<AuthProvider, MembersProvider>(
create: (context) => MembersProvider(
Provider.of<AuthProvider>(context, listen: false),
),
update: (context, auth, members) => MembersProvider(auth),
providers: [
ChangeNotifierProvider<ThemeModeProvider>(
create: (_) => ThemeModeProvider(),
),
ChangeNotifierProvider<AuthProvider>(
create: (_) => AuthProvider(),
),
ChangeNotifierProxyProvider<AuthProvider, EventsProvider>(
create: (context) => EventsProvider(
Provider.of<AuthProvider>(context, listen: false),
),
ChangeNotifierProxyProvider<AuthProvider, PhotosProvider>(
create: (context) => PhotosProvider(
Provider.of<AuthProvider>(context, listen: false),
),
update: (context, auth, photos) => PhotosProvider(auth),
update: (context, auth, events) => EventsProvider(auth),
),
ChangeNotifierProxyProvider<AuthProvider, MembersProvider>(
create: (context) => MembersProvider(
Provider.of<AuthProvider>(context, listen: false),
),
ChangeNotifierProxyProvider<AuthProvider, PizzasProvider>(
create: (context) => PizzasProvider(
Provider.of<AuthProvider>(context, listen: false),
),
update: (context, auth, pizzas) => PizzasProvider(auth),
update: (context, auth, members) => MembersProvider(auth),
),
ChangeNotifierProxyProvider<AuthProvider, PhotosProvider>(
create: (context) => PhotosProvider(
Provider.of<AuthProvider>(context, listen: false),
),
ChangeNotifierProxyProvider<AuthProvider, SettingsProvider>(
create: (context) => SettingsProvider(
Provider.of<AuthProvider>(context, listen: false),
),
update: (context, auth, pizzas) => SettingsProvider(auth),
update: (context, auth, photos) => PhotosProvider(auth),
),
ChangeNotifierProxyProvider<AuthProvider, PizzasProvider>(
create: (context) => PizzasProvider(
Provider.of<AuthProvider>(context, listen: false),
),
],
child: Consumer<ThemeModeProvider>(
builder: (context, themeModeProvider, child) => MaterialApp(
title: 'ThaliApp',
theme: lightTheme,
darkTheme: darkTheme,
themeMode: themeModeProvider.themeMode,
home: SplashScreen(),
update: (context, auth, pizzas) => PizzasProvider(auth),
),
ChangeNotifierProxyProvider<AuthProvider, NotificationsProvider>(
create: (context) => NotificationsProvider(
Provider.of<AuthProvider>(context, listen: false),
),
));
update: (context, auth, pizzas) => NotificationsProvider(auth),
),
],
child: Consumer<ThemeModeProvider>(
builder: (context, themeModeProvider, child) => MaterialApp.router(
title: 'ThaliApp',
theme: lightTheme,
darkTheme: darkTheme,
themeMode: themeModeProvider.themeMode,
routeInformationParser: _routeInformationParser,
routerDelegate: _routerDelegate,
),
),
);
}
}
14 changes: 11 additions & 3 deletions lib/models/event.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:reaxit/models/user_registration.dart';
import 'package:reaxit/models/registration.dart';

part 'event.g.dart';

Expand All @@ -16,7 +16,6 @@ class Event {
final String mapLocation;
final String price;
final bool registered;
final bool isPizzaEvent;
final bool registrationAllowed;
@JsonKey(fromJson: _dateTimeFromJson)
final DateTime registrationStart;
Expand All @@ -33,6 +32,14 @@ class Event {
final String googleMapsUrl;
final bool isAdmin;

// The api names this "pizza" for /events/ and "is_pizza_event" for /event/pk.
@JsonKey(name: "is_pizza_event")
final bool pizza1;
@JsonKey(name: "pizza")
final bool pizza2;

bool get isPizzaEvent => pizza1 ?? pizza2;

Event(
this.pk,
this.title,
Expand All @@ -42,7 +49,6 @@ class Event {
this.location,
this.price,
this.registered,
this.isPizzaEvent,
this.registrationAllowed,
this.registrationStart,
this.registrationEnd,
Expand All @@ -56,6 +62,8 @@ class Event {
this.googleMapsUrl,
this.mapLocation,
this.isAdmin,
this.pizza1,
this.pizza2,
);

bool registrationRequired() {
Expand Down
6 changes: 4 additions & 2 deletions lib/models/event.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion lib/models/pizza_order.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:json_annotation/json_annotation.dart';
import 'package:reaxit/models/member.dart';
import 'package:reaxit/models/photo.dart';

part 'user_registration.g.dart';
part 'registration.g.dart';

@JsonSerializable(fieldRename: FieldRename.snake)
class Registration {
Expand Down Expand Up @@ -33,7 +33,7 @@ class Registration {
);

factory Registration.fromJson(Map<String, dynamic> json) =>
_$UserRegistrationFromJson(json);
_$RegistrationFromJson(json);

Member get member => Member(
memberPk, name, avatar, null, null, null, null, null, null, null, null);
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading