feat: Add advanced token settings (#4524)

This commit is contained in:
Cuteivist 2024-01-05 12:12:53 +01:00 committed by GitHub
parent 846a4e2363
commit 7814f39cd7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 700 additions and 481 deletions

View File

@ -1 +1 @@
0.171.40
0.171.41

View File

@ -105,6 +105,12 @@ func defaultSettings(generatedAccountInfo generator.GeneratedAccountInfo, derive
s.Networks = &networkRawMessage
s.CurrentNetwork = "mainnet_rpc"
s.TokenGroupByCommunity = false
s.ShowCommunityAssetWhenSendingTokens = true
s.DisplayAssetsBelowBalance = false
// NOTE 9 decimals of precision. Default value is translated to 0.1
s.DisplayAssetsBelowBalanceThreshold = 100000000
return s, nil
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
ALTER TABLE settings ADD COLUMN wallet_show_community_asset_when_sending_tokens INTEGER NOT NULL DEFAULT TRUE;
ALTER TABLE settings ADD COLUMN wallet_display_assets_below_balance BOOLEAN NOT NULL DEFAULT FALSE;
-- 9 places reserved for decimals. Default value translates to 0.1
ALTER TABLE settings ADD COLUMN wallet_display_assets_below_balance_threshold UNSIGNED BIGINT NOT NULL DEFAULT 100000000;
ALTER TABLE settings_sync_clock ADD COLUMN wallet_show_community_asset_when_sending_tokens INTEGER NOT NULL DEFAULT 0;
ALTER TABLE settings_sync_clock ADD COLUMN wallet_display_assets_below_balance INTEGER NOT NULL DEFAULT 0;
ALTER TABLE settings_sync_clock ADD COLUMN wallet_display_assets_below_balance_threshold INTEGER NOT NULL DEFAULT 0;

View File

@ -402,6 +402,39 @@ var (
dBColumnName: "wallet_token_preferences_group_by_community",
valueHandler: BoolHandler,
}
ShowCommunityAssetWhenSendingTokens = SettingField{
reactFieldName: "show-community-asset-when-sending-tokens?",
dBColumnName: "wallet_show_community_asset_when_sending_tokens",
valueHandler: BoolHandler,
syncProtobufFactory: &SyncProtobufFactory{
fromInterface: showCommunityAssetWhenSendingTokensProtobufFactory,
fromStruct: showCommunityAssetWhenSendingTokensProtobufFactoryStruct,
valueFromProtobuf: BoolFromSyncProtobuf,
protobufType: protobuf.SyncSetting_SHOW_COMMUNITY_ASSET_WHEN_SENDING_TOKENS,
},
}
DisplayAssetsBelowBalance = SettingField{
reactFieldName: "display-assets-below-balance?",
dBColumnName: "wallet_display_assets_below_balance",
valueHandler: BoolHandler,
syncProtobufFactory: &SyncProtobufFactory{
fromInterface: displayAssetsBelowBalanceProtobufFactory,
fromStruct: displayAssetsBelowBalanceProtobufFactoryStruct,
valueFromProtobuf: BoolFromSyncProtobuf,
protobufType: protobuf.SyncSetting_DISPLAY_ASSETS_BELOW_BALANCE,
},
}
DisplayAssetsBelowBalanceThreshold = SettingField{
reactFieldName: "display-assets-below-balance-threshold",
dBColumnName: "wallet_display_assets_below_balance_threshold",
valueHandler: Int64Handler,
syncProtobufFactory: &SyncProtobufFactory{
fromInterface: displayAssetsBelowBalanceThresholdProtobufFactory,
fromStruct: displayAssetsBelowBalanceThresholdProtobufFactoryStruct,
valueFromProtobuf: Int64FromSyncProtobuf,
protobufType: protobuf.SyncSetting_DISPLAY_ASSETS_BELOW_BALANCE_THRESHOLD,
},
}
UseMailservers = SettingField{
reactFieldName: "use-mailservers?",
dBColumnName: "use_mailservers",
@ -532,6 +565,9 @@ var (
ProfileMigrationNeeded,
IsSepoliaEnabled,
TokenGroupByCommunity,
ShowCommunityAssetWhenSendingTokens,
DisplayAssetsBelowBalance,
DisplayAssetsBelowBalanceThreshold,
URLUnfurlingMode,
}
)

View File

@ -142,10 +142,14 @@ INSERT INTO settings (
profile_pictures_visibility,
url_unfurling_mode,
omit_transfers_history_scan,
mnemonic_was_not_shown
mnemonic_was_not_shown,
wallet_token_preferences_group_by_community,
wallet_show_community_asset_when_sending_tokens,
wallet_display_assets_below_balance,
wallet_display_assets_below_balance_threshold
) VALUES (
?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,'id',?,?,?,?,?,?)`,
?,?,?,?,?,?,?,?,?,'id',?,?,?,?,?,?,?,?,?,?)`,
s.Address,
s.Currency,
s.CurrentNetwork,
@ -174,6 +178,10 @@ INSERT INTO settings (
s.URLUnfurlingMode,
s.OmitTransfersHistoryScan,
s.MnemonicWasNotShown,
s.TokenGroupByCommunity,
s.ShowCommunityAssetWhenSendingTokens,
s.DisplayAssetsBelowBalance,
s.DisplayAssetsBelowBalanceThreshold,
)
if err != nil {
return err
@ -369,7 +377,8 @@ 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, wallet_token_preferences_group_by_community, url_unfurling_mode,
omit_transfers_history_scan, mnemonic_was_not_shown
omit_transfers_history_scan, mnemonic_was_not_shown, wallet_show_community_asset_when_sending_tokens, wallet_display_assets_below_balance,
wallet_display_assets_below_balance_threshold
FROM
settings
WHERE
@ -448,6 +457,9 @@ func (db *Database) GetSettings() (Settings, error) {
&s.URLUnfurlingMode,
&s.OmitTransfersHistoryScan,
&s.MnemonicWasNotShown,
&s.ShowCommunityAssetWhenSendingTokens,
&s.DisplayAssetsBelowBalance,
&s.DisplayAssetsBelowBalanceThreshold,
)
return s, err

View File

@ -206,6 +206,36 @@ func (mr *MockDatabaseSettingsManagerMockRecorder) GetTokenGroupByCommunity() *g
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTokenGroupByCommunity", reflect.TypeOf((*MockDatabaseSettingsManager)(nil).GetTokenGroupByCommunity))
}
// GetDisplayAssetsBelowBalance mocks base method.
func (m *MockDatabaseSettingsManager) GetDisplayAssetsBelowBalance() (bool, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetDisplayAssetsBelowBalance")
ret0, _ := ret[0].(bool)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetDisplayAssetsBelowBalance indicates an expected call of GetDisplayAssetsBelowBalance.
func (mr *MockDatabaseSettingsManagerMockRecorder) GetDisplayAssetsBelowBalance() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDisplayAssetsBelowBalance", reflect.TypeOf((*MockDatabaseSettingsManager)(nil).GetDisplayAssetsBelowBalance))
}
// GetDisplayAssetsBelowBalanceThreshold mocks base method.
func (m *MockDatabaseSettingsManager) GetDisplayAssetsBelowBalanceThreshold() (uint64, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetDisplayAssetsBelowBalanceThreshold")
ret0, _ := ret[0].(uint64)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetDisplayAssetsBelowBalanceThreshold indicates an expected call of GetDisplayAssetsBelowBalanceThreshold.
func (mr *MockDatabaseSettingsManagerMockRecorder) GetDisplayAssetsBelowBalanceThreshold() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDisplayAssetsBelowBalanceThreshold", reflect.TypeOf((*MockDatabaseSettingsManager)(nil).GetDisplayAssetsBelowBalanceThreshold))
}
// URLUnfurlingMode mocks base method.
func (m *MockDatabaseSettingsManager) URLUnfurlingMode() (int64, error) {
m.ctrl.T.Helper()

View File

@ -178,29 +178,32 @@ type Settings struct {
// ProfilePicturesShowTo indicates to whom the user shows their profile picture to (contacts, everyone)
ProfilePicturesShowTo ProfilePicturesShowToType `json:"profile-pictures-show-to"`
// ProfilePicturesVisibility indicates who we want to see profile pictures of (contacts, everyone or none)
ProfilePicturesVisibility ProfilePicturesVisibilityType `json:"profile-pictures-visibility"`
UseMailservers bool `json:"use-mailservers?"`
Usernames *json.RawMessage `json:"usernames,omitempty"`
WalletRootAddress types.Address `json:"wallet-root-address,omitempty"`
WalletSetUpPassed bool `json:"wallet-set-up-passed?,omitempty"`
WalletVisibleTokens *json.RawMessage `json:"wallet/visible-tokens,omitempty"`
WakuBloomFilterMode bool `json:"waku-bloom-filter-mode,omitempty"`
WebViewAllowPermissionRequests bool `json:"webview-allow-permission-requests?,omitempty"`
SendStatusUpdates bool `json:"send-status-updates?,omitempty"`
CurrentUserStatus *json.RawMessage `json:"current-user-status"`
GifRecents *json.RawMessage `json:"gifs/recent-gifs"`
GifFavorites *json.RawMessage `json:"gifs/favorite-gifs"`
OpenseaEnabled bool `json:"opensea-enabled?,omitempty"`
TelemetryServerURL string `json:"telemetry-server-url,omitempty"`
LastBackup uint64 `json:"last-backup,omitempty"`
BackupEnabled bool `json:"backup-enabled?,omitempty"`
AutoMessageEnabled bool `json:"auto-message-enabled?,omitempty"`
GifAPIKey string `json:"gifs/api-key"`
TestNetworksEnabled bool `json:"test-networks-enabled?,omitempty"`
ProfileMigrationNeeded bool `json:"profile-migration-needed,omitempty"`
IsSepoliaEnabled bool `json:"is-sepolia-enabled?,omitempty"`
TokenGroupByCommunity bool `json:"token-group-by-community?,omitempty"`
URLUnfurlingMode URLUnfurlingModeType `json:"url-unfurling-mode,omitempty"`
ProfilePicturesVisibility ProfilePicturesVisibilityType `json:"profile-pictures-visibility"`
UseMailservers bool `json:"use-mailservers?"`
Usernames *json.RawMessage `json:"usernames,omitempty"`
WalletRootAddress types.Address `json:"wallet-root-address,omitempty"`
WalletSetUpPassed bool `json:"wallet-set-up-passed?,omitempty"`
WalletVisibleTokens *json.RawMessage `json:"wallet/visible-tokens,omitempty"`
WakuBloomFilterMode bool `json:"waku-bloom-filter-mode,omitempty"`
WebViewAllowPermissionRequests bool `json:"webview-allow-permission-requests?,omitempty"`
SendStatusUpdates bool `json:"send-status-updates?,omitempty"`
CurrentUserStatus *json.RawMessage `json:"current-user-status"`
GifRecents *json.RawMessage `json:"gifs/recent-gifs"`
GifFavorites *json.RawMessage `json:"gifs/favorite-gifs"`
OpenseaEnabled bool `json:"opensea-enabled?,omitempty"`
TelemetryServerURL string `json:"telemetry-server-url,omitempty"`
LastBackup uint64 `json:"last-backup,omitempty"`
BackupEnabled bool `json:"backup-enabled?,omitempty"`
AutoMessageEnabled bool `json:"auto-message-enabled?,omitempty"`
GifAPIKey string `json:"gifs/api-key"`
TestNetworksEnabled bool `json:"test-networks-enabled?,omitempty"`
ProfileMigrationNeeded bool `json:"profile-migration-needed,omitempty"`
IsSepoliaEnabled bool `json:"is-sepolia-enabled?,omitempty"`
TokenGroupByCommunity bool `json:"token-group-by-community?,omitempty"`
ShowCommunityAssetWhenSendingTokens bool `json:"show-community-asset-when-sending-tokens?,omitempty"`
DisplayAssetsBelowBalance bool `json:"display-assets-below-balance?,omitempty"`
DisplayAssetsBelowBalanceThreshold int64 `json:"display-assets-below-balance-threshold,omitempty"`
URLUnfurlingMode URLUnfurlingModeType `json:"url-unfurling-mode,omitempty"`
}
func (s Settings) MarshalJSON() ([]byte, error) {

View File

@ -541,3 +541,78 @@ func urlUnfurlingModeProtobufFactory(value any, clock uint64, chatID string) (*c
func urlUnfurlingModeProtobufFactoryStruct(s Settings, clock uint64, chatID string) (*common.RawMessage, *protobuf.SyncSetting, error) {
return buildRawURLUnfurlingModeSyncMessage(int64(s.URLUnfurlingMode), clock, chatID)
}
// ShowCommunityAssetWhenSendingTokens
func buildRawShowCommunityAssetWhenSendingTokensSyncMessage(v bool, clock uint64, chatID string) (*common.RawMessage, *protobuf.SyncSetting, error) {
pb := &protobuf.SyncSetting{
Type: protobuf.SyncSetting_SHOW_COMMUNITY_ASSET_WHEN_SENDING_TOKENS,
Value: &protobuf.SyncSetting_ValueBool{ValueBool: v},
Clock: clock,
}
rm, err := buildRawSyncSettingMessage(pb, chatID)
return rm, pb, err
}
func showCommunityAssetWhenSendingTokensProtobufFactory(value interface{}, clock uint64, chatID string) (*common.RawMessage, *protobuf.SyncSetting, error) {
v, err := assertBool(value)
if err != nil {
return nil, nil, err
}
return buildRawShowCommunityAssetWhenSendingTokensSyncMessage(v, clock, chatID)
}
func showCommunityAssetWhenSendingTokensProtobufFactoryStruct(s Settings, clock uint64, chatID string) (*common.RawMessage, *protobuf.SyncSetting, error) {
return buildRawShowCommunityAssetWhenSendingTokensSyncMessage(s.ShowCommunityAssetWhenSendingTokens, clock, chatID)
}
// DisplayAssetsBelowBalance
func buildRawDisplayAssetsBelowBalanceSyncMessage(v bool, clock uint64, chatID string) (*common.RawMessage, *protobuf.SyncSetting, error) {
pb := &protobuf.SyncSetting{
Type: protobuf.SyncSetting_DISPLAY_ASSETS_BELOW_BALANCE,
Value: &protobuf.SyncSetting_ValueBool{ValueBool: v},
Clock: clock,
}
rm, err := buildRawSyncSettingMessage(pb, chatID)
return rm, pb, err
}
func displayAssetsBelowBalanceProtobufFactory(value interface{}, clock uint64, chatID string) (*common.RawMessage, *protobuf.SyncSetting, error) {
v, err := assertBool(value)
if err != nil {
return nil, nil, err
}
return buildRawDisplayAssetsBelowBalanceSyncMessage(v, clock, chatID)
}
func displayAssetsBelowBalanceProtobufFactoryStruct(s Settings, clock uint64, chatID string) (*common.RawMessage, *protobuf.SyncSetting, error) {
return buildRawDisplayAssetsBelowBalanceSyncMessage(s.DisplayAssetsBelowBalance, clock, chatID)
}
// DisplayAssetsBelowBalanceThreshold
func buildRawDisplayAssetsBelowBalanceThresholdSyncMessage(v int64, clock uint64, chatID string) (*common.RawMessage, *protobuf.SyncSetting, error) {
pb := &protobuf.SyncSetting{
Type: protobuf.SyncSetting_DISPLAY_ASSETS_BELOW_BALANCE_THRESHOLD,
Value: &protobuf.SyncSetting_ValueInt64{ValueInt64: v},
Clock: clock,
}
rm, err := buildRawSyncSettingMessage(pb, chatID)
return rm, pb, err
}
func displayAssetsBelowBalanceThresholdProtobufFactory(value any, clock uint64, chatID string) (*common.RawMessage, *protobuf.SyncSetting, error) {
v, err := parseNumberToInt64(value)
if err != nil {
return nil, nil, err
}
return buildRawDisplayAssetsBelowBalanceThresholdSyncMessage(v, clock, chatID)
}
func displayAssetsBelowBalanceThresholdProtobufFactoryStruct(s Settings, clock uint64, chatID string) (*common.RawMessage, *protobuf.SyncSetting, error) {
return buildRawDisplayAssetsBelowBalanceThresholdSyncMessage(s.DisplayAssetsBelowBalanceThreshold, clock, chatID)
}

View File

@ -35,6 +35,15 @@ func BoolHandler(value interface{}) (interface{}, error) {
return value, nil
}
func Int64Handler(value interface{}) (interface{}, error) {
_, ok := value.(int64)
if !ok {
return value, errors.ErrInvalidConfig
}
return value, nil
}
func JSONBlobHandler(value interface{}) (interface{}, error) {
return &sqlite.JSONBlob{Data: value}, nil
}

View File

@ -23,23 +23,26 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type SyncSetting_Type int32
const (
SyncSetting_UNKNOWN SyncSetting_Type = 0
SyncSetting_CURRENCY SyncSetting_Type = 1
SyncSetting_GIF_RECENTS SyncSetting_Type = 2
SyncSetting_GIF_FAVOURITES SyncSetting_Type = 3
SyncSetting_MESSAGES_FROM_CONTACTS_ONLY SyncSetting_Type = 4
SyncSetting_PREFERRED_NAME SyncSetting_Type = 5
SyncSetting_PREVIEW_PRIVACY SyncSetting_Type = 6
SyncSetting_PROFILE_PICTURES_SHOW_TO SyncSetting_Type = 7
SyncSetting_PROFILE_PICTURES_VISIBILITY SyncSetting_Type = 8
SyncSetting_SEND_STATUS_UPDATES SyncSetting_Type = 9
SyncSetting_STICKERS_PACKS_INSTALLED SyncSetting_Type = 10
SyncSetting_STICKERS_PACKS_PENDING SyncSetting_Type = 11
SyncSetting_STICKERS_RECENT_STICKERS SyncSetting_Type = 12
SyncSetting_DISPLAY_NAME SyncSetting_Type = 13
SyncSetting_BIO SyncSetting_Type = 14
SyncSetting_MNEMONIC_REMOVED SyncSetting_Type = 15
SyncSetting_URL_UNFURLING_MODE SyncSetting_Type = 18
SyncSetting_UNKNOWN SyncSetting_Type = 0
SyncSetting_CURRENCY SyncSetting_Type = 1
SyncSetting_GIF_RECENTS SyncSetting_Type = 2
SyncSetting_GIF_FAVOURITES SyncSetting_Type = 3
SyncSetting_MESSAGES_FROM_CONTACTS_ONLY SyncSetting_Type = 4
SyncSetting_PREFERRED_NAME SyncSetting_Type = 5
SyncSetting_PREVIEW_PRIVACY SyncSetting_Type = 6
SyncSetting_PROFILE_PICTURES_SHOW_TO SyncSetting_Type = 7
SyncSetting_PROFILE_PICTURES_VISIBILITY SyncSetting_Type = 8
SyncSetting_SEND_STATUS_UPDATES SyncSetting_Type = 9
SyncSetting_STICKERS_PACKS_INSTALLED SyncSetting_Type = 10
SyncSetting_STICKERS_PACKS_PENDING SyncSetting_Type = 11
SyncSetting_STICKERS_RECENT_STICKERS SyncSetting_Type = 12
SyncSetting_DISPLAY_NAME SyncSetting_Type = 13
SyncSetting_BIO SyncSetting_Type = 14
SyncSetting_MNEMONIC_REMOVED SyncSetting_Type = 15
SyncSetting_URL_UNFURLING_MODE SyncSetting_Type = 18
SyncSetting_SHOW_COMMUNITY_ASSET_WHEN_SENDING_TOKENS SyncSetting_Type = 19
SyncSetting_DISPLAY_ASSETS_BELOW_BALANCE SyncSetting_Type = 20
SyncSetting_DISPLAY_ASSETS_BELOW_BALANCE_THRESHOLD SyncSetting_Type = 21
)
var SyncSetting_Type_name = map[int32]string{
@ -60,26 +63,32 @@ var SyncSetting_Type_name = map[int32]string{
14: "BIO",
15: "MNEMONIC_REMOVED",
18: "URL_UNFURLING_MODE",
19: "SHOW_COMMUNITY_ASSET_WHEN_SENDING_TOKENS",
20: "DISPLAY_ASSETS_BELOW_BALANCE",
21: "DISPLAY_ASSETS_BELOW_BALANCE_THRESHOLD",
}
var SyncSetting_Type_value = map[string]int32{
"UNKNOWN": 0,
"CURRENCY": 1,
"GIF_RECENTS": 2,
"GIF_FAVOURITES": 3,
"MESSAGES_FROM_CONTACTS_ONLY": 4,
"PREFERRED_NAME": 5,
"PREVIEW_PRIVACY": 6,
"PROFILE_PICTURES_SHOW_TO": 7,
"PROFILE_PICTURES_VISIBILITY": 8,
"SEND_STATUS_UPDATES": 9,
"STICKERS_PACKS_INSTALLED": 10,
"STICKERS_PACKS_PENDING": 11,
"STICKERS_RECENT_STICKERS": 12,
"DISPLAY_NAME": 13,
"BIO": 14,
"MNEMONIC_REMOVED": 15,
"URL_UNFURLING_MODE": 18,
"UNKNOWN": 0,
"CURRENCY": 1,
"GIF_RECENTS": 2,
"GIF_FAVOURITES": 3,
"MESSAGES_FROM_CONTACTS_ONLY": 4,
"PREFERRED_NAME": 5,
"PREVIEW_PRIVACY": 6,
"PROFILE_PICTURES_SHOW_TO": 7,
"PROFILE_PICTURES_VISIBILITY": 8,
"SEND_STATUS_UPDATES": 9,
"STICKERS_PACKS_INSTALLED": 10,
"STICKERS_PACKS_PENDING": 11,
"STICKERS_RECENT_STICKERS": 12,
"DISPLAY_NAME": 13,
"BIO": 14,
"MNEMONIC_REMOVED": 15,
"URL_UNFURLING_MODE": 18,
"SHOW_COMMUNITY_ASSET_WHEN_SENDING_TOKENS": 19,
"DISPLAY_ASSETS_BELOW_BALANCE": 20,
"DISPLAY_ASSETS_BELOW_BALANCE_THRESHOLD": 21,
}
func (x SyncSetting_Type) String() string {
@ -227,39 +236,43 @@ func init() {
}
var fileDescriptor_e2f7a0bce2873c78 = []byte{
// 539 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x92, 0x4d, 0x6f, 0x1a, 0x3d,
0x10, 0xc7, 0xd9, 0xb0, 0x04, 0x32, 0x90, 0xc4, 0x71, 0xa2, 0x3c, 0xfb, 0xa4, 0x95, 0x42, 0xe9,
0x05, 0xe5, 0x40, 0xa5, 0xb6, 0xea, 0xa5, 0x27, 0xe3, 0x1d, 0xc0, 0xca, 0xae, 0xbd, 0xf2, 0x0b,
0x88, 0x5e, 0xac, 0x06, 0xd1, 0x28, 0x2a, 0x62, 0xa3, 0xb0, 0xa9, 0xc4, 0x57, 0xea, 0x97, 0xe8,
0x57, 0xab, 0x96, 0x6d, 0xfa, 0x7a, 0xb2, 0xe7, 0x3f, 0xbf, 0xf9, 0x7b, 0x3c, 0x36, 0x9c, 0x6e,
0xb6, 0xeb, 0x85, 0xdf, 0x2c, 0x8b, 0xe2, 0x6e, 0x7d, 0xbb, 0x19, 0xdc, 0x3f, 0xe4, 0x45, 0x4e,
0x5b, 0xbb, 0xe5, 0xe6, 0xf1, 0x53, 0xef, 0x6b, 0x03, 0xda, 0x66, 0xbb, 0x5e, 0x98, 0x0a, 0xa0,
0x03, 0x08, 0x8b, 0xed, 0xfd, 0x32, 0x0a, 0xba, 0x41, 0xff, 0xe8, 0xf5, 0xc5, 0xe0, 0x09, 0x1c,
0xfc, 0x06, 0x0d, 0xec, 0xf6, 0x7e, 0xa9, 0x77, 0x1c, 0x3d, 0x83, 0xc6, 0x62, 0x95, 0x2f, 0x3e,
0x47, 0x7b, 0xdd, 0xa0, 0x1f, 0xea, 0x2a, 0xa0, 0x2f, 0xa1, 0xf3, 0xe5, 0xe3, 0xea, 0x71, 0xe9,
0x37, 0xc5, 0xc3, 0xdd, 0xfa, 0x36, 0xaa, 0x77, 0x83, 0xfe, 0xc1, 0xa4, 0xa6, 0xdb, 0x3b, 0xd5,
0xec, 0x44, 0xfa, 0x02, 0xaa, 0xd0, 0xdf, 0x6c, 0x8b, 0xe5, 0x26, 0x0a, 0xbb, 0x41, 0xbf, 0x33,
0xa9, 0x69, 0xd8, 0x89, 0xc3, 0x52, 0xa3, 0x97, 0x00, 0x3f, 0x90, 0x3c, 0x5f, 0x45, 0x8d, 0x6e,
0xd0, 0x6f, 0x4d, 0x6a, 0xfa, 0xa0, 0x22, 0xf2, 0x7c, 0xf5, 0xcb, 0xe3, 0x6e, 0x5d, 0xbc, 0x7b,
0x1b, 0xed, 0x77, 0x83, 0x7e, 0xfd, 0xa7, 0x87, 0x28, 0xb5, 0xde, 0xb7, 0x3a, 0x84, 0x65, 0xc3,
0xb4, 0x0d, 0x4d, 0x27, 0xaf, 0xa5, 0x9a, 0x49, 0x52, 0xa3, 0x1d, 0x68, 0x71, 0xa7, 0x35, 0x4a,
0x3e, 0x27, 0x01, 0x3d, 0x86, 0xf6, 0x58, 0x8c, 0xbc, 0x46, 0x8e, 0xd2, 0x1a, 0xb2, 0x47, 0x29,
0x1c, 0x95, 0xc2, 0x88, 0x4d, 0x95, 0xd3, 0xc2, 0xa2, 0x21, 0x75, 0x7a, 0x09, 0xcf, 0x52, 0x34,
0x86, 0x8d, 0xd1, 0xf8, 0x91, 0x56, 0xa9, 0xe7, 0x4a, 0x5a, 0xc6, 0xad, 0xf1, 0x4a, 0x26, 0x73,
0x12, 0x96, 0x45, 0x99, 0xc6, 0x11, 0x6a, 0x8d, 0xb1, 0x97, 0x2c, 0x45, 0xd2, 0xa0, 0xa7, 0x70,
0x9c, 0x69, 0x9c, 0x0a, 0x9c, 0xf9, 0x4c, 0x8b, 0x29, 0xe3, 0x73, 0xb2, 0x4f, 0x9f, 0x43, 0x94,
0x69, 0x35, 0x12, 0x09, 0xfa, 0x4c, 0x70, 0xeb, 0x34, 0x1a, 0x6f, 0x26, 0x6a, 0xe6, 0xad, 0x22,
0xcd, 0xf2, 0x9c, 0x7f, 0xb2, 0x53, 0x61, 0xc4, 0x50, 0x24, 0xc2, 0xce, 0x49, 0x8b, 0xfe, 0x07,
0xa7, 0x06, 0x65, 0xec, 0x8d, 0x65, 0xd6, 0x19, 0xef, 0xb2, 0x98, 0x95, 0x1d, 0x1e, 0x94, 0xbe,
0xc6, 0x0a, 0x7e, 0x8d, 0xda, 0xf8, 0x8c, 0xf1, 0x6b, 0xe3, 0x85, 0x34, 0x96, 0x25, 0x09, 0xc6,
0x04, 0xe8, 0x05, 0x9c, 0xff, 0x95, 0xcd, 0x50, 0xc6, 0x42, 0x8e, 0x49, 0xfb, 0x8f, 0xca, 0x6a,
0x0a, 0xfe, 0x29, 0x26, 0x1d, 0x4a, 0xa0, 0x13, 0x0b, 0x93, 0x25, 0x6c, 0x5e, 0x5d, 0xeb, 0x90,
0x36, 0xa1, 0x3e, 0x14, 0x8a, 0x1c, 0xd1, 0x33, 0x20, 0xa9, 0xc4, 0x54, 0x49, 0xc1, 0xbd, 0xc6,
0x54, 0x4d, 0x31, 0x26, 0xc7, 0xf4, 0x1c, 0xa8, 0xd3, 0x89, 0x77, 0x72, 0xe4, 0x74, 0x22, 0xe4,
0xd8, 0xa7, 0x2a, 0x46, 0x42, 0x7b, 0x61, 0x8b, 0x10, 0xd2, 0x0b, 0x5b, 0x27, 0xe4, 0xe4, 0xea,
0x10, 0xa5, 0xf1, 0xce, 0xa0, 0x2e, 0x2d, 0xcd, 0xd5, 0xff, 0x42, 0xf2, 0xc4, 0xc5, 0xe8, 0x67,
0xcc, 0xf2, 0x49, 0x39, 0x51, 0xcf, 0x38, 0x57, 0x4e, 0xda, 0x61, 0x13, 0x1a, 0xd5, 0x8b, 0x1f,
0x7e, 0x68, 0x0f, 0x5e, 0xbd, 0x7f, 0xfa, 0x92, 0x37, 0xfb, 0xbb, 0xdd, 0x9b, 0xef, 0x01, 0x00,
0x00, 0xff, 0xff, 0xb8, 0x4c, 0x65, 0xd1, 0xe3, 0x02, 0x00, 0x00,
// 601 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x5b, 0x6f, 0x1a, 0x3b,
0x10, 0xc7, 0xd9, 0xb0, 0x5c, 0x62, 0x48, 0xe2, 0x98, 0x9c, 0x1c, 0x4e, 0x4e, 0xa4, 0x50, 0x2a,
0x55, 0x28, 0xaa, 0xa8, 0xd4, 0x56, 0x7d, 0xe9, 0x93, 0xf1, 0x0e, 0xac, 0xc5, 0xae, 0xbd, 0xb2,
0xbd, 0x20, 0xfa, 0x32, 0x6a, 0x10, 0x8d, 0xa2, 0x22, 0x88, 0x02, 0xa9, 0xc4, 0x17, 0xea, 0x97,
0xe8, 0x97, 0xab, 0x76, 0xb7, 0xf4, 0x2a, 0xf5, 0xc9, 0x9e, 0xff, 0xfc, 0xe6, 0xe6, 0x0b, 0x69,
0x6d, 0x76, 0xab, 0x39, 0x6e, 0x16, 0xdb, 0xed, 0xdd, 0xea, 0x76, 0xd3, 0xbf, 0x7f, 0x58, 0x6f,
0xd7, 0xac, 0x9e, 0x2f, 0x37, 0x8f, 0x1f, 0xba, 0x9f, 0xab, 0xa4, 0x61, 0x77, 0xab, 0xb9, 0x2d,
0x00, 0xd6, 0x27, 0xfe, 0x76, 0x77, 0xbf, 0x68, 0x7b, 0x1d, 0xaf, 0x77, 0xfc, 0xf2, 0xa2, 0xbf,
0x07, 0xfb, 0x3f, 0x41, 0x7d, 0xb7, 0xbb, 0x5f, 0x98, 0x9c, 0x63, 0x67, 0xa4, 0x32, 0x5f, 0xae,
0xe7, 0x1f, 0xdb, 0x07, 0x1d, 0xaf, 0xe7, 0x9b, 0xc2, 0x60, 0x4f, 0x49, 0xf3, 0xd3, 0xfb, 0xe5,
0xe3, 0x02, 0x37, 0xdb, 0x87, 0xbb, 0xd5, 0x6d, 0xbb, 0xdc, 0xf1, 0x7a, 0x87, 0x61, 0xc9, 0x34,
0x72, 0xd5, 0xe6, 0x22, 0x7b, 0x42, 0x0a, 0x13, 0x6f, 0x76, 0xdb, 0xc5, 0xa6, 0xed, 0x77, 0xbc,
0x5e, 0x33, 0x2c, 0x19, 0x92, 0x8b, 0x83, 0x4c, 0x63, 0x57, 0x84, 0x7c, 0x43, 0xd6, 0xeb, 0x65,
0xbb, 0xd2, 0xf1, 0x7a, 0xf5, 0xb0, 0x64, 0x0e, 0x0b, 0x62, 0xbd, 0x5e, 0xfe, 0xc8, 0x71, 0xb7,
0xda, 0xbe, 0x79, 0xdd, 0xae, 0x76, 0xbc, 0x5e, 0xf9, 0x7b, 0x0e, 0x99, 0x69, 0xdd, 0x2f, 0x3e,
0xf1, 0xb3, 0x86, 0x59, 0x83, 0xd4, 0x52, 0x35, 0x56, 0x7a, 0xaa, 0x68, 0x89, 0x35, 0x49, 0x5d,
0xa4, 0xc6, 0x80, 0x12, 0x33, 0xea, 0xb1, 0x13, 0xd2, 0x18, 0xc9, 0x21, 0x1a, 0x10, 0xa0, 0x9c,
0xa5, 0x07, 0x8c, 0x91, 0xe3, 0x4c, 0x18, 0xf2, 0x89, 0x4e, 0x8d, 0x74, 0x60, 0x69, 0x99, 0x5d,
0x91, 0xff, 0x63, 0xb0, 0x96, 0x8f, 0xc0, 0xe2, 0xd0, 0xe8, 0x18, 0x85, 0x56, 0x8e, 0x0b, 0x67,
0x51, 0xab, 0x68, 0x46, 0xfd, 0x2c, 0x28, 0x31, 0x30, 0x04, 0x63, 0x20, 0x40, 0xc5, 0x63, 0xa0,
0x15, 0xd6, 0x22, 0x27, 0x89, 0x81, 0x89, 0x84, 0x29, 0x26, 0x46, 0x4e, 0xb8, 0x98, 0xd1, 0x2a,
0xbb, 0x24, 0xed, 0xc4, 0xe8, 0xa1, 0x8c, 0x00, 0x13, 0x29, 0x5c, 0x6a, 0xc0, 0xa2, 0x0d, 0xf5,
0x14, 0x9d, 0xa6, 0xb5, 0xac, 0xce, 0x1f, 0xde, 0x89, 0xb4, 0x72, 0x20, 0x23, 0xe9, 0x66, 0xb4,
0xce, 0xfe, 0x25, 0x2d, 0x0b, 0x2a, 0x40, 0xeb, 0xb8, 0x4b, 0x2d, 0xa6, 0x49, 0xc0, 0xb3, 0x0e,
0x0f, 0xb3, 0xbc, 0xd6, 0x49, 0x31, 0x06, 0x63, 0x31, 0xe1, 0x62, 0x6c, 0x51, 0x2a, 0xeb, 0x78,
0x14, 0x41, 0x40, 0x09, 0xbb, 0x20, 0xe7, 0xbf, 0x79, 0x13, 0x50, 0x81, 0x54, 0x23, 0xda, 0xf8,
0x25, 0xb2, 0x38, 0x05, 0xdc, 0xdb, 0xb4, 0xc9, 0x28, 0x69, 0x06, 0xd2, 0x26, 0x11, 0x9f, 0x15,
0x63, 0x1d, 0xb1, 0x1a, 0x29, 0x0f, 0xa4, 0xa6, 0xc7, 0xec, 0x8c, 0xd0, 0x58, 0x41, 0xac, 0x95,
0x14, 0x68, 0x20, 0xd6, 0x13, 0x08, 0xe8, 0x09, 0x3b, 0x27, 0x2c, 0x35, 0x11, 0xa6, 0x6a, 0x98,
0x9a, 0x48, 0xaa, 0x11, 0xc6, 0x3a, 0x00, 0xca, 0xd8, 0x73, 0xd2, 0xcb, 0xe7, 0x14, 0x3a, 0x8e,
0x53, 0x25, 0xdd, 0x0c, 0xb9, 0xb5, 0xe0, 0x70, 0x1a, 0x82, 0x42, 0x5b, 0x74, 0x83, 0x4e, 0x8f,
0x41, 0x59, 0xda, 0x62, 0x1d, 0x72, 0xb9, 0x2f, 0x9b, 0x63, 0x16, 0x07, 0x10, 0xe9, 0x29, 0x0e,
0x78, 0xc4, 0x95, 0x00, 0x7a, 0xc6, 0xae, 0xc9, 0xb3, 0xbf, 0x11, 0xe8, 0x42, 0x03, 0x36, 0xd4,
0x51, 0x40, 0xff, 0xe9, 0xfa, 0x75, 0x4a, 0x69, 0xd7, 0xaf, 0x9f, 0xd2, 0xd3, 0xeb, 0x23, 0x50,
0x16, 0x53, 0x0b, 0x26, 0x1b, 0xc7, 0x5e, 0xff, 0x27, 0x95, 0x88, 0xd2, 0x00, 0x70, 0xca, 0x9d,
0x08, 0xb3, 0xdb, 0x44, 0x2e, 0x84, 0x4e, 0x95, 0x1b, 0xd4, 0x48, 0xa5, 0x78, 0x6d, 0x47, 0xef,
0x1a, 0xfd, 0x17, 0x6f, 0xf7, 0xdf, 0xe1, 0xa6, 0x9a, 0xef, 0x5e, 0x7d, 0x0d, 0x00, 0x00, 0xff,
0xff, 0x57, 0x49, 0x09, 0x47, 0x5f, 0x03, 0x00, 0x00,
}

View File

@ -36,6 +36,9 @@ message SyncSetting {
reserved 17;
reserved "INCLUDE_WATCHONLY_ACCOUNT";
URL_UNFURLING_MODE = 18;
SHOW_COMMUNITY_ASSET_WHEN_SENDING_TOKENS = 19;
DISPLAY_ASSETS_BELOW_BALANCE = 20;
DISPLAY_ASSETS_BELOW_BALANCE_THRESHOLD = 21;
}
}