print avatar warning
Some checks are pending
Flutter analyze & test / flutter_analyze_and_test (push) Waiting to run

This commit is contained in:
otsmr 2026-06-16 00:57:56 +02:00
parent 0ab6eba47d
commit 83fd99ea70
3 changed files with 35 additions and 20 deletions

View file

@ -7,6 +7,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:twonly/globals.dart'; import 'package:twonly/globals.dart';
import 'package:twonly/locator.dart'; import 'package:twonly/locator.dart';
import 'package:twonly/src/utils/log.dart';
String getAvatarSvg(Uint8List avatarSvgCompressed) { String getAvatarSvg(Uint8List avatarSvgCompressed) {
return utf8.decode(gzip.decode(avatarSvgCompressed)); return utf8.decode(gzip.decode(avatarSvgCompressed));
@ -16,6 +17,7 @@ Future<void> createPushAvatars({int? forceForUserId}) async {
final contacts = await twonlyDB.contactsDao.getAllContacts(); final contacts = await twonlyDB.contactsDao.getAllContacts();
for (final contact in contacts) { for (final contact in contacts) {
try {
if (contact.avatarSvgCompressed == null) continue; if (contact.avatarSvgCompressed == null) continue;
if (forceForUserId == null) { if (forceForUserId == null) {
@ -29,7 +31,10 @@ Future<void> createPushAvatars({int? forceForUserId}) async {
final avatarSvg = getAvatarSvg(contact.avatarSvgCompressed!); final avatarSvg = getAvatarSvg(contact.avatarSvgCompressed!);
final pictureInfo = await vg.loadPicture(SvgStringLoader(avatarSvg), null); final pictureInfo = await vg.loadPicture(
SvgStringLoader(avatarSvg),
null,
);
final image = await pictureInfo.picture.toImage(270, 300); final image = await pictureInfo.picture.toImage(270, 300);
@ -38,6 +43,9 @@ Future<void> createPushAvatars({int? forceForUserId}) async {
await avatarPNGFile(contact.userId).writeAsBytes(pngBytes); await avatarPNGFile(contact.userId).writeAsBytes(pngBytes);
pictureInfo.picture.dispose(); pictureInfo.picture.dispose();
} catch (e) {
Log.error(e);
}
} }
} }

View file

@ -5,6 +5,7 @@ import 'package:flutter_svg/svg.dart';
import 'package:twonly/locator.dart'; import 'package:twonly/locator.dart';
import 'package:twonly/src/database/twonly.db.dart'; import 'package:twonly/src/database/twonly.db.dart';
import 'package:twonly/src/utils/avatars.dart'; import 'package:twonly/src/utils/avatars.dart';
import 'package:twonly/src/utils/log.dart';
import 'package:vector_graphics/vector_graphics.dart'; import 'package:vector_graphics/vector_graphics.dart';
class AvatarIcon extends StatefulWidget { class AvatarIcon extends StatefulWidget {
@ -64,6 +65,12 @@ class _AvatarIconState extends State<AvatarIcon> {
errorBuilder: errorBuilder, errorBuilder: errorBuilder,
); );
} }
Log.warn(
'PNG avatar file for contact ${contact.userId} does not exist. Generating in background.',
);
unawaited(createPushAvatars(forceForUserId: contact.userId));
if (contact.avatarSvgCompressed != null) { if (contact.avatarSvgCompressed != null) {
return SvgPicture.string( return SvgPicture.string(
getAvatarSvg(contact.avatarSvgCompressed!), getAvatarSvg(contact.avatarSvgCompressed!),

View file

@ -3,7 +3,7 @@ description: "twonly, a privacy-friendly way to connect with friends through sec
publish_to: 'none' publish_to: 'none'
version: 0.3.1+140 version: 0.3.1+141
environment: environment:
sdk: ^3.11.0 sdk: ^3.11.0