Move EntryTreeItem flattening access to the RP Provider

merge-requests/67/merge
Hank Grabowski 2024-12-01 19:52:35 -05:00
rodzic 6f59f54a43
commit 6115df7395
4 zmienionych plików z 32 dodań i 7 usunięć

Wyświetl plik

@ -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<PostControl> {
Widget build(BuildContext context) {
final profile = context.watch<AccountsService>().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);
}

Wyświetl plik

@ -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<List<FlattenedTreeItem>, 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');

Wyświetl plik

@ -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<Result<EntryTreeItem, ExecError>> {

Wyświetl plik

@ -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 = <FlattenedTreeItem>[];
// TODO handle if entries aren't in manager