Skip to content

Commit

Permalink
Now displaying "All" group options on the Feed screen (#274).
Browse files Browse the repository at this point in the history
This makes the settings for the "All" group more discoverable when it's
being displayed on the Feed tab/screen.
  • Loading branch information
jonjomckay committed Apr 16, 2022
1 parent 24cf473 commit 0443027
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 67 deletions.
1 change: 1 addition & 0 deletions fastlane/metadata/android/en-US/changelogs/next.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* Now displaying "All" group options on the Feed screen (#274)
75 changes: 75 additions & 0 deletions lib/group/_settings.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import 'package:flutter/material.dart';
import 'package:fritter/database/entities.dart';
import 'package:fritter/generated/l10n.dart';
import 'package:fritter/group/group_model.dart';
import 'package:fritter/ui/errors.dart';
import 'package:fritter/ui/futures.dart';
import 'package:provider/provider.dart';

void showFeedSettings(BuildContext context, String group) {
showModalBottomSheet(
context: context,
builder: (context) {
var theme = Theme.of(context);

return SizedBox(
height: 220,
child: Container(
decoration: const BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(25),
topRight: Radius.circular(25),
),
),
child: Column(
children: [
ListTile(
leading: IconButton(
icon: const Icon(Icons.arrow_back),
onPressed: () {
Navigator.of(context).pop();
}),
title: Text(L10n.of(context).filters),
tileColor: theme.colorScheme.primary,
),
Container(
alignment: Alignment.centerLeft,
margin: const EdgeInsets.only(bottom: 8, top: 16, left: 16, right: 16),
child: Text(
L10n.of(context).note_due_to_a_twitter_limitation_not_all_tweets_may_be_included,
style: TextStyle(
color: Theme.of(context).disabledColor,
),
)),
Consumer<GroupModel>(builder: (context, model, child) {
return FutureBuilderWrapper<SubscriptionGroupSettings>(
future: model.loadSubscriptionGroupSettings(group),
onError: (error, stackTrace) => InlineErrorWidget(error: error),
onReady: (settings) => Column(
children: [
CheckboxListTile(
title: Text(
L10n.of(context).include_replies,
),
value: settings.includeReplies,
onChanged: (value) async {
await model.toggleSubscriptionGroupIncludeReplies(group, value ?? false);
}),
CheckboxListTile(
title: Text(
L10n.of(context).include_retweets,
),
value: settings.includeRetweets,
onChanged: (value) async {
await model.toggleSubscriptionGroupIncludeRetweets(group, value ?? false);
}),
],
),
);
})
],
),
),
);
});
}
69 changes: 2 additions & 67 deletions lib/group/group_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:fritter/database/entities.dart';
import 'package:fritter/database/repository.dart';
import 'package:fritter/group/_feed.dart';
import 'package:fritter/group/_settings.dart';
import 'package:fritter/group/group_model.dart';
import 'package:fritter/generated/l10n.dart';
import 'package:fritter/ui/errors.dart';
Expand Down Expand Up @@ -122,73 +123,7 @@ class _SubscriptionGroupScreenState extends State<_SubscriptionGroupScreen> {
}),
IconButton(
icon: const Icon(Icons.more_vert),
onPressed: () {
showModalBottomSheet(
context: context,
builder: (context) {
var theme = Theme.of(context);

return SizedBox(
height: 220,
child: Container(
decoration: const BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(25),
topRight: Radius.circular(25),
),
),
child: Column(
children: [
ListTile(
leading: IconButton(
icon: const Icon(Icons.arrow_back),
onPressed: () {
Navigator.of(context).pop();
}),
title: Text(L10n.of(context).filters),
tileColor: theme.colorScheme.primary,
),
Container(
alignment: Alignment.centerLeft,
margin: const EdgeInsets.only(bottom: 8, top: 16, left: 16, right: 16),
child: Text(
L10n.of(context).note_due_to_a_twitter_limitation_not_all_tweets_may_be_included,
style: TextStyle(
color: Theme.of(context).disabledColor,
),
)),
Consumer<GroupModel>(builder: (context, model, child) {
return FutureBuilderWrapper<SubscriptionGroupSettings>(
future: model.loadSubscriptionGroupSettings(widget.id),
onError: (error, stackTrace) => InlineErrorWidget(error: error),
onReady: (settings) => Column(
children: [
CheckboxListTile(
title: Text(
L10n.of(context).include_replies,
),
value: settings.includeReplies,
onChanged: (value) async {
await model.toggleSubscriptionGroupIncludeReplies(widget.id, value ?? false);
}),
CheckboxListTile(
title: Text(
L10n.of(context).include_retweets,
),
value: settings.includeRetweets,
onChanged: (value) async {
await model.toggleSubscriptionGroupIncludeRetweets(widget.id, value ?? false);
}),
],
),
);
})
],
),
),
);
});
})
onPressed: () => showFeedSettings(context, widget.id))
]),
body: SubscriptionGroupScreenContent(
id: widget.id,
Expand Down
5 changes: 5 additions & 0 deletions lib/home/home_screen.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:fritter/constants.dart';
import 'package:fritter/group/_settings.dart';
import 'package:fritter/home/_feed.dart';
import 'package:fritter/home/_saved.dart';
import 'package:fritter/subscriptions/subscriptions.dart';
Expand Down Expand Up @@ -75,6 +76,10 @@ class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateM
appBar: AppBar(
title: Text(homeTabs[_tabController.index].title),
actions: [
if (_tabController.index == feedTabIndex)
IconButton(
icon: const Icon(Icons.more_vert),
onPressed: () => showFeedSettings(context, "-1")),
if (_tabController.index == feedTabIndex)
IconButton(
icon: const Icon(Icons.arrow_upward),
Expand Down

0 comments on commit 0443027

Please sign in to comment.