Fix remote avatar without AP mediatype field

This commit is contained in:
Chocobozzz 2020-02-12 10:23:24 +01:00
parent 30ff193a60
commit c6de3a85ee
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
2 changed files with 17 additions and 12 deletions

View File

@ -422,7 +422,8 @@ const MIMETYPES = {
'image/png': '.png',
'image/jpg': '.jpg',
'image/jpeg': '.jpg'
}
},
EXT_MIMETYPE: null as { [ id: string ]: string }
},
VIDEO_CAPTIONS: {
MIMETYPE_EXT: {
@ -438,6 +439,7 @@ const MIMETYPES = {
}
}
MIMETYPES.AUDIO.EXT_MIMETYPE = invert(MIMETYPES.AUDIO.MIMETYPE_EXT)
MIMETYPES.IMAGE.EXT_MIMETYPE = invert(MIMETYPES.IMAGE.MIMETYPE_EXT)
// ---------------------------------------------------------------------------

View File

@ -35,6 +35,7 @@ import {
MActorId,
MChannel
} from '../../typings/models'
import { extname } from 'path'
// Set account keys, this could be long so process after the account creation and do not block the client
function setAsyncActorKeys <T extends MActor> (actor: T) {
@ -215,19 +216,21 @@ async function fetchActorTotalItems (url: string) {
}
function getAvatarInfoIfExists (actorJSON: ActivityPubActor) {
if (
actorJSON.icon && actorJSON.icon.type === 'Image' && MIMETYPES.IMAGE.MIMETYPE_EXT[actorJSON.icon.mediaType] !== undefined &&
isActivityPubUrlValid(actorJSON.icon.url)
) {
const extension = MIMETYPES.IMAGE.MIMETYPE_EXT[actorJSON.icon.mediaType]
const mimetypes = MIMETYPES.IMAGE
const icon = actorJSON.icon
return {
name: uuidv4() + extension,
fileUrl: actorJSON.icon.url
}
if (!icon || icon.type !== 'Image' || !isActivityPubUrlValid(icon.url)) return undefined
const extension = icon.mediaType
? mimetypes.MIMETYPE_EXT[icon.mediaType]
: extname(icon.url)
if (!extension) return undefined
return {
name: uuidv4() + extension,
fileUrl: icon.url
}
return undefined
}
async function addFetchOutboxJob (actor: Pick<ActorModel, 'id' | 'outboxUrl'>) {