kopia lustrzana https://gitlab.com/mysocialportal/relatica
Move EntryTreeItem flattening access to the RP Provider
rodzic
6f59f54a43
commit
6115df7395
|
@ -8,7 +8,6 @@ import '../../models/flattened_tree_item.dart';
|
||||||
import '../../riverpod_controllers/entry_tree_item_services.dart';
|
import '../../riverpod_controllers/entry_tree_item_services.dart';
|
||||||
import '../../riverpod_controllers/timeline_entry_services.dart';
|
import '../../riverpod_controllers/timeline_entry_services.dart';
|
||||||
import '../../services/auth_service.dart';
|
import '../../services/auth_service.dart';
|
||||||
import '../../utils/entry_tree_item_flattening.dart';
|
|
||||||
import 'flattened_tree_entry_control.dart';
|
import 'flattened_tree_entry_control.dart';
|
||||||
|
|
||||||
class PostControl extends ConsumerStatefulWidget {
|
class PostControl extends ConsumerStatefulWidget {
|
||||||
|
@ -47,18 +46,25 @@ class _PostControlState extends ConsumerState<PostControl> {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final profile = context.watch<AccountsService>().currentProfile;
|
final profile = context.watch<AccountsService>().currentProfile;
|
||||||
//TODO Handle it not existing
|
//TODO Handle it not existing
|
||||||
final item = ref.watch(entryTreeManagerProvider(profile, widget.id)).value;
|
|
||||||
ref.watch(timelineEntryManagerProvider(profile, widget.id));
|
ref.watch(timelineEntryManagerProvider(profile, widget.id));
|
||||||
if (!widget.isRoot) {
|
if (!widget.isRoot) {
|
||||||
return FlattenedTreeEntryControl(
|
return FlattenedTreeEntryControl(
|
||||||
originalItem:
|
originalItem: ref
|
||||||
item.flatten(topLevelOnly: true, profile: profile, ref: ref).first,
|
.watch(entryTreeManagerProvider(profile, widget.id).notifier)
|
||||||
|
.flattened(topLevelOnly: true)
|
||||||
|
.value
|
||||||
|
.first,
|
||||||
openRemote: widget.openRemote,
|
openRemote: widget.openRemote,
|
||||||
showStatusOpenButton: widget.showStatusOpenButton,
|
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);
|
return buildListView(context, items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,12 +9,14 @@ import '../friendica_client/paging_data.dart';
|
||||||
import '../models/auth/profile.dart';
|
import '../models/auth/profile.dart';
|
||||||
import '../models/entry_tree_item.dart';
|
import '../models/entry_tree_item.dart';
|
||||||
import '../models/exec_error.dart';
|
import '../models/exec_error.dart';
|
||||||
|
import '../models/flattened_tree_item.dart';
|
||||||
import '../models/image_entry.dart';
|
import '../models/image_entry.dart';
|
||||||
import '../models/media_attachment_uploads/media_upload_attachment.dart';
|
import '../models/media_attachment_uploads/media_upload_attachment.dart';
|
||||||
import '../models/media_attachment_uploads/new_entry_media_items.dart';
|
import '../models/media_attachment_uploads/new_entry_media_items.dart';
|
||||||
import '../models/timeline_entry.dart';
|
import '../models/timeline_entry.dart';
|
||||||
import '../models/timeline_identifiers.dart';
|
import '../models/timeline_identifiers.dart';
|
||||||
import '../models/visibility.dart';
|
import '../models/visibility.dart';
|
||||||
|
import '../utils/entry_tree_item_flattening.dart';
|
||||||
import '../utils/media_upload_attachment_helper.dart';
|
import '../utils/media_upload_attachment_helper.dart';
|
||||||
import 'timeline_entry_services.dart';
|
import 'timeline_entry_services.dart';
|
||||||
|
|
||||||
|
@ -106,6 +108,23 @@ class EntryTreeManager extends _$EntryTreeManager {
|
||||||
_etmLogger.finest('Removing for $entryId for $profile');
|
_etmLogger.finest('Removing for $entryId for $profile');
|
||||||
ref.read(_entryTreeItemsProvider(userProfile)).remove(entryId);
|
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');
|
final _tluLogger = Logger('TimelineUpdater');
|
||||||
|
|
|
@ -569,7 +569,7 @@ class _PostTreeEntryByIdProviderElement
|
||||||
String get id => (origin as PostTreeEntryByIdProvider).id;
|
String get id => (origin as PostTreeEntryByIdProvider).id;
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$entryTreeManagerHash() => r'bd1ab2131cc75235d1d222aef7996ec2734efb24';
|
String _$entryTreeManagerHash() => r'1ce486491c19cc513a681f6dfa53362a98db0343';
|
||||||
|
|
||||||
abstract class _$EntryTreeManager
|
abstract class _$EntryTreeManager
|
||||||
extends BuildlessNotifier<Result<EntryTreeItem, ExecError>> {
|
extends BuildlessNotifier<Result<EntryTreeItem, ExecError>> {
|
||||||
|
|
|
@ -14,7 +14,7 @@ extension FlatteningExtensions on EntryTreeItem {
|
||||||
{int level = baseLevel,
|
{int level = baseLevel,
|
||||||
bool topLevelOnly = false,
|
bool topLevelOnly = false,
|
||||||
required Profile profile,
|
required Profile profile,
|
||||||
required WidgetRef ref}) {
|
required Ref ref}) {
|
||||||
final items = <FlattenedTreeItem>[];
|
final items = <FlattenedTreeItem>[];
|
||||||
|
|
||||||
// TODO handle if entries aren't in manager
|
// TODO handle if entries aren't in manager
|
||||||
|
|
Ładowanie…
Reference in New Issue