Add separate default sort for posts feed. (#10)
This commit is contained in:
parent
535a194546
commit
cb98f3cdf4
|
@ -46,7 +46,9 @@ class _FeedScreenState extends State<FeedScreen> {
|
|||
? context.read<SettingsController>().defaultFeedMode
|
||||
: FeedMode.entries;
|
||||
_sort = widget.source == null
|
||||
? context.read<SettingsController>().defaultFeedSort
|
||||
? _mode == FeedMode.entries
|
||||
? context.read<SettingsController>().defaultEntriesFeedSort
|
||||
: context.read<SettingsController>().defaultPostsFeedSort
|
||||
: context.read<SettingsController>().defaultExploreFeedSort;
|
||||
}
|
||||
|
||||
|
@ -85,6 +87,11 @@ class _FeedScreenState extends State<FeedScreen> {
|
|||
onSelectionChanged: (Set<FeedMode> newSelection) {
|
||||
setState(() {
|
||||
_mode = newSelection.first;
|
||||
_sort = widget.source == null
|
||||
? _mode == FeedMode.entries
|
||||
? context.read<SettingsController>().defaultEntriesFeedSort
|
||||
: context.read<SettingsController>().defaultPostsFeedSort
|
||||
: context.read<SettingsController>().defaultExploreFeedSort;
|
||||
});
|
||||
},
|
||||
),
|
||||
|
|
|
@ -14,8 +14,10 @@ class SettingsController with ChangeNotifier {
|
|||
ThemeMode get themeMode => _themeMode;
|
||||
late FeedMode _defaultFeedMode;
|
||||
FeedMode get defaultFeedMode => _defaultFeedMode;
|
||||
late FeedSort _defaultFeedSort;
|
||||
FeedSort get defaultFeedSort => _defaultFeedSort;
|
||||
late FeedSort _defaultEntriesFeedSort;
|
||||
FeedSort get defaultEntriesFeedSort => _defaultEntriesFeedSort;
|
||||
late FeedSort _defaultPostsFeedSort;
|
||||
FeedSort get defaultPostsFeedSort => _defaultPostsFeedSort;
|
||||
late FeedSort _defaultExploreFeedSort;
|
||||
FeedSort get defaultExploreFeedSort => _defaultExploreFeedSort;
|
||||
late CommentSort _defaultCommentSort;
|
||||
|
@ -42,8 +44,11 @@ class SettingsController with ChangeNotifier {
|
|||
_defaultFeedMode = prefs.getString('defaultFeedMode') != null
|
||||
? FeedMode.values.byName(prefs.getString("defaultFeedMode")!)
|
||||
: FeedMode.entries;
|
||||
_defaultFeedSort = prefs.getString('defaultFeedSort') != null
|
||||
? FeedSort.values.byName(prefs.getString("defaultFeedSort")!)
|
||||
_defaultEntriesFeedSort = prefs.getString('defaultEntriesFeedSort') != null
|
||||
? FeedSort.values.byName(prefs.getString("defaultEntriesFeedSort")!)
|
||||
: FeedSort.hot;
|
||||
_defaultPostsFeedSort = prefs.getString('defaultPostsFeedSort') != null
|
||||
? FeedSort.values.byName(prefs.getString("defaultPostsFeedSort")!)
|
||||
: FeedSort.hot;
|
||||
_defaultExploreFeedSort = prefs.getString('defaultExploreFeedSort') != null
|
||||
? FeedSort.values.byName(prefs.getString("defaultExploreFeedSort")!)
|
||||
|
@ -92,12 +97,12 @@ class SettingsController with ChangeNotifier {
|
|||
await prefs.setString('defaultFeedMode', newDefaultFeedMode.name);
|
||||
}
|
||||
|
||||
Future<void> updateDefaultFeedSort(FeedSort? newDefaultFeedSort) async {
|
||||
Future<void> updateDefaultEntriesFeedSort(FeedSort? newDefaultFeedSort) async {
|
||||
if (newDefaultFeedSort == null) return;
|
||||
|
||||
if (newDefaultFeedSort == _defaultFeedSort) return;
|
||||
if (newDefaultFeedSort == _defaultEntriesFeedSort) return;
|
||||
|
||||
_defaultFeedSort = newDefaultFeedSort;
|
||||
_defaultEntriesFeedSort = newDefaultFeedSort;
|
||||
|
||||
notifyListeners();
|
||||
|
||||
|
@ -105,6 +110,19 @@ class SettingsController with ChangeNotifier {
|
|||
await prefs.setString('defaultFeedSort', newDefaultFeedSort.name);
|
||||
}
|
||||
|
||||
Future<void> updateDefaultPostsFeedSort(FeedSort? newDefaultFeedSort) async {
|
||||
if (newDefaultFeedSort == null) return;
|
||||
|
||||
if (newDefaultFeedSort == _defaultPostsFeedSort) return;
|
||||
|
||||
_defaultPostsFeedSort = newDefaultFeedSort;
|
||||
|
||||
notifyListeners();
|
||||
|
||||
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setString('defaultPostsFeedSort', newDefaultFeedSort.name);
|
||||
}
|
||||
|
||||
Future<void> updateDefaultExploreFeedSort(
|
||||
FeedSort? newDefaultExploreFeedSort,
|
||||
) async {
|
||||
|
|
|
@ -19,8 +19,11 @@ class SettingsScreen extends StatelessWidget {
|
|||
final currentDefaultFeedMode = feedModeSelect.options.firstWhere(
|
||||
(option) => option.value == controller.defaultFeedMode,
|
||||
);
|
||||
final currentDefaultFeedSort = feedSortSelect.options.firstWhere(
|
||||
(option) => option.value == controller.defaultFeedSort,
|
||||
final currentDefaultEntriesFeedSort = feedSortSelect.options.firstWhere(
|
||||
(option) => option.value == controller.defaultEntriesFeedSort,
|
||||
);
|
||||
final currentDefaultPostsFeedSort = feedSortSelect.options.firstWhere(
|
||||
(option) => option.value == controller.defaultPostsFeedSort,
|
||||
);
|
||||
final currentDefaultExploreFeedSort = feedSortSelect.options.firstWhere(
|
||||
(option) => option.value == controller.defaultExploreFeedSort,
|
||||
|
@ -86,22 +89,42 @@ class SettingsScreen extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
ListTile(
|
||||
title: const Text('Default Feed Sort'),
|
||||
title: const Text('Default Threads Feed Sort'),
|
||||
leading: const Icon(Icons.sort),
|
||||
onTap: () async {
|
||||
controller.updateDefaultFeedSort(
|
||||
controller.updateDefaultEntriesFeedSort(
|
||||
await feedSortSelect.inquireSelection(
|
||||
context,
|
||||
currentDefaultFeedSort.value,
|
||||
currentDefaultEntriesFeedSort.value,
|
||||
),
|
||||
);
|
||||
},
|
||||
trailing: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Icon(currentDefaultFeedSort.icon),
|
||||
Icon(currentDefaultEntriesFeedSort.icon),
|
||||
const SizedBox(width: 4),
|
||||
Text(currentDefaultFeedSort.title),
|
||||
Text(currentDefaultEntriesFeedSort.title),
|
||||
],
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
title: const Text('Default Posts Feed Sort'),
|
||||
leading: const Icon(Icons.sort),
|
||||
onTap: () async {
|
||||
controller.updateDefaultPostsFeedSort(
|
||||
await feedSortSelect.inquireSelection(
|
||||
context,
|
||||
currentDefaultPostsFeedSort.value,
|
||||
),
|
||||
);
|
||||
},
|
||||
trailing: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Icon(currentDefaultPostsFeedSort.icon),
|
||||
const SizedBox(width: 4),
|
||||
Text(currentDefaultPostsFeedSort.title),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
Loading…
Reference in New Issue