Browse Source

feat(neon): Support data URIs in NeonUrlImage

Signed-off-by: jld3103 <jld3103yt@gmail.com>
pull/1140/head
jld3103 1 year ago
parent
commit
64811ea320
No known key found for this signature in database
GPG Key ID: 9062417B9E8EB7B3
  1. 16
      packages/neon/neon/lib/src/widgets/image.dart

16
packages/neon/neon/lib/src/widgets/image.dart

@ -354,19 +354,27 @@ class NeonUrlImage extends StatelessWidget {
Widget build(final BuildContext context) {
final account = this.account ?? NeonProvider.of<AccountsBloc>(context).activeAccount.value!;
final uri = Uri.parse(url);
final dataUri = uri.data;
return NeonCachedImage(
getImage: () async {
final uri = account.completeUri(Uri.parse(url));
if (dataUri != null) {
return dataUri.contentAsBytes();
}
final completedUri = account.completeUri(uri);
final headers = <String, String>{};
// Only send the authentication headers when sending the request to the server of the account
if (uri.toString().startsWith(account.serverURL.toString()) && account.client.authentications.isNotEmpty) {
if (completedUri.toString().startsWith(account.serverURL.toString()) &&
account.client.authentications.isNotEmpty) {
headers.addAll(account.client.authentications.first.headers);
}
final response = await account.client.executeRawRequest(
'GET',
uri,
completedUri,
headers,
null,
const {200},
@ -377,7 +385,7 @@ class NeonUrlImage extends StatelessWidget {
cacheKey: '${account.id}-$url',
reviver: reviver,
writeCache: writeCache,
isSvgHint: isSvgHint,
isSvgHint: isSvgHint || (dataUri?.mimeType.contains('svg') ?? false),
size: size,
fit: fit,
svgColorFilter: svgColorFilter,

Loading…
Cancel
Save