diff --git a/src/avatar.ts b/src/avatar.ts index 15435b1e6f5f14290cef158b8c238dc1b7425ccb..8b4aba05424dd2279418fbf89eb7558008b86671 100644 --- a/src/avatar.ts +++ b/src/avatar.ts @@ -25,9 +25,6 @@ export async function avatarHandler(ctx: KoaContext) { interface IExtendedAccount extends Account { posting_json_metadata?: string; - profile?: { - version: number - }; } const [account]: IExtendedAccount[] = await rpcClient.database.getAccounts([username]) @@ -35,14 +32,26 @@ export async function avatarHandler(ctx: KoaContext) { APIError.assert(account, APIError.Code.NoSuchAccount) let metadata; - try { - metadata = account.posting_json_metadata ? JSON.parse(account.posting_json_metadata) : JSON.parse(account.json_metadata) - if (metadata && metadata.profile && metadata.profile.version !== 2) { + + // read from `posting_json_metadata` if version flag is set + if(account.posting_json_metadata) { + try { + metadata = JSON.parse(account.posting_json_metadata) + if(!metadata.profile || !metadata.profile.version) metadata = {} + } catch (error) { + ctx.log.debug(error, 'unable to parse json_metadata for %s', account.name) + metadata = {} + } + } + + // otherwise, fall back to reading from `json_metadata` + if(!metadata) { + try { metadata = JSON.parse(account.json_metadata) + } catch (error) { + ctx.log.debug(error, 'unable to parse json_metadata for %s', account.name) + metadata = {} } - } catch (error) { - ctx.log.debug(error, 'unable to parse json_metadata for %s', account.name) - metadata = {} } let avatarUrl: string = DefaultAvatar