fix(backend): Accept arrays in ActivityPub `icon` and `image` properties

This is allowed according to the Activity vocabulary: https://www.w3.org/TR/activitystreams-vocabulary/#dfn-icon
The issue is noticeable in combination with Bridgy Fed: https://github.com/snarfed/bridgy-fed/issues/1408
This commit is contained in:
Tamme Schichler 2024-10-23 14:46:05 +02:00 committed by GitHub
parent 15ae1605ec
commit 6c3d4d0a95
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 6 additions and 0 deletions

View File

@ -232,6 +232,12 @@ export class ApPersonService implements OnModuleInit {
if (user == null) throw new Error('failed to create user: user is null'); if (user == null) throw new Error('failed to create user: user is null');
const [avatar, banner] = await Promise.all([icon, image].map(img => { const [avatar, banner] = await Promise.all([icon, image].map(img => {
// icon and image may be arrays
// see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-icon
if (Array.isArray(img)) {
img = img.find(item => item && item.url) ?? null;
}
// if we have an explicitly missing image, return an // if we have an explicitly missing image, return an
// explicitly-null set of values // explicitly-null set of values
if ((img == null) || (typeof img === 'object' && img.url == null)) { if ((img == null) || (typeof img === 'object' && img.url == null)) {