-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfilters.ts
28 lines (27 loc) · 922 Bytes
/
filters.ts
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
import type { PacketWithMetadata } from "@confio/relayer/build/lib/endpoint"
function uint8ToHex(uint8:Uint8Array):string {
return Array.from(uint8)
.map((i) => i.toString(16).padStart(2, '0'))
.join('')
}
function hexToAscii(hex:string):string {
let str = ''
for (let i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16))
return str
}
function ibcTransferAddressFilter(addressA:string, addressB:string):(packet:PacketWithMetadata['packet'])=>boolean {
const filter = (packet: PacketWithMetadata['packet']) => {
try {
const data = JSON.parse(hexToAscii(uint8ToHex(packet.data)))
if (data.sender == addressA || data.sender == addressB || data.receiver == addressA || data.receiver == addressB) {
return true;
} else {
return false;
}
} catch {
return false;
}
}
return filter;
}
export { uint8ToHex, hexToAscii, ibcTransferAddressFilter }