Add awareness of TimelineGroupingListData Type to queries

This commit is contained in:
Hank Grabowski 2024-08-28 11:57:10 -04:00
parent 9c9428a85b
commit 37d3b1a125
9 changed files with 28 additions and 17 deletions

View file

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../models/visibility.dart' as v; import '../../models/visibility.dart' as v;
import '../models/timeline_grouping_list_data.dart';
import '../services/connections_manager.dart'; import '../services/connections_manager.dart';
Future<bool?> showVisibilityDialog( Future<bool?> showVisibilityDialog(
@ -8,7 +9,9 @@ Future<bool?> showVisibilityDialog(
ConnectionsManager cm, ConnectionsManager cm,
v.Visibility visibility, v.Visibility visibility,
) async { ) async {
final circlesMap = {for (var item in cm.getMyCircles()) item.id: item}; final circlesMap = {
for (var item in cm.getGroupingListData(GroupingType.circle)) item.id: item
};
final allowedCircles = visibility.allowedCircleIds.map((c) { final allowedCircles = visibility.allowedCircleIds.map((c) {
if (c == '~') { if (c == '~') {

View file

@ -36,8 +36,10 @@ class _CircleAddUsersScreenState extends State<CircleAddUsersScreen> {
super.initState(); super.initState();
final manager = final manager =
getIt<ActiveProfileSelector<ConnectionsManager>>().activeEntry.value; getIt<ActiveProfileSelector<ConnectionsManager>>().activeEntry.value;
circleData = circleData = manager
manager.getMyCircles().where((g) => g.id == widget.circleId).first; .getGroupingListData(GroupingType.circle)
.where((g) => g.id == widget.circleId)
.first;
} }
Future<void> addUserToCircle( Future<void> addUserToCircle(

View file

@ -93,7 +93,7 @@ class _CircleEditorScreenState extends State<CircleEditorScreen> {
final manager = final manager =
getIt<ActiveProfileSelector<ConnectionsManager>>().activeEntry.value; getIt<ActiveProfileSelector<ConnectionsManager>>().activeEntry.value;
circleData = manager circleData = manager
.getMyCircles() .getGroupingListData(GroupingType.circle)
.where( .where(
(g) => g.id == widget.circleId, (g) => g.id == widget.circleId,
) )

View file

@ -4,6 +4,7 @@ import 'package:provider/provider.dart';
import '../controls/responsive_max_width.dart'; import '../controls/responsive_max_width.dart';
import '../controls/standard_appbar.dart'; import '../controls/standard_appbar.dart';
import '../models/timeline_grouping_list_data.dart';
import '../routes.dart'; import '../routes.dart';
import '../services/connections_manager.dart'; import '../services/connections_manager.dart';
import '../utils/active_profile_selector.dart'; import '../utils/active_profile_selector.dart';
@ -17,7 +18,7 @@ class CircleManagementScreen extends StatelessWidget {
.watch<ActiveProfileSelector<ConnectionsManager>>() .watch<ActiveProfileSelector<ConnectionsManager>>()
.activeEntry .activeEntry
.value; .value;
final circles = manager.getMyCircles(); final circles = manager.getGroupingListData(GroupingType.circle);
circles.sort((g1, g2) => g1.name.compareTo(g2.name)); circles.sort((g1, g2) => g1.name.compareTo(g2.name));
return Scaffold( return Scaffold(
appBar: StandardAppBar.build( appBar: StandardAppBar.build(

View file

@ -607,10 +607,10 @@ class _EditorScreenState extends State<EditorScreen> {
circleMenuItems.add(DropdownMenuItem( circleMenuItems.add(DropdownMenuItem(
value: TimelineGroupingListData.followersPseudoCircle, value: TimelineGroupingListData.followersPseudoCircle,
child: Text(TimelineGroupingListData.followersPseudoCircle.name))); child: Text(TimelineGroupingListData.followersPseudoCircle.name)));
circleMenuItems.add(DropdownMenuItem( circleMenuItems.add(const DropdownMenuItem(
value: TimelineGroupingListData('', ''), value: TimelineGroupingListData.empty,
enabled: false, enabled: false,
child: const Divider())); child: Divider()));
circleMenuItems.addAll(circles.map((g) => DropdownMenuItem( circleMenuItems.addAll(circles.map((g) => DropdownMenuItem(
value: g, value: g,
child: Text(g.name), child: Text(g.name),

View file

@ -139,7 +139,9 @@ class _HomeScreenState extends ConsumerState<HomeScreen> {
)), )),
...circles ...circles
.map((c) => TimelineIdentifiers( .map((c) => TimelineIdentifiers(
timeline: TimelineType.circle, auxData: c.id, label: c.name)) timeline: TimelineType.circle,
auxData: c.id,
label: '${c.name} - ${c.groupingType.name}'))
.map((e) => DropdownMenuItem( .map((e) => DropdownMenuItem(
value: e, value: e,
child: Text( child: Text(

View file

@ -152,7 +152,7 @@ class _UserProfileScreenState extends State<UserProfileScreen> {
Connection profile, Connection profile,
ConnectionsManager manager, ConnectionsManager manager,
) { ) {
final myCircles = manager.getMyCircles(); final myCircles = manager.getGroupingListData(GroupingType.circle);
final usersCircles = manager.getCirclesForUser(profile.id).fold( final usersCircles = manager.getCirclesForUser(profile.id).fold(
onSuccess: (circles) => circles.toSet(), onSuccess: (circles) => circles.toSet(),
onError: (error) { onError: (error) {

View file

@ -238,13 +238,16 @@ class ConnectionsManager extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
List<TimelineGroupingListData> getMyCircles() { List<TimelineGroupingListData> getGroupingListData(GroupingType type) {
if (circlesNotInitialized) { if (circlesNotInitialized) {
circlesNotInitialized = false; circlesNotInitialized = false;
_updateMyCircles(true); _updateMyGroupingListData(true);
} }
return circlesRepo.getMyCircles(); return circlesRepo
.getMyCircles()
.where((e) => e.groupingType == type)
.toList();
} }
Result<List<Connection>, ExecError> getCircleMembers( Result<List<Connection>, ExecError> getCircleMembers(
@ -293,7 +296,7 @@ class ConnectionsManager extends ChangeNotifier {
} }
void refreshCircles() { void refreshCircles() {
_updateMyCircles(true); _updateMyGroupingListData(true);
} }
Future<void> refreshCircleMemberships(TimelineGroupingListData circle) async { Future<void> refreshCircleMemberships(TimelineGroupingListData circle) async {
@ -399,7 +402,7 @@ class ConnectionsManager extends ChangeNotifier {
Connection connection, { Connection connection, {
bool withNotifications = true, bool withNotifications = true,
}) async { }) async {
await _updateMyCircles(false); await _updateMyGroupingListData(false);
await _refreshCircleListData(connection.id, false); await _refreshCircleListData(connection.id, false);
await _refreshConnection(connection, false); await _refreshConnection(connection, false);
if (withNotifications) { if (withNotifications) {
@ -442,7 +445,7 @@ class ConnectionsManager extends ChangeNotifier {
); );
} }
Future<void> _updateMyCircles(bool withNotification) async { Future<void> _updateMyGroupingListData(bool withNotification) async {
_logger.finest('Refreshing my circles list'); _logger.finest('Refreshing my circles list');
await TimelineGroupingListClient(profile) await TimelineGroupingListClient(profile)
.getTimelineGroupingListData() .getTimelineGroupingListData()

View file

@ -1,7 +1,7 @@
import Cocoa import Cocoa
import FlutterMacOS import FlutterMacOS
@NSApplicationMain @main
class AppDelegate: FlutterAppDelegate { class AppDelegate: FlutterAppDelegate {
override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
return true return true