Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 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
1 change: 1 addition & 0 deletions catalyst_voices/apps/voices/lib/app/view/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ class _AppState extends State<App> {
lazy: false,
create: (_) => Dependencies.instance.get<CampaignPhaseAwareCubit>(),
),
// Have to be global
BlocProvider<VotingBallotBloc>(
create: (_) => Dependencies.instance.get<VotingBallotBloc>(),
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import 'package:catalyst_voices/pages/document_viewer/snack_bar/viewing_older_ve
import 'package:catalyst_voices/pages/proposal_viewer/widget/proposal_header.dart';
import 'package:catalyst_voices/pages/proposal_viewer/widget/proposal_navigation_panel.dart';
import 'package:catalyst_voices/pages/proposal_viewer/widget/proposal_sidebars.dart';
import 'package:catalyst_voices/pages/proposal_viewer/widget/proposal_voting_fab.dart';
import 'package:catalyst_voices/pages/spaces/appbar/actions/account_settings_action.dart';
import 'package:catalyst_voices/pages/spaces/appbar/actions/session_cta_action.dart';
import 'package:catalyst_voices/routes/routes.dart';
Expand Down Expand Up @@ -103,6 +104,11 @@ class _ProposalViewerViewState extends State<ProposalViewerView>
),
),
const DocumentViewerError(),
const Positioned(
right: 24,
bottom: 36,
child: ProposalVotingFab(),
),
],
),
);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import 'package:catalyst_voices/widgets/widgets.dart';
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
import 'package:flutter/material.dart';

class ProposalVotingFab extends StatelessWidget {
const ProposalVotingFab({super.key});

@override
Widget build(BuildContext context) {
return BlocSelector<ProposalViewerCubit, ProposalViewerState, bool>(
selector: (state) => state.showData,
builder: (context, state) {
return Offstage(
offstage: !state,
child: const VotingBallotProposalsCountFab(),
);
},
);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import 'package:catalyst_voices/pages/spaces/appbar/actions/account_settings_action.dart';
import 'package:catalyst_voices/pages/spaces/appbar/actions/session_cta_action.dart';
import 'package:catalyst_voices/pages/spaces/appbar/voting/vote_delegation_button.dart';
import 'package:catalyst_voices/pages/spaces/appbar/voting/vote_list_button.dart';
import 'package:catalyst_voices/pages/spaces/appbar/voting/voting_category_leading_button.dart';
import 'package:catalyst_voices/widgets/widgets.dart';
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
Expand Down Expand Up @@ -47,8 +45,6 @@ class _VotingAppbar extends StatelessWidget {
leading: _getLeadingWidget(),
automaticallyImplyLeading: false,
actions: const [
VoteListButton(),
VoteDelegationButton(),
SessionCtaAction(),
AccountSettingsAction(),
],
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import 'package:catalyst_voices/pages/campaign/admin_tools/campaign_admin_tools_
import 'package:catalyst_voices/pages/spaces/appbar/spaces_appbar.dart';
import 'package:catalyst_voices/pages/spaces/drawer/spaces_drawer.dart';
import 'package:catalyst_voices/pages/spaces/spaces_shell_bloc_provider.dart';
import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list.dart';
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
import 'package:catalyst_voices_models/catalyst_voices_models.dart';
import 'package:catalyst_voices_view_models/catalyst_voices_view_models.dart';
Expand Down Expand Up @@ -97,8 +96,6 @@ class _SpacesShellPageState extends State<SpacesShellPage> {
isUnlocked: state.isActive,
)
: null,
// TODO(LynxLynxx): Remove after VotingDrawer is refactor as Page
endDrawer: const VotingListDrawer(),
body: widget.child,
);
},
Expand Down
24 changes: 17 additions & 7 deletions catalyst_voices/apps/voices/lib/pages/voting/voting_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:catalyst_voices/routes/routes.dart';
import 'package:catalyst_voices/widgets/layouts/header_and_content_layout.dart';
import 'package:catalyst_voices/widgets/pagination/paging_controller.dart';
import 'package:catalyst_voices/widgets/tabbar/voices_tab_controller.dart';
import 'package:catalyst_voices/widgets/widgets.dart';
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
import 'package:catalyst_voices_models/catalyst_voices_models.dart';
import 'package:catalyst_voices_view_models/catalyst_voices_view_models.dart';
Expand Down Expand Up @@ -40,14 +41,23 @@ class _VotingPageState extends State<VotingPage>

@override
Widget build(BuildContext context) {
return SelectionArea(
child: HeaderAndContentLayout(
header: const VotingHeader(),
content: VotingContent(
tabController: _tabController,
pagingController: _pagingController,
return Stack(
children: [
SelectionArea(
child: HeaderAndContentLayout(
header: const VotingHeader(),
content: VotingContent(
tabController: _tabController,
pagingController: _pagingController,
),
),
),
),
const Positioned(
right: 24,
bottom: 36,
child: VotingBallotProposalsCountFab(),
),
],
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,23 +36,6 @@ class AccountVotingRoleDelegatedToCard extends StatelessWidget {
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8),
child: Text(
context.l10n.delegatedTo,
style: theme.textTheme.bodyLarge?.copyWith(
color: theme.colors.textOnPrimaryWhite,
),
),
),
_RepresentativesCount(count: representativesCount),
],
),
const SizedBox(width: 20),
Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.end,
Expand Down Expand Up @@ -83,6 +66,23 @@ class AccountVotingRoleDelegatedToCard extends StatelessWidget {
),
],
),
const SizedBox(width: 20),
Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8),
child: Text(
context.l10n.delegatedTo,
style: theme.textTheme.bodyLarge?.copyWith(
color: theme.colors.textOnPrimaryWhite,
),
),
),
_RepresentativesCount(count: representativesCount),
],
),
],
),
);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import 'package:catalyst_voices/common/signal_handler.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list_bottom_sheet.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list_footer.dart';
import 'package:catalyst_voices/widgets/widgets.dart';
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
import 'package:flutter/material.dart';

