Skip to content

Commit 62fc87e

Browse files
committed
Update aar file,add export wif function and Optimize some functions.
1 parent 95ed402 commit 62fc87e

14 files changed

Lines changed: 469 additions & 13 deletions

File tree

app/libs/Obdmobile.aar

292 KB
Binary file not shown.

app/src/main/java/com/omni/wallet/view/dialog/CreateChannelDialog.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ public class CreateChannelDialog implements Wallet.ScanChannelListener {
8080
private AlertDialog mAlertDialog;
8181
TextView localEdit;
8282
TextView channelAmountTv;
83+
TextView maxAmountTv;
8384
TextView channelFeeTv;
8485
TextView feePerByteTv;
8586
SelectSpeedPopupWindow mSelectSpeedPopupWindow;
@@ -336,6 +337,7 @@ private void showStepTwo() {
336337
EditText channelAmountEdit = mAlertDialog.findViewById(R.id.edit_channel_amount);
337338
channelAmountEdit.addTextChangedListener(new DecimalInputTextWatcher(DecimalInputTextWatcher.Type.decimal, 8));
338339
channelAmountTv = mAlertDialog.findViewById(R.id.tv_channel_amount);
340+
maxAmountTv = mAlertDialog.findViewById(R.id.tv_amount_max);
339341
channelFeeTv = mAlertDialog.findViewById(R.id.tv_channel_fee);
340342
feePerByteTv = mAlertDialog.findViewById(R.id.tv_fee_per_byte);
341343
Button amountUnitButton = mAlertDialog.findViewById(R.id.btn_amount_unit);
@@ -504,6 +506,7 @@ public void onItemClick(View view, ListAssetItemEntity item) {
504506
DecimalFormat df = new DecimalFormat("0.00######");
505507
assetBalanceMax = df.format(Double.parseDouble(String.valueOf(item.getAmount())) / 100000000);
506508
}
509+
maxAmountTv.setText(assetBalanceMax);
507510
channelAmountEdit.setText("");
508511
channelAmountTv.setText("0");
509512
if (!StringUtils.isEmpty(channelAmountEdit.getText().toString())) {
@@ -518,6 +521,17 @@ public void onItemClick(View view, ListAssetItemEntity item) {
518521
mSelectAssetUnitPopupWindow.show(v);
519522
}
520523
});
524+
/**
525+
* @描述: 增加MAX按钮的点击事件,点击将balance的值填入amount输入框中
526+
* @Description: Add the click event of MAX button, click to fill the balance value into the amount input box
527+
*/
528+
TextView maxTv = mAlertDialog.findViewById(R.id.tv_channel_max);
529+
maxTv.setOnClickListener(new View.OnClickListener() {
530+
@Override
531+
public void onClick(View v) {
532+
channelAmountEdit.setText(assetBalanceMax);
533+
}
534+
});
521535
/**
522536
* @描述: 点击back
523537
* @desc: click back button
@@ -915,6 +929,7 @@ public void run() {
915929
DecimalFormat df = new DecimalFormat("0.00######");
916930
assetBalanceMax = df.format(Double.parseDouble(String.valueOf(resp.getConfirmedBalance())) / 100000000);
917931
}
932+
maxAmountTv.setText(assetBalanceMax);
918933
}
919934
});
920935
} catch (InvalidProtocolBufferException e) {
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
package com.omni.wallet.view.dialog;
2+
3+
import android.content.Context;
4+
import android.os.Handler;
5+
import android.os.Looper;
6+
import android.text.method.HideReturnsTransformationMethod;
7+
import android.text.method.PasswordTransformationMethod;
8+
import android.view.View;
9+
import android.widget.EditText;
10+
import android.widget.ImageView;
11+
import android.widget.TextView;
12+
13+
import com.google.protobuf.InvalidProtocolBufferException;
14+
import com.omni.wallet.R;
15+
import com.omni.wallet.baselibrary.dialog.AlertDialog;
16+
import com.omni.wallet.baselibrary.utils.LogUtils;
17+
import com.omni.wallet.baselibrary.utils.StringUtils;
18+
import com.omni.wallet.baselibrary.utils.ToastUtils;
19+
import com.omni.wallet.framelibrary.entity.User;
20+
import com.omni.wallet.utils.CopyUtil;
21+
import com.omni.wallet.utils.SecretAESOperator;
22+
23+
import lnrpc.LightningOuterClass;
24+
import obdmobile.Callback;
25+
import obdmobile.Obdmobile;
26+
27+
/**
28+
* 汉: 导出WIF的弹窗
29+
* En: ExportWifDialog
30+
* author: guoyalei
31+
* date: 2023/6/13
32+
*/
33+
public class ExportWifDialog {
34+
private static final String TAG = ExportWifDialog.class.getSimpleName();
35+
private Context mContext;
36+
private AlertDialog mAlertDialog;
37+
private boolean mCanClick = false;
38+
String wifStr;
39+
40+
public ExportWifDialog(Context context) {
41+
this.mContext = context;
42+
}
43+
44+
public void show() {
45+
if (mAlertDialog == null) {
46+
mAlertDialog = new AlertDialog.Builder(mContext, R.style.dialog_translucent_theme)
47+
.setContentView(R.layout.layout_dialog_export_wif)
48+
.setAnimation(R.style.popup_anim_style)
49+
.fullWidth()
50+
.fullHeight()
51+
.create();
52+
}
53+
EditText mPwdEdit = mAlertDialog.findViewById(R.id.password_input);
54+
mPwdEdit.setTransformationMethod(PasswordTransformationMethod.getInstance());
55+
mAlertDialog.findViewById(R.id.btn_unlock).setOnClickListener(v -> unlockWallet());
56+
mAlertDialog.findViewById(R.id.pass_switch).setOnClickListener(v -> {
57+
ImageView mPwdEyeIv = mAlertDialog.findViewById(R.id.pass_switch);
58+
if (mCanClick) {
59+
mCanClick = false;
60+
mPwdEyeIv.setImageResource(R.mipmap.icon_eye_open);
61+
//显示密码(show password)
62+
mPwdEdit.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
63+
} else {
64+
mCanClick = true;
65+
mPwdEyeIv.setImageResource(R.mipmap.icon_eye_close);
66+
//隐藏密码(hide password)
67+
mPwdEdit.setTransformationMethod(PasswordTransformationMethod.getInstance());
68+
}
69+
});
70+
/**
71+
* @描述: 点击 close
72+
* @desc: click close button
73+
*/
74+
mAlertDialog.findViewById(R.id.layout_close).setOnClickListener(new View.OnClickListener() {
75+
@Override
76+
public void onClick(View v) {
77+
mAlertDialog.dismiss();
78+
}
79+
});
80+
if (mAlertDialog.isShowing()) {
81+
mAlertDialog.dismiss();
82+
}
83+
mAlertDialog.show();
84+
}
85+
86+
private void unlockWallet() {
87+
EditText mPwdEdit = mAlertDialog.findViewById(R.id.password_input);
88+
String passwordString = mPwdEdit.getText().toString();
89+
String newSecretString = SecretAESOperator.getInstance().encrypt(passwordString);
90+
boolean passIsMatched = checkedPassMatched(newSecretString);
91+
if (passIsMatched) {
92+
showWif();
93+
} else {
94+
String toastString = mContext.getResources().getString(R.string.toast_unlock_error);
95+
ToastUtils.showToast(mContext, toastString);
96+
}
97+
}
98+
99+
private void showWif() {
100+
mAlertDialog.findViewById(R.id.layout_unlock).setVisibility(View.GONE);
101+
mAlertDialog.findViewById(R.id.layout_wif).setVisibility(View.VISIBLE);
102+
TextView wifTv = mAlertDialog.findViewById(R.id.tv_wif);
103+
LightningOuterClass.DumpPrivkeyRequest dumpPrivkeyRequest = LightningOuterClass.DumpPrivkeyRequest.newBuilder()
104+
.setAddress(User.getInstance().getWalletAddress(mContext))
105+
.build();
106+
Obdmobile.oB_DumpPrivkey(dumpPrivkeyRequest.toByteArray(), new Callback() {
107+
@Override
108+
public void onError(Exception e) {
109+
LogUtils.e(TAG, "------------------dumpPrivkeyOnError------------------" + e.getMessage());
110+
}
111+
112+
@Override
113+
public void onResponse(byte[] bytes) {
114+
if (bytes == null) {
115+
return;
116+
}
117+
try {
118+
LightningOuterClass.DumpPrivkeyResponse resp = LightningOuterClass.DumpPrivkeyResponse.parseFrom(bytes);
119+
LogUtils.e(TAG, "------------------dumpPrivkeyOnResponse------------------" + resp.toString());
120+
new Handler(Looper.getMainLooper()).post(new Runnable() {
121+
@Override
122+
public void run() {
123+
wifStr = resp.getKeyWif();
124+
wifTv.setText(wifStr);
125+
}
126+
});
127+
} catch (InvalidProtocolBufferException e) {
128+
e.printStackTrace();
129+
}
130+
}
131+
});
132+
mAlertDialog.findViewById(R.id.iv_copy_wif).setOnClickListener(new View.OnClickListener() {
133+
@Override
134+
public void onClick(View v) {
135+
if (StringUtils.isEmpty(wifStr)) {
136+
ToastUtils.showToast(mContext, "WIF is empty");
137+
return;
138+
}
139+
//接收需要复制到粘贴板的地址
140+
//Get the address which will copy to clipboard
141+
String toCopyAddress = wifStr;
142+
//接收需要复制成功的提示语
143+
//Get the notice when you copy success
144+
String toastString = "Already copy the WIF to clipboard!";
145+
CopyUtil.SelfCopy(mContext, toCopyAddress, toastString);
146+
}
147+
});
148+
}
149+
150+
public boolean checkedPassMatched(String inputPass) {
151+
boolean isMatched;
152+
String localPass = User.getInstance().getPasswordMd5(mContext);
153+
isMatched = inputPass.equals(localPass);
154+
return isMatched;
155+
}
156+
157+
public void release() {
158+
if (mAlertDialog != null) {
159+
mAlertDialog.dismiss();
160+
mAlertDialog = null;
161+
}
162+
}
163+
}

app/src/main/java/com/omni/wallet/view/popupwindow/Menu1PopupWindow.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.omni.wallet.entity.event.BackUpEvent;
2525
import com.omni.wallet.framelibrary.entity.User;
2626
import com.omni.wallet.ui.activity.channel.ChannelsActivity;
27+
import com.omni.wallet.view.dialog.ExportWifDialog;
2728
import com.omni.wallet.view.dialog.LoadingDialog;
2829
import com.omni.wallet.view.dialog.NewVersionDialog;
2930
import com.omni.wallet.view.dialog.UnlockDialog;
@@ -147,6 +148,15 @@ public void onClick(View v) {
147148
ToastUtils.showToast(mContext, "Not yet open, please wait");
148149
}
149150
});
151+
// Export WIF
152+
rootView.findViewById(R.id.layout_export_wif).setOnClickListener(new View.OnClickListener() {
153+
@Override
154+
public void onClick(View v) {
155+
mMenuPopWindow.dismiss();
156+
ExportWifDialog mExportWifDialog = new ExportWifDialog(mContext);
157+
mExportWifDialog.show();
158+
}
159+
});
150160
// node_info
151161
rootView.findViewById(R.id.layout_node_info).setOnClickListener(new View.OnClickListener() {
152162
@Override
@@ -156,7 +166,7 @@ public void onClick(View v) {
156166
mNodeInfoPopupWindow.show(view, pubKey);
157167
}
158168
});
159-
// select directory
169+
// select directory
160170
rootView.findViewById(R.id.backup_directory_select).setOnClickListener(new View.OnClickListener() {
161171
@Override
162172
public void onClick(View v) {

app/src/main/java/com/omni/wallet/view/popupwindow/Menu2PopupWindow.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.omni.wallet.entity.event.BackUpEvent;
2525
import com.omni.wallet.framelibrary.entity.User;
2626
import com.omni.wallet.ui.activity.channel.ChannelsActivity;
27+
import com.omni.wallet.view.dialog.ExportWifDialog;
2728
import com.omni.wallet.view.dialog.LoadingDialog;
2829
import com.omni.wallet.view.dialog.NewVersionDialog;
2930
import com.omni.wallet.view.dialog.UnlockDialog;
@@ -147,6 +148,15 @@ public void onClick(View v) {
147148
ToastUtils.showToast(mContext, "Not yet open, please wait");
148149
}
149150
});
151+
// Export WIF
152+
rootView.findViewById(R.id.layout_export_wif).setOnClickListener(new View.OnClickListener() {
153+
@Override
154+
public void onClick(View v) {
155+
mMenuPopWindow.dismiss();
156+
ExportWifDialog mExportWifDialog = new ExportWifDialog(mContext);
157+
mExportWifDialog.show();
158+
}
159+
});
150160
// node_info
151161
rootView.findViewById(R.id.layout_node_info).setOnClickListener(new View.OnClickListener() {
152162
@Override
@@ -156,7 +166,7 @@ public void onClick(View v) {
156166
mNodeInfoPopupWindow.show(view, pubKey);
157167
}
158168
});
159-
// select directory
169+
// select directory
160170
rootView.findViewById(R.id.backup_directory_select).setOnClickListener(new View.OnClickListener() {
161171
@Override
162172
public void onClick(View v) {

app/src/main/java/com/omni/wallet/view/popupwindow/MenuPopupWindow.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.omni.wallet.entity.event.BackUpEvent;
2525
import com.omni.wallet.framelibrary.entity.User;
2626
import com.omni.wallet.ui.activity.channel.ChannelsActivity;
27+
import com.omni.wallet.view.dialog.ExportWifDialog;
2728
import com.omni.wallet.view.dialog.LoadingDialog;
2829
import com.omni.wallet.view.dialog.NewVersionDialog;
2930
import com.omni.wallet.view.dialog.UnlockDialog;
@@ -145,6 +146,15 @@ public void onClick(View v) {
145146
ToastUtils.showToast(mContext, "Not yet open, please wait");
146147
}
147148
});
149+
// Export WIF
150+
rootView.findViewById(R.id.layout_export_wif).setOnClickListener(new View.OnClickListener() {
151+
@Override
152+
public void onClick(View v) {
153+
mMenuPopWindow.dismiss();
154+
ExportWifDialog mExportWifDialog = new ExportWifDialog(mContext);
155+
mExportWifDialog.show();
156+
}
157+
});
148158
// node_info
149159
rootView.findViewById(R.id.layout_node_info).setOnClickListener(new View.OnClickListener() {
150160
@Override
@@ -154,7 +164,7 @@ public void onClick(View v) {
154164
mNodeInfoPopupWindow.show(view, pubKey);
155165
}
156166
});
157-
// select directory
167+
// select directory
158168
rootView.findViewById(R.id.backup_directory_select).setOnClickListener(new View.OnClickListener() {
159169
@Override
160170
public void onClick(View v) {

0 commit comments

Comments
 (0)