Skip to content

Commit

Permalink
feat: Did.uriFromChain and encode replaces type cast (#633)
Browse files Browse the repository at this point in the history
  • Loading branch information
arty-name authored Sep 16, 2022
1 parent 716e640 commit df448db
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 31 deletions.
12 changes: 3 additions & 9 deletions packages/core/src/attestation/Attestation.chain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,9 @@
*/

import type { Option } from '@polkadot/types'
import type {
IAttestation,
ICredential,
KiltAddress,
} from '@kiltprotocol/types'
import type { IAttestation, ICredential } from '@kiltprotocol/types'
import { ConfigService } from '@kiltprotocol/config'
import { Utils as DidUtils } from '@kiltprotocol/did'
import { Chain as DidChain } from '@kiltprotocol/did'
import type { AttestationAttestationsAttestationDetails } from '@kiltprotocol/augment-api'

const log = ConfigService.LoggingFactory.getLogger('Attestation')
Expand All @@ -35,9 +31,7 @@ export function fromChain(
const attestation: IAttestation = {
claimHash,
cTypeHash: chainAttestation.ctypeHash.toHex(),
owner: DidUtils.getFullDidUri(
chainAttestation.attester.toString() as KiltAddress
),
owner: DidChain.uriFromChain(chainAttestation.attester),
delegationId: delegationId || null,
revoked: chainAttestation.revoked.valueOf(),
}
Expand Down
6 changes: 3 additions & 3 deletions packages/core/src/ctype/CType.chain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import type { Option } from '@polkadot/types'
import type { AccountId } from '@polkadot/types/interfaces'

import { Crypto } from '@kiltprotocol/utils'
import type { DidUri, ICType, KiltAddress } from '@kiltprotocol/types'
import { Utils as DidUtils } from '@kiltprotocol/did'
import type { DidUri, ICType } from '@kiltprotocol/types'
import { Chain as DidChain } from '@kiltprotocol/did'

import { getSchemaPropertiesForHash } from './CType.js'

Expand All @@ -31,5 +31,5 @@ export function toChain(ctype: ICType): string {
* @returns The owner DID.
*/
export function fromChain(encoded: Option<AccountId>): DidUri {
return DidUtils.getFullDidUri(encoded.unwrap().toString() as KiltAddress)
return DidChain.uriFromChain(encoded.unwrap())
}
7 changes: 2 additions & 5 deletions packages/core/src/delegation/DelegationDecoder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,11 @@
import type {
IDelegationNode,
IDelegationHierarchyDetails,
KiltAddress,
} from '@kiltprotocol/types'
import { Permission, PermissionType } from '@kiltprotocol/types'
import type { Option } from '@polkadot/types'
import type { Hash } from '@polkadot/types/interfaces/runtime'
import { Utils as DidUtils } from '@kiltprotocol/did'
import { Chain as DidChain } from '@kiltprotocol/did'
import type {
DelegationDelegationHierarchyDelegationHierarchyDetails,
DelegationDelegationHierarchyDelegationNode,
Expand Down Expand Up @@ -94,9 +93,7 @@ export function delegationNodeFromChain(
? delegationNode.parent.toHex()
: undefined,
childrenIds: [...delegationNode.children].map((id) => id.toHex()),
account: DidUtils.getFullDidUri(
delegationNode.details.owner.toString() as KiltAddress
),
account: DidChain.uriFromChain(delegationNode.details.owner),
permissions: permissionsFromChain(delegationNode.details.permissions),
revoked: delegationNode.details.revoked.valueOf(),
}
Expand Down
14 changes: 8 additions & 6 deletions packages/did/src/Did.chain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
*/

import type { Option } from '@polkadot/types'
import type { Extrinsic, Hash } from '@polkadot/types/interfaces'
import type { AccountId32, Extrinsic, Hash } from '@polkadot/types/interfaces'
import type { AnyNumber } from '@polkadot/types/types'
import { BN, hexToU8a } from '@polkadot/util'
import type { ApiPromise } from '@polkadot/api'
Expand Down Expand Up @@ -48,6 +48,7 @@ import {
EncodedSignature,
EncodedVerificationKey,
getAddressByKey,
getFullDidUri,
keyTypeForSignatureAlg,
parseDidUri,
signatureAlgForKeyType,
Expand All @@ -71,7 +72,7 @@ export function resourceIdToChain(id: UriFragment): string {

export function depositFromChain(deposit: KiltSupportDeposit): Deposit {
return {
owner: deposit.owner.toString() as KiltAddress,
owner: Crypto.encodeAddress(deposit.owner, ss58Format),
amount: deposit.amount.toBn(),
}
}
Expand Down Expand Up @@ -114,6 +115,10 @@ function didPublicKeyDetailsFromChain(
}
}

export function uriFromChain(encoded: AccountId32): DidUri {
return getFullDidUri(Crypto.encodeAddress(encoded, ss58Format))
}

export function didFromChain(encoded: Option<DidDidDetails>): EncodedDid {
const {
publicKeys,
Expand All @@ -139,10 +144,7 @@ export function didFromChain(encoded: Option<DidDidDetails>): EncodedDid {
const didRecord: EncodedDid = {
authentication: [authentication],
lastTxCounter: lastTxCounter.toBn(),
deposit: {
amount: deposit.amount.toBn(),
owner: deposit.owner.toString() as KiltAddress,
},
deposit: depositFromChain(deposit),
}
if (attestationKey.isSome) {
const key = keys[attestationKey.unwrap().toHex()] as DidVerificationKey
Expand Down
6 changes: 3 additions & 3 deletions packages/did/src/DidLinks/AccountLinks.chain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ import type { Deposit, DidUri, KiltAddress } from '@kiltprotocol/types'
import type { PalletDidLookupConnectionRecord } from '@kiltprotocol/augment-api'
import { ConfigService } from '@kiltprotocol/config'

import { EncodedSignature, getFullDidUri } from '../Did.utils.js'
import { EncodedSignature } from '../Did.utils.js'
import { Web3Name, web3NameFromChain } from './Web3Names.chain.js'
import { depositFromChain, didToChain } from '../Did.chain.js'
import { depositFromChain, didToChain, uriFromChain } from '../Did.chain.js'

/// A chain-agnostic address, which can be encoded using any network prefix.
export type SubstrateAddress = KeyringPair['address']
Expand Down Expand Up @@ -125,7 +125,7 @@ export function connectedDidFromChain(
} {
const { did, deposit } = encoded.unwrap()
return {
did: getFullDidUri(did.toString() as KiltAddress),
did: uriFromChain(did),
deposit: depositFromChain(deposit),
}
}
Expand Down
8 changes: 3 additions & 5 deletions packages/did/src/DidLinks/Web3Names.chain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,9 @@

import { PalletWeb3NamesWeb3NameWeb3NameOwnership } from '@polkadot/types/lookup'
import type { Bytes, Option } from '@polkadot/types-codec'
import type { Deposit, DidUri, KiltAddress } from '@kiltprotocol/types'
import type { Deposit, DidUri } from '@kiltprotocol/types'
import type { BN } from '@polkadot/util'

import * as DidUtils from '../Did.utils.js'
import { depositFromChain } from '../Did.chain.js'
import { depositFromChain, uriFromChain } from '../Did.chain.js'

/**
* Web3Name is the type of a nickname for a DID.
Expand Down Expand Up @@ -43,7 +41,7 @@ export function web3NameOwnerFromChain(
} {
const { owner, deposit, claimedAt } = encoded.unwrap()
return {
owner: DidUtils.getFullDidUri(owner.toString() as KiltAddress),
owner: uriFromChain(owner),
deposit: depositFromChain(deposit),
claimedAt: claimedAt.toBn(),
}
Expand Down

0 comments on commit df448db

Please sign in to comment.