merge wrapper and proper FullPost since the separation is not needed anymore

This commit is contained in:
Filip Krawczyk 2021-10-19 23:28:28 +02:00
parent 43f2a73ad8
commit fb78c5654b
1 changed files with 104 additions and 113 deletions

View File

@ -23,7 +23,8 @@ import '../../widgets/write_comment.dart';
import 'comment_section.dart'; import 'comment_section.dart';
import 'full_post_store.dart'; import 'full_post_store.dart';
class FullPostPage extends StatelessWidget { /// Displays a post with its comment section
class FullPostPage extends HookWidget {
final String? instanceHost; final String? instanceHost;
final int? id; final int? id;
final PostView? postView; final PostView? postView;
@ -45,6 +46,11 @@ class FullPostPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final scrollController = useScrollController();
final loggedInAction =
useLoggedInAction(context.read<FullPostStore>().instanceHost);
return AsyncStoreListener( return AsyncStoreListener(
asyncStore: context.read<FullPostStore>().fullPostState, asyncStore: context.read<FullPostStore>().fullPostState,
child: AsyncStoreListener<BlockedCommunity>( child: AsyncStoreListener<BlockedCommunity>(
@ -53,54 +59,7 @@ class FullPostPage extends StatelessWidget {
final name = data.communityView.community.originPreferredName; final name = data.communityView.community.originPreferredName;
return '${data.blocked ? 'Blocked' : 'Unblocked'} $name'; return '${data.blocked ? 'Blocked' : 'Unblocked'} $name';
}, },
child: const _FullPostPage(), child: AsyncStoreListener(
),
);
}
static Jwt? _tryGetJwt(BuildContext context, String instanceHost) {
return context.read<AccountsStore>().defaultUserDataFor(instanceHost)?.jwt;
}
static Route route(int id, String instanceHost) => MaterialPageRoute(
builder: (context) => Provider(
create: (context) =>
FullPostStore(instanceHost: instanceHost, postId: id)
..refresh(_tryGetJwt(context, instanceHost)),
child: FullPostPage._(
id: id,
instanceHost: instanceHost,
),
),
);
static Route fromPostViewRoute(PostView postView) => MaterialPageRoute(
builder: (context) => Provider(
create: (context) => FullPostStore.fromPostView(postView)
..refresh(_tryGetJwt(context, postView.instanceHost)),
child: FullPostPage._fromPostView(postView),
),
);
static Route fromPostStoreRoute(PostStore postStore) => MaterialPageRoute(
builder: (context) => Provider(
create: (context) => FullPostStore.fromPostStore(postStore)
..refresh(_tryGetJwt(context, postStore.postView.instanceHost)),
child: FullPostPage._fromPostStore(postStore)),
);
}
/// Displays a post with its comment section
class _FullPostPage extends HookWidget {
const _FullPostPage();
@override
Widget build(BuildContext context) {
final scrollController = useScrollController();
final loggedInAction =
useLoggedInAction(context.read<FullPostStore>().instanceHost);
return AsyncStoreListener(
asyncStore: context.read<FullPostStore>().fullPostState, asyncStore: context.read<FullPostStore>().fullPostState,
child: AsyncStoreListener<BlockedCommunity>( child: AsyncStoreListener<BlockedCommunity>(
asyncStore: context.read<FullPostStore>().communityBlockingState, asyncStore: context.read<FullPostStore>().communityBlockingState,
@ -196,8 +155,40 @@ class _FullPostPage extends HookWidget {
}, },
), ),
), ),
),
),
); );
} }
static Jwt? _tryGetJwt(BuildContext context, String instanceHost) {
return context.read<AccountsStore>().defaultUserDataFor(instanceHost)?.jwt;
}
static Route route(int id, String instanceHost) => MaterialPageRoute(
builder: (context) => Provider(
create: (context) =>
FullPostStore(instanceHost: instanceHost, postId: id)
..refresh(_tryGetJwt(context, instanceHost)),
child: FullPostPage._(
id: id,
instanceHost: instanceHost,
),
),
);
static Route fromPostViewRoute(PostView postView) => MaterialPageRoute(
builder: (context) => Provider(
create: (context) => FullPostStore.fromPostView(postView)
..refresh(_tryGetJwt(context, postView.instanceHost)),
child: FullPostPage._fromPostView(postView),
),
);
static Route fromPostStoreRoute(PostStore postStore) => MaterialPageRoute(
builder: (context) => Provider(
create: (context) => FullPostStore.fromPostStore(postStore)
..refresh(_tryGetJwt(context, postStore.postView.instanceHost)),
child: FullPostPage._fromPostStore(postStore)),
);
} }
class FailedToLoad extends StatelessWidget { class FailedToLoad extends StatelessWidget {