All files / src/profiles/profileSchemas personLegacy.js

91.89% Statements 34/37
62.5% Branches 35/56
100% Functions 2/2
91.89% Lines 34/37

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108    3x 3x   3x                   1x       1x 1x 1x     1x 1x     1x 1x           1x 1x 1x           1x 1x           1x 1x     1x 1x           1x 1x 1x             1x 1x   1x 1x   1x 1x     1x                       1x 1x                 1x     1x    
function formatAccount(serviceName, data) {
  let proofUrl
  Eif (data.proof && data.proof.url) {
    proofUrl = data.proof.url
  }
  return {
    '@type': 'Account',
    service: serviceName,
    identifier: data.username,
    proofType: 'http',
    proofUrl
  }
}
 
export function getPersonFromLegacyFormat(profile) {
  const profileData = {
    '@type': 'Person'
  }
 
  Eif (profile) {
    Eif (profile.name && profile.name.formatted) {
      profileData.name = profile.name.formatted
    }
 
    Eif (profile.bio) {
      profileData.description = profile.bio
    }
 
    Eif (profile.location && profile.location.formatted) {
      profileData.address = {
        '@type': 'PostalAddress',
        addressLocality: profile.location.formatted
      }
    }
 
    const images = []
    Eif (profile.avatar && profile.avatar.url) {
      images.push({
        '@type': 'ImageObject',
        name: 'avatar',
        contentUrl: profile.avatar.url
      })
    }
    Eif (profile.cover && profile.cover.url) {
      images.push({
        '@type': 'ImageObject',
        name: 'cover',
        contentUrl: profile.cover.url
      })
    }
    Eif (images.length) {
      profileData.image = images
    }
 
    Eif (profile.website) {
      profileData.website = [{
        '@type': 'WebSite',
        url: profile.website
      }]
    }
 
    const accounts = []
    Eif (profile.bitcoin && profile.bitcoin.address) {
      accounts.push({
        '@type': 'Account',
        role: 'payment',
        service: 'bitcoin',
        identifier: profile.bitcoin.address
      })
    }
    Eif (profile.twitter && profile.twitter.username) {
      accounts.push(formatAccount('twitter', profile.twitter))
    }
    Eif (profile.facebook && profile.facebook.username) {
      accounts.push(formatAccount('facebook', profile.facebook))
    }
    Eif (profile.github && profile.github.username) {
      accounts.push(formatAccount('github', profile.github))
    }
 
    Iif (profile.auth) {
      if (profile.auth.length > 0) {
        if (profile.auth[0] && profile.auth[0].publicKeychain) {
          accounts.push({
            '@type': 'Account',
            role: 'key',
            service: 'bip32',
            identifier: profile.auth[0].publicKeychain
          })
        }
      }
    }
    Eif (profile.pgp && profile.pgp.url) {
      accounts.push({
        '@type': 'Account',
        role: 'key',
        service: 'pgp',
        identifier: profile.pgp.fingerprint,
        contentUrl: profile.pgp.url
      })
    }
 
    profileData.account = accounts
  }
 
  return profileData
}