Adds webpack config to use env var
Updates env example Adds unlockWalletWithFormaticProvider on connect
This commit is contained in:
@@ -6,4 +6,5 @@ INSTANT_INFURA_PROJECT_ID_PRODUCTION=
|
|||||||
INSTANT_INFURA_PROJECT_ID_DEVELOPMENT=
|
INSTANT_INFURA_PROJECT_ID_DEVELOPMENT=
|
||||||
# if you want to report to heap or rollbar when building in development mode, you can use the following:
|
# if you want to report to heap or rollbar when building in development mode, you can use the following:
|
||||||
# INSTANT_HEAP_FORCE_DEVELOPMENT=true
|
# INSTANT_HEAP_FORCE_DEVELOPMENT=true
|
||||||
# INSTANT_ROLLBAR_FORCE_DEVELOPMENT=true
|
# INSTANT_ROLLBAR_FORCE_DEVELOPMENT=true
|
||||||
|
INSTANT_FORTMATIC_API_KEY=
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ import { PaymentMethod, PaymentMethodProps } from '../components/payment_method'
|
|||||||
import {
|
import {
|
||||||
COINBASE_WALLET_ANDROID_APP_STORE_URL,
|
COINBASE_WALLET_ANDROID_APP_STORE_URL,
|
||||||
COINBASE_WALLET_IOS_APP_STORE_URL,
|
COINBASE_WALLET_IOS_APP_STORE_URL,
|
||||||
COINBASE_WALLET_SITE_URL, FORTMATIC_API_KEY,
|
COINBASE_WALLET_SITE_URL,
|
||||||
|
FORTMATIC_API_KEY, LOADING_ACCOUNT,
|
||||||
} from '../constants';
|
} from '../constants';
|
||||||
import { Action, actions } from '../redux/actions';
|
import { Action, actions } from '../redux/actions';
|
||||||
import { asyncData } from '../redux/async_data';
|
import { asyncData } from '../redux/async_data';
|
||||||
@@ -23,7 +24,6 @@ import {
|
|||||||
} from '../types';
|
} from '../types';
|
||||||
import { analytics } from '../util/analytics';
|
import { analytics } from '../util/analytics';
|
||||||
import { envUtil } from '../util/env';
|
import { envUtil } from '../util/env';
|
||||||
import { providerFactory } from '../util/provider_factory';
|
|
||||||
|
|
||||||
export interface ConnectedAccountPaymentMethodProps {}
|
export interface ConnectedAccountPaymentMethodProps {}
|
||||||
|
|
||||||
@@ -37,6 +37,7 @@ interface ConnectedState {
|
|||||||
interface ConnectedDispatch {
|
interface ConnectedDispatch {
|
||||||
openInstallWalletPanel: () => void;
|
openInstallWalletPanel: () => void;
|
||||||
unlockWalletAndDispatchToStore: (providerState: ProviderState, providerType?: ProviderType) => void;
|
unlockWalletAndDispatchToStore: (providerState: ProviderState, providerType?: ProviderType) => void;
|
||||||
|
unlockWalletWithFormaticProvider: (providerState: ProviderState) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
type ConnectedProps = Omit<PaymentMethodProps, keyof ConnectedAccountPaymentMethodProps>;
|
type ConnectedProps = Omit<PaymentMethodProps, keyof ConnectedAccountPaymentMethodProps>;
|
||||||
@@ -55,41 +56,29 @@ const mapDispatchToProps = (
|
|||||||
ownProps: ConnectedAccountPaymentMethodProps,
|
ownProps: ConnectedAccountPaymentMethodProps,
|
||||||
): ConnectedDispatch => ({
|
): ConnectedDispatch => ({
|
||||||
openInstallWalletPanel: () => dispatch(actions.openStandardSlidingPanel(StandardSlidingPanelContent.InstallWallet)),
|
openInstallWalletPanel: () => dispatch(actions.openStandardSlidingPanel(StandardSlidingPanelContent.InstallWallet)),
|
||||||
unlockWalletAndDispatchToStore: (providerState: ProviderState, providerType?: ProviderType) => {
|
unlockWalletAndDispatchToStore: (providerState: ProviderState) => {
|
||||||
analytics.trackAccountUnlockRequested();
|
analytics.trackAccountUnlockRequested();
|
||||||
let newProviderState: ProviderState = {
|
// tslint:disable-next-line:no-floating-promises
|
||||||
...providerState,
|
asyncData.fetchAccountInfoAndDispatchToStore(providerState, dispatch, true);
|
||||||
|
},
|
||||||
|
unlockWalletWithFormaticProvider: (providerState: ProviderState) => {
|
||||||
|
// Sets fortmatic as the new provider and updates the state
|
||||||
|
const web3Wrapper = providerState.web3Wrapper;
|
||||||
|
const fm = new Fortmatic(FORTMATIC_API_KEY);
|
||||||
|
const fmProvider = fm.getProvider();
|
||||||
|
web3Wrapper.setProvider(fmProvider);
|
||||||
|
const newProviderState = {
|
||||||
|
name: envUtil.getProviderName(fmProvider),
|
||||||
|
displayName: envUtil.getProviderDisplayName(fmProvider),
|
||||||
|
provider: fmProvider,
|
||||||
|
web3Wrapper,
|
||||||
|
assetBuyer: providerState.assetBuyer,
|
||||||
|
account: LOADING_ACCOUNT,
|
||||||
};
|
};
|
||||||
// Updates the provider state based on the provider type
|
|
||||||
if (providerType && providerType === ProviderType.Fortmatic) {
|
|
||||||
const web3Wrapper = providerState.web3Wrapper;
|
|
||||||
const fm = new Fortmatic(FORTMATIC_API_KEY);
|
|
||||||
const fmProvider = fm.getProvider();
|
|
||||||
web3Wrapper.setProvider(fmProvider);
|
|
||||||
newProviderState = {
|
|
||||||
...newProviderState,
|
|
||||||
provider: fmProvider,
|
|
||||||
web3Wrapper,
|
|
||||||
displayName: envUtil.getProviderDisplayName(fmProvider),
|
|
||||||
name: envUtil.getProviderName(fmProvider),
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
// As default uses the injected provider
|
|
||||||
const injected = providerFactory.getInjectedProviderIfExists();
|
|
||||||
const web3Wrapper = providerState.web3Wrapper;
|
|
||||||
if (injected) {
|
|
||||||
web3Wrapper.setProvider(injected);
|
|
||||||
newProviderState = {
|
|
||||||
...newProviderState,
|
|
||||||
provider: injected,
|
|
||||||
web3Wrapper,
|
|
||||||
displayName: envUtil.getProviderDisplayName(injected),
|
|
||||||
name: envUtil.getProviderName(injected),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Updates provider state
|
// Updates provider state
|
||||||
dispatch(actions.setProviderState(newProviderState));
|
dispatch(actions.setProviderState(newProviderState));
|
||||||
|
// Unlocks wallet
|
||||||
|
analytics.trackAccountUnlockRequested();
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
asyncData.fetchAccountInfoAndDispatchToStore(newProviderState, dispatch, true);
|
asyncData.fetchAccountInfoAndDispatchToStore(newProviderState, dispatch, true);
|
||||||
},
|
},
|
||||||
@@ -132,6 +121,7 @@ const mergeProps = (
|
|||||||
window.open(url, '_blank');
|
window.open(url, '_blank');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
onUnlockWalletWithFortmaticProvider: () => connectedDispatch.unlockWalletWithFormaticProvider(connectedState.providerState),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const ConnectedAccountPaymentMethod: React.ComponentClass<ConnectedAccountPaymentMethodProps> = connect(
|
export const ConnectedAccountPaymentMethod: React.ComponentClass<ConnectedAccountPaymentMethodProps> = connect(
|
||||||
|
|||||||
@@ -94,12 +94,15 @@ const generateConfig = (dischargeTarget, heapConfigOptions, rollbarConfigOptions
|
|||||||
? process.env.INSTANT_INFURA_PROJECT_ID_PRODUCTION
|
? process.env.INSTANT_INFURA_PROJECT_ID_PRODUCTION
|
||||||
: process.env.INSTANT_INFURA_PROJECT_ID_DEVELOPMENT;
|
: process.env.INSTANT_INFURA_PROJECT_ID_DEVELOPMENT;
|
||||||
|
|
||||||
|
const fortmaticApiKey = process.env.INSTANT_FORTMATIC_API_KEY;
|
||||||
|
|
||||||
const envVars = {
|
const envVars = {
|
||||||
GIT_SHA: JSON.stringify(GIT_SHA),
|
GIT_SHA: JSON.stringify(GIT_SHA),
|
||||||
NPM_PACKAGE_VERSION: JSON.stringify(process.env.npm_package_version),
|
NPM_PACKAGE_VERSION: JSON.stringify(process.env.npm_package_version),
|
||||||
ROLLBAR_ENABLED: rollbarEnabled,
|
ROLLBAR_ENABLED: rollbarEnabled,
|
||||||
HEAP_ENABLED: heapEnabled,
|
HEAP_ENABLED: heapEnabled,
|
||||||
INSTANT_INFURA_PROJECT_ID: JSON.stringify(infuraProjectId),
|
INSTANT_INFURA_PROJECT_ID: JSON.stringify(infuraProjectId),
|
||||||
|
INSTANT_FORTMATIC_API_KEY: fortmaticApiKey,
|
||||||
};
|
};
|
||||||
if (dischargeTarget) {
|
if (dischargeTarget) {
|
||||||
envVars.INSTANT_DISCHARGE_TARGET = JSON.stringify(dischargeTarget);
|
envVars.INSTANT_DISCHARGE_TARGET = JSON.stringify(dischargeTarget);
|
||||||
|
|||||||
Reference in New Issue
Block a user