class VotingListPage extends StatefulWidget {
const VotingListPage({super.key});

@override
State<VotingListPage> createState() => _VotingListPageState();
}

class _VotingListPageState extends State<VotingListPage>
with SignalHandlerStateMixin<VotingBallotBloc, VotingBallotSignal, VotingListPage> {
final _bottomSheetController = BottomSheetContainerController();

@override
Widget build(BuildContext context) {
return BottomSheetContainer(
bottomSheet: const VotingListBottomSheet(),
controller: _bottomSheetController,
child: const Column(
children: [
Expanded(child: VotingList()),
VotingListFooter(),
],
),
);
}

@override
void dispose() {
_bottomSheetController.dispose();
super.dispose();
}

@override
void handleSignal(VotingBallotSignal signal) {
switch (signal) {
case HideBottomSheetSignal():
_bottomSheetController.hide();
case ShowBottomSheetSignal():
_bottomSheetController.show();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import 'package:catalyst_voices/pages/spaces/spaces.dart';
import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list_ballot.dart';
import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list_bottom_sheet.dart';
import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list_campaign_phase_progress.dart';
import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list_footer.dart';
import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list_header.dart';
import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list_user_summary.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list_ballot.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list_bottom_sheet.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list_campaign_phase_progress.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list_footer.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list_header.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list_user_summary.dart';
import 'package:catalyst_voices/widgets/widgets.dart';
import 'package:flutter/material.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'dart:async';

import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list_tile.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list_tile.dart';
import 'package:catalyst_voices/routes/routes.dart';
import 'package:catalyst_voices/widgets/empty_state/empty_state.dart';
import 'package:catalyst_voices_assets/catalyst_voices_assets.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,36 @@
import 'package:catalyst_voices/common/ext/build_context_ext.dart';
import 'package:catalyst_voices/common/signal_handler.dart';
import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list_bottom_sheet_actions.dart';
import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list_bottom_sheet_confirm_password.dart';
import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list_bottom_sheet_result.dart';
import 'package:catalyst_voices/widgets/drawer/voices_drawer.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list_bottom_sheet_actions.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list_bottom_sheet_confirm_password.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list_bottom_sheet_result.dart';
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
import 'package:catalyst_voices_view_models/catalyst_voices_view_models.dart';
import 'package:flutter/material.dart';

class VotingListBottomSheet extends StatefulWidget {
class VotingListBottomSheet extends StatelessWidget {
const VotingListBottomSheet({
super.key,
});

@override
State<VotingListBottomSheet> createState() => _VotingListBottomSheetState();
Widget build(BuildContext context) {
return BlocSelector<VotingBallotBloc, VotingBallotState, VotingListCastingStep>(
selector: (state) {
return state.footer.castingStep;
},
builder: (context, state) {
return switch (state) {
ConfirmPasswordStep(:final isLoading, :final exception) =>
VotingListBottomSheetConfirmPassword(
isLoading: isLoading,
exception: exception,
),
SuccessfullyCastVotesStep() => const VotingListBottomSheetSuccessResult(),
FailedToCastVotesStep() => const VotingListBottomSheetFailedResult(),
_ => const SizedBox(),
};
},
);
}
}

class VotingListBottomSheetContent extends StatelessWidget {
Expand Down Expand Up @@ -56,37 +72,3 @@ class VotingListBottomSheetContent extends StatelessWidget {
);
}
}

class _VotingListBottomSheetState extends State<VotingListBottomSheet>
with SignalHandlerStateMixin<VotingBallotBloc, VotingBallotSignal, VotingListBottomSheet> {
@override
Widget build(BuildContext context) {
return BlocSelector<VotingBallotBloc, VotingBallotState, VotingListCastingStep>(
selector: (state) {
return state.footer.castingStep;
},
builder: (context, state) {
return switch (state) {
ConfirmPasswordStep(:final isLoading, :final exception) =>
VotingListBottomSheetConfirmPassword(
isLoading: isLoading,
exception: exception,
),
SuccessfullyCastVotesStep() => const VotingListBottomSheetSuccessResult(),
FailedToCastVotesStep() => const VotingListBottomSheetFailedResult(),
_ => const SizedBox(),
};
},
);
}

@override
void handleSignal(VotingBallotSignal signal) {
switch (signal) {
case HideBottomSheetSignal():
VoicesDrawer.of(context).hideBottomSheet();
case ShowBottomSheetSignal():
VoicesDrawer.of(context).showBottomSheet();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:catalyst_voices/common/ext/build_context_ext.dart';
import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list_bottom_sheet.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list_bottom_sheet.dart';
import 'package:catalyst_voices/widgets/text_field/voices_password_text_field.dart';
import 'package:catalyst_voices/widgets/text_field/voices_text_field.dart';
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:catalyst_voices/common/ext/build_context_ext.dart';
import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list.dart';
import 'package:catalyst_voices/pages/voting/widgets/voting_list/voting_list_bottom_sheet.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list.dart';
import 'package:catalyst_voices/pages/voting_list/widgets/voting_list_bottom_sheet.dart';
import 'package:catalyst_voices/routes/routes.dart';
import 'package:catalyst_voices_assets/catalyst_voices_assets.dart';
import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart';
Expand Down
Loading
Loading