Skip to content
This repository has been archived by the owner on Apr 16, 2021. It is now read-only.

Commit

Permalink
fixes peerInfo/peerId serialization issue
Browse files Browse the repository at this point in the history
  • Loading branch information
alanshaw committed Mar 5, 2018
1 parent a35a232 commit eb0aa43
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 11 deletions.
30 changes: 21 additions & 9 deletions src/client/swarm.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { caller } from 'postmsg-rpc'
import callbackify from 'callbackify'
import { pre, post } from 'prepost'
import { peerInfoFromJson } from '../serialization/peer'
import { peerInfoFromJson, peerIdFromJson, isPeerInfoJson, isPeerIdJson } from '../serialization/peer'
import { preMultiaddrToJson, multiaddrFromJson } from '../serialization/multiaddr'
import { preBufferToJson } from '../serialization/buffer'

Expand All @@ -11,14 +11,26 @@ export default function (opts) {
post(
caller('ipfs.swarm.peers', opts),
(res) => Promise.all(
res.map((item) => (
peerInfoFromJson(item.peer)
.then((peerInfo) => {
item.addr = multiaddrFromJson(item.addr)
item.peer = peerInfo
return item
})
))
res.map((item) => {
item.addr = multiaddrFromJson(item.addr)

// https://github.com/ipfs/js-ipfs/issues/1248
if (isPeerInfoJson(item.peer)) {
return peerInfoFromJson(item.peer)
.then((peerInfo) => {
item.peer = peerInfo
return item
})
} else if (isPeerIdJson(item.peer)) {
return peerIdFromJson(item.peer)
.then((peerId) => {
item.peer = peerId
return item
})
}

return Promise.resolve(item)
})
)
)
),
Expand Down
9 changes: 7 additions & 2 deletions src/server/swarm.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { expose } from 'postmsg-rpc'
import { pre, post } from 'prepost'
import { peerInfoToJson } from '../serialization/peer'
import { peerInfoToJson, peerIdToJson, isPeerInfo, isPeerId } from '../serialization/peer'
import { preMultiaddrFromJson, multiaddrToJson } from '../serialization/multiaddr'
import { preBufferFromJson } from '../serialization/buffer'

Expand All @@ -12,7 +12,12 @@ export default function (getIpfs, opts) {
(...args) => getIpfs().swarm.peers(...args),
(res) => res.map((item) => {
item.addr = multiaddrToJson(item.addr)
item.peer = peerInfoToJson(item.peer)
// https://github.com/ipfs/js-ipfs/issues/1248
if (isPeerInfo(item.peer)) {
item.peer = peerInfoToJson(item.peer)
} else if (isPeerId(item.peer)) {
item.peer = peerIdToJson(item.peer)
}
return item
})
)
Expand Down

0 comments on commit eb0aa43

Please sign in to comment.