From 9696a774d5dd986844b82b5269c3e1d1e02f85c7 Mon Sep 17 00:00:00 2001 From: Javad Date: Tue, 27 Aug 2024 11:21:31 +0330 Subject: [PATCH 1/9] feat: support create Ed25519 in gtk --- .../assets/ui/dialog_wallet_create_address.ui | 25 +++++++++++++- cmd/gtk/dialog_wallet_create_address.go | 33 +++++++++++++++++-- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/cmd/gtk/assets/ui/dialog_wallet_create_address.ui b/cmd/gtk/assets/ui/dialog_wallet_create_address.ui index 1964b2bad..98fb9aee6 100644 --- a/cmd/gtk/assets/ui/dialog_wallet_create_address.ui +++ b/cmd/gtk/assets/ui/dialog_wallet_create_address.ui @@ -1,5 +1,5 @@ - + @@ -118,6 +118,29 @@ 1 + + + True + False + Wallet Password: + + + 0 + 2 + + + + + True + True + False + + + + 1 + 2 + + True diff --git a/cmd/gtk/dialog_wallet_create_address.go b/cmd/gtk/dialog_wallet_create_address.go index 399837d57..5015e2de7 100644 --- a/cmd/gtk/dialog_wallet_create_address.go +++ b/cmd/gtk/dialog_wallet_create_address.go @@ -21,11 +21,24 @@ func createAddress(ww *widgetWallet) { addressLabel := getEntryObj(builder, "id_entry_account_label") addressTypeCombo := getComboBoxTextObj(builder, "id_combo_address_type") - addressTypeCombo.Append(wallet.AddressTypeBLSAccount, "Account") + addressTypeCombo.Append(wallet.AddressTypeEd25519Account, "ED25519 Account") + addressTypeCombo.Append(wallet.AddressTypeBLSAccount, "BLS Account") addressTypeCombo.Append(wallet.AddressTypeValidator, "Validator") addressTypeCombo.SetActive(0) + getLabelObj(builder, "id_label_account_password") + passwordInput := getEntryObj(builder, "id_entry_account_password") + + addressTypeCombo.Connect("changed", func() { + activeID := addressTypeCombo.GetActiveID() + if activeID == wallet.AddressTypeEd25519Account { + passwordInput.SetSensitive(true) + } else { + passwordInput.SetSensitive(false) + } + }) + getButtonObj(builder, "id_button_ok").SetImage(OkIcon()) getButtonObj(builder, "id_button_cancel").SetImage(CancelIcon()) @@ -36,7 +49,23 @@ func createAddress(ww *widgetWallet) { walletAddressType := addressTypeCombo.GetActiveID() fatalErrorCheck(err) - if walletAddressType == wallet.AddressTypeBLSAccount { + password, err := passwordInput.GetText() + fatalErrorCheck(err) + + if walletAddressType == wallet.AddressTypeEd25519Account && password == "" { + passwordInput.SetName("entry_error") + + dialog := gtk.MessageDialogNew(dlg, gtk.DIALOG_MODAL, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, + "Password is required for ED25519 Account.") + dialog.Run() + dialog.Destroy() + passwordInput.SetSensitive(true) + return + } + + if walletAddressType == wallet.AddressTypeEd25519Account { + _, err = ww.model.wallet.NewEd25519AccountAddress(walletAddressLabel, password) + } else if walletAddressType == wallet.AddressTypeBLSAccount { _, err = ww.model.wallet.NewBLSAccountAddress(walletAddressLabel) } else if walletAddressType == wallet.AddressTypeValidator { _, err = ww.model.wallet.NewValidatorAddress(walletAddressLabel) From 9238d0ac85660266dafdb179335fe31730669cb8 Mon Sep 17 00:00:00 2001 From: Javad Date: Tue, 27 Aug 2024 12:05:43 +0330 Subject: [PATCH 2/9] fix: lint error --- cmd/gtk/dialog_wallet_create_address.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/gtk/dialog_wallet_create_address.go b/cmd/gtk/dialog_wallet_create_address.go index 5015e2de7..1b0e711d1 100644 --- a/cmd/gtk/dialog_wallet_create_address.go +++ b/cmd/gtk/dialog_wallet_create_address.go @@ -60,6 +60,7 @@ func createAddress(ww *widgetWallet) { dialog.Run() dialog.Destroy() passwordInput.SetSensitive(true) + return } From cf79d54568f14893aab2447f0b8a408357953efb Mon Sep 17 00:00:00 2001 From: Javad Date: Wed, 28 Aug 2024 16:11:30 +0330 Subject: [PATCH 3/9] fix: add password fetecher before create address --- .../assets/ui/dialog_wallet_create_address.ui | 25 +-------- cmd/gtk/dialog_wallet_create_address.go | 55 ++++++------------- 2 files changed, 19 insertions(+), 61 deletions(-) diff --git a/cmd/gtk/assets/ui/dialog_wallet_create_address.ui b/cmd/gtk/assets/ui/dialog_wallet_create_address.ui index 98fb9aee6..1964b2bad 100644 --- a/cmd/gtk/assets/ui/dialog_wallet_create_address.ui +++ b/cmd/gtk/assets/ui/dialog_wallet_create_address.ui @@ -1,5 +1,5 @@ - + @@ -118,29 +118,6 @@ 1 - - - True - False - Wallet Password: - - - 0 - 2 - - - - - True - True - False - - - - 1 - 2 - - True diff --git a/cmd/gtk/dialog_wallet_create_address.go b/cmd/gtk/dialog_wallet_create_address.go index 1b0e711d1..b6617afab 100644 --- a/cmd/gtk/dialog_wallet_create_address.go +++ b/cmd/gtk/dialog_wallet_create_address.go @@ -4,8 +4,7 @@ package main import ( _ "embed" - "fmt" - + "errors" "github.com/gotk3/gotk3/gtk" "github.com/pactus-project/pactus/wallet" ) @@ -17,6 +16,19 @@ func createAddress(ww *widgetWallet) { builder, err := gtk.BuilderNewFromString(string(uiWalletCreateAddressDialog)) fatalErrorCheck(err) + passwordFetcher := func(wlt *wallet.Wallet) (string, bool) { + if *passwordOpt != "" { + return *passwordOpt, true + } + + return getWalletPassword(wlt) + } + + password, ok := passwordFetcher(ww.model.wallet) + if !ok { + fatalErrorCheck(errors.New("aborted")) + } + dlg := getDialogObj(builder, "id_dialog_wallet_create_address") addressLabel := getEntryObj(builder, "id_entry_account_label") @@ -27,21 +39,6 @@ func createAddress(ww *widgetWallet) { addressTypeCombo.SetActive(0) - getLabelObj(builder, "id_label_account_password") - passwordInput := getEntryObj(builder, "id_entry_account_password") - - addressTypeCombo.Connect("changed", func() { - activeID := addressTypeCombo.GetActiveID() - if activeID == wallet.AddressTypeEd25519Account { - passwordInput.SetSensitive(true) - } else { - passwordInput.SetSensitive(false) - } - }) - - getButtonObj(builder, "id_button_ok").SetImage(OkIcon()) - getButtonObj(builder, "id_button_cancel").SetImage(CancelIcon()) - onOk := func() { walletAddressLabel, err := addressLabel.GetText() fatalErrorCheck(err) @@ -49,29 +46,13 @@ func createAddress(ww *widgetWallet) { walletAddressType := addressTypeCombo.GetActiveID() fatalErrorCheck(err) - password, err := passwordInput.GetText() - fatalErrorCheck(err) - - if walletAddressType == wallet.AddressTypeEd25519Account && password == "" { - passwordInput.SetName("entry_error") - - dialog := gtk.MessageDialogNew(dlg, gtk.DIALOG_MODAL, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, - "Password is required for ED25519 Account.") - dialog.Run() - dialog.Destroy() - passwordInput.SetSensitive(true) - - return - } - - if walletAddressType == wallet.AddressTypeEd25519Account { + switch walletAddressType { + case wallet.AddressTypeEd25519Account: _, err = ww.model.wallet.NewEd25519AccountAddress(walletAddressLabel, password) - } else if walletAddressType == wallet.AddressTypeBLSAccount { + case wallet.AddressTypeBLSAccount: _, err = ww.model.wallet.NewBLSAccountAddress(walletAddressLabel) - } else if walletAddressType == wallet.AddressTypeValidator { + case wallet.AddressTypeValidator: _, err = ww.model.wallet.NewValidatorAddress(walletAddressLabel) - } else { - err = fmt.Errorf("invalid address type '%s'", walletAddressType) } errorCheck(err) From 384a873019ca1ea65a11b741b85b985800e2ab57 Mon Sep 17 00:00:00 2001 From: Javad Date: Wed, 28 Aug 2024 16:12:05 +0330 Subject: [PATCH 4/9] fix: close create address dialog on cancel password fetcher --- cmd/gtk/dialog_wallet_create_address.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cmd/gtk/dialog_wallet_create_address.go b/cmd/gtk/dialog_wallet_create_address.go index b6617afab..bff9b8bda 100644 --- a/cmd/gtk/dialog_wallet_create_address.go +++ b/cmd/gtk/dialog_wallet_create_address.go @@ -4,7 +4,6 @@ package main import ( _ "embed" - "errors" "github.com/gotk3/gotk3/gtk" "github.com/pactus-project/pactus/wallet" ) @@ -26,7 +25,7 @@ func createAddress(ww *widgetWallet) { password, ok := passwordFetcher(ww.model.wallet) if !ok { - fatalErrorCheck(errors.New("aborted")) + return } dlg := getDialogObj(builder, "id_dialog_wallet_create_address") From 8d869cc1227487c7b683bdb69c745772ccf9ce4d Mon Sep 17 00:00:00 2001 From: Javad Date: Wed, 28 Aug 2024 16:22:51 +0330 Subject: [PATCH 5/9] fix: lint error --- cmd/gtk/dialog_wallet_create_address.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmd/gtk/dialog_wallet_create_address.go b/cmd/gtk/dialog_wallet_create_address.go index bff9b8bda..560a5f89a 100644 --- a/cmd/gtk/dialog_wallet_create_address.go +++ b/cmd/gtk/dialog_wallet_create_address.go @@ -3,9 +3,10 @@ package main import ( - _ "embed" "github.com/gotk3/gotk3/gtk" "github.com/pactus-project/pactus/wallet" + + _ "embed" ) //go:embed assets/ui/dialog_wallet_create_address.ui From 7041db1162fc792175efce7535ff5a2f3bbe6c63 Mon Sep 17 00:00:00 2001 From: Javad Date: Wed, 28 Aug 2024 17:55:50 +0330 Subject: [PATCH 6/9] fix: lint error --- cmd/gtk/dialog_wallet_create_address.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/gtk/dialog_wallet_create_address.go b/cmd/gtk/dialog_wallet_create_address.go index 560a5f89a..dea2939e3 100644 --- a/cmd/gtk/dialog_wallet_create_address.go +++ b/cmd/gtk/dialog_wallet_create_address.go @@ -3,10 +3,10 @@ package main import ( + _ "embed" + "github.com/gotk3/gotk3/gtk" "github.com/pactus-project/pactus/wallet" - - _ "embed" ) //go:embed assets/ui/dialog_wallet_create_address.ui From 617bb8ab2b47f7af0430cfe62e3aa40601f7d6cb Mon Sep 17 00:00:00 2001 From: Javad Date: Thu, 29 Aug 2024 14:24:44 +0330 Subject: [PATCH 7/9] fix: get wallet password just for ED25519 --- cmd/gtk/dialog_wallet_create_address.go | 26 ++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/cmd/gtk/dialog_wallet_create_address.go b/cmd/gtk/dialog_wallet_create_address.go index dea2939e3..fb7c65703 100644 --- a/cmd/gtk/dialog_wallet_create_address.go +++ b/cmd/gtk/dialog_wallet_create_address.go @@ -16,19 +16,6 @@ func createAddress(ww *widgetWallet) { builder, err := gtk.BuilderNewFromString(string(uiWalletCreateAddressDialog)) fatalErrorCheck(err) - passwordFetcher := func(wlt *wallet.Wallet) (string, bool) { - if *passwordOpt != "" { - return *passwordOpt, true - } - - return getWalletPassword(wlt) - } - - password, ok := passwordFetcher(ww.model.wallet) - if !ok { - return - } - dlg := getDialogObj(builder, "id_dialog_wallet_create_address") addressLabel := getEntryObj(builder, "id_entry_account_label") @@ -48,6 +35,19 @@ func createAddress(ww *widgetWallet) { switch walletAddressType { case wallet.AddressTypeEd25519Account: + passwordFetcher := func(wlt *wallet.Wallet) (string, bool) { + if *passwordOpt != "" { + return *passwordOpt, true + } + + return getWalletPassword(wlt) + } + + password, ok := passwordFetcher(ww.model.wallet) + if !ok { + return + } + _, err = ww.model.wallet.NewEd25519AccountAddress(walletAddressLabel, password) case wallet.AddressTypeBLSAccount: _, err = ww.model.wallet.NewBLSAccountAddress(walletAddressLabel) From acfb974ebcc7929c4fa44d1bb75df41c98e9bb5e Mon Sep 17 00:00:00 2001 From: Javad Date: Sun, 1 Sep 2024 11:17:15 +0330 Subject: [PATCH 8/9] fix: remove password fetcher --- cmd/gtk/dialog_wallet_create_address.go | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/cmd/gtk/dialog_wallet_create_address.go b/cmd/gtk/dialog_wallet_create_address.go index fb7c65703..8d4ddf806 100644 --- a/cmd/gtk/dialog_wallet_create_address.go +++ b/cmd/gtk/dialog_wallet_create_address.go @@ -26,6 +26,8 @@ func createAddress(ww *widgetWallet) { addressTypeCombo.SetActive(0) + getButtonObj(builder, "id_button_ok").SetImage(OkIcon()) + onOk := func() { walletAddressLabel, err := addressLabel.GetText() fatalErrorCheck(err) @@ -35,15 +37,7 @@ func createAddress(ww *widgetWallet) { switch walletAddressType { case wallet.AddressTypeEd25519Account: - passwordFetcher := func(wlt *wallet.Wallet) (string, bool) { - if *passwordOpt != "" { - return *passwordOpt, true - } - - return getWalletPassword(wlt) - } - - password, ok := passwordFetcher(ww.model.wallet) + password, ok := getWalletPassword(ww.model.wallet) if !ok { return } From a0aafbed6f6328e99ea21b03bb62454c380d4fad Mon Sep 17 00:00:00 2001 From: Javad Date: Mon, 2 Sep 2024 21:29:54 +0330 Subject: [PATCH 9/9] fix: add cancel button icon --- cmd/gtk/dialog_wallet_create_address.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/gtk/dialog_wallet_create_address.go b/cmd/gtk/dialog_wallet_create_address.go index 8d4ddf806..4a5bac9da 100644 --- a/cmd/gtk/dialog_wallet_create_address.go +++ b/cmd/gtk/dialog_wallet_create_address.go @@ -27,6 +27,7 @@ func createAddress(ww *widgetWallet) { addressTypeCombo.SetActive(0) getButtonObj(builder, "id_button_ok").SetImage(OkIcon()) + getButtonObj(builder, "id_button_cancel").SetImage(CancelIcon()) onOk := func() { walletAddressLabel, err := addressLabel.GetText()