Skip to content

Commit

Permalink
feat: pre-rsvp event detail remake
Browse files Browse the repository at this point in the history
  • Loading branch information
mthinh committed Oct 3, 2024
1 parent b412df5 commit d605a4d
Show file tree
Hide file tree
Showing 15 changed files with 505 additions and 625 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,6 @@ class _EventDetailBasePageView extends StatelessWidget {
// ).canShowFeature;
return const HostEventDetailView();
}
if (!isAttending) return const PreGuestEventDetailView();
return isAttending
? MultiBlocProvider(
providers: [
Expand Down Expand Up @@ -127,7 +126,21 @@ class _EventDetailBasePageView extends StatelessWidget {
],
child: const PostGuestEventDetailView(),
)
: const PreGuestEventDetailView();
: MultiBlocProvider(
providers: [
BlocProvider(
create: (context) => GetSubEventsByCalendarBloc(
parentEventId: event.id ?? '',
)..add(
GetSubEventsByCalendarEvent.fetch(
from: event.start?.toUtc(),
to: event.end?.toUtc(),
),
),
),
],
child: const PreGuestEventDetailView(),
);
},
),
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ import 'package:app/core/application/event/get_event_detail_bloc/get_event_detai
import 'package:app/core/application/event/get_sub_events_by_calendar_bloc/get_sub_events_by_calendar_bloc.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/guest_event_detail_basic_info/guest_event_detail_basic_info.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/guest_event_detail_dashboard.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/post_guest_event_detail_about.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/post_guest_event_detail_programs.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/guest_event_detail_about.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/guest_event_detail_hosts.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/guest_event_detail_photos.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/guest_event_detail_programs.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/post_guest_event_detail_social_lounge_button.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/guest_event_poap_offers.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/post_guest_event_animated_app_bar.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/post_guest_event_detail_hosts.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/post_guest_event_detail_photos.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/post_guest_event_detail_subevents.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/guest_event_detail_subevents.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/post_guest_event_detail_virtual_link.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/post_guest_event_location.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/widgets/create_sub_side_event_button.dart';
Expand Down Expand Up @@ -130,7 +130,7 @@ class PostGuestEventDetailView extends StatelessWidget {
),
),
),
child: PostGuestEventDetailPrograms(event: event),
child: GuestEventDetailPrograms(event: event),
),
if (event.subeventParent == null && subEvents.isNotEmpty == true)
Container(
Expand All @@ -145,7 +145,7 @@ class PostGuestEventDetailView extends StatelessWidget {
),
),
),
child: PostGuestEventDetailSubEvents(
child: GuestEventDetailSubEvents(
event: event,
subEvents: subEvents,
),
Expand All @@ -164,7 +164,7 @@ class PostGuestEventDetailView extends StatelessWidget {
),
),
),
child: PostGuestEventDetailPhotos(
child: GuestEventDetailPhotos(
event: event,
showTitle: false,
),
Expand All @@ -181,7 +181,7 @@ class PostGuestEventDetailView extends StatelessWidget {
),
),
),
child: PostGuestEventDetailHosts(
child: GuestEventDetailHosts(
event: event,
),
),
Expand All @@ -200,7 +200,7 @@ class PostGuestEventDetailView extends StatelessWidget {
right: Spacing.smMedium,
top: Spacing.medium,
),
child: PostGuestEventDetailAbout(event: event),
child: GuestEventDetailAbout(event: event),
),
];
return Scaffold(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:app/core/application/auth/auth_bloc.dart';
import 'package:app/core/application/event/get_event_detail_bloc/get_event_detail_bloc.dart';
import 'package:app/core/application/event/get_sub_events_by_calendar_bloc/get_sub_events_by_calendar_bloc.dart';
import 'package:app/core/application/report/report_bloc/report_bloc.dart';
import 'package:app/core/domain/event/entities/event.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/guest_event_detail_appbar.dart';
Expand All @@ -10,6 +11,8 @@ import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/guest_event_detail_rsvp_status/guest_event_detail_rsvp_status_button.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/guest_event_location.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/guest_event_more_actions.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/guest_event_detail_programs.dart';
import 'package:app/core/presentation/pages/event/event_detail_page/guest_event_detail_page/widgets/guest_event_detail_subevents.dart';
import 'package:app/core/presentation/widgets/back_button_widget.dart';
import 'package:app/core/presentation/widgets/common/list/empty_list_widget.dart';
import 'package:app/core/presentation/widgets/loading_widget.dart';
Expand Down Expand Up @@ -46,6 +49,9 @@ class PreGuestEventDetailViewState extends State<PreGuestEventDetailView> {
authenticated: (session) => session.userId,
orElse: () => '',
);
final getSubEventsBloc = context.watch<GetSubEventsByCalendarBloc>();
final subEvents = getSubEventsBloc.state.events;

return Scaffold(
backgroundColor: colorScheme.primary,
body: BlocBuilder<GetEventDetailBloc, GetEventDetailState>(
Expand Down Expand Up @@ -79,11 +85,62 @@ class PreGuestEventDetailViewState extends State<PreGuestEventDetailView> {
padding: EdgeInsets.symmetric(horizontal: Spacing.smMedium),
child: GuestEventLocation(event: event),
),
if ((event.newNewPhotosExpanded ?? []).isNotEmpty)
GuestEventDetailPhotos(event: event),
GuestEventDetailHosts(event: event),
if ((event.newNewPhotosExpanded ?? []).isNotEmpty &&
(event.newNewPhotosExpanded ?? []).length > 1)
GuestEventDetailPhotos(
event: event,
showTitle: false,
),
if (event.sessions?.isNotEmpty == true)
Container(
padding: EdgeInsets.only(
top: Spacing.medium,
),
decoration: BoxDecoration(
border: Border(
top: BorderSide(
color: colorScheme.outline,
width: 0.5.w,
),
),
),
child: GuestEventDetailPrograms(event: event),
),
if (event.subeventParent == null && subEvents.isNotEmpty == true)
Container(
padding: EdgeInsets.only(
top: Spacing.medium,
),
decoration: BoxDecoration(
border: Border(
top: BorderSide(
color: colorScheme.outline,
width: 0.5.w,
),
),
),
child: GuestEventDetailSubEvents(
event: event,
subEvents: subEvents,
),
),
Container(
padding: EdgeInsets.only(
top: Spacing.medium,
),
decoration: BoxDecoration(
border: Border(
top: BorderSide(
color: colorScheme.outline,
width: 0.5.w,
),
),
),
child: GuestEventDetailHosts(event: event),
),
];
return SafeArea(
top: false,
child: Stack(
children: [
CustomScrollView(
Expand All @@ -104,18 +161,20 @@ class PreGuestEventDetailViewState extends State<PreGuestEventDetailView> {
return widgets[index];
},
separatorBuilder: (context, index) => SizedBox(
height: Spacing.smMedium * 2,
height: Spacing.medium,
),
),
SliverToBoxAdapter(
child: SizedBox(height: 84.w),
child: SizedBox(height: 100.w),
),
],
),
if (coverPhoto.isNotEmpty)
_FloatingButtonsBar(
scrollController: _scrollController,
event: event,
SafeArea(
child: _FloatingButtonsBar(
scrollController: _scrollController,
event: event,
),
),
if (!isOwnEvent)
Align(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,36 @@ import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:url_launcher/url_launcher.dart';

class PostGuestEventDetailAbout extends StatelessWidget {
const PostGuestEventDetailAbout({
class GuestEventDetailAbout extends StatelessWidget {
const GuestEventDetailAbout({
super.key,
required this.event,
this.showTitle = true,
});

final Event event;
final bool showTitle;

@override
Widget build(BuildContext context) {
final t = Translations.of(context);
final colorScheme = Theme.of(context).colorScheme;
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
t.event.about,
style: Typo.extraMedium.copyWith(
color: colorScheme.onPrimary,
fontWeight: FontWeight.w600,
if (showTitle) ...[
Text(
t.event.about,
style: Typo.extraMedium.copyWith(
color: colorScheme.onPrimary,
fontWeight: FontWeight.w600,
),
),
),
SizedBox(
height: Spacing.xSmall,
),
SizedBox(
height: Spacing.xSmall,
),
],
MarkdownBody(
data: event.description ?? '',
styleSheet: MarkdownStyleSheet.fromTheme(Theme.of(context)).copyWith(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ class GuestEventDetailAppBar extends StatefulWidget {
class _GuestEventDetailAppBarState extends State<GuestEventDetailAppBar> {
bool _isSliverAppBarCollapsed = false;

double get bannerHeight {
final isIpad = DeviceUtils.isIpad();
return isIpad ? 200.h : 325.w;
}

DbFile? get cover {
if (widget.event.newNewPhotosExpanded == null ||
widget.event.newNewPhotosExpanded!.isEmpty) {
Expand Down Expand Up @@ -65,14 +70,12 @@ class _GuestEventDetailAppBarState extends State<GuestEventDetailAppBar> {
);
}

final isIpad = DeviceUtils.isIpad();
return SliverAppBar(
pinned: true,
stretch: true,
floating: true,
leading: const SizedBox.shrink(),
collapsedHeight: kToolbarHeight,
expandedHeight: isIpad ? 280.h : 188.h,
expandedHeight: bannerHeight,
centerTitle: true,
title: AnimatedOpacity(
duration: const Duration(milliseconds: 300),
Expand All @@ -88,6 +91,7 @@ class _GuestEventDetailAppBarState extends State<GuestEventDetailAppBar> {
expandedTitleScale: 1,
collapseMode: CollapseMode.pin,
background: _EventDetailCover(
height: bannerHeight,
event: widget.event,
),
),
Expand All @@ -97,14 +101,16 @@ class _GuestEventDetailAppBarState extends State<GuestEventDetailAppBar> {

class _EventDetailCover extends StatelessWidget {
final Event event;
final double height;
const _EventDetailCover({
required this.event,
required this.height,
});

@override
Widget build(BuildContext context) {
return SizedBox(
height: 188.w,
height: height,
child: Stack(
children: [
Positioned.fill(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,14 @@ class _GuestEventDetailBuyButtonView extends StatelessWidget {
state is EventBuyTicketsPrerequisiteCheckStateChecking;
return SafeArea(
child: Container(
color: colorScheme.primary,
decoration: BoxDecoration(
color: colorScheme.primary,
border: Border(
top: BorderSide(
color: colorScheme.outline,
),
),
),
padding: EdgeInsets.symmetric(
vertical: Spacing.smMedium,
horizontal: Spacing.smMedium,
Expand Down
Loading

0 comments on commit d605a4d

Please sign in to comment.