diff --git a/web/cashtab/src/components/Airdrop/Airdrop.js b/web/cashtab/src/components/Airdrop/Airdrop.js
--- a/web/cashtab/src/components/Airdrop/Airdrop.js
+++ b/web/cashtab/src/components/Airdrop/Airdrop.js
@@ -84,10 +84,9 @@
}
`;
// Note jestBCH is only used for unit tests; BCHJS must be mocked for jest
-const Airdrop = ({ jestBCH, passLoadingStatus }) => {
+const Airdrop = ({ passLoadingStatus }) => {
const ContextValue = React.useContext(WalletContext);
const {
- BCH,
wallet,
fiatPrice,
cashtabSettings,
@@ -97,20 +96,10 @@
const location = useLocation();
const walletState = getWalletState(wallet);
const { balances } = walletState;
-
- const [bchObj, setBchObj] = useState(false);
const [isAirdropCalcModalVisible, setIsAirdropCalcModalVisible] =
useState(false);
const [airdropCalcModalProgress, setAirdropCalcModalProgress] = useState(0); // the dynamic % progress bar
- useEffect(() => {
- // jestBCH is only ever specified for unit tests, otherwise app will use getBCH();
- const activeBCH = jestBCH ? jestBCH : BCH;
-
- // set the BCH instance to state, for other functions to reference
- setBchObj(activeBCH);
- }, [BCH]);
-
useEffect(() => {
if (location && location.state && location.state.airdropEtokenId) {
setFormData({
@@ -265,7 +254,6 @@
try {
mintEtokenAddress = await getMintAddress(
chronik,
- bchObj,
formData.tokenId,
);
} catch (err) {
diff --git a/web/cashtab/src/components/Airdrop/__tests__/Airdrop.test.js b/web/cashtab/src/components/Airdrop/__tests__/Airdrop.test.js
--- a/web/cashtab/src/components/Airdrop/__tests__/Airdrop.test.js
+++ b/web/cashtab/src/components/Airdrop/__tests__/Airdrop.test.js
@@ -3,7 +3,6 @@
import { ThemeProvider } from 'styled-components';
import { theme } from 'assets/styles/theme';
import Airdrop from 'components/Airdrop/Airdrop';
-import BCHJS from '@psf/bch-js';
import {
walletWithBalancesAndTokens,
walletWithBalancesMock,
@@ -32,12 +31,11 @@
});
test('Wallet without BCH balance', () => {
- const testBCH = new BCHJS();
const component = renderer.create(
-
+
,
@@ -47,12 +45,11 @@
});
test('Wallet with BCH balances', () => {
- const testBCH = new BCHJS();
const component = renderer.create(
-
+
,
@@ -62,12 +59,11 @@
});
test('Wallet with BCH balances and tokens', () => {
- const testBCH = new BCHJS();
const component = renderer.create(
-
+
,
@@ -77,14 +73,13 @@
});
test('Wallet with BCH balances and tokens and state field', () => {
- const testBCH = new BCHJS();
const component = renderer.create(
-
+
,
@@ -99,12 +94,11 @@
balances: { totalBalance: 0 },
loading: false,
};
- const testBCH = new BCHJS();
const component = renderer.create(
-
+
,
diff --git a/web/cashtab/src/utils/__tests__/cashMethods.test.js b/web/cashtab/src/utils/__tests__/cashMethods.test.js
--- a/web/cashtab/src/utils/__tests__/cashMethods.test.js
+++ b/web/cashtab/src/utils/__tests__/cashMethods.test.js
@@ -1626,7 +1626,10 @@
});
it(`Converts a hash160 to an ecash address`, () => {
expect(
- hash160ToAddress('76458db0ed96fe9863fc1ccec9fa2cfab884b0f6'),
+ hash160ToAddress(
+ '76458db0ed96fe9863fc1ccec9fa2cfab884b0f6',
+ 'ecash',
+ ),
).toBe('ecash:qpmytrdsakt0axrrlswvaj069nat3p9s7cjctmjasj');
});
});
diff --git a/web/cashtab/src/utils/__tests__/chronik.test.js b/web/cashtab/src/utils/__tests__/chronik.test.js
--- a/web/cashtab/src/utils/__tests__/chronik.test.js
+++ b/web/cashtab/src/utils/__tests__/chronik.test.js
@@ -784,9 +784,6 @@
const chronik = new ChronikClient(
'https://FakeChronikUrlToEnsureMocksOnly.com',
);
- const BCH = new BCHJS({
- restURL: 'https://FakeBchApiUrlToEnsureMocksOnly.com',
- });
/*
Mock the API response from chronik.tx('tokenId') called
in returnGetTokenInfoChronikPromise -- for each tokenId used
@@ -797,19 +794,9 @@
.calledWith(mintingTxTabCash.txid)
.mockResolvedValue(mintingTxTabCash);
- // This function needs to be mocked as bch-js functions that require Buffer types do not work in jest environment
- BCH.Address.hash160ToCash = jest
- .fn()
- .mockReturnValue(mintingAddressBchFormatTabCash);
-
- expect(await getMintAddress(chronik, BCH, mintingTxTabCash.txid)).toBe(
+ expect(await getMintAddress(chronik, mintingTxTabCash.txid)).toBe(
mintingAddressTabCash,
);
-
- // spy on mintingHash160
- expect(BCH.Address.hash160ToCash).toHaveBeenCalledWith(
- mintingHash160TabCash,
- );
});
it(`getMintAddress successfully parses chronik.tx response to determine mint address for PoW token`, async () => {
@@ -817,9 +804,6 @@
const chronik = new ChronikClient(
'https://FakeChronikUrlToEnsureMocksOnly.com',
);
- const BCH = new BCHJS({
- restURL: 'https://FakeBchApiUrlToEnsureMocksOnly.com',
- });
/*
Mock the API response from chronik.tx('tokenId') called
in returnGetTokenInfoChronikPromise -- for each tokenId used
@@ -830,17 +814,9 @@
.calledWith(mintingTxPoW.txid)
.mockResolvedValue(mintingTxPoW);
- // This function needs to be mocked as bch-js functions that require Buffer types do not work in jest environment
- BCH.Address.hash160ToCash = jest
- .fn()
- .mockReturnValue(mintingAddressBchFormatPoW);
-
- expect(await getMintAddress(chronik, BCH, mintingTxPoW.txid)).toBe(
+ expect(await getMintAddress(chronik, mintingTxPoW.txid)).toBe(
mintingAddressPoW,
);
-
- // spy on mintingHash160
- expect(BCH.Address.hash160ToCash).toHaveBeenCalledWith(mintingHash160PoW);
});
it(`getMintAddress successfully parses chronik.tx response to determine mint address for Alita token`, async () => {
@@ -848,9 +824,7 @@
const chronik = new ChronikClient(
'https://FakeChronikUrlToEnsureMocksOnly.com',
);
- const BCH = new BCHJS({
- restURL: 'https://FakeBchApiUrlToEnsureMocksOnly.com',
- });
+
/*
Mock the API response from chronik.tx('tokenId') called
in returnGetTokenInfoChronikPromise -- for each tokenId used
@@ -861,17 +835,9 @@
.calledWith(mintingTxAlita.txid)
.mockResolvedValue(mintingTxAlita);
- // This function needs to be mocked as bch-js functions that require Buffer types do not work in jest environment
- BCH.Address.hash160ToCash = jest
- .fn()
- .mockReturnValue(mintingAddressBchFormatAlita);
-
- expect(await getMintAddress(chronik, BCH, mintingTxAlita.txid)).toBe(
+ expect(await getMintAddress(chronik, mintingTxAlita.txid)).toBe(
mintingAddressAlita,
);
-
- // spy on mintingHash160
- expect(BCH.Address.hash160ToCash).toHaveBeenCalledWith(mintingHash160Alita);
});
it(`getMintAddress successfully parses chronik.tx response to determine mint address for a BUX self minted token`, async () => {
@@ -879,9 +845,7 @@
const chronik = new ChronikClient(
'https://FakeChronikUrlToEnsureMocksOnly.com',
);
- const BCH = new BCHJS({
- restURL: 'https://FakeBchApiUrlToEnsureMocksOnly.com',
- });
+
/*
Mock the API response from chronik.tx('tokenId') called
in returnGetTokenInfoChronikPromise -- for each tokenId used
@@ -892,17 +856,7 @@
.calledWith(mintingTxBuxSelfMint.txid)
.mockResolvedValue(mintingTxBuxSelfMint);
- // This function needs to be mocked as bch-js functions that require Buffer types do not work in jest environment
- BCH.Address.hash160ToCash = jest
- .fn()
- .mockReturnValue(mintingAddressBchFormatBuxSelfMint);
-
- expect(await getMintAddress(chronik, BCH, mintingTxBuxSelfMint.txid)).toBe(
+ expect(await getMintAddress(chronik, mintingTxBuxSelfMint.txid)).toBe(
mintingAddressBuxSelfMint,
);
-
- // spy on mintingHash160
- expect(BCH.Address.hash160ToCash).toHaveBeenCalledWith(
- mintingHash160BuxSelfMint,
- );
});
diff --git a/web/cashtab/src/utils/cashMethods.js b/web/cashtab/src/utils/cashMethods.js
--- a/web/cashtab/src/utils/cashMethods.js
+++ b/web/cashtab/src/utils/cashMethods.js
@@ -1149,7 +1149,7 @@
);
};
-export const hash160ToAddress = hash160 => {
+export const hash160ToAddress = (hash160, prefix) => {
const buffer = Buffer.from(hash160, 'hex');
// Because ecashaddrjs only accepts Uint8Array as input type, convert
@@ -1160,7 +1160,7 @@
}
// Encode ecash: address
- const ecashAddr = cashaddr.encode('ecash', 'P2PKH', hash160Uint8Array);
+ const ecashAddr = cashaddr.encode(prefix, 'P2PKH', hash160Uint8Array);
return ecashAddr;
};
diff --git a/web/cashtab/src/utils/chronik.js b/web/cashtab/src/utils/chronik.js
--- a/web/cashtab/src/utils/chronik.js
+++ b/web/cashtab/src/utils/chronik.js
@@ -8,6 +8,7 @@
getUtxoWif,
convertEcashtoEtokenAddr,
convertToEcashPrefix,
+ hash160ToAddress,
} from 'utils/cashMethods';
import ecies from 'ecies-lite';
import wif from 'wif';
@@ -913,7 +914,7 @@
};
};
-export const getMintAddress = async (chronik, BCH, tokenId) => {
+export const getMintAddress = async (chronik, tokenId) => {
let genesisTx;
let mintingHash160;
try {
@@ -939,15 +940,8 @@
);
}
}
- const mintingAdressBchFormat =
- BCH.Address.hash160ToCash(mintingHash160);
- const mintEcashAddressChronik = convertToEcashPrefix(
- mintingAdressBchFormat,
- );
- const mintEtokenAddressChronik = convertEcashtoEtokenAddr(
- mintEcashAddressChronik,
- );
- return mintEtokenAddressChronik;
+
+ return hash160ToAddress(mintingHash160, 'etoken');
} catch (err) {
console.log(`Error in getMintAddress`, err);
return err;