[#4200] Avoid tx watching for addresses which were not exposed
This commit is contained in:
parent
8206ffc736
commit
aee111e5ab
|
@ -29,6 +29,7 @@ type StatusBackend interface {
|
|||
// SelectAccount(loginParams account.LoginParams) error
|
||||
OpenAccounts() error
|
||||
GetAccounts() ([]multiaccounts.Account, error)
|
||||
LocalPairingStarted() error
|
||||
// SaveAccount(account multiaccounts.Account) error
|
||||
SaveAccountAndStartNodeWithKey(acc multiaccounts.Account, password string, settings settings.Settings, conf *params.NodeConfig, subaccs []*accounts.Account, keyHex string) error
|
||||
Recover(rpcParams personal.RecoverParams) (types.Address, error)
|
||||
|
|
|
@ -1352,6 +1352,7 @@ func (b *GethStatusBackend) generateOrImportAccount(mnemonic string, customizati
|
|||
if mnemonic == "" {
|
||||
settings.Mnemonic = &info.Mnemonic
|
||||
settings.OmitTransfersHistoryScan = true
|
||||
//settings.MnemonicWasNotShown = true
|
||||
}
|
||||
|
||||
nodeConfig, err := defaultNodeConfig(settings.InstallationID, request)
|
||||
|
@ -1377,6 +1378,10 @@ func (b *GethStatusBackend) generateOrImportAccount(mnemonic string, customizati
|
|||
Name: walletAccountDefaultName,
|
||||
}
|
||||
|
||||
if mnemonic == "" {
|
||||
walletAccount.AddressWasNotShown = true
|
||||
}
|
||||
|
||||
chatDerivedAccount := derivedAddresses[pathDefaultChat]
|
||||
chatAccount := &accounts.Account{
|
||||
PublicKey: types.Hex2Bytes(chatDerivedAccount.PublicKey),
|
||||
|
@ -2294,6 +2299,19 @@ func (b *GethStatusBackend) GetActiveAccount() (*multiaccounts.Account, error) {
|
|||
return b.account, nil
|
||||
}
|
||||
|
||||
func (b *GethStatusBackend) LocalPairingStarted() error {
|
||||
if b.account == nil {
|
||||
return errors.New("master key account is nil in the GethStatusBackend")
|
||||
}
|
||||
|
||||
accountDB, err := accounts.NewDB(b.appDB)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return accountDB.MnemonicWasShown()
|
||||
}
|
||||
|
||||
func (b *GethStatusBackend) injectAccountsIntoWakuService(w types.WakuKeyManager, st *ext.Service) error {
|
||||
chatAccount, err := b.accountManager.SelectedChatAccount()
|
||||
if err != nil {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1 @@
|
|||
ALTER TABLE keypairs_accounts ADD COLUMN address_was_not_shown BOOLEAN NOT NULL DEFAULT FALSE;
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE settings ADD COLUMN mnemonic_was_not_shown BOOLEAN NOT NULL DEFAULT FALSE;
|
|
@ -1,66 +1,64 @@
|
|||
// Code generated by go-bindata. DO NOT EDIT.
|
||||
// Code generated for package migrationsprevnodecfg by go-bindata DO NOT EDIT. (@generated)
|
||||
// sources:
|
||||
// 0001_app.down.sql (356B)
|
||||
// 0001_app.up.sql (2.967kB)
|
||||
// 0002_tokens.down.sql (19B)
|
||||
// 0002_tokens.up.sql (248B)
|
||||
// 0003_settings.down.sql (118B)
|
||||
// 0003_settings.up.sql (1.311kB)
|
||||
// 0004_pending_stickers.down.sql (0)
|
||||
// 0004_pending_stickers.up.sql (61B)
|
||||
// 0005_waku_mode.down.sql (0)
|
||||
// 0005_waku_mode.up.sql (146B)
|
||||
// 0006_appearance.up.sql (67B)
|
||||
// 0007_enable_waku_default.up.sql (38B)
|
||||
// 0008_add_push_notifications.up.sql (349B)
|
||||
// 0009_enable_sending_push_notifications.down.sql (49B)
|
||||
// 0009_enable_sending_push_notifications.up.sql (49B)
|
||||
// 0010_add_block_mentions.down.sql (83B)
|
||||
// 0010_add_block_mentions.up.sql (89B)
|
||||
// 0011_allow_webview_permission_requests.down.sql (0)
|
||||
// 0011_allow_webview_permission_requests.up.sql (88B)
|
||||
// 0012_pending_transactions.down.sql (33B)
|
||||
// 0012_pending_transactions.up.sql (321B)
|
||||
// 0013_favourites.down.sql (23B)
|
||||
// 0013_favourites.up.sql (132B)
|
||||
// 0014_add_use_mailservers.down.sql (0)
|
||||
// 0014_add_use_mailservers.up.sql (111B)
|
||||
// 0015_link_previews.down.sql (0)
|
||||
// 0015_link_previews.up.sql (203B)
|
||||
// 0016_local_notifications_preferences.down.sql (43B)
|
||||
// 0016_local_notifications_preferences.up.sql (204B)
|
||||
// 0017_bookmarks.down.sql (22B)
|
||||
// 0017_bookmarks.up.sql (147B)
|
||||
// 0018_profile_pictures_visibility.up.sql (84B)
|
||||
// 0019_blocks_ranges_extra_data.up.sql (89B)
|
||||
// 0020_metrics.up.sql (235B)
|
||||
// 0021_add_session_id_to_metrics.up.sql (55B)
|
||||
// 0022_pending_transfers.up.sql (706B)
|
||||
// 1618237885_settings_anon_metrics_should_send.up.sql (80B)
|
||||
// 1618395756_contacts_only.up.sql (136B)
|
||||
// 1622184614_add_default_sync_period.up.sql (125B)
|
||||
// 1625872445_user_status.up.sql (351B)
|
||||
// 1627983977_add_gif_to_settings.up.sql (102B)
|
||||
// 1628580203_add_hidden_account.up.sql (67B)
|
||||
// 1629123384_add_id_to_app_metrics.up.sql (589B)
|
||||
// 1630401853_add_opensea_enabled_to_settings.up.sql (70B)
|
||||
// 1630464455_create-saved_addresses-table.down.sql (28B)
|
||||
// 1630464455_create-saved_addresses-table.up.sql (187B)
|
||||
// 1630485153_networks.down.sql (21B)
|
||||
// 1630485153_networks.up.sql (394B)
|
||||
// 1632262444_profile_pictures_show_to.up.sql (81B)
|
||||
// 1635942153_add_telemetry_server_url_to_settings.up.sql (128B)
|
||||
// 1635942154_add_backup_setting.up.sql (287B)
|
||||
// 1637745568_add_auto_message_setting.up.sql (122B)
|
||||
// 1640111208_nodeconfig.up.sql (7.659kB)
|
||||
// doc.go (85B)
|
||||
|
||||
// 0001_app.down.sql
|
||||
// 0001_app.up.sql
|
||||
// 0002_tokens.down.sql
|
||||
// 0002_tokens.up.sql
|
||||
// 0003_settings.down.sql
|
||||
// 0003_settings.up.sql
|
||||
// 0004_pending_stickers.down.sql
|
||||
// 0004_pending_stickers.up.sql
|
||||
// 0005_waku_mode.down.sql
|
||||
// 0005_waku_mode.up.sql
|
||||
// 0006_appearance.up.sql
|
||||
// 0007_enable_waku_default.up.sql
|
||||
// 0008_add_push_notifications.up.sql
|
||||
// 0009_enable_sending_push_notifications.down.sql
|
||||
// 0009_enable_sending_push_notifications.up.sql
|
||||
// 0010_add_block_mentions.down.sql
|
||||
// 0010_add_block_mentions.up.sql
|
||||
// 0011_allow_webview_permission_requests.down.sql
|
||||
// 0011_allow_webview_permission_requests.up.sql
|
||||
// 0012_pending_transactions.down.sql
|
||||
// 0012_pending_transactions.up.sql
|
||||
// 0013_favourites.down.sql
|
||||
// 0013_favourites.up.sql
|
||||
// 0014_add_use_mailservers.down.sql
|
||||
// 0014_add_use_mailservers.up.sql
|
||||
// 0015_link_previews.down.sql
|
||||
// 0015_link_previews.up.sql
|
||||
// 0016_local_notifications_preferences.down.sql
|
||||
// 0016_local_notifications_preferences.up.sql
|
||||
// 0017_bookmarks.down.sql
|
||||
// 0017_bookmarks.up.sql
|
||||
// 0018_profile_pictures_visibility.up.sql
|
||||
// 0019_blocks_ranges_extra_data.up.sql
|
||||
// 0020_metrics.up.sql
|
||||
// 0021_add_session_id_to_metrics.up.sql
|
||||
// 0022_pending_transfers.up.sql
|
||||
// 1618237885_settings_anon_metrics_should_send.up.sql
|
||||
// 1618395756_contacts_only.up.sql
|
||||
// 1622184614_add_default_sync_period.up.sql
|
||||
// 1625872445_user_status.up.sql
|
||||
// 1627983977_add_gif_to_settings.up.sql
|
||||
// 1628580203_add_hidden_account.up.sql
|
||||
// 1629123384_add_id_to_app_metrics.up.sql
|
||||
// 1630401853_add_opensea_enabled_to_settings.up.sql
|
||||
// 1630464455_create-saved_addresses-table.down.sql
|
||||
// 1630464455_create-saved_addresses-table.up.sql
|
||||
// 1630485153_networks.down.sql
|
||||
// 1630485153_networks.up.sql
|
||||
// 1632262444_profile_pictures_show_to.up.sql
|
||||
// 1635942153_add_telemetry_server_url_to_settings.up.sql
|
||||
// 1635942154_add_backup_setting.up.sql
|
||||
// 1637745568_add_auto_message_setting.up.sql
|
||||
// 1640111208_nodeconfig.up.sql
|
||||
// doc.go
|
||||
package migrationsprevnodecfg
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"compress/gzip"
|
||||
"crypto/sha256"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
|
@ -73,7 +71,7 @@ import (
|
|||
func bindataRead(data []byte, name string) ([]byte, error) {
|
||||
gz, err := gzip.NewReader(bytes.NewBuffer(data))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("read %q: %v", name, err)
|
||||
return nil, fmt.Errorf("Read %q: %v", name, err)
|
||||
}
|
||||
|
||||
var buf bytes.Buffer
|
||||
|
@ -81,7 +79,7 @@ func bindataRead(data []byte, name string) ([]byte, error) {
|
|||
clErr := gz.Close()
|
||||
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("read %q: %v", name, err)
|
||||
return nil, fmt.Errorf("Read %q: %v", name, err)
|
||||
}
|
||||
if clErr != nil {
|
||||
return nil, err
|
||||
|
@ -93,7 +91,6 @@ func bindataRead(data []byte, name string) ([]byte, error) {
|
|||
type asset struct {
|
||||
bytes []byte
|
||||
info os.FileInfo
|
||||
digest [sha256.Size]byte
|
||||
}
|
||||
|
||||
type bindataFileInfo struct {
|
||||
|
@ -103,21 +100,32 @@ type bindataFileInfo struct {
|
|||
modTime time.Time
|
||||
}
|
||||
|
||||
// Name return file name
|
||||
func (fi bindataFileInfo) Name() string {
|
||||
return fi.name
|
||||
}
|
||||
|
||||
// Size return file size
|
||||
func (fi bindataFileInfo) Size() int64 {
|
||||
return fi.size
|
||||
}
|
||||
|
||||
// Mode return file mode
|
||||
func (fi bindataFileInfo) Mode() os.FileMode {
|
||||
return fi.mode
|
||||
}
|
||||
|
||||
// Mode return file modify time
|
||||
func (fi bindataFileInfo) ModTime() time.Time {
|
||||
return fi.modTime
|
||||
}
|
||||
|
||||
// IsDir return file whether a directory
|
||||
func (fi bindataFileInfo) IsDir() bool {
|
||||
return false
|
||||
return fi.mode&os.ModeDir != 0
|
||||
}
|
||||
|
||||
// Sys return file is sys mode
|
||||
func (fi bindataFileInfo) Sys() interface{} {
|
||||
return nil
|
||||
}
|
||||
|
@ -137,8 +145,8 @@ func _0001_appDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0001_app.down.sql", size: 356, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb5, 0x25, 0xa0, 0xf8, 0x7d, 0x2d, 0xd, 0xcf, 0x18, 0xe4, 0x73, 0xc3, 0x95, 0xf5, 0x24, 0x20, 0xa9, 0xe6, 0x9e, 0x1d, 0x93, 0xe5, 0xc5, 0xad, 0x93, 0x8f, 0x5e, 0x40, 0xb5, 0x30, 0xaa, 0x25}}
|
||||
info := bindataFileInfo{name: "0001_app.down.sql", size: 356, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -157,8 +165,8 @@ func _0001_appUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0001_app.up.sql", size: 2967, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf7, 0x3a, 0xa7, 0xf2, 0x8f, 0xfa, 0x82, 0x7c, 0xc5, 0x49, 0xac, 0xac, 0xf, 0xc, 0x77, 0xe2, 0xba, 0xe8, 0x4d, 0xe, 0x6f, 0x5d, 0x2c, 0x2c, 0x18, 0x80, 0xc2, 0x1d, 0xe, 0x25, 0xe, 0x18}}
|
||||
info := bindataFileInfo{name: "0001_app.up.sql", size: 2967, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -177,8 +185,8 @@ func _0002_tokensDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0002_tokens.down.sql", size: 19, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0x31, 0x2, 0xcc, 0x2f, 0x38, 0x90, 0xf7, 0x58, 0x37, 0x47, 0xf4, 0x18, 0xf7, 0x72, 0x74, 0x67, 0x14, 0x7e, 0xf3, 0xb1, 0xd6, 0x5f, 0xb0, 0xd5, 0xe7, 0x91, 0xf4, 0x26, 0x77, 0x8e, 0x68}}
|
||||
info := bindataFileInfo{name: "0002_tokens.down.sql", size: 19, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -197,8 +205,8 @@ func _0002_tokensUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0002_tokens.up.sql", size: 248, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcc, 0xd6, 0xde, 0xd3, 0x7b, 0xee, 0x92, 0x11, 0x38, 0xa4, 0xeb, 0x84, 0xca, 0xcb, 0x37, 0x75, 0x5, 0x77, 0x7f, 0x14, 0x39, 0xee, 0xa1, 0x8b, 0xd4, 0x5c, 0x6e, 0x55, 0x6, 0x50, 0x16, 0xd4}}
|
||||
info := bindataFileInfo{name: "0002_tokens.up.sql", size: 248, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -217,8 +225,8 @@ func _0003_settingsDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0003_settings.down.sql", size: 118, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0xa6, 0xf5, 0xc0, 0x60, 0x64, 0x77, 0xe2, 0xe7, 0x3c, 0x9b, 0xb1, 0x52, 0xa9, 0x95, 0x16, 0xf8, 0x60, 0x2f, 0xa5, 0xeb, 0x46, 0xb9, 0xb9, 0x8f, 0x4c, 0xf4, 0xfd, 0xbb, 0xe7, 0xe5, 0xe5}}
|
||||
info := bindataFileInfo{name: "0003_settings.down.sql", size: 118, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -237,8 +245,8 @@ func _0003_settingsUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0003_settings.up.sql", size: 1311, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x35, 0x0, 0xeb, 0xe2, 0x33, 0x68, 0xb9, 0xf4, 0xf6, 0x8e, 0x9e, 0x10, 0xe9, 0x58, 0x68, 0x28, 0xb, 0xcd, 0xec, 0x74, 0x71, 0xa7, 0x9a, 0x5a, 0x77, 0x59, 0xb1, 0x13, 0x1c, 0xa1, 0x5b}}
|
||||
info := bindataFileInfo{name: "0003_settings.up.sql", size: 1311, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -257,8 +265,8 @@ func _0004_pending_stickersDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0004_pending_stickers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
|
||||
info := bindataFileInfo{name: "0004_pending_stickers.down.sql", size: 0, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -277,8 +285,8 @@ func _0004_pending_stickersUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0004_pending_stickers.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0xed, 0x25, 0xdf, 0x75, 0x2, 0x6c, 0xf0, 0xa2, 0xa8, 0x37, 0x62, 0x65, 0xad, 0xfd, 0x98, 0xa0, 0x9d, 0x63, 0x94, 0xdf, 0x6b, 0x46, 0xe0, 0x68, 0xec, 0x9c, 0x7f, 0x77, 0xdd, 0xb3, 0x6}}
|
||||
info := bindataFileInfo{name: "0004_pending_stickers.up.sql", size: 61, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -297,8 +305,8 @@ func _0005_waku_modeDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0005_waku_mode.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
|
||||
info := bindataFileInfo{name: "0005_waku_mode.down.sql", size: 0, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -317,8 +325,8 @@ func _0005_waku_modeUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0005_waku_mode.up.sql", size: 146, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa6, 0x91, 0xc, 0xd7, 0x89, 0x61, 0x2e, 0x4c, 0x5a, 0xb6, 0x67, 0xd1, 0xc1, 0x42, 0x24, 0x38, 0xd6, 0x1b, 0x75, 0x41, 0x9c, 0x23, 0xb0, 0xca, 0x5c, 0xf1, 0x5c, 0xd0, 0x13, 0x92, 0x3e, 0xe1}}
|
||||
info := bindataFileInfo{name: "0005_waku_mode.up.sql", size: 146, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -337,8 +345,8 @@ func _0006_appearanceUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0006_appearance.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0x6, 0x25, 0x6c, 0xe4, 0x9d, 0xa7, 0x72, 0xe8, 0xbc, 0xe4, 0x1f, 0x1e, 0x2d, 0x7c, 0xb7, 0xf6, 0xa3, 0xec, 0x3b, 0x4e, 0x93, 0x2e, 0xa4, 0xec, 0x6f, 0xe5, 0x95, 0x94, 0xe8, 0x4, 0xfb}}
|
||||
info := bindataFileInfo{name: "0006_appearance.up.sql", size: 67, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -357,8 +365,8 @@ func _0007_enable_waku_defaultUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0007_enable_waku_default.up.sql", size: 38, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd4, 0x42, 0xb6, 0xe5, 0x48, 0x41, 0xeb, 0xc0, 0x7e, 0x3b, 0xe6, 0x8e, 0x96, 0x33, 0x20, 0x92, 0x24, 0x5a, 0x60, 0xfa, 0xa0, 0x3, 0x5e, 0x76, 0x4b, 0x89, 0xaa, 0x37, 0x66, 0xbc, 0x26, 0x11}}
|
||||
info := bindataFileInfo{name: "0007_enable_waku_default.up.sql", size: 38, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -377,8 +385,8 @@ func _0008_add_push_notificationsUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0008_add_push_notifications.up.sql", size: 349, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5a, 0x0, 0xbf, 0xd0, 0xdd, 0xcd, 0x73, 0xe0, 0x7c, 0x56, 0xef, 0xdc, 0x57, 0x61, 0x94, 0x64, 0x70, 0xb9, 0xfa, 0xa1, 0x2a, 0x36, 0xc, 0x2f, 0xf8, 0x95, 0xa, 0x57, 0x3e, 0x7a, 0xd7, 0x12}}
|
||||
info := bindataFileInfo{name: "0008_add_push_notifications.up.sql", size: 349, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -397,8 +405,8 @@ func _0009_enable_sending_push_notificationsDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0009_enable_sending_push_notifications.down.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0xae, 0x1b, 0x41, 0xcb, 0x9c, 0x2c, 0x93, 0xc6, 0x2a, 0x77, 0x3, 0xb9, 0x51, 0xe0, 0x68, 0x68, 0x0, 0xf7, 0x5b, 0xb3, 0x1e, 0x94, 0x44, 0xba, 0x9c, 0xd0, 0x3b, 0x80, 0x21, 0x6f, 0xb5}}
|
||||
info := bindataFileInfo{name: "0009_enable_sending_push_notifications.down.sql", size: 49, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -417,8 +425,8 @@ func _0009_enable_sending_push_notificationsUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0009_enable_sending_push_notifications.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x80, 0xe4, 0x9c, 0xc8, 0xb8, 0xd5, 0xef, 0xce, 0x74, 0x9b, 0x7b, 0xdd, 0xa, 0x99, 0x1e, 0xef, 0x7f, 0xb8, 0x99, 0x84, 0x4, 0x0, 0x6b, 0x1d, 0x2c, 0xa, 0xf8, 0x2c, 0x4f, 0xb5, 0x44}}
|
||||
info := bindataFileInfo{name: "0009_enable_sending_push_notifications.up.sql", size: 49, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -437,8 +445,8 @@ func _0010_add_block_mentionsDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0010_add_block_mentions.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0x9e, 0x27, 0x1e, 0xba, 0x9f, 0xca, 0xae, 0x98, 0x2e, 0x6e, 0xe3, 0xdd, 0xac, 0x73, 0x34, 0x4e, 0x69, 0x92, 0xb5, 0xf6, 0x9, 0xab, 0x50, 0x35, 0xd, 0xee, 0xeb, 0x3e, 0xcc, 0x7e, 0xce}}
|
||||
info := bindataFileInfo{name: "0010_add_block_mentions.down.sql", size: 83, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -457,8 +465,8 @@ func _0010_add_block_mentionsUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0010_add_block_mentions.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0x23, 0x85, 0xa2, 0xb5, 0xb6, 0xb4, 0x3f, 0xdc, 0x4e, 0xff, 0xe2, 0x6b, 0x66, 0x68, 0x5e, 0xb2, 0xb4, 0x14, 0xb2, 0x1b, 0x4d, 0xb1, 0xce, 0xf7, 0x6, 0x58, 0xa7, 0xaf, 0x93, 0x3f, 0x25}}
|
||||
info := bindataFileInfo{name: "0010_add_block_mentions.up.sql", size: 89, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -477,8 +485,8 @@ func _0011_allow_webview_permission_requestsDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0011_allow_webview_permission_requests.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
|
||||
info := bindataFileInfo{name: "0011_allow_webview_permission_requests.down.sql", size: 0, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -497,8 +505,8 @@ func _0011_allow_webview_permission_requestsUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0011_allow_webview_permission_requests.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x43, 0x5f, 0x22, 0x4c, 0x98, 0x1d, 0xc6, 0xf4, 0x89, 0xaf, 0xf4, 0x44, 0xba, 0xf8, 0x28, 0xa7, 0xb5, 0xb9, 0xf0, 0xf2, 0xcb, 0x5, 0x59, 0x7a, 0xc, 0xdf, 0xd3, 0x38, 0xa4, 0xb8, 0x98, 0xc2}}
|
||||
info := bindataFileInfo{name: "0011_allow_webview_permission_requests.up.sql", size: 88, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -517,8 +525,8 @@ func _0012_pending_transactionsDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0012_pending_transactions.down.sql", size: 33, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0x41, 0xfe, 0x5c, 0xd8, 0xc3, 0x29, 0xfd, 0x31, 0x78, 0x99, 0x7a, 0xeb, 0x17, 0x62, 0x88, 0x41, 0xb3, 0xe7, 0xb5, 0x5, 0x0, 0x90, 0xa1, 0x7, 0x1a, 0x23, 0x88, 0x81, 0xba, 0x56, 0x9d}}
|
||||
info := bindataFileInfo{name: "0012_pending_transactions.down.sql", size: 33, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -537,8 +545,8 @@ func _0012_pending_transactionsUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0012_pending_transactions.up.sql", size: 321, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd, 0x17, 0xff, 0xd7, 0xa7, 0x49, 0x1e, 0x7b, 0x34, 0x63, 0x7c, 0x53, 0xaa, 0x6b, 0x2d, 0xc8, 0xe0, 0x82, 0x21, 0x90, 0x3a, 0x94, 0xf1, 0xa6, 0xe4, 0x70, 0xe5, 0x85, 0x1a, 0x48, 0x25, 0xb}}
|
||||
info := bindataFileInfo{name: "0012_pending_transactions.up.sql", size: 321, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -557,8 +565,8 @@ func _0013_favouritesDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0013_favourites.down.sql", size: 23, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xf8, 0x55, 0x13, 0x4f, 0x4a, 0x19, 0x83, 0x9c, 0xda, 0x34, 0xb8, 0x3, 0x54, 0x82, 0x1e, 0x99, 0x36, 0x6b, 0x42, 0x3, 0xf6, 0x43, 0xde, 0xe6, 0x32, 0xb6, 0xdf, 0xe2, 0x59, 0x8c, 0x84}}
|
||||
info := bindataFileInfo{name: "0013_favourites.down.sql", size: 23, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -577,8 +585,8 @@ func _0013_favouritesUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0013_favourites.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbe, 0x1, 0x27, 0x38, 0x76, 0xf5, 0xcb, 0x61, 0xda, 0x5b, 0xce, 0xd9, 0x8b, 0x18, 0x77, 0x61, 0x84, 0xe7, 0x22, 0xe2, 0x13, 0x99, 0xab, 0x32, 0xbc, 0xbe, 0xed, 0x1f, 0x2f, 0xb0, 0xe4, 0x8d}}
|
||||
info := bindataFileInfo{name: "0013_favourites.up.sql", size: 132, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -597,8 +605,8 @@ func _0014_add_use_mailserversDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0014_add_use_mailservers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
|
||||
info := bindataFileInfo{name: "0014_add_use_mailservers.down.sql", size: 0, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -617,8 +625,8 @@ func _0014_add_use_mailserversUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0014_add_use_mailservers.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xba, 0x65, 0xbf, 0x1b, 0xc9, 0x6d, 0x45, 0xf2, 0xf5, 0x30, 0x7c, 0xc1, 0xde, 0xb8, 0xe3, 0x3f, 0xa9, 0x2f, 0x9f, 0xea, 0x1, 0x29, 0x29, 0x65, 0xe7, 0x38, 0xab, 0xa4, 0x62, 0xf, 0xd0}}
|
||||
info := bindataFileInfo{name: "0014_add_use_mailservers.up.sql", size: 111, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -637,8 +645,8 @@ func _0015_link_previewsDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0015_link_previews.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
|
||||
info := bindataFileInfo{name: "0015_link_previews.down.sql", size: 0, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -657,8 +665,8 @@ func _0015_link_previewsUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0015_link_previews.up.sql", size: 203, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb1, 0xf7, 0x38, 0x25, 0xa6, 0xfc, 0x6b, 0x9, 0xe4, 0xd9, 0xbf, 0x58, 0x7b, 0x80, 0xd8, 0x48, 0x63, 0xde, 0xa5, 0x5e, 0x30, 0xa3, 0xeb, 0x68, 0x8e, 0x6a, 0x9f, 0xfd, 0xf4, 0x46, 0x41, 0x34}}
|
||||
info := bindataFileInfo{name: "0015_link_previews.up.sql", size: 203, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -677,8 +685,8 @@ func _0016_local_notifications_preferencesDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0016_local_notifications_preferences.down.sql", size: 43, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe0, 0x50, 0xc7, 0xdd, 0x53, 0x9c, 0x5d, 0x1e, 0xb5, 0x71, 0x25, 0x50, 0x58, 0xcf, 0x6d, 0xbe, 0x5a, 0x8, 0x12, 0xc9, 0x13, 0xd, 0x9a, 0x3d, 0x4b, 0x7a, 0x2f, 0x1b, 0xe5, 0x23, 0x52, 0x78}}
|
||||
info := bindataFileInfo{name: "0016_local_notifications_preferences.down.sql", size: 43, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -697,8 +705,8 @@ func _0016_local_notifications_preferencesUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0016_local_notifications_preferences.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3f, 0x3a, 0x16, 0x25, 0xdf, 0xba, 0x62, 0xd3, 0x81, 0x73, 0xc, 0x10, 0x85, 0xbc, 0x8d, 0xe, 0x1d, 0x62, 0xcb, 0xb, 0x6d, 0x8c, 0x4f, 0x63, 0x5f, 0xe2, 0xd, 0xc5, 0x46, 0xa8, 0x35, 0x5b}}
|
||||
info := bindataFileInfo{name: "0016_local_notifications_preferences.up.sql", size: 204, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -717,8 +725,8 @@ func _0017_bookmarksDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0017_bookmarks.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9a, 0x13, 0x2a, 0x44, 0xb0, 0x3, 0x18, 0x63, 0xb8, 0x33, 0xda, 0x3a, 0xeb, 0xb8, 0xcb, 0xd1, 0x98, 0x29, 0xa7, 0xf0, 0x6, 0x9d, 0xc9, 0x62, 0xe7, 0x89, 0x7f, 0x77, 0xaf, 0xec, 0x6b, 0x8f}}
|
||||
info := bindataFileInfo{name: "0017_bookmarks.down.sql", size: 22, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -737,8 +745,8 @@ func _0017_bookmarksUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0017_bookmarks.up.sql", size: 147, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbc, 0x47, 0xe1, 0xe3, 0xd8, 0xc6, 0x4, 0x6d, 0x5f, 0x2f, 0xa, 0x51, 0xa6, 0x8c, 0x6a, 0xe0, 0x3d, 0x8c, 0x91, 0x47, 0xbc, 0x1, 0x75, 0x46, 0x92, 0x2, 0x18, 0x6e, 0xe3, 0x4f, 0x18, 0x57}}
|
||||
info := bindataFileInfo{name: "0017_bookmarks.up.sql", size: 147, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -757,8 +765,8 @@ func _0018_profile_pictures_visibilityUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0018_profile_pictures_visibility.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xe3, 0xc5, 0xec, 0x83, 0x55, 0x45, 0x57, 0x7a, 0xaa, 0xd2, 0xa7, 0x59, 0xa7, 0x87, 0xef, 0x63, 0x19, 0x9c, 0x46, 0x9c, 0xc5, 0x32, 0x89, 0xa4, 0x68, 0x70, 0xd8, 0x83, 0x43, 0xa4, 0x72}}
|
||||
info := bindataFileInfo{name: "0018_profile_pictures_visibility.up.sql", size: 84, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -777,8 +785,8 @@ func _0019_blocks_ranges_extra_dataUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0019_blocks_ranges_extra_data.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa3, 0x96, 0x32, 0x58, 0xf0, 0xb9, 0xe1, 0x70, 0x81, 0xca, 0x8d, 0x45, 0x57, 0x8a, 0x7, 0x5d, 0x9e, 0x2a, 0x30, 0xb, 0xad, 0x5f, 0xf8, 0xd4, 0x30, 0x94, 0x73, 0x37, 0x8d, 0xc1, 0x9a, 0xed}}
|
||||
info := bindataFileInfo{name: "0019_blocks_ranges_extra_data.up.sql", size: 89, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -797,8 +805,8 @@ func _0020_metricsUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0020_metrics.up.sql", size: 235, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe8, 0x32, 0xbc, 0xb6, 0x9b, 0x5a, 0x8f, 0x9f, 0x4c, 0x90, 0x81, 0x3e, 0x2e, 0xd1, 0x23, 0xcd, 0xf1, 0x83, 0x35, 0xca, 0x66, 0x87, 0x52, 0x4e, 0x30, 0x3e, 0x4f, 0xa8, 0xfd, 0x30, 0x16, 0xbd}}
|
||||
info := bindataFileInfo{name: "0020_metrics.up.sql", size: 235, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -817,8 +825,8 @@ func _0021_add_session_id_to_metricsUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0021_add_session_id_to_metrics.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x81, 0xfc, 0x97, 0xd1, 0x8b, 0xea, 0x8e, 0xd7, 0xc2, 0x53, 0x62, 0xe9, 0xbc, 0xf, 0x8c, 0x46, 0x41, 0x41, 0xb7, 0x6, 0x35, 0xf5, 0xba, 0xbb, 0x28, 0x50, 0x48, 0xbf, 0x36, 0x90, 0x5c}}
|
||||
info := bindataFileInfo{name: "0021_add_session_id_to_metrics.up.sql", size: 55, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -837,8 +845,8 @@ func _0022_pending_transfersUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "0022_pending_transfers.up.sql", size: 706, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6a, 0x9, 0xe6, 0x6, 0xae, 0x60, 0xdd, 0xbb, 0x76, 0xac, 0xe0, 0x57, 0x30, 0x67, 0x37, 0x93, 0x40, 0x13, 0xec, 0xf2, 0x6e, 0x61, 0xa, 0x14, 0xb2, 0xb1, 0xbd, 0x91, 0xf8, 0x89, 0xb3, 0xe3}}
|
||||
info := bindataFileInfo{name: "0022_pending_transfers.up.sql", size: 706, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -857,8 +865,8 @@ func _1618237885_settings_anon_metrics_should_sendUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1618237885_settings_anon_metrics_should_send.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x6c, 0x1d, 0x1f, 0x54, 0x62, 0x18, 0x22, 0x5c, 0xa7, 0x8c, 0x59, 0x24, 0xd3, 0x4d, 0x55, 0xc4, 0x2a, 0x9e, 0x4c, 0x37, 0x6b, 0xfd, 0xac, 0xec, 0xb7, 0x68, 0x21, 0x26, 0x26, 0xf3, 0x92}}
|
||||
info := bindataFileInfo{name: "1618237885_settings_anon_metrics_should_send.up.sql", size: 80, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -877,8 +885,8 @@ func _1618395756_contacts_onlyUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1618395756_contacts_only.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0xe3, 0xd0, 0xe7, 0xf2, 0x6e, 0xbf, 0x27, 0xf6, 0xe2, 0x2e, 0x16, 0x4b, 0x52, 0x3b, 0xcf, 0x63, 0x52, 0xfc, 0x1d, 0x43, 0xba, 0x42, 0xf9, 0x1e, 0x1e, 0x39, 0x40, 0xed, 0x0, 0x20, 0xa8}}
|
||||
info := bindataFileInfo{name: "1618395756_contacts_only.up.sql", size: 136, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -897,8 +905,8 @@ func _1622184614_add_default_sync_periodUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1622184614_add_default_sync_period.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0x39, 0xeb, 0x8f, 0xdc, 0x1, 0x56, 0xc1, 0x9b, 0xaa, 0xda, 0x44, 0xe0, 0xdb, 0xda, 0x2c, 0xe7, 0x71, 0x8d, 0xbc, 0xc1, 0x9a, 0x4f, 0x48, 0xe0, 0x5e, 0x81, 0x1e, 0x8e, 0x6a, 0x4d, 0x3}}
|
||||
info := bindataFileInfo{name: "1622184614_add_default_sync_period.up.sql", size: 125, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -917,8 +925,8 @@ func _1625872445_user_statusUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1625872445_user_status.up.sql", size: 351, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0xa, 0xfe, 0x7a, 0xcc, 0x9e, 0x35, 0x26, 0xb, 0xc8, 0xf2, 0x7d, 0xfa, 0x4b, 0xcf, 0x53, 0x20, 0x76, 0xc7, 0xd, 0xbc, 0x78, 0x4f, 0x74, 0x2d, 0x2e, 0x2e, 0x7e, 0x62, 0xae, 0x78, 0x1f}}
|
||||
info := bindataFileInfo{name: "1625872445_user_status.up.sql", size: 351, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -937,8 +945,8 @@ func _1627983977_add_gif_to_settingsUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1627983977_add_gif_to_settings.up.sql", size: 102, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x63, 0xe6, 0xe1, 0x97, 0x64, 0x4c, 0xe2, 0x14, 0xb1, 0x96, 0x3a, 0xb0, 0xb9, 0xb7, 0xb5, 0x78, 0x4a, 0x39, 0x69, 0x89, 0xb7, 0x89, 0x19, 0xb8, 0x89, 0x1, 0xc5, 0xc2, 0x85, 0x53, 0xe2, 0x83}}
|
||||
info := bindataFileInfo{name: "1627983977_add_gif_to_settings.up.sql", size: 102, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -957,8 +965,8 @@ func _1628580203_add_hidden_accountUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1628580203_add_hidden_account.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x30, 0xf1, 0xd4, 0x60, 0xe2, 0x28, 0x14, 0xcb, 0x16, 0xb, 0x9, 0xea, 0x17, 0xa, 0x9e, 0x89, 0xa8, 0x32, 0x32, 0xf8, 0x4d, 0xa0, 0xe1, 0xe5, 0x79, 0xbd, 0x7d, 0x79, 0xe9, 0x4c, 0x9e}}
|
||||
info := bindataFileInfo{name: "1628580203_add_hidden_account.up.sql", size: 67, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -977,8 +985,8 @@ func _1629123384_add_id_to_app_metricsUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1629123384_add_id_to_app_metrics.up.sql", size: 589, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdf, 0x66, 0xc0, 0x69, 0xb, 0xad, 0x49, 0x7c, 0x8c, 0x67, 0xb8, 0xd6, 0x8d, 0x5d, 0x86, 0x1f, 0xa4, 0x53, 0xf5, 0x8, 0x1, 0xfd, 0x38, 0x49, 0xee, 0x84, 0xc0, 0xd8, 0x17, 0x72, 0x3, 0xb3}}
|
||||
info := bindataFileInfo{name: "1629123384_add_id_to_app_metrics.up.sql", size: 589, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -997,8 +1005,8 @@ func _1630401853_add_opensea_enabled_to_settingsUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1630401853_add_opensea_enabled_to_settings.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0x91, 0x86, 0x15, 0xc8, 0x99, 0xe3, 0xae, 0xa, 0x6e, 0x94, 0x48, 0x51, 0x5b, 0x18, 0xe0, 0xbc, 0xaf, 0x34, 0x75, 0x55, 0x61, 0xd4, 0xc1, 0x85, 0xc7, 0x3d, 0x99, 0x9e, 0x1f, 0x37, 0x56}}
|
||||
info := bindataFileInfo{name: "1630401853_add_opensea_enabled_to_settings.up.sql", size: 70, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -1017,8 +1025,8 @@ func _1630464455_createSaved_addressesTableDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.down.sql", size: 28, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x23, 0x52, 0x39, 0xb5, 0x42, 0xac, 0xcb, 0xa1, 0x44, 0xb7, 0x94, 0x26, 0x24, 0xb2, 0x12, 0xc, 0xc5, 0xbf, 0x63, 0x13, 0x6f, 0x3c, 0x4, 0x7b, 0xf0, 0xd, 0xfa, 0x55, 0x9e, 0x51, 0xf9, 0x7a}}
|
||||
info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.down.sql", size: 28, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -1037,8 +1045,8 @@ func _1630464455_createSaved_addressesTableUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.up.sql", size: 187, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xf, 0x56, 0x18, 0xeb, 0x4e, 0xac, 0xd8, 0xd6, 0x91, 0xae, 0x83, 0xcf, 0x91, 0x9e, 0x4, 0x4b, 0x2, 0x1f, 0x6d, 0xba, 0xf6, 0x3, 0xf2, 0x98, 0x72, 0xf6, 0x91, 0x29, 0x96, 0x0, 0x35}}
|
||||
info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.up.sql", size: 187, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -1057,8 +1065,8 @@ func _1630485153_networksDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1630485153_networks.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbb, 0x3e, 0x57, 0xb7, 0xf7, 0x8, 0xbd, 0xb5, 0xc2, 0xea, 0xc, 0x45, 0xb7, 0x7, 0x9, 0xca, 0xe7, 0x48, 0x7e, 0x56, 0x4e, 0x44, 0x78, 0x8e, 0xe3, 0x87, 0x63, 0xaf, 0x16, 0x3f, 0xf9, 0x71}}
|
||||
info := bindataFileInfo{name: "1630485153_networks.down.sql", size: 21, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -1077,8 +1085,8 @@ func _1630485153_networksUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1630485153_networks.up.sql", size: 394, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0x9, 0x1d, 0x3, 0x86, 0xbd, 0xc5, 0xde, 0x3c, 0x1b, 0x40, 0x41, 0x7c, 0x61, 0x8, 0x80, 0x53, 0x87, 0x1b, 0x5a, 0x56, 0xd, 0x88, 0x1d, 0x60, 0x24, 0xce, 0x7b, 0x8f, 0xff, 0xaf, 0x36}}
|
||||
info := bindataFileInfo{name: "1630485153_networks.up.sql", size: 394, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -1097,8 +1105,8 @@ func _1632262444_profile_pictures_show_toUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1632262444_profile_pictures_show_to.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc3, 0xa2, 0x5a, 0x94, 0xde, 0x86, 0x2a, 0x29, 0xf5, 0xb3, 0x36, 0xe7, 0x53, 0x81, 0x55, 0xc9, 0xb5, 0xc3, 0xf4, 0x8c, 0x65, 0x2c, 0x4c, 0x48, 0xfd, 0x3c, 0xb7, 0x14, 0xb4, 0xea, 0x7a, 0x13}}
|
||||
info := bindataFileInfo{name: "1632262444_profile_pictures_show_to.up.sql", size: 81, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -1117,8 +1125,8 @@ func _1635942153_add_telemetry_server_url_to_settingsUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1635942153_add_telemetry_server_url_to_settings.up.sql", size: 128, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6e, 0x9b, 0x1d, 0x39, 0x9c, 0x8d, 0x50, 0x86, 0xdf, 0xe5, 0x81, 0x55, 0xdc, 0x31, 0xcd, 0xb7, 0xc7, 0x5a, 0x67, 0x3b, 0x21, 0x99, 0xa5, 0x74, 0xb8, 0xd3, 0x58, 0xae, 0x29, 0x68, 0x2a, 0x8d}}
|
||||
info := bindataFileInfo{name: "1635942153_add_telemetry_server_url_to_settings.up.sql", size: 128, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -1137,8 +1145,8 @@ func _1635942154_add_backup_settingUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1635942154_add_backup_setting.up.sql", size: 287, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0xe7, 0xfb, 0x70, 0x80, 0x5, 0xb4, 0x7b, 0x67, 0x8, 0x6e, 0x5f, 0x45, 0x17, 0xd9, 0x5f, 0x18, 0x66, 0x2f, 0x8a, 0x4f, 0xd4, 0x15, 0xe5, 0x2b, 0xbb, 0x25, 0x7a, 0x30, 0xad, 0x4c, 0x1a}}
|
||||
info := bindataFileInfo{name: "1635942154_add_backup_setting.up.sql", size: 287, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -1157,8 +1165,8 @@ func _1637745568_add_auto_message_settingUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1637745568_add_auto_message_setting.up.sql", size: 122, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0xd8, 0xd2, 0xc2, 0x3a, 0xd7, 0xf1, 0x96, 0x6a, 0x35, 0xe5, 0x5c, 0xb9, 0xed, 0x4b, 0xf2, 0x5f, 0x80, 0x43, 0xca, 0x40, 0x57, 0x7e, 0xd7, 0x41, 0x9f, 0x70, 0x9f, 0xaf, 0x2a, 0xfc, 0x8f}}
|
||||
info := bindataFileInfo{name: "1637745568_add_auto_message_setting.up.sql", size: 122, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -1177,8 +1185,8 @@ func _1640111208_nodeconfigUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1640111208_nodeconfig.up.sql", size: 7659, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0x5a, 0xc6, 0xed, 0x6, 0xcb, 0x51, 0x8b, 0x78, 0xe9, 0x10, 0x37, 0xd1, 0xad, 0x9b, 0x76, 0x9a, 0xb9, 0x72, 0x85, 0xe7, 0x8a, 0x7f, 0xf0, 0x81, 0xf8, 0x33, 0x59, 0x67, 0x8e, 0xeb, 0xb1}}
|
||||
info := bindataFileInfo{name: "1640111208_nodeconfig.up.sql", size: 7659, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -1197,8 +1205,8 @@ func docGo() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "doc.go", size: 85, mode: os.FileMode(0644), modTime: time.Unix(1699005551, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0xd2, 0xea, 0xc5, 0xd, 0xc4, 0x7f, 0x95, 0x8e, 0xd5, 0xf5, 0x96, 0xf2, 0x1b, 0xcb, 0xc7, 0xc2, 0x46, 0x1, 0x78, 0x1d, 0x5d, 0x59, 0x19, 0x99, 0xdd, 0x5b, 0xf5, 0x63, 0xa5, 0x25, 0xb8}}
|
||||
info := bindataFileInfo{name: "doc.go", size: 85, mode: os.FileMode(420), modTime: time.Unix(1698751810, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -1206,8 +1214,8 @@ func docGo() (*asset, error) {
|
|||
// It returns an error if the asset could not be found or
|
||||
// could not be loaded.
|
||||
func Asset(name string) ([]byte, error) {
|
||||
canonicalName := strings.Replace(name, "\\", "/", -1)
|
||||
if f, ok := _bindata[canonicalName]; ok {
|
||||
cannonicalName := strings.Replace(name, "\\", "/", -1)
|
||||
if f, ok := _bindata[cannonicalName]; ok {
|
||||
a, err := f()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
|
||||
|
@ -1217,12 +1225,6 @@ func Asset(name string) ([]byte, error) {
|
|||
return nil, fmt.Errorf("Asset %s not found", name)
|
||||
}
|
||||
|
||||
// AssetString returns the asset contents as a string (instead of a []byte).
|
||||
func AssetString(name string) (string, error) {
|
||||
data, err := Asset(name)
|
||||
return string(data), err
|
||||
}
|
||||
|
||||
// MustAsset is like Asset but panics when Asset would return an error.
|
||||
// It simplifies safe initialization of global variables.
|
||||
func MustAsset(name string) []byte {
|
||||
|
@ -1234,18 +1236,12 @@ func MustAsset(name string) []byte {
|
|||
return a
|
||||
}
|
||||
|
||||
// MustAssetString is like AssetString but panics when Asset would return an
|
||||
// error. It simplifies safe initialization of global variables.
|
||||
func MustAssetString(name string) string {
|
||||
return string(MustAsset(name))
|
||||
}
|
||||
|
||||
// AssetInfo loads and returns the asset info for the given name.
|
||||
// It returns an error if the asset could not be found or
|
||||
// could not be loaded.
|
||||
func AssetInfo(name string) (os.FileInfo, error) {
|
||||
canonicalName := strings.Replace(name, "\\", "/", -1)
|
||||
if f, ok := _bindata[canonicalName]; ok {
|
||||
cannonicalName := strings.Replace(name, "\\", "/", -1)
|
||||
if f, ok := _bindata[cannonicalName]; ok {
|
||||
a, err := f()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
|
||||
|
@ -1255,33 +1251,6 @@ func AssetInfo(name string) (os.FileInfo, error) {
|
|||
return nil, fmt.Errorf("AssetInfo %s not found", name)
|
||||
}
|
||||
|
||||
// AssetDigest returns the digest of the file with the given name. It returns an
|
||||
// error if the asset could not be found or the digest could not be loaded.
|
||||
func AssetDigest(name string) ([sha256.Size]byte, error) {
|
||||
canonicalName := strings.Replace(name, "\\", "/", -1)
|
||||
if f, ok := _bindata[canonicalName]; ok {
|
||||
a, err := f()
|
||||
if err != nil {
|
||||
return [sha256.Size]byte{}, fmt.Errorf("AssetDigest %s can't read by error: %v", name, err)
|
||||
}
|
||||
return a.digest, nil
|
||||
}
|
||||
return [sha256.Size]byte{}, fmt.Errorf("AssetDigest %s not found", name)
|
||||
}
|
||||
|
||||
// Digests returns a map of all known files and their checksums.
|
||||
func Digests() (map[string][sha256.Size]byte, error) {
|
||||
mp := make(map[string][sha256.Size]byte, len(_bindata))
|
||||
for name := range _bindata {
|
||||
a, err := _bindata[name]()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
mp[name] = a.digest
|
||||
}
|
||||
return mp, nil
|
||||
}
|
||||
|
||||
// AssetNames returns the names of the assets.
|
||||
func AssetNames() []string {
|
||||
names := make([]string, 0, len(_bindata))
|
||||
|
@ -1294,111 +1263,58 @@ func AssetNames() []string {
|
|||
// _bindata is a table, holding each asset generator, mapped to its name.
|
||||
var _bindata = map[string]func() (*asset, error){
|
||||
"0001_app.down.sql": _0001_appDownSql,
|
||||
|
||||
"0001_app.up.sql": _0001_appUpSql,
|
||||
|
||||
"0002_tokens.down.sql": _0002_tokensDownSql,
|
||||
|
||||
"0002_tokens.up.sql": _0002_tokensUpSql,
|
||||
|
||||
"0003_settings.down.sql": _0003_settingsDownSql,
|
||||
|
||||
"0003_settings.up.sql": _0003_settingsUpSql,
|
||||
|
||||
"0004_pending_stickers.down.sql": _0004_pending_stickersDownSql,
|
||||
|
||||
"0004_pending_stickers.up.sql": _0004_pending_stickersUpSql,
|
||||
|
||||
"0005_waku_mode.down.sql": _0005_waku_modeDownSql,
|
||||
|
||||
"0005_waku_mode.up.sql": _0005_waku_modeUpSql,
|
||||
|
||||
"0006_appearance.up.sql": _0006_appearanceUpSql,
|
||||
|
||||
"0007_enable_waku_default.up.sql": _0007_enable_waku_defaultUpSql,
|
||||
|
||||
"0008_add_push_notifications.up.sql": _0008_add_push_notificationsUpSql,
|
||||
|
||||
"0009_enable_sending_push_notifications.down.sql": _0009_enable_sending_push_notificationsDownSql,
|
||||
|
||||
"0009_enable_sending_push_notifications.up.sql": _0009_enable_sending_push_notificationsUpSql,
|
||||
|
||||
"0010_add_block_mentions.down.sql": _0010_add_block_mentionsDownSql,
|
||||
|
||||
"0010_add_block_mentions.up.sql": _0010_add_block_mentionsUpSql,
|
||||
|
||||
"0011_allow_webview_permission_requests.down.sql": _0011_allow_webview_permission_requestsDownSql,
|
||||
|
||||
"0011_allow_webview_permission_requests.up.sql": _0011_allow_webview_permission_requestsUpSql,
|
||||
|
||||
"0012_pending_transactions.down.sql": _0012_pending_transactionsDownSql,
|
||||
|
||||
"0012_pending_transactions.up.sql": _0012_pending_transactionsUpSql,
|
||||
|
||||
"0013_favourites.down.sql": _0013_favouritesDownSql,
|
||||
|
||||
"0013_favourites.up.sql": _0013_favouritesUpSql,
|
||||
|
||||
"0014_add_use_mailservers.down.sql": _0014_add_use_mailserversDownSql,
|
||||
|
||||
"0014_add_use_mailservers.up.sql": _0014_add_use_mailserversUpSql,
|
||||
|
||||
"0015_link_previews.down.sql": _0015_link_previewsDownSql,
|
||||
|
||||
"0015_link_previews.up.sql": _0015_link_previewsUpSql,
|
||||
|
||||
"0016_local_notifications_preferences.down.sql": _0016_local_notifications_preferencesDownSql,
|
||||
|
||||
"0016_local_notifications_preferences.up.sql": _0016_local_notifications_preferencesUpSql,
|
||||
|
||||
"0017_bookmarks.down.sql": _0017_bookmarksDownSql,
|
||||
|
||||
"0017_bookmarks.up.sql": _0017_bookmarksUpSql,
|
||||
|
||||
"0018_profile_pictures_visibility.up.sql": _0018_profile_pictures_visibilityUpSql,
|
||||
|
||||
"0019_blocks_ranges_extra_data.up.sql": _0019_blocks_ranges_extra_dataUpSql,
|
||||
|
||||
"0020_metrics.up.sql": _0020_metricsUpSql,
|
||||
|
||||
"0021_add_session_id_to_metrics.up.sql": _0021_add_session_id_to_metricsUpSql,
|
||||
|
||||
"0022_pending_transfers.up.sql": _0022_pending_transfersUpSql,
|
||||
|
||||
"1618237885_settings_anon_metrics_should_send.up.sql": _1618237885_settings_anon_metrics_should_sendUpSql,
|
||||
|
||||
"1618395756_contacts_only.up.sql": _1618395756_contacts_onlyUpSql,
|
||||
|
||||
"1622184614_add_default_sync_period.up.sql": _1622184614_add_default_sync_periodUpSql,
|
||||
|
||||
"1625872445_user_status.up.sql": _1625872445_user_statusUpSql,
|
||||
|
||||
"1627983977_add_gif_to_settings.up.sql": _1627983977_add_gif_to_settingsUpSql,
|
||||
|
||||
"1628580203_add_hidden_account.up.sql": _1628580203_add_hidden_accountUpSql,
|
||||
|
||||
"1629123384_add_id_to_app_metrics.up.sql": _1629123384_add_id_to_app_metricsUpSql,
|
||||
|
||||
"1630401853_add_opensea_enabled_to_settings.up.sql": _1630401853_add_opensea_enabled_to_settingsUpSql,
|
||||
|
||||
"1630464455_create-saved_addresses-table.down.sql": _1630464455_createSaved_addressesTableDownSql,
|
||||
|
||||
"1630464455_create-saved_addresses-table.up.sql": _1630464455_createSaved_addressesTableUpSql,
|
||||
|
||||
"1630485153_networks.down.sql": _1630485153_networksDownSql,
|
||||
|
||||
"1630485153_networks.up.sql": _1630485153_networksUpSql,
|
||||
|
||||
"1632262444_profile_pictures_show_to.up.sql": _1632262444_profile_pictures_show_toUpSql,
|
||||
|
||||
"1635942153_add_telemetry_server_url_to_settings.up.sql": _1635942153_add_telemetry_server_url_to_settingsUpSql,
|
||||
|
||||
"1635942154_add_backup_setting.up.sql": _1635942154_add_backup_settingUpSql,
|
||||
|
||||
"1637745568_add_auto_message_setting.up.sql": _1637745568_add_auto_message_settingUpSql,
|
||||
|
||||
"1640111208_nodeconfig.up.sql": _1640111208_nodeconfigUpSql,
|
||||
|
||||
"doc.go": docGo,
|
||||
}
|
||||
|
||||
|
@ -1411,15 +1327,15 @@ var _bindata = map[string]func() (*asset, error){
|
|||
// img/
|
||||
// a.png
|
||||
// b.png
|
||||
// then AssetDir("data") would return []string{"foo.txt", "img"},
|
||||
// AssetDir("data/img") would return []string{"a.png", "b.png"},
|
||||
// AssetDir("foo.txt") and AssetDir("notexist") would return an error, and
|
||||
// then AssetDir("data") would return []string{"foo.txt", "img"}
|
||||
// AssetDir("data/img") would return []string{"a.png", "b.png"}
|
||||
// AssetDir("foo.txt") and AssetDir("notexist") would return an error
|
||||
// AssetDir("") will return []string{"data"}.
|
||||
func AssetDir(name string) ([]string, error) {
|
||||
node := _bintree
|
||||
if len(name) != 0 {
|
||||
canonicalName := strings.Replace(name, "\\", "/", -1)
|
||||
pathList := strings.Split(canonicalName, "/")
|
||||
cannonicalName := strings.Replace(name, "\\", "/", -1)
|
||||
pathList := strings.Split(cannonicalName, "/")
|
||||
for _, p := range pathList {
|
||||
node = node.Children[p]
|
||||
if node == nil {
|
||||
|
@ -1499,7 +1415,7 @@ var _bintree = &bintree{nil, map[string]*bintree{
|
|||
"doc.go": &bintree{docGo, map[string]*bintree{}},
|
||||
}}
|
||||
|
||||
// RestoreAsset restores an asset under the given directory.
|
||||
// RestoreAsset restores an asset under the given directory
|
||||
func RestoreAsset(dir, name string) error {
|
||||
data, err := Asset(name)
|
||||
if err != nil {
|
||||
|
@ -1517,10 +1433,14 @@ func RestoreAsset(dir, name string) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
|
||||
err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// RestoreAssets restores an asset under the given directory recursively.
|
||||
// RestoreAssets restores an asset under the given directory recursively
|
||||
func RestoreAssets(dir, name string) error {
|
||||
children, err := AssetDir(name)
|
||||
// File
|
||||
|
@ -1538,6 +1458,6 @@ func RestoreAssets(dir, name string) error {
|
|||
}
|
||||
|
||||
func _filePath(dir, name string) string {
|
||||
canonicalName := strings.Replace(name, "\\", "/", -1)
|
||||
return filepath.Join(append([]string{dir}, strings.Split(canonicalName, "/")...)...)
|
||||
cannonicalName := strings.Replace(name, "\\", "/", -1)
|
||||
return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
|
||||
}
|
||||
|
|
|
@ -354,6 +354,7 @@ func SaveAccountAndLogin(accountData, password, settingsJSON, configJSON, subacc
|
|||
|
||||
if *settings.Mnemonic != "" {
|
||||
settings.OmitTransfersHistoryScan = true
|
||||
settings.MnemonicWasNotShown = true
|
||||
}
|
||||
|
||||
var conf params.NodeConfig
|
||||
|
|
|
@ -58,6 +58,7 @@ type Account struct {
|
|||
Address types.Address `json:"address"`
|
||||
KeyUID string `json:"key-uid"`
|
||||
Wallet bool `json:"wallet"`
|
||||
AddressWasNotShown bool `json:"address-was-not-shown,omitempty"`
|
||||
Chat bool `json:"chat"`
|
||||
Type AccountType `json:"type,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
|
@ -354,6 +355,7 @@ func (db *Database) processRows(rows *sql.Rows) ([]*Keypair, []*Account, error)
|
|||
accRemoved sql.NullBool
|
||||
accProdPreferredChainIDs sql.NullString
|
||||
accTestPreferredChainIDs sql.NullString
|
||||
accAddressWasNotShown sql.NullBool
|
||||
)
|
||||
|
||||
for rows.Next() {
|
||||
|
@ -364,7 +366,7 @@ func (db *Database) processRows(rows *sql.Rows) ([]*Keypair, []*Account, error)
|
|||
&kpKeyUID, &kpName, &kpType, &kpDerivedFrom, &kpLastUsedDerivationIndex, &kpSyncedFrom, &kpClock, &kpRemoved,
|
||||
&accAddress, &accKeyUID, &pubkey, &accPath, &accName, &accColorID, &accEmoji,
|
||||
&accWallet, &accChat, &accHidden, &accOperable, &accClock, &accCreatedAt, &accPosition, &accRemoved,
|
||||
&accProdPreferredChainIDs, &accTestPreferredChainIDs)
|
||||
&accProdPreferredChainIDs, &accTestPreferredChainIDs, &accAddressWasNotShown)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
@ -440,6 +442,9 @@ func (db *Database) processRows(rows *sql.Rows) ([]*Keypair, []*Account, error)
|
|||
if accTestPreferredChainIDs.Valid {
|
||||
acc.TestPreferredChainIDs = accTestPreferredChainIDs.String
|
||||
}
|
||||
if accAddressWasNotShown.Valid {
|
||||
acc.AddressWasNotShown = accAddressWasNotShown.Bool
|
||||
}
|
||||
if lth := len(pubkey); lth > 0 {
|
||||
acc.PublicKey = make(types.HexBytes, lth)
|
||||
copy(acc.PublicKey, pubkey)
|
||||
|
@ -529,7 +534,8 @@ func (db *Database) getKeypairs(tx *sql.Tx, keyUID string, includeRemoved bool)
|
|||
ka.position,
|
||||
ka.removed,
|
||||
ka.prod_preferred_chain_ids,
|
||||
ka.test_preferred_chain_ids
|
||||
ka.test_preferred_chain_ids,
|
||||
ka.address_was_not_shown
|
||||
FROM
|
||||
keypairs k
|
||||
LEFT JOIN
|
||||
|
@ -631,7 +637,8 @@ func (db *Database) getAccounts(tx *sql.Tx, address types.Address, includeRemove
|
|||
ka.position,
|
||||
ka.removed,
|
||||
ka.prod_preferred_chain_ids,
|
||||
ka.test_preferred_chain_ids
|
||||
ka.test_preferred_chain_ids,
|
||||
ka.address_was_not_shown
|
||||
FROM
|
||||
keypairs_accounts ka
|
||||
LEFT JOIN
|
||||
|
@ -994,9 +1001,9 @@ func (db *Database) saveOrUpdateAccounts(tx *sql.Tx, accounts []*Account, update
|
|||
|
||||
_, err = tx.Exec(`
|
||||
INSERT OR IGNORE INTO
|
||||
keypairs_accounts (address, key_uid, pubkey, path, wallet, chat, created_at, updated_at)
|
||||
keypairs_accounts (address, key_uid, pubkey, path, wallet, address_was_not_shown, chat, created_at, updated_at)
|
||||
VALUES
|
||||
(?, ?, ?, ?, ?, ?, datetime('now'), datetime('now'));
|
||||
(?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now'));
|
||||
|
||||
UPDATE
|
||||
keypairs_accounts
|
||||
|
@ -1015,7 +1022,7 @@ func (db *Database) saveOrUpdateAccounts(tx *sql.Tx, accounts []*Account, update
|
|||
WHERE
|
||||
address = ?;
|
||||
`,
|
||||
acc.Address, keyUID, acc.PublicKey, acc.Path, acc.Wallet, acc.Chat,
|
||||
acc.Address, keyUID, acc.PublicKey, acc.Path, acc.Wallet, acc.AddressWasNotShown, acc.Chat,
|
||||
acc.Name, acc.ColorID, acc.Emoji, acc.Hidden, acc.Operable, acc.Clock, acc.Position, acc.Removed,
|
||||
acc.ProdPreferredChainIDs, acc.TestPreferredChainIDs, acc.Address)
|
||||
|
||||
|
@ -1644,3 +1651,20 @@ func (db *Database) CheckAndDeleteExpiredKeypairsAndAccounts(time uint64) error
|
|||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *Database) AddressWasShown(address types.Address) error {
|
||||
tx, err := db.db.Begin()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer func() {
|
||||
if err == nil {
|
||||
err = tx.Commit()
|
||||
return
|
||||
}
|
||||
_ = tx.Rollback()
|
||||
}()
|
||||
|
||||
_, err = tx.Exec(`UPDATE keypairs_accounts SET address_was_not_shown = 0 WHERE address = ?`, address)
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -452,7 +452,11 @@ var (
|
|||
dBColumnName: "omit_transfers_history_scan",
|
||||
valueHandler: BoolHandler,
|
||||
}
|
||||
|
||||
MnemonicWasNotShown = SettingField{
|
||||
reactFieldName: "mnemonic-was-not-shown?",
|
||||
dBColumnName: "mnemonic_was_not_shown",
|
||||
valueHandler: BoolHandler,
|
||||
}
|
||||
SettingFieldRegister = []SettingField{
|
||||
AnonMetricsShouldSend,
|
||||
Appearance,
|
||||
|
|
|
@ -126,10 +126,11 @@ INSERT INTO settings (
|
|||
profile_pictures_show_to,
|
||||
profile_pictures_visibility,
|
||||
url_unfurling_mode,
|
||||
omit_transfers_history_scan
|
||||
omit_transfers_history_scan,
|
||||
mnemonic_was_not_shown
|
||||
) VALUES (
|
||||
?,?,?,?,?,?,?,?,?,?,?,?,?,
|
||||
?,?,?,?,?,?,?,?,?,'id',?,?,?,?,?)`,
|
||||
?,?,?,?,?,?,?,?,?,'id',?,?,?,?,?,?)`,
|
||||
s.Address,
|
||||
s.Currency,
|
||||
s.CurrentNetwork,
|
||||
|
@ -157,6 +158,7 @@ INSERT INTO settings (
|
|||
s.ProfilePicturesVisibility,
|
||||
s.URLUnfurlingMode,
|
||||
s.OmitTransfersHistoryScan,
|
||||
s.MnemonicWasNotShown,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -352,7 +354,7 @@ func (db *Database) GetSettings() (Settings, error) {
|
|||
waku_bloom_filter_mode, webview_allow_permission_requests, current_user_status, send_status_updates, gif_recents,
|
||||
gif_favorites, opensea_enabled, last_backup, backup_enabled, telemetry_server_url, auto_message_enabled, gif_api_key,
|
||||
test_networks_enabled, mutual_contact_enabled, profile_migration_needed, is_sepolia_enabled, url_unfurling_mode,
|
||||
omit_transfers_history_scan
|
||||
omit_transfers_history_scan, mnemonic_was_not_shown
|
||||
FROM
|
||||
settings
|
||||
WHERE
|
||||
|
@ -429,6 +431,7 @@ func (db *Database) GetSettings() (Settings, error) {
|
|||
&s.IsSepoliaEnabled,
|
||||
&s.URLUnfurlingMode,
|
||||
&s.OmitTransfersHistoryScan,
|
||||
&s.MnemonicWasNotShown,
|
||||
)
|
||||
|
||||
return s, err
|
||||
|
@ -613,6 +616,14 @@ func (db *Database) MnemonicRemoved() (result bool, err error) {
|
|||
return result, err
|
||||
}
|
||||
|
||||
func (db *Database) GetMnemonicWasNotShown() (result bool, err error) {
|
||||
err = db.makeSelectRow(MnemonicWasNotShown).Scan(&result)
|
||||
if err == sql.ErrNoRows {
|
||||
return result, nil
|
||||
}
|
||||
return result, err
|
||||
}
|
||||
|
||||
func (db *Database) GifAPIKey() (string, error) {
|
||||
return db.makeSelectString(GifAPIKey)
|
||||
}
|
||||
|
@ -742,3 +753,7 @@ func (db *Database) postChangesToSubscribers(change *SyncSettingField) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (db *Database) MnemonicWasShown() error {
|
||||
return db.SaveSettingField(MnemonicWasNotShown, false)
|
||||
}
|
||||
|
|
|
@ -142,6 +142,8 @@ type Settings struct {
|
|||
LogLevel *string `json:"log-level,omitempty"`
|
||||
MessagesFromContactsOnly bool `json:"messages-from-contacts-only"`
|
||||
Mnemonic *string `json:"mnemonic,omitempty"`
|
||||
// NOTE(rasom): negation here because it safer/simpler to have false by default
|
||||
MnemonicWasNotShown bool `json:"mnemonic-was-not-shown?,omitempty"`
|
||||
MnemonicRemoved bool `json:"mnemonic-removed?,omitempty"`
|
||||
OmitTransfersHistoryScan bool `json:"omit-transfers-history-scan?,omitempty"`
|
||||
MutualContactEnabled bool `json:"mutual-contact-enabled?"`
|
||||
|
|
|
@ -46,7 +46,7 @@ func handleReceiveAccount(logger *zap.Logger, pr PayloadReceiver) http.HandlerFu
|
|||
}
|
||||
}
|
||||
|
||||
func handleSendAccount(logger *zap.Logger, pm PayloadMounter) http.HandlerFunc {
|
||||
func handleSendAccount(logger *zap.Logger, pm PayloadMounter, beforeSending func()) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
signal.SendLocalPairingEvent(Event{Type: EventConnectionSuccess, Action: ActionPairingAccount})
|
||||
w.Header().Set("Content-Type", "application/octet-stream")
|
||||
|
@ -58,6 +58,7 @@ func handleSendAccount(logger *zap.Logger, pm PayloadMounter) http.HandlerFunc {
|
|||
return
|
||||
}
|
||||
|
||||
beforeSending()
|
||||
_, err = w.Write(pm.ToSend())
|
||||
if err != nil {
|
||||
signal.SendLocalPairingEvent(Event{Type: EventTransferError, Error: err.Error(), Action: ActionPairingAccount})
|
||||
|
@ -96,7 +97,7 @@ func handleParingSyncDeviceReceive(logger *zap.Logger, pr PayloadReceiver) http.
|
|||
}
|
||||
}
|
||||
|
||||
func handlePairingSyncDeviceSend(logger *zap.Logger, pm PayloadMounter) http.HandlerFunc {
|
||||
func handlePairingSyncDeviceSend(logger *zap.Logger, pm PayloadMounter, beforeSending func()) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
signal.SendLocalPairingEvent(Event{Type: EventConnectionSuccess, Action: ActionSyncDevice})
|
||||
w.Header().Set("Content-Type", "application/octet-stream")
|
||||
|
@ -110,6 +111,7 @@ func handlePairingSyncDeviceSend(logger *zap.Logger, pm PayloadMounter) http.Han
|
|||
return
|
||||
}
|
||||
|
||||
beforeSending()
|
||||
_, err = w.Write(pm.ToSend())
|
||||
if err != nil {
|
||||
signal.SendLocalPairingEvent(Event{Type: EventTransferError, Error: err.Error(), Action: ActionSyncDevice})
|
||||
|
@ -148,7 +150,7 @@ func handleReceiveInstallation(logger *zap.Logger, pmr PayloadMounterReceiver) h
|
|||
}
|
||||
}
|
||||
|
||||
func handleSendInstallation(logger *zap.Logger, pmr PayloadMounterReceiver) http.HandlerFunc {
|
||||
func handleSendInstallation(logger *zap.Logger, pmr PayloadMounterReceiver, beforeSending func()) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
signal.SendLocalPairingEvent(Event{Type: EventConnectionSuccess, Action: ActionPairingInstallation})
|
||||
w.Header().Set("Content-Type", "application/octet-stream")
|
||||
|
@ -160,6 +162,7 @@ func handleSendInstallation(logger *zap.Logger, pmr PayloadMounterReceiver) http
|
|||
return
|
||||
}
|
||||
|
||||
beforeSending()
|
||||
_, err = w.Write(pmr.ToSend())
|
||||
if err != nil {
|
||||
signal.SendLocalPairingEvent(Event{Type: EventTransferError, Error: err.Error(), Action: ActionPairingInstallation})
|
||||
|
|
|
@ -108,6 +108,7 @@ type SenderServer struct {
|
|||
accountMounter PayloadMounter
|
||||
rawMessageMounter PayloadMounter
|
||||
installationMounter PayloadMounterReceiver
|
||||
backend *api.GethStatusBackend
|
||||
}
|
||||
|
||||
// NewSenderServer returns a *SenderServer init from the given *SenderServerConfig
|
||||
|
@ -130,14 +131,24 @@ func NewSenderServer(backend *api.GethStatusBackend, config *SenderServerConfig)
|
|||
accountMounter: am,
|
||||
rawMessageMounter: rmm,
|
||||
installationMounter: imr,
|
||||
backend: backend,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *SenderServer) startSendingData() error {
|
||||
logger := s.GetLogger()
|
||||
beforeSending := func() {
|
||||
if s.backend != nil {
|
||||
err := s.backend.LocalPairingStarted()
|
||||
if err != nil {
|
||||
logger.Error("startSendingData backend.LocalPairingStarted()", zap.Error(err))
|
||||
}
|
||||
}
|
||||
}
|
||||
s.SetHandlers(server.HandlerPatternMap{
|
||||
pairingChallenge: handlePairingChallenge(s.challengeGiver),
|
||||
pairingSendAccount: middlewareChallenge(s.challengeGiver, handleSendAccount(s.GetLogger(), s.accountMounter)),
|
||||
pairingSendSyncDevice: middlewareChallenge(s.challengeGiver, handlePairingSyncDeviceSend(s.GetLogger(), s.rawMessageMounter)),
|
||||
pairingSendAccount: middlewareChallenge(s.challengeGiver, handleSendAccount(logger, s.accountMounter, beforeSending)),
|
||||
pairingSendSyncDevice: middlewareChallenge(s.challengeGiver, handlePairingSyncDeviceSend(logger, s.rawMessageMounter, beforeSending)),
|
||||
// TODO implement refactor of installation data exchange to follow the send/receive pattern of
|
||||
// the other handlers.
|
||||
// https://github.com/status-im/status-go/issues/3304
|
||||
|
@ -205,6 +216,7 @@ type ReceiverServer struct {
|
|||
accountReceiver PayloadReceiver
|
||||
rawMessageReceiver PayloadReceiver
|
||||
installationReceiver PayloadMounterReceiver
|
||||
backend *api.GethStatusBackend
|
||||
}
|
||||
|
||||
// NewReceiverServer returns a *SenderServer init from the given *ReceiverServerConfig
|
||||
|
@ -227,19 +239,29 @@ func NewReceiverServer(backend *api.GethStatusBackend, config *ReceiverServerCon
|
|||
accountReceiver: ar,
|
||||
rawMessageReceiver: rmr,
|
||||
installationReceiver: imr,
|
||||
backend: backend,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *ReceiverServer) startReceivingData() error {
|
||||
logger := s.GetLogger()
|
||||
beforeSending := func() {
|
||||
if s.backend != nil {
|
||||
err := s.backend.LocalPairingStarted()
|
||||
if err != nil {
|
||||
logger.Error("startSendingData backend.LocalPairingStarted()", zap.Error(err))
|
||||
}
|
||||
}
|
||||
}
|
||||
s.SetHandlers(server.HandlerPatternMap{
|
||||
pairingChallenge: handlePairingChallenge(s.challengeGiver),
|
||||
pairingReceiveAccount: handleReceiveAccount(s.GetLogger(), s.accountReceiver),
|
||||
pairingReceiveSyncDevice: handleParingSyncDeviceReceive(s.GetLogger(), s.rawMessageReceiver),
|
||||
pairingReceiveAccount: handleReceiveAccount(logger, s.accountReceiver),
|
||||
pairingReceiveSyncDevice: handleParingSyncDeviceReceive(logger, s.rawMessageReceiver),
|
||||
// TODO implement refactor of installation data exchange to follow the send/receive pattern of
|
||||
// the other handlers.
|
||||
// https://github.com/status-im/status-go/issues/3304
|
||||
// send installation data back to sender
|
||||
pairingSendInstallation: middlewareChallenge(s.challengeGiver, handleSendInstallation(s.GetLogger(), s.installationReceiver)),
|
||||
pairingSendInstallation: middlewareChallenge(s.challengeGiver, handleSendInstallation(logger, s.installationReceiver, beforeSending)),
|
||||
})
|
||||
return s.Start()
|
||||
}
|
||||
|
@ -301,6 +323,7 @@ func StartUpReceiverServer(backend *api.GethStatusBackend, configJSON string) (s
|
|||
type KeystoreFilesSenderServer struct {
|
||||
*BaseServer
|
||||
keystoreFilesMounter PayloadMounter
|
||||
backend *api.GethStatusBackend
|
||||
}
|
||||
|
||||
func NewKeystoreFilesSenderServer(backend *api.GethStatusBackend, config *KeystoreFilesSenderServerConfig) (*KeystoreFilesSenderServer, error) {
|
||||
|
@ -320,13 +343,23 @@ func NewKeystoreFilesSenderServer(backend *api.GethStatusBackend, config *Keysto
|
|||
return &KeystoreFilesSenderServer{
|
||||
BaseServer: bs,
|
||||
keystoreFilesMounter: kfm,
|
||||
backend: backend,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *KeystoreFilesSenderServer) startSendingData() error {
|
||||
logger := s.GetLogger()
|
||||
beforeSending := func() {
|
||||
if s.backend != nil {
|
||||
err := s.backend.LocalPairingStarted()
|
||||
if err != nil {
|
||||
logger.Error("startSendingData backend.LocalPairingStarted()", zap.Error(err))
|
||||
}
|
||||
}
|
||||
}
|
||||
s.SetHandlers(server.HandlerPatternMap{
|
||||
pairingChallenge: handlePairingChallenge(s.challengeGiver),
|
||||
pairingSendAccount: middlewareChallenge(s.challengeGiver, handleSendAccount(s.GetLogger(), s.keystoreFilesMounter)),
|
||||
pairingSendAccount: middlewareChallenge(s.challengeGiver, handleSendAccount(logger, s.keystoreFilesMounter, beforeSending)),
|
||||
})
|
||||
return s.Start()
|
||||
}
|
||||
|
|
|
@ -293,6 +293,10 @@ func (api *API) AddAccount(ctx context.Context, password string, account *accoun
|
|||
}
|
||||
}
|
||||
|
||||
if account.Type == accounts.AccountTypeGenerated {
|
||||
account.AddressWasNotShown = true
|
||||
}
|
||||
|
||||
return api.SaveAccount(ctx, account)
|
||||
}
|
||||
|
||||
|
@ -587,3 +591,7 @@ func (api *API) DeleteAllKeycardsWithKeyUID(ctx context.Context, keyUID string)
|
|||
func (api *API) UpdateKeycardUID(ctx context.Context, oldKeycardUID string, newKeycardUID string) error {
|
||||
return (*api.messenger).UpdateKeycardUID(ctx, oldKeycardUID, newKeycardUID)
|
||||
}
|
||||
|
||||
func (api *API) AddressWasShown(address types.Address) error {
|
||||
return api.db.AddressWasShown(address)
|
||||
}
|
||||
|
|
|
@ -186,3 +186,7 @@ func (api *SettingsAPI) AddOrReplaceSocialLinks(links identity.SocialLinks) erro
|
|||
|
||||
return (*api.messenger).AddOrReplaceSocialLinks(links)
|
||||
}
|
||||
|
||||
func (api *SettingsAPI) MnemonicWasShown() error {
|
||||
return api.db.MnemonicWasShown()
|
||||
}
|
||||
|
|
|
@ -9,6 +9,8 @@ import (
|
|||
"github.com/ethereum/go-ethereum/core/types"
|
||||
"github.com/ethereum/go-ethereum/event"
|
||||
"github.com/ethereum/go-ethereum/log"
|
||||
nodetypes "github.com/status-im/status-go/eth-node/types"
|
||||
"github.com/status-im/status-go/multiaccounts/accounts"
|
||||
"github.com/status-im/status-go/rpc/chain"
|
||||
"github.com/status-im/status-go/services/wallet/async"
|
||||
"github.com/status-im/status-go/services/wallet/balance"
|
||||
|
@ -74,6 +76,7 @@ func (c *findNewBlocksCommand) Run(parent context.Context) (err error) {
|
|||
type findBlocksCommand struct {
|
||||
account common.Address
|
||||
db *Database
|
||||
accountsDB *accounts.Database
|
||||
blockRangeDAO *BlockRangeSequentialDAO
|
||||
chainClient chain.ClientInterface
|
||||
balanceCacher balance.Cacher
|
||||
|
@ -223,8 +226,27 @@ func (c *findBlocksCommand) checkERC20Tail(parent context.Context) ([]*DBHeader,
|
|||
return foundHeaders, nil
|
||||
}
|
||||
|
||||
var mnemonicCheckEnabled = false
|
||||
|
||||
func (c *findBlocksCommand) Run(parent context.Context) (err error) {
|
||||
log.Debug("start findBlocksCommand", "account", c.account, "chain", c.chainClient.NetworkID(), "noLimit", c.noLimit, "from", c.fromBlockNumber, "to", c.toBlockNumber)
|
||||
mnemonicWasNotShown, err := c.accountsDB.GetMnemonicWasNotShown()
|
||||
if err != nil {
|
||||
c.error = err
|
||||
return err
|
||||
}
|
||||
|
||||
if mnemonicCheckEnabled && mnemonicWasNotShown {
|
||||
account, err := c.accountsDB.GetAccountByAddress(nodetypes.BytesToAddress(c.account.Bytes()))
|
||||
if err != nil {
|
||||
c.error = err
|
||||
return err
|
||||
}
|
||||
if account.AddressWasNotShown {
|
||||
log.Info("skip findBlocksCommand, mnemonic has not been shown and the address has not been shared yet", "address", c.account)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
rangeSize := big.NewInt(int64(c.defaultNodeBlockChunkSize))
|
||||
|
||||
|
@ -513,7 +535,7 @@ func loadTransfersLoop(ctx context.Context, account common.Address, blockDAO *Bl
|
|||
}
|
||||
}
|
||||
|
||||
func newLoadBlocksAndTransfersCommand(account common.Address, db *Database,
|
||||
func newLoadBlocksAndTransfersCommand(account common.Address, db *Database, accountsDB *accounts.Database,
|
||||
blockDAO *BlockDAO, blockRangesSeqDAO *BlockRangeSequentialDAO, chainClient chain.ClientInterface, feed *event.Feed,
|
||||
transactionManager *TransactionManager, pendingTxManager *transactions.PendingTxTracker,
|
||||
tokenManager *token.Manager, balanceCacher balance.Cacher, omitHistory bool) *loadBlocksAndTransfersCommand {
|
||||
|
@ -522,6 +544,7 @@ func newLoadBlocksAndTransfersCommand(account common.Address, db *Database,
|
|||
account: account,
|
||||
db: db,
|
||||
blockRangeDAO: blockRangesSeqDAO,
|
||||
accountsDB: accountsDB,
|
||||
blockDAO: blockDAO,
|
||||
chainClient: chainClient,
|
||||
feed: feed,
|
||||
|
@ -537,6 +560,7 @@ func newLoadBlocksAndTransfersCommand(account common.Address, db *Database,
|
|||
type loadBlocksAndTransfersCommand struct {
|
||||
account common.Address
|
||||
db *Database
|
||||
accountsDB *accounts.Database
|
||||
blockRangeDAO *BlockRangeSequentialDAO
|
||||
blockDAO *BlockDAO
|
||||
chainClient chain.ClientInterface
|
||||
|
@ -554,7 +578,7 @@ type loadBlocksAndTransfersCommand struct {
|
|||
}
|
||||
|
||||
func (c *loadBlocksAndTransfersCommand) Run(parent context.Context) error {
|
||||
log.Debug("start load all transfers command", "chain", c.chainClient.NetworkID(), "account", c.account)
|
||||
log.Info("start load all transfers command", "chain", c.chainClient.NetworkID(), "account", c.account)
|
||||
|
||||
ctx := parent
|
||||
|
||||
|
@ -609,7 +633,6 @@ func (c *loadBlocksAndTransfersCommand) startTransfersLoop(ctx context.Context)
|
|||
}
|
||||
|
||||
func (c *loadBlocksAndTransfersCommand) fetchHistoryBlocks(ctx context.Context, group *async.Group, fromNum, toNum *big.Int, blocksLoadedCh chan []*DBHeader) error {
|
||||
|
||||
log.Debug("fetchHistoryBlocks start", "chainID", c.chainClient.NetworkID(), "account", c.account, "omit", c.omitHistory)
|
||||
|
||||
if c.omitHistory {
|
||||
|
@ -633,6 +656,7 @@ func (c *loadBlocksAndTransfersCommand) fetchHistoryBlocks(ctx context.Context,
|
|||
fbc := &findBlocksCommand{
|
||||
account: c.account,
|
||||
db: c.db,
|
||||
accountsDB: c.accountsDB,
|
||||
blockRangeDAO: c.blockRangeDAO,
|
||||
chainClient: c.chainClient,
|
||||
balanceCacher: c.balanceCacher,
|
||||
|
@ -667,12 +691,13 @@ func (c *loadBlocksAndTransfersCommand) fetchHistoryBlocks(ctx context.Context,
|
|||
|
||||
func (c *loadBlocksAndTransfersCommand) startFetchingNewBlocks(group *async.Group, address common.Address, blocksLoadedCh chan<- []*DBHeader) {
|
||||
|
||||
log.Debug("startFetchingNewBlocks", "chainID", c.chainClient.NetworkID(), "account", address)
|
||||
log.Debug("startFetchingNewBlocks", "chainID", c.chainClient.NetworkID(), "account", address, "db", c.accountsDB)
|
||||
|
||||
newBlocksCmd := &findNewBlocksCommand{
|
||||
findBlocksCommand: &findBlocksCommand{
|
||||
account: address,
|
||||
db: c.db,
|
||||
accountsDB: c.accountsDB,
|
||||
blockRangeDAO: c.blockRangeDAO,
|
||||
chainClient: c.chainClient,
|
||||
balanceCacher: c.balanceCacher,
|
||||
|
|
|
@ -30,6 +30,7 @@ import (
|
|||
"github.com/status-im/status-go/services/wallet/balance"
|
||||
"github.com/status-im/status-go/t/helpers"
|
||||
|
||||
"github.com/status-im/status-go/multiaccounts/accounts"
|
||||
"github.com/status-im/status-go/params"
|
||||
statusRpc "github.com/status-im/status-go/rpc"
|
||||
"github.com/status-im/status-go/rpc/network"
|
||||
|
@ -942,10 +943,13 @@ func TestFindBlocksCommand(t *testing.T) {
|
|||
Verified: true,
|
||||
},
|
||||
})
|
||||
accDB, err := accounts.NewDB(appdb)
|
||||
require.NoError(t, err)
|
||||
fbc := &findBlocksCommand{
|
||||
account: common.HexToAddress("0x1234"),
|
||||
db: wdb,
|
||||
blockRangeDAO: &BlockRangeSequentialDAO{wdb.client},
|
||||
accountsDB: accDB,
|
||||
chainClient: tc,
|
||||
balanceCacher: balance.NewCacherWithTTL(5 * time.Minute),
|
||||
feed: &event.Feed{},
|
||||
|
@ -1065,11 +1069,15 @@ func TestFetchTransfersForLoadedBlocks(t *testing.T) {
|
|||
|
||||
chainClient := newMockChainClient()
|
||||
tracker := transactions.NewPendingTxTracker(db, chainClient, nil, &event.Feed{}, transactions.PendingCheckInterval)
|
||||
accDB, err := accounts.NewDB(wdb.client)
|
||||
require.NoError(t, err)
|
||||
|
||||
cmd := &loadBlocksAndTransfersCommand{
|
||||
account: common.HexToAddress("0x1234"),
|
||||
db: wdb,
|
||||
blockRangeDAO: &BlockRangeSequentialDAO{wdb.client},
|
||||
blockDAO: &BlockDAO{db},
|
||||
accountsDB: accDB,
|
||||
chainClient: tc,
|
||||
feed: &event.Feed{},
|
||||
balanceCacher: balance.NewCacherWithTTL(5 * time.Minute),
|
||||
|
|
|
@ -110,7 +110,7 @@ func (c *Controller) CheckRecentHistory(chainIDs []uint64, accounts []common.Add
|
|||
}
|
||||
}
|
||||
|
||||
c.reactor = NewReactor(c.db, c.blockDAO, c.blockRangesSeqDAO, c.TransferFeed, c.transactionManager,
|
||||
c.reactor = NewReactor(c.db, c.blockDAO, c.blockRangesSeqDAO, c.accountsDB, c.TransferFeed, c.transactionManager,
|
||||
c.pendingTxManager, c.tokenManager, c.balanceCacher, omitHistory)
|
||||
|
||||
err = c.reactor.start(chainClients, accounts)
|
||||
|
|
|
@ -8,6 +8,7 @@ import (
|
|||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/core/types"
|
||||
"github.com/ethereum/go-ethereum/event"
|
||||
"github.com/status-im/status-go/multiaccounts/accounts"
|
||||
"github.com/status-im/status-go/rpc/chain"
|
||||
"github.com/status-im/status-go/services/wallet/balance"
|
||||
"github.com/status-im/status-go/services/wallet/token"
|
||||
|
@ -49,6 +50,7 @@ type Reactor struct {
|
|||
db *Database
|
||||
blockDAO *BlockDAO
|
||||
blockRangesSeqDAO *BlockRangeSequentialDAO
|
||||
accountsDB *accounts.Database
|
||||
feed *event.Feed
|
||||
transactionManager *TransactionManager
|
||||
pendingTxManager *transactions.PendingTxTracker
|
||||
|
@ -58,11 +60,12 @@ type Reactor struct {
|
|||
omitHistory bool
|
||||
}
|
||||
|
||||
func NewReactor(db *Database, blockDAO *BlockDAO, blockRangesSeqDAO *BlockRangeSequentialDAO, feed *event.Feed, tm *TransactionManager,
|
||||
func NewReactor(db *Database, blockDAO *BlockDAO, blockRangesSeqDAO *BlockRangeSequentialDAO, accountsDB *accounts.Database, feed *event.Feed, tm *TransactionManager,
|
||||
pendingTxManager *transactions.PendingTxTracker, tokenManager *token.Manager,
|
||||
balanceCacher balance.Cacher, omitHistory bool) *Reactor {
|
||||
return &Reactor{
|
||||
db: db,
|
||||
accountsDB: accountsDB,
|
||||
blockDAO: blockDAO,
|
||||
blockRangesSeqDAO: blockRangesSeqDAO,
|
||||
feed: feed,
|
||||
|
@ -101,6 +104,7 @@ func (r *Reactor) createFetchStrategy(chainClients map[uint64]chain.ClientInterf
|
|||
r.db,
|
||||
r.blockDAO,
|
||||
r.blockRangesSeqDAO,
|
||||
r.accountsDB,
|
||||
r.feed,
|
||||
r.transactionManager,
|
||||
r.pendingTxManager,
|
||||
|
|
|
@ -8,6 +8,7 @@ import (
|
|||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/event"
|
||||
"github.com/ethereum/go-ethereum/log"
|
||||
"github.com/status-im/status-go/multiaccounts/accounts"
|
||||
"github.com/status-im/status-go/rpc/chain"
|
||||
"github.com/status-im/status-go/services/wallet/async"
|
||||
"github.com/status-im/status-go/services/wallet/balance"
|
||||
|
@ -16,7 +17,7 @@ import (
|
|||
"github.com/status-im/status-go/transactions"
|
||||
)
|
||||
|
||||
func NewSequentialFetchStrategy(db *Database, blockDAO *BlockDAO, blockRangesSeqDAO *BlockRangeSequentialDAO, feed *event.Feed,
|
||||
func NewSequentialFetchStrategy(db *Database, blockDAO *BlockDAO, blockRangesSeqDAO *BlockRangeSequentialDAO, accountsDB *accounts.Database, feed *event.Feed,
|
||||
transactionManager *TransactionManager, pendingTxManager *transactions.PendingTxTracker,
|
||||
tokenManager *token.Manager,
|
||||
chainClients map[uint64]chain.ClientInterface,
|
||||
|
@ -29,6 +30,7 @@ func NewSequentialFetchStrategy(db *Database, blockDAO *BlockDAO, blockRangesSeq
|
|||
db: db,
|
||||
blockDAO: blockDAO,
|
||||
blockRangesSeqDAO: blockRangesSeqDAO,
|
||||
accountsDB: accountsDB,
|
||||
feed: feed,
|
||||
transactionManager: transactionManager,
|
||||
pendingTxManager: pendingTxManager,
|
||||
|
@ -44,6 +46,7 @@ type SequentialFetchStrategy struct {
|
|||
db *Database
|
||||
blockDAO *BlockDAO
|
||||
blockRangesSeqDAO *BlockRangeSequentialDAO
|
||||
accountsDB *accounts.Database
|
||||
feed *event.Feed
|
||||
mu sync.Mutex
|
||||
group *async.Group
|
||||
|
@ -59,7 +62,7 @@ type SequentialFetchStrategy struct {
|
|||
func (s *SequentialFetchStrategy) newCommand(chainClient chain.ClientInterface,
|
||||
account common.Address) async.Commander {
|
||||
|
||||
return newLoadBlocksAndTransfersCommand(account, s.db, s.blockDAO, s.blockRangesSeqDAO, chainClient, s.feed,
|
||||
return newLoadBlocksAndTransfersCommand(account, s.db, s.accountsDB, s.blockDAO, s.blockRangesSeqDAO, chainClient, s.feed,
|
||||
s.transactionManager, s.pendingTxManager, s.tokenManager, s.balanceCacher, s.omitHistory)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue