Image attachment

This commit is contained in:
2024-11-09 12:04:03 +08:00
parent 07b8ec6e96
commit 5e12a8860c
12 changed files with 1627 additions and 28 deletions

View File

@ -1,6 +1,7 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:surface/providers/sn_attachment.dart';
import 'package:surface/providers/sn_network.dart';
import 'package:surface/types/post.dart';
import 'package:surface/widgets/navigation/app_scaffold.dart';
@ -30,10 +31,31 @@ class _ExploreScreenState extends State<ExploreScreen> {
'take': 10,
'offset': _posts.length,
});
final List<SnPost> out =
List.from(resp.data['data']?.map((e) => SnPost.fromJson(e)) ?? []);
Set<String> rids = {};
for (var i = 0; i < out.length; i++) {
rids.addAll(out[i].body['attachments']?.cast<String>() ?? []);
}
if (!mounted) return;
final attach = context.read<SnAttachmentProvider>();
final attachments = await attach.getMultiple(rids.toList());
for (var i = 0; i < out.length; i++) {
out[i] = out[i].copyWith(
preload: SnPostPreload(
attachments: attachments
.where(
(ele) => out[i].body['attachments']?.contains(ele.rid) ?? false,
)
.toList(),
),
);
}
_postCount = resp.data['count'];
_posts.addAll(
resp.data['data']?.map((e) => SnPost.fromJson(e)).cast<SnPost>() ?? []);
_posts.addAll(out);
if (mounted) setState(() => _isBusy = false);
}