diff --git a/app/src/main/java/io/multy/ui/adapters/PortfoliosAdapter.java b/app/src/main/java/io/multy/ui/adapters/PortfoliosAdapter.java index 813370ea..04ee50d1 100644 --- a/app/src/main/java/io/multy/ui/adapters/PortfoliosAdapter.java +++ b/app/src/main/java/io/multy/ui/adapters/PortfoliosAdapter.java @@ -17,13 +17,13 @@ import org.greenrobot.eventbus.EventBus; -import butterknife.BindView; -import butterknife.ButterKnife; import io.multy.Multy; import io.multy.R; import io.multy.model.entities.OpenDragonsEvent; import io.multy.ui.fragments.dialogs.DonateDialog; import io.multy.util.Constants; +import io.multy.util.analytics.Analytics; +import io.multy.util.analytics.AnalyticsConstants; /** * Created by appscrunch on 16.11.17. @@ -87,6 +87,7 @@ public Object instantiateItem(@NonNull ViewGroup container, int position) { v.setEnabled(false); v.postDelayed(() -> v.setEnabled(true), 500); if (position == 0) { + Analytics.getInstance(v.getContext()).logEvent(AnalyticsConstants.MAIN_SCREEN, AnalyticsConstants.DRAGONS_BANNER_CLICK, null); EventBus.getDefault().post(new OpenDragonsEvent()); } else { DonateDialog.getInstance((Integer) v.getTag()).show(fragmentManager, DonateDialog.TAG); diff --git a/app/src/main/java/io/multy/ui/fragments/Web3Fragment.java b/app/src/main/java/io/multy/ui/fragments/Web3Fragment.java index 50367a39..94f701ed 100644 --- a/app/src/main/java/io/multy/ui/fragments/Web3Fragment.java +++ b/app/src/main/java/io/multy/ui/fragments/Web3Fragment.java @@ -47,6 +47,8 @@ import io.multy.util.Constants; import io.multy.util.CryptoFormatUtils; import io.multy.util.NativeDataHelper; +import io.multy.util.analytics.Analytics; +import io.multy.util.analytics.AnalyticsConstants; import io.multy.viewmodels.WalletViewModel; import io.realm.RealmResults; import okhttp3.ResponseBody; @@ -101,6 +103,12 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c return convertView; } + @Override + public void onResume() { + super.onResume(); + Analytics.getInstance(requireContext()).logEvent(AnalyticsConstants.WEB3_SCREEN, AnalyticsConstants.BROWSER_OPEN + dappUrl, dappUrl); + } + @Override public void onDestroy() { // if (requireActivity().getIntent().hasExtra(Constants.EXTRA_URL)) { @@ -292,7 +300,7 @@ void onDestroy() { } private void initState() { - webView.setRpcUrl("https://rinkeby.infura.io/v3/78ae782ed28e48c0b3f74ca69c4f7ca8"); +// webView.setRpcUrl("https://rinkeby.infura.io/v3/78ae782ed28e48c0b3f74ca69c4f7ca8"); webView.requestFocus(); webView.setOnSignMessageListener(message -> { Timber.d("onSignMessage:" + message.value); @@ -324,15 +332,18 @@ private void initState() { final String finalPriceAmount = priceAmount; AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create(); - alertDialog.setMessage("You are going to spend " + CryptoFormatUtils.weiToEthLabel(finalPriceAmount) + - " (and " + ethPrice + " in fees) from wallet " + viewModel.getWalletLive().getValue().getWalletName()); - alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "Confirm", (dialog, which) -> { + String message = String.format(getString(R.string.you_going_spend), CryptoFormatUtils.weiToEthLabel(finalPriceAmount), + ethPrice, viewModel.getWalletLive().getValue().getWalletName()); + alertDialog.setMessage(message); + alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, getString(R.string.confirmation), (dialog, which) -> { try { Wallet wallet = viewModel.getWalletLive().getValue(); byte[] seed = RealmManager.getSettingsDao().getSeed().getSeed(); + final int currencyId = wallet.getCurrencyId(); + final int networkId = wallet.getNetworkId(); final byte[] tx = NativeDataHelper.makeTransactionEthPayload(seed, wallet.getIndex(), wallet.getActiveAddress().getIndex(), - wallet.getCurrencyId(), wallet.getNetworkId(), wallet.getBalance(), finalPriceAmount, - transaction.recipient.toString(), String.valueOf(transaction.gasLimit), transaction.gasPrice.toString(), wallet.getEthWallet().getNonce(), transaction.payload.replace("0x", "")); + currencyId, networkId, wallet.getBalance(), finalPriceAmount, transaction.recipient.toString(), String.valueOf(transaction.gasLimit), + transaction.gasPrice.toString(), wallet.getEthWallet().getNonce(), transaction.payload.replace("0x", "")); Timber.i("start converting to hex"); final String hex = "0x" + SendSummaryFragment.byteArrayToHex(tx); Timber.i("hex converted " + hex); @@ -350,6 +361,10 @@ private void initState() { public void onResponse(@NonNull Call call, @NonNull Response response) { if (response.isSuccessful()) { Timber.i("BUYING SUCCESS"); + if (getContext() != null) { + Analytics.getInstance(getContext()).logBrowserSendTx(dappUrl, currencyId, networkId, finalPriceAmount, + String.valueOf(transaction.gasLimit), transaction.gasPrice.toString()); + } } else { Timber.i("BUYING FAIL"); webView.onSignError(transaction, response.message()); @@ -369,7 +384,7 @@ public void onFailure(@NonNull Call call, @NonNull Throwable t) { webView.onSignError(transaction, e.getMessage()); } }); - alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Deny", new DialogInterface.OnClickListener() { + alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, getString(R.string.deny), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { webView.onSignError(transaction, "Canceled"); @@ -391,7 +406,7 @@ private void setWallet(long walletId) { Wallet wallet = viewModel.getWallet(walletId); fillWalletInfo(wallet); webView.setWalletAddress(new Address(wallet.getActiveAddress().getAddress())); - webView.setRpcUrl(wallet.getNetworkId() == NativeDataHelper.NetworkId.TEST_NET.getValue() ? + webView.setRpcUrl(wallet.getNetworkId() == NativeDataHelper.NetworkId.RINKEBY.getValue() ? "https://rinkeby.infura.io/v3/78ae782ed28e48c0b3f74ca69c4f7ca8" : "https://mainnet.infura.io/v3/78ae782ed28e48c0b3f74ca69c4f7ca8"); webView.setChainId(wallet.getNetworkId()); } diff --git a/app/src/main/java/io/multy/util/analytics/Analytics.java b/app/src/main/java/io/multy/util/analytics/Analytics.java index d91f111a..75453c67 100644 --- a/app/src/main/java/io/multy/util/analytics/Analytics.java +++ b/app/src/main/java/io/multy/util/analytics/Analytics.java @@ -393,6 +393,17 @@ public void logContactPhoneBook() { logEvent(AnalyticsConstants.CONTACT_EVENT, AnalyticsConstants.CONTACT_PHONEBOOK_OPENED, null); } + public void logBrowserSendTx(String url, int currencyId, int networkId, String amount, String gasLimit, String gasPrice) { + Bundle bundle = new Bundle(); + bundle.putString(AnalyticsConstants.BROWSER_URL, url); + bundle.putInt(AnalyticsConstants.CURRENCY_ID, currencyId); + bundle.putInt(AnalyticsConstants.NETWORK_ID, networkId); + bundle.putString(AnalyticsConstants.AMOUNT, amount); + bundle.putString(AnalyticsConstants.GAS_LIMIT, gasPrice); + bundle.putString(AnalyticsConstants.GAS_PRICE, gasLimit); + analytics.logEvent(AnalyticsConstants.WEB3_SCREEN, bundle); + } + public void logEvent(String event, String argumentName, String argument) { Bundle bundle = new Bundle(); bundle.putString(argumentName, argument); diff --git a/app/src/main/java/io/multy/util/analytics/AnalyticsConstants.java b/app/src/main/java/io/multy/util/analytics/AnalyticsConstants.java index 331d4587..37cd3725 100644 --- a/app/src/main/java/io/multy/util/analytics/AnalyticsConstants.java +++ b/app/src/main/java/io/multy/util/analytics/AnalyticsConstants.java @@ -265,4 +265,14 @@ public class AnalyticsConstants { public static final String KF_PERMISSIONS_GRANTED = "KF_Permissions_Granted"; public static final String KF_WALLET_COUNT = "KF_Wallets_Count"; public static final String KF_RECEIVED_TRANSACTION = "KF_Transaction_Received"; + + public static final String DRAGONS_BANNER_CLICK = "Dragon_Banner_Clicked"; + public static final String WEB3_SCREEN = "Screen_Browser"; + public static final String BROWSER_OPEN = "loading URL "; + public static final String BROWSER_URL = "URL"; + public static final String CURRENCY_ID = "Blockchain"; + public static final String NETWORK_ID = "NetType"; + public static final String AMOUNT = "Amount"; + public static final String GAS_LIMIT = "GasPrice"; + public static final String GAS_PRICE = "GasLimit"; } diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 5d3492f9..3d5807f2 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -316,4 +316,7 @@ Обратите внимание, что импортированные кошельки нельзя восстановить из seed фразы на другом устройстве. Вы должны сделать резервную копию своего личного ключа, чтобы защитить свои средства, поэтому вы можете импортировать его позже на другое устройство. Вы пытаетесь ввести сумму больше, чем у вас есть на счету Браузер + Вы потратите %s ETH (и %s ETH комиссии) из кошелька "%s" + Подтвердить + Отменить \ No newline at end of file diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 424dcd73..efc9d314 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -316,4 +316,7 @@ Імпортований гаманець Зверніть увагу, що імпортовані гаманці не можна відновити з seed фрази на іншому пристрої. Ви повинні зробити резервну копію свого особистого ключа, щоб захистити свої кошти, тому ви можете імпортувати його пізніше на інший пристрій. Ви намагаєтеся ввести суму більшу, ніж у вас є на рахунку + Ви витратите %s ETH (і %s ETH комісії) з гаманця "%s" + Затверджувати + Відкидати \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 65910638..d65f4d53 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -390,4 +390,7 @@ Please note that imported wallets can\'t be restored from seed phrase on other device. You should backup your private key in order to secure your funds, so you can import it later on other device. You trying to enter sum more then you have Browser + You are going to spend %s ETH (and %s ETH in fees) from wallet "%s" + Confirm + Deny