Compare commits

...

2 Commits

2 changed files with 8 additions and 5 deletions

View File

@ -56,17 +56,17 @@ class VCardManager extends XmppManagerBase {
final x = presence.firstTag('x', xmlns: vCardTempUpdate)!;
final hash = x.firstTag('photo')!.innerText();
final from = JID.fromString(presence.from!).toBare().toString();
final from = JID.fromString(presence.from!).toBare();
final lastHash = _lastHash[from];
if (lastHash != hash) {
_lastHash[from] = hash;
_lastHash[from.toString()] = hash;
final vcardResult = await requestVCard(from);
if (vcardResult.isType<VCard>()) {
final binval = vcardResult.get<VCard>().photo?.binval;
if (binval != null) {
getAttributes().sendEvent(
VCardAvatarUpdatedEvent(JID.fromString(from), binval, hash),
VCardAvatarUpdatedEvent(from, binval, hash),
);
} else {
logger.warning('No avatar data found');
@ -98,11 +98,11 @@ class VCardManager extends XmppManagerBase {
);
}
Future<Result<VCardError, VCard>> requestVCard(String jid) async {
Future<Result<VCardError, VCard>> requestVCard(JID jid) async {
final result = (await getAttributes().sendStanza(
StanzaDetails(
Stanza.iq(
to: jid,
to: jid.toString(),
type: 'get',
children: [
XMLNode.xmlns(

View File

@ -151,14 +151,17 @@ class SFSManager extends XmppManagerBase {
// TODO(Unknown): Consider all sources?
final source = data.sources.first;
OOBData? oob;
MessageBodyData? body;
if (source is StatelessFileSharingUrlSource && data.includeOOBFallback) {
// SFS recommends OOB as a fallback
oob = OOBData(source.url, null);
body = MessageBodyData(source.url);
}
return [
data.toXML(),
if (oob != null) oob.toXML(),
if (body != null) body.toXML(),
];
}