diff --git a/lib/controls/timeline/post_control.dart b/lib/controls/timeline/post_control.dart index ac7847b..beee880 100644 --- a/lib/controls/timeline/post_control.dart +++ b/lib/controls/timeline/post_control.dart @@ -8,7 +8,6 @@ import '../../models/flattened_tree_item.dart'; import '../../riverpod_controllers/entry_tree_item_services.dart'; import '../../riverpod_controllers/timeline_entry_services.dart'; import '../../services/auth_service.dart'; -import '../../utils/entry_tree_item_flattening.dart'; import 'flattened_tree_entry_control.dart'; class PostControl extends ConsumerStatefulWidget { @@ -47,18 +46,25 @@ class _PostControlState extends ConsumerState { Widget build(BuildContext context) { final profile = context.watch().currentProfile; //TODO Handle it not existing - final item = ref.watch(entryTreeManagerProvider(profile, widget.id)).value; + ref.watch(timelineEntryManagerProvider(profile, widget.id)); if (!widget.isRoot) { return FlattenedTreeEntryControl( - originalItem: - item.flatten(topLevelOnly: true, profile: profile, ref: ref).first, + originalItem: ref + .watch(entryTreeManagerProvider(profile, widget.id).notifier) + .flattened(topLevelOnly: true) + .value + .first, openRemote: widget.openRemote, showStatusOpenButton: widget.showStatusOpenButton, ); } - final items = item.flatten(profile: profile, ref: ref); + final items = ref + .watch(entryTreeManagerProvider(profile, widget.id).notifier) + .flattened() + .value; + return buildListView(context, items); } diff --git a/lib/riverpod_controllers/entry_tree_item_services.dart b/lib/riverpod_controllers/entry_tree_item_services.dart index 8a02d1e..f2859ea 100644 --- a/lib/riverpod_controllers/entry_tree_item_services.dart +++ b/lib/riverpod_controllers/entry_tree_item_services.dart @@ -9,12 +9,14 @@ import '../friendica_client/paging_data.dart'; import '../models/auth/profile.dart'; import '../models/entry_tree_item.dart'; import '../models/exec_error.dart'; +import '../models/flattened_tree_item.dart'; import '../models/image_entry.dart'; import '../models/media_attachment_uploads/media_upload_attachment.dart'; import '../models/media_attachment_uploads/new_entry_media_items.dart'; import '../models/timeline_entry.dart'; import '../models/timeline_identifiers.dart'; import '../models/visibility.dart'; +import '../utils/entry_tree_item_flattening.dart'; import '../utils/media_upload_attachment_helper.dart'; import 'timeline_entry_services.dart'; @@ -106,6 +108,23 @@ class EntryTreeManager extends _$EntryTreeManager { _etmLogger.finest('Removing for $entryId for $profile'); ref.read(_entryTreeItemsProvider(userProfile)).remove(entryId); } + + Result, ExecError> flattened({ + int level = FlatteningExtensions.baseLevel, + bool topLevelOnly = false, + }) { + if (state.isFailure) { + return state.errorCast(); + } + return Result.ok( + state.value.flatten( + level: level, + topLevelOnly: topLevelOnly, + profile: userProfile, + ref: ref, + ), + ); + } } final _tluLogger = Logger('TimelineUpdater'); diff --git a/lib/riverpod_controllers/entry_tree_item_services.g.dart b/lib/riverpod_controllers/entry_tree_item_services.g.dart index d0778f6..dc1649a 100644 --- a/lib/riverpod_controllers/entry_tree_item_services.g.dart +++ b/lib/riverpod_controllers/entry_tree_item_services.g.dart @@ -569,7 +569,7 @@ class _PostTreeEntryByIdProviderElement String get id => (origin as PostTreeEntryByIdProvider).id; } -String _$entryTreeManagerHash() => r'bd1ab2131cc75235d1d222aef7996ec2734efb24'; +String _$entryTreeManagerHash() => r'1ce486491c19cc513a681f6dfa53362a98db0343'; abstract class _$EntryTreeManager extends BuildlessNotifier> { diff --git a/lib/utils/entry_tree_item_flattening.dart b/lib/utils/entry_tree_item_flattening.dart index d8d3d94..b7f3095 100644 --- a/lib/utils/entry_tree_item_flattening.dart +++ b/lib/utils/entry_tree_item_flattening.dart @@ -14,7 +14,7 @@ extension FlatteningExtensions on EntryTreeItem { {int level = baseLevel, bool topLevelOnly = false, required Profile profile, - required WidgetRef ref}) { + required Ref ref}) { final items = []; // TODO handle if entries aren't in manager