feat: token order API (#4391)
This commit is contained in:
parent
b9197510b1
commit
04873ef880
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,12 @@
|
||||||
|
CREATE TABLE "token_preferences" (
|
||||||
|
"key" TEXT NOT NULL,
|
||||||
|
"position" INTEGER NOT NULL DEFAULT -1,
|
||||||
|
"group_position" INTEGER NOT NULL DEFAULT -1,
|
||||||
|
"visible" BOOLEAN NOT NULL DEFAULT TRUE,
|
||||||
|
"community_id" TEXT NOT NULL DEFAULT '',
|
||||||
|
"testnet" BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
|
PRIMARY KEY("key","testnet")
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE settings ADD COLUMN wallet_token_preferences_change_clock INTEGER NOT NULL DEFAULT 0;
|
||||||
|
ALTER TABLE settings ADD COLUMN wallet_token_preferences_group_by_community BOOLEAN NOT NULL DEFAULT FALSE;
|
|
@ -13,6 +13,7 @@ import (
|
||||||
"github.com/status-im/status-go/multiaccounts/settings"
|
"github.com/status-im/status-go/multiaccounts/settings"
|
||||||
notificationssettings "github.com/status-im/status-go/multiaccounts/settings_notifications"
|
notificationssettings "github.com/status-im/status-go/multiaccounts/settings_notifications"
|
||||||
sociallinkssettings "github.com/status-im/status-go/multiaccounts/settings_social_links"
|
sociallinkssettings "github.com/status-im/status-go/multiaccounts/settings_social_links"
|
||||||
|
walletsettings "github.com/status-im/status-go/multiaccounts/settings_wallet"
|
||||||
"github.com/status-im/status-go/nodecfg"
|
"github.com/status-im/status-go/nodecfg"
|
||||||
"github.com/status-im/status-go/params"
|
"github.com/status-im/status-go/params"
|
||||||
)
|
)
|
||||||
|
@ -285,6 +286,7 @@ type Database struct {
|
||||||
*settings.Database
|
*settings.Database
|
||||||
*notificationssettings.NotificationsSettings
|
*notificationssettings.NotificationsSettings
|
||||||
*sociallinkssettings.SocialLinksSettings
|
*sociallinkssettings.SocialLinksSettings
|
||||||
|
*walletsettings.WalletSettings
|
||||||
db *sql.DB
|
db *sql.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -296,8 +298,9 @@ func NewDB(db *sql.DB) (*Database, error) {
|
||||||
}
|
}
|
||||||
sn := notificationssettings.NewNotificationsSettings(db)
|
sn := notificationssettings.NewNotificationsSettings(db)
|
||||||
ssl := sociallinkssettings.NewSocialLinksSettings(db)
|
ssl := sociallinkssettings.NewSocialLinksSettings(db)
|
||||||
|
sw := walletsettings.NewWalletSettings(db)
|
||||||
|
|
||||||
return &Database{sDB, sn, ssl, db}, nil
|
return &Database{sDB, sn, ssl, sw, db}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DB Gets db sql.DB
|
// DB Gets db sql.DB
|
||||||
|
|
|
@ -397,6 +397,11 @@ var (
|
||||||
dBColumnName: "is_sepolia_enabled",
|
dBColumnName: "is_sepolia_enabled",
|
||||||
valueHandler: BoolHandler,
|
valueHandler: BoolHandler,
|
||||||
}
|
}
|
||||||
|
TokenGroupByCommunity = SettingField{
|
||||||
|
reactFieldName: "token-group-by-community?",
|
||||||
|
dBColumnName: "wallet_token_preferences_group_by_community",
|
||||||
|
valueHandler: BoolHandler,
|
||||||
|
}
|
||||||
UseMailservers = SettingField{
|
UseMailservers = SettingField{
|
||||||
reactFieldName: "use-mailservers?",
|
reactFieldName: "use-mailservers?",
|
||||||
dBColumnName: "use_mailservers",
|
dBColumnName: "use_mailservers",
|
||||||
|
@ -526,6 +531,7 @@ var (
|
||||||
WebviewAllowPermissionRequests,
|
WebviewAllowPermissionRequests,
|
||||||
ProfileMigrationNeeded,
|
ProfileMigrationNeeded,
|
||||||
IsSepoliaEnabled,
|
IsSepoliaEnabled,
|
||||||
|
TokenGroupByCommunity,
|
||||||
URLUnfurlingMode,
|
URLUnfurlingMode,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
@ -353,7 +353,7 @@ func (db *Database) GetSettings() (Settings, error) {
|
||||||
profile_pictures_show_to, profile_pictures_visibility, wallet_root_address, wallet_set_up_passed, wallet_visible_tokens,
|
profile_pictures_show_to, profile_pictures_visibility, wallet_root_address, wallet_set_up_passed, wallet_visible_tokens,
|
||||||
waku_bloom_filter_mode, webview_allow_permission_requests, current_user_status, send_status_updates, gif_recents,
|
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,
|
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,
|
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
|
||||||
FROM
|
FROM
|
||||||
settings
|
settings
|
||||||
|
@ -429,6 +429,7 @@ func (db *Database) GetSettings() (Settings, error) {
|
||||||
&s.MutualContactEnabled,
|
&s.MutualContactEnabled,
|
||||||
&s.ProfileMigrationNeeded,
|
&s.ProfileMigrationNeeded,
|
||||||
&s.IsSepoliaEnabled,
|
&s.IsSepoliaEnabled,
|
||||||
|
&s.TokenGroupByCommunity,
|
||||||
&s.URLUnfurlingMode,
|
&s.URLUnfurlingMode,
|
||||||
&s.OmitTransfersHistoryScan,
|
&s.OmitTransfersHistoryScan,
|
||||||
&s.MnemonicWasNotShown,
|
&s.MnemonicWasNotShown,
|
||||||
|
@ -720,6 +721,18 @@ func (db *Database) GetIsSepoliaEnabled() (result bool, err error) {
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db *Database) GetTokenGroupByCommunity() (result bool, err error) {
|
||||||
|
err = db.makeSelectRow(TokenGroupByCommunity).Scan(&result)
|
||||||
|
if err == sql.ErrNoRows {
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (db *Database) SetTokenGroupByCommunity(value bool) error {
|
||||||
|
return db.SaveSettingField(TokenGroupByCommunity, value)
|
||||||
|
}
|
||||||
|
|
||||||
func (db *Database) GetTelemetryServerURL() (string, error) {
|
func (db *Database) GetTelemetryServerURL() (string, error) {
|
||||||
return db.makeSelectString(TelemetryServerURL)
|
return db.makeSelectString(TelemetryServerURL)
|
||||||
}
|
}
|
||||||
|
|
|
@ -199,6 +199,7 @@ type Settings struct {
|
||||||
TestNetworksEnabled bool `json:"test-networks-enabled?,omitempty"`
|
TestNetworksEnabled bool `json:"test-networks-enabled?,omitempty"`
|
||||||
ProfileMigrationNeeded bool `json:"profile-migration-needed,omitempty"`
|
ProfileMigrationNeeded bool `json:"profile-migration-needed,omitempty"`
|
||||||
IsSepoliaEnabled bool `json:"is-sepolia-enabled?,omitempty"`
|
IsSepoliaEnabled bool `json:"is-sepolia-enabled?,omitempty"`
|
||||||
|
TokenGroupByCommunity bool `json:"token-group-by-community?,omitempty"`
|
||||||
URLUnfurlingMode URLUnfurlingModeType `json:"url-unfurling-mode,omitempty"`
|
URLUnfurlingMode URLUnfurlingModeType `json:"url-unfurling-mode,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,126 @@
|
||||||
|
package walletsettings
|
||||||
|
|
||||||
|
import (
|
||||||
|
"database/sql"
|
||||||
|
"errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
type TokenPreferences struct {
|
||||||
|
Key string `json:"key"`
|
||||||
|
Position int `json:"position"`
|
||||||
|
GroupPosition int `json:"groupPosition"`
|
||||||
|
Visible bool `json:"visible"`
|
||||||
|
CommunityID string `json:"communityId"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type WalletSettings struct {
|
||||||
|
db *sql.DB
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewWalletSettings(db *sql.DB) *WalletSettings {
|
||||||
|
return &WalletSettings{
|
||||||
|
db: db,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This function should not be used directly, it is called from the functions which update token preferences.
|
||||||
|
func (ws *WalletSettings) setClockOfLastTokenPreferencesChange(tx *sql.Tx, clock uint64) error {
|
||||||
|
if tx == nil {
|
||||||
|
return errors.New("database transaction is nil")
|
||||||
|
}
|
||||||
|
_, err := tx.Exec("UPDATE settings SET wallet_token_preferences_change_clock = ? WHERE synthetic_id = 'id'", clock)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ws *WalletSettings) GetClockOfLastTokenPreferencesChange() (result uint64, err error) {
|
||||||
|
query := "SELECT wallet_token_preferences_change_clock FROM settings WHERE synthetic_id = 'id'"
|
||||||
|
err = ws.db.QueryRow(query).Scan(&result)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ws *WalletSettings) UpdateTokenPreferences(preferences []TokenPreferences, groupByCommunity bool, testNetworksEnabled bool, clock uint64) error {
|
||||||
|
if len(preferences) == 0 {
|
||||||
|
return errors.New("tokens: trying to create custom order with empty list")
|
||||||
|
}
|
||||||
|
|
||||||
|
tx, err := ws.db.Begin()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var mainError error = nil
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
if mainError == nil {
|
||||||
|
err = tx.Commit()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_ = tx.Rollback()
|
||||||
|
}()
|
||||||
|
|
||||||
|
_, mainError = tx.Exec("DELETE FROM token_preferences WHERE testnet = ?", testNetworksEnabled)
|
||||||
|
if mainError != nil {
|
||||||
|
return mainError
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, p := range preferences {
|
||||||
|
if p.Position < 0 {
|
||||||
|
mainError = errors.New("tokens: trying to create custom order with negative position")
|
||||||
|
return mainError
|
||||||
|
}
|
||||||
|
_, err := tx.Exec("INSERT INTO token_preferences (key, position, group_position, visible, community_id, testnet) VALUES (?, ?, ?, ?, ?, ?)", p.Key, p.Position, p.GroupPosition, p.Visible, p.CommunityID, testNetworksEnabled)
|
||||||
|
if err != nil {
|
||||||
|
mainError = err
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if groupByCommunity {
|
||||||
|
// Find community tokens without group position
|
||||||
|
// Group position can be -1 if it wasn't created yet. Values must be consitstent across all tokens
|
||||||
|
rows, err := tx.Query(`SELECT COUNT(*) FROM token_preferences WHERE testnet = ? AND group_position = -1 AND community_id != '' AND visible GROUP BY community_id HAVING COUNT(*) > 0`, testNetworksEnabled)
|
||||||
|
if err != nil {
|
||||||
|
mainError = err
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if rows.Next() {
|
||||||
|
mainError = errors.New("tokens: not all community tokens have assigned the group position")
|
||||||
|
return mainError
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mainError = ws.setClockOfLastTokenPreferencesChange(tx, clock)
|
||||||
|
if mainError != nil {
|
||||||
|
return mainError
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ws *WalletSettings) GetTokenPreferences(testNetworksEnabled bool) ([]TokenPreferences, error) {
|
||||||
|
rows, err := ws.db.Query("SELECT key, position, group_position, visible, community_id FROM token_preferences WHERE testnet = ?", testNetworksEnabled)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
|
||||||
|
var result []TokenPreferences
|
||||||
|
|
||||||
|
for rows.Next() {
|
||||||
|
token := TokenPreferences{}
|
||||||
|
err := rows.Scan(&token.Key, &token.Position, &token.GroupPosition, &token.Visible, &token.CommunityID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
result = append(result, token)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := rows.Err(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
|
@ -0,0 +1,308 @@
|
||||||
|
package walletsettings
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
|
"github.com/status-im/status-go/appdatabase"
|
||||||
|
"github.com/status-im/status-go/multiaccounts/settings"
|
||||||
|
"github.com/status-im/status-go/params"
|
||||||
|
"github.com/status-im/status-go/t/helpers"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
config = params.NodeConfig{
|
||||||
|
NetworkID: 10,
|
||||||
|
DataDir: "test",
|
||||||
|
}
|
||||||
|
networks = json.RawMessage("{}")
|
||||||
|
settingsObj = settings.Settings{
|
||||||
|
Networks: &networks,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func setupTestDB(t *testing.T) (*WalletSettings, func()) {
|
||||||
|
db, stop, err := helpers.SetupTestSQLDB(appdatabase.DbInitializer{}, "settings-wallet-tests-")
|
||||||
|
require.NoError(t, err)
|
||||||
|
settDb, err := settings.MakeNewDB(db)
|
||||||
|
require.NoError(t, err)
|
||||||
|
err = settDb.CreateSettings(settingsObj, config)
|
||||||
|
require.NoError(t, err)
|
||||||
|
walletSettings := NewWalletSettings(db)
|
||||||
|
return walletSettings, func() { require.NoError(t, stop()) }
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSetClockOfLastTokenPreferencesChange(t *testing.T) {
|
||||||
|
walletSettings, stop := setupTestDB(t)
|
||||||
|
defer stop()
|
||||||
|
|
||||||
|
clock, err := walletSettings.GetClockOfLastTokenPreferencesChange()
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, uint64(0), clock)
|
||||||
|
|
||||||
|
err = walletSettings.setClockOfLastTokenPreferencesChange(nil, 123)
|
||||||
|
require.Error(t, err)
|
||||||
|
|
||||||
|
tx, err := walletSettings.db.Begin()
|
||||||
|
require.NoError(t, err)
|
||||||
|
err = walletSettings.setClockOfLastTokenPreferencesChange(tx, 123)
|
||||||
|
require.NoError(t, err)
|
||||||
|
err = tx.Commit()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
clock, err = walletSettings.GetClockOfLastTokenPreferencesChange()
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, uint64(123), clock)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetTokenPreferencesEmpty(t *testing.T) {
|
||||||
|
walletSettings, stop := setupTestDB(t)
|
||||||
|
defer stop()
|
||||||
|
|
||||||
|
preferences, err := walletSettings.GetTokenPreferences(true)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, 0, len(preferences))
|
||||||
|
preferences, err = walletSettings.GetTokenPreferences(false)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, 0, len(preferences))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUpdateTokenPreferencesEmpty(t *testing.T) {
|
||||||
|
walletSettings, stop := setupTestDB(t)
|
||||||
|
defer stop()
|
||||||
|
|
||||||
|
err := walletSettings.UpdateTokenPreferences([]TokenPreferences{}, false, false, 0)
|
||||||
|
require.Error(t, err)
|
||||||
|
err = walletSettings.UpdateTokenPreferences([]TokenPreferences{}, false, true, 0)
|
||||||
|
require.Error(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUpdateTokenPreferencesTestnet(t *testing.T) {
|
||||||
|
walletSettings, stop := setupTestDB(t)
|
||||||
|
defer stop()
|
||||||
|
|
||||||
|
err := walletSettings.UpdateTokenPreferences([]TokenPreferences{
|
||||||
|
{"SNT", 0, -1, false, ""},
|
||||||
|
}, false, true, 0)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// Mainnet is not affected by testnet preferences
|
||||||
|
preferences, err := walletSettings.GetTokenPreferences(false)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, 0, len(preferences))
|
||||||
|
|
||||||
|
preferences, err = walletSettings.GetTokenPreferences(true)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, 1, len(preferences))
|
||||||
|
require.Equal(t, "SNT", preferences[0].Key)
|
||||||
|
require.Equal(t, 0, preferences[0].Position)
|
||||||
|
require.Equal(t, -1, preferences[0].GroupPosition)
|
||||||
|
require.Equal(t, false, preferences[0].Visible)
|
||||||
|
require.Equal(t, "", preferences[0].CommunityID)
|
||||||
|
|
||||||
|
// Inserting into testnet doesn't affect mainnet
|
||||||
|
err = walletSettings.UpdateTokenPreferences([]TokenPreferences{
|
||||||
|
{"ABC0", 0, -1, true, ""},
|
||||||
|
{"ABC1", 1, -1, true, ""},
|
||||||
|
}, false, false, 0)
|
||||||
|
require.NoError(t, err)
|
||||||
|
err = walletSettings.UpdateTokenPreferences([]TokenPreferences{
|
||||||
|
{"ABC0", 1, -1, true, ""},
|
||||||
|
{"ABC1", 0, -1, true, ""},
|
||||||
|
}, false, true, 0)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// Having same symbols on mainnet and testnet is allowed
|
||||||
|
preferences, err = walletSettings.GetTokenPreferences(true)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, 2, len(preferences))
|
||||||
|
require.Equal(t, "ABC0", preferences[0].Key)
|
||||||
|
require.Equal(t, 1, preferences[0].Position)
|
||||||
|
require.Equal(t, -1, preferences[0].GroupPosition)
|
||||||
|
require.Equal(t, true, preferences[0].Visible)
|
||||||
|
require.Equal(t, "", preferences[0].CommunityID)
|
||||||
|
require.Equal(t, "ABC1", preferences[1].Key)
|
||||||
|
require.Equal(t, 0, preferences[1].Position)
|
||||||
|
require.Equal(t, -1, preferences[1].GroupPosition)
|
||||||
|
require.Equal(t, true, preferences[1].Visible)
|
||||||
|
require.Equal(t, "", preferences[1].CommunityID)
|
||||||
|
|
||||||
|
preferences, err = walletSettings.GetTokenPreferences(false)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, 2, len(preferences))
|
||||||
|
require.Equal(t, "ABC0", preferences[0].Key)
|
||||||
|
require.Equal(t, 0, preferences[0].Position)
|
||||||
|
require.Equal(t, -1, preferences[0].GroupPosition)
|
||||||
|
require.Equal(t, true, preferences[0].Visible)
|
||||||
|
require.Equal(t, "", preferences[0].CommunityID)
|
||||||
|
require.Equal(t, "ABC1", preferences[1].Key)
|
||||||
|
require.Equal(t, 1, preferences[1].Position)
|
||||||
|
require.Equal(t, -1, preferences[1].GroupPosition)
|
||||||
|
require.Equal(t, true, preferences[1].Visible)
|
||||||
|
require.Equal(t, "", preferences[1].CommunityID)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUpdateTokenPreferencesRollback(t *testing.T) {
|
||||||
|
db, stop := setupTestDB(t)
|
||||||
|
defer stop()
|
||||||
|
|
||||||
|
err := db.UpdateTokenPreferences([]TokenPreferences{
|
||||||
|
{"SNT", 0, -1, false, ""},
|
||||||
|
}, false, true, 0)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// Duplicate is not allowed
|
||||||
|
err = db.UpdateTokenPreferences([]TokenPreferences{
|
||||||
|
{"ABC", 0, -1, false, ""},
|
||||||
|
{"ABC", 0, -1, true, ""},
|
||||||
|
}, false, true, 0)
|
||||||
|
require.Error(t, err)
|
||||||
|
|
||||||
|
// Rolled back to previous state
|
||||||
|
preferences, err := db.GetTokenPreferences(true)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, 1, len(preferences))
|
||||||
|
require.Equal(t, "SNT", preferences[0].Key)
|
||||||
|
require.Equal(t, 0, preferences[0].Position)
|
||||||
|
require.Equal(t, -1, preferences[0].GroupPosition)
|
||||||
|
require.Equal(t, false, preferences[0].Visible)
|
||||||
|
require.Equal(t, "", preferences[0].CommunityID)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTokenPrefrencesGroupByCommunity(t *testing.T) {
|
||||||
|
walletSettings, stop := setupTestDB(t)
|
||||||
|
defer stop()
|
||||||
|
|
||||||
|
communityID01 := "0x000001"
|
||||||
|
communityID02 := "0x000002"
|
||||||
|
|
||||||
|
err := walletSettings.UpdateTokenPreferences([]TokenPreferences{
|
||||||
|
{"SNT", 0, -1, true, ""},
|
||||||
|
{"ETH", 1, -1, true, ""},
|
||||||
|
{"T01", 0, -1, true, communityID01},
|
||||||
|
{"T02", 1, -1, true, communityID01},
|
||||||
|
}, false, true, 0)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
preferences, err := walletSettings.GetTokenPreferences(true)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, 4, len(preferences))
|
||||||
|
require.Equal(t, "SNT", preferences[0].Key)
|
||||||
|
require.Equal(t, 0, preferences[0].Position)
|
||||||
|
require.Equal(t, -1, preferences[0].GroupPosition)
|
||||||
|
require.Equal(t, true, preferences[0].Visible)
|
||||||
|
require.Equal(t, "", preferences[0].CommunityID)
|
||||||
|
require.Equal(t, "ETH", preferences[1].Key)
|
||||||
|
require.Equal(t, 1, preferences[1].Position)
|
||||||
|
require.Equal(t, -1, preferences[1].GroupPosition)
|
||||||
|
require.Equal(t, true, preferences[1].Visible)
|
||||||
|
require.Equal(t, "", preferences[1].CommunityID)
|
||||||
|
require.Equal(t, "T01", preferences[2].Key)
|
||||||
|
require.Equal(t, 0, preferences[2].Position)
|
||||||
|
require.Equal(t, -1, preferences[2].GroupPosition)
|
||||||
|
require.Equal(t, true, preferences[2].Visible)
|
||||||
|
require.Equal(t, communityID01, preferences[2].CommunityID)
|
||||||
|
require.Equal(t, "T02", preferences[3].Key)
|
||||||
|
require.Equal(t, 1, preferences[3].Position)
|
||||||
|
require.Equal(t, -1, preferences[3].GroupPosition)
|
||||||
|
require.Equal(t, true, preferences[3].Visible)
|
||||||
|
require.Equal(t, communityID01, preferences[3].CommunityID)
|
||||||
|
|
||||||
|
err = walletSettings.UpdateTokenPreferences([]TokenPreferences{
|
||||||
|
{"SNT", 0, -1, true, ""},
|
||||||
|
{"ETH", 1, -1, true, ""},
|
||||||
|
{"T01", 0, 1, true, communityID01},
|
||||||
|
{"T02", 1, 0, true, communityID01},
|
||||||
|
{"T03", 0, 0, true, communityID02},
|
||||||
|
}, false, true, 0)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
preferences, err = walletSettings.GetTokenPreferences(true)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, 5, len(preferences))
|
||||||
|
require.Equal(t, "SNT", preferences[0].Key)
|
||||||
|
require.Equal(t, 0, preferences[0].Position)
|
||||||
|
require.Equal(t, -1, preferences[0].GroupPosition)
|
||||||
|
require.Equal(t, true, preferences[0].Visible)
|
||||||
|
require.Equal(t, "", preferences[0].CommunityID)
|
||||||
|
require.Equal(t, "ETH", preferences[1].Key)
|
||||||
|
require.Equal(t, 1, preferences[1].Position)
|
||||||
|
require.Equal(t, -1, preferences[1].GroupPosition)
|
||||||
|
require.Equal(t, true, preferences[1].Visible)
|
||||||
|
require.Equal(t, "", preferences[1].CommunityID)
|
||||||
|
require.Equal(t, "T01", preferences[2].Key)
|
||||||
|
require.Equal(t, 0, preferences[2].Position)
|
||||||
|
require.Equal(t, 1, preferences[2].GroupPosition)
|
||||||
|
require.Equal(t, true, preferences[2].Visible)
|
||||||
|
require.Equal(t, communityID01, preferences[2].CommunityID)
|
||||||
|
require.Equal(t, "T02", preferences[3].Key)
|
||||||
|
require.Equal(t, 1, preferences[3].Position)
|
||||||
|
require.Equal(t, 0, preferences[3].GroupPosition)
|
||||||
|
require.Equal(t, true, preferences[3].Visible)
|
||||||
|
require.Equal(t, communityID01, preferences[3].CommunityID)
|
||||||
|
require.Equal(t, "T03", preferences[4].Key)
|
||||||
|
require.Equal(t, 0, preferences[4].Position)
|
||||||
|
require.Equal(t, 0, preferences[4].GroupPosition)
|
||||||
|
require.Equal(t, true, preferences[4].Visible)
|
||||||
|
require.Equal(t, communityID02, preferences[4].CommunityID)
|
||||||
|
|
||||||
|
// Insert not full group positioning (one group has -1 group position)
|
||||||
|
err = walletSettings.UpdateTokenPreferences([]TokenPreferences{
|
||||||
|
{"SNT", 0, -1, true, ""},
|
||||||
|
{"ETH", 1, -1, true, ""},
|
||||||
|
{"T01", 0, 1, true, communityID01},
|
||||||
|
{"T02", 1, 0, true, communityID01},
|
||||||
|
{"T03", 0, -1, true, communityID02},
|
||||||
|
}, true, true, 0)
|
||||||
|
require.Error(t, err)
|
||||||
|
|
||||||
|
// Group by community is disabled so there's no check for proper grouping
|
||||||
|
err = walletSettings.UpdateTokenPreferences([]TokenPreferences{
|
||||||
|
{"SNT", 0, -1, true, ""},
|
||||||
|
{"ETH", 1, -1, true, ""},
|
||||||
|
{"T01", 0, 1, true, communityID01},
|
||||||
|
{"T02", 1, 0, true, communityID01},
|
||||||
|
{"T03", 0, -1, true, communityID02},
|
||||||
|
}, false, true, 0)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// Insert not full group positioning with invsibile item set
|
||||||
|
err = walletSettings.UpdateTokenPreferences([]TokenPreferences{
|
||||||
|
{"SNT", 0, -1, true, ""},
|
||||||
|
{"ETH", 1, -1, true, ""},
|
||||||
|
{"T01", 0, 1, true, communityID01},
|
||||||
|
{"T02", 1, 0, true, communityID01},
|
||||||
|
{"T03", 0, -1, false, communityID02},
|
||||||
|
}, true, true, 0)
|
||||||
|
require.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUpdateTokenPreferencesSettings(t *testing.T) {
|
||||||
|
walletSettings, stop := setupTestDB(t)
|
||||||
|
defer stop()
|
||||||
|
|
||||||
|
preferences := []TokenPreferences{
|
||||||
|
{"SNT", 0, -1, true, ""},
|
||||||
|
{"ETH", 1, -1, true, ""},
|
||||||
|
{"T01", 0, 1, true, "0x000001"},
|
||||||
|
{"T02", 1, 0, true, "0x000001"},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := walletSettings.UpdateTokenPreferences(preferences, true, true, 123)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// Verify that the preferences are updated correctly
|
||||||
|
prefs, err := walletSettings.GetTokenPreferences(true)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, len(preferences), len(prefs))
|
||||||
|
for i := range preferences {
|
||||||
|
require.Equal(t, preferences[i], prefs[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify that the clock is updated
|
||||||
|
clock, err := walletSettings.GetClockOfLastTokenPreferencesChange()
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.True(t, clock > 0)
|
||||||
|
}
|
|
@ -23,6 +23,7 @@ import (
|
||||||
"github.com/status-im/status-go/multiaccounts/accounts"
|
"github.com/status-im/status-go/multiaccounts/accounts"
|
||||||
multiaccountscommon "github.com/status-im/status-go/multiaccounts/common"
|
multiaccountscommon "github.com/status-im/status-go/multiaccounts/common"
|
||||||
"github.com/status-im/status-go/multiaccounts/settings"
|
"github.com/status-im/status-go/multiaccounts/settings"
|
||||||
|
walletsettings "github.com/status-im/status-go/multiaccounts/settings_wallet"
|
||||||
"github.com/status-im/status-go/protocol/common"
|
"github.com/status-im/status-go/protocol/common"
|
||||||
"github.com/status-im/status-go/protocol/common/shard"
|
"github.com/status-im/status-go/protocol/common/shard"
|
||||||
"github.com/status-im/status-go/protocol/communities"
|
"github.com/status-im/status-go/protocol/communities"
|
||||||
|
@ -52,6 +53,7 @@ var (
|
||||||
ErrSomeFieldsMissingForWalletAccount = errors.New("some fields are missing for wallet account")
|
ErrSomeFieldsMissingForWalletAccount = errors.New("some fields are missing for wallet account")
|
||||||
ErrUnknownKeypairForWalletAccount = errors.New("keypair is not known for the wallet account")
|
ErrUnknownKeypairForWalletAccount = errors.New("keypair is not known for the wallet account")
|
||||||
ErrInvalidCommunityID = errors.New("invalid community id")
|
ErrInvalidCommunityID = errors.New("invalid community id")
|
||||||
|
ErrTryingToApplyOldTokenPreferences = errors.New("trying to apply old token preferences")
|
||||||
)
|
)
|
||||||
|
|
||||||
// HandleMembershipUpdate updates a Chat instance according to the membership updates.
|
// HandleMembershipUpdate updates a Chat instance according to the membership updates.
|
||||||
|
@ -3226,6 +3228,46 @@ func (m *Messenger) handleSyncWatchOnlyAccount(message *protobuf.SyncAccount, fr
|
||||||
return acc, nil
|
return acc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) handleSyncTokenPreferences(message *protobuf.SyncTokenPreferences) ([]walletsettings.TokenPreferences, error) {
|
||||||
|
if len(message.Preferences) == 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
dbLastUpdate, err := m.settings.GetClockOfLastTokenPreferencesChange()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
groupByCommunity, err := m.settings.GetTokenGroupByCommunity()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Since adding new token preferences updates `ClockOfLastTokenPreferencesChange` we should handle token preferences changes
|
||||||
|
// even they are with the same clock, that ensures the correct order in case of syncing devices.
|
||||||
|
if message.Clock < dbLastUpdate {
|
||||||
|
return nil, ErrTryingToApplyOldTokenPreferences
|
||||||
|
}
|
||||||
|
|
||||||
|
var tokenPreferences []walletsettings.TokenPreferences
|
||||||
|
for _, pref := range message.Preferences {
|
||||||
|
tokenPref := walletsettings.TokenPreferences{
|
||||||
|
Key: pref.Key,
|
||||||
|
Position: int(pref.Position),
|
||||||
|
GroupPosition: int(pref.GroupPosition),
|
||||||
|
Visible: pref.Visible,
|
||||||
|
CommunityID: pref.CommunityId,
|
||||||
|
}
|
||||||
|
tokenPreferences = append(tokenPreferences, tokenPref)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = m.settings.UpdateTokenPreferences(tokenPreferences, groupByCommunity, message.Testnet, message.Clock)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return tokenPreferences, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (m *Messenger) handleSyncAccountsPositions(message *protobuf.SyncAccountsPositions) ([]*accounts.Account, error) {
|
func (m *Messenger) handleSyncAccountsPositions(message *protobuf.SyncAccountsPositions) ([]*accounts.Account, error) {
|
||||||
if len(message.Accounts) == 0 {
|
if len(message.Accounts) == 0 {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
|
@ -3459,6 +3501,21 @@ func (m *Messenger) HandleSyncAccountsPositions(state *ReceivedMessageState, mes
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) HandleSyncTokenPreferences(state *ReceivedMessageState, message *protobuf.SyncTokenPreferences, statusMessage *v1protocol.StatusMessage) error {
|
||||||
|
tokenPreferences, err := m.handleSyncTokenPreferences(message)
|
||||||
|
if err != nil {
|
||||||
|
if err == ErrTryingToApplyOldTokenPreferences {
|
||||||
|
m.logger.Warn("syncing token preferences issue", zap.Error(err))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
state.Response.TokenPreferences = append(state.Response.TokenPreferences, tokenPreferences...)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (m *Messenger) HandleSyncAccount(state *ReceivedMessageState, message *protobuf.SyncAccount, statusMessage *v1protocol.StatusMessage) error {
|
func (m *Messenger) HandleSyncAccount(state *ReceivedMessageState, message *protobuf.SyncAccount, statusMessage *v1protocol.StatusMessage) error {
|
||||||
acc, err := m.handleSyncWatchOnlyAccount(message, false)
|
acc, err := m.handleSyncWatchOnlyAccount(message, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -232,6 +232,9 @@ func (m *Messenger) dispatchToHandler(messageState *ReceivedMessageState, protoB
|
||||||
case protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION:
|
case protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION:
|
||||||
return m.handleSyncActivityCenterCommunityRequestDecisionProtobuf(messageState, protoBytes, msg, filter)
|
return m.handleSyncActivityCenterCommunityRequestDecisionProtobuf(messageState, protoBytes, msg, filter)
|
||||||
|
|
||||||
|
case protobuf.ApplicationMetadataMessage_SYNC_TOKEN_PREFERENCES:
|
||||||
|
return m.handleSyncTokenPreferencesProtobuf(messageState, protoBytes, msg, filter)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
m.logger.Info("protobuf type not found", zap.String("type", string(msg.ApplicationLayer.Type)))
|
m.logger.Info("protobuf type not found", zap.String("type", string(msg.ApplicationLayer.Type)))
|
||||||
return errors.New("protobuf type not found")
|
return errors.New("protobuf type not found")
|
||||||
|
@ -1655,3 +1658,26 @@ func (m *Messenger) handleSyncActivityCenterCommunityRequestDecisionProtobuf(mes
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func (m *Messenger) handleSyncTokenPreferencesProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error {
|
||||||
|
m.logger.Info("handling SyncTokenPreferences")
|
||||||
|
|
||||||
|
if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) {
|
||||||
|
m.logger.Warn("not coming from us, ignoring")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
p := &protobuf.SyncTokenPreferences{}
|
||||||
|
err := proto.Unmarshal(protoBytes, p)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
m.outputToCSV(msg.TransportLayer.Message.Timestamp, msg.ApplicationLayer.ID, messageState.CurrentMessageState.Contact.ID, filter.ContentTopic, filter.ChatID, msg.ApplicationLayer.Type, p)
|
||||||
|
|
||||||
|
return m.HandleSyncTokenPreferences(messageState, p, msg)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"github.com/status-im/status-go/images"
|
"github.com/status-im/status-go/images"
|
||||||
"github.com/status-im/status-go/multiaccounts/accounts"
|
"github.com/status-im/status-go/multiaccounts/accounts"
|
||||||
"github.com/status-im/status-go/multiaccounts/settings"
|
"github.com/status-im/status-go/multiaccounts/settings"
|
||||||
|
walletsettings "github.com/status-im/status-go/multiaccounts/settings_wallet"
|
||||||
"github.com/status-im/status-go/protocol/common"
|
"github.com/status-im/status-go/protocol/common"
|
||||||
"github.com/status-im/status-go/protocol/communities"
|
"github.com/status-im/status-go/protocol/communities"
|
||||||
"github.com/status-im/status-go/protocol/discord"
|
"github.com/status-im/status-go/protocol/discord"
|
||||||
|
@ -49,6 +50,7 @@ type MessengerResponse struct {
|
||||||
WatchOnlyAccounts []*accounts.Account
|
WatchOnlyAccounts []*accounts.Account
|
||||||
Keypairs []*accounts.Keypair
|
Keypairs []*accounts.Keypair
|
||||||
AccountsPositions []*accounts.Account
|
AccountsPositions []*accounts.Account
|
||||||
|
TokenPreferences []walletsettings.TokenPreferences
|
||||||
DiscordCategories []*discord.Category
|
DiscordCategories []*discord.Category
|
||||||
DiscordChannels []*discord.Channel
|
DiscordChannels []*discord.Channel
|
||||||
DiscordOldestMessageTimestamp int
|
DiscordOldestMessageTimestamp int
|
||||||
|
@ -114,6 +116,7 @@ func (r *MessengerResponse) MarshalJSON() ([]byte, error) {
|
||||||
WatchOnlyAccounts []*accounts.Account `json:"watchOnlyAccounts,omitempty"`
|
WatchOnlyAccounts []*accounts.Account `json:"watchOnlyAccounts,omitempty"`
|
||||||
Keypairs []*accounts.Keypair `json:"keypairs,omitempty"`
|
Keypairs []*accounts.Keypair `json:"keypairs,omitempty"`
|
||||||
AccountsPositions []*accounts.Account `json:"accountsPositions,omitempty"`
|
AccountsPositions []*accounts.Account `json:"accountsPositions,omitempty"`
|
||||||
|
TokenPreferences []walletsettings.TokenPreferences `json:"tokenPreferences,omitempty"`
|
||||||
DiscordCategories []*discord.Category `json:"discordCategories,omitempty"`
|
DiscordCategories []*discord.Category `json:"discordCategories,omitempty"`
|
||||||
DiscordChannels []*discord.Channel `json:"discordChannels,omitempty"`
|
DiscordChannels []*discord.Channel `json:"discordChannels,omitempty"`
|
||||||
DiscordOldestMessageTimestamp int `json:"discordOldestMessageTimestamp"`
|
DiscordOldestMessageTimestamp int `json:"discordOldestMessageTimestamp"`
|
||||||
|
@ -138,6 +141,7 @@ func (r *MessengerResponse) MarshalJSON() ([]byte, error) {
|
||||||
WatchOnlyAccounts: r.WatchOnlyAccounts,
|
WatchOnlyAccounts: r.WatchOnlyAccounts,
|
||||||
Keypairs: r.Keypairs,
|
Keypairs: r.Keypairs,
|
||||||
AccountsPositions: r.AccountsPositions,
|
AccountsPositions: r.AccountsPositions,
|
||||||
|
TokenPreferences: r.TokenPreferences,
|
||||||
|
|
||||||
Messages: r.Messages(),
|
Messages: r.Messages(),
|
||||||
VerificationRequests: r.VerificationRequests(),
|
VerificationRequests: r.VerificationRequests(),
|
||||||
|
@ -279,6 +283,7 @@ func (r *MessengerResponse) IsEmpty() bool {
|
||||||
len(r.WatchOnlyAccounts)+
|
len(r.WatchOnlyAccounts)+
|
||||||
len(r.Keypairs)+
|
len(r.Keypairs)+
|
||||||
len(r.AccountsPositions)+
|
len(r.AccountsPositions)+
|
||||||
|
len(r.TokenPreferences)+
|
||||||
len(r.notifications)+
|
len(r.notifications)+
|
||||||
len(r.statusUpdates)+
|
len(r.statusUpdates)+
|
||||||
len(r.activityCenterNotifications)+
|
len(r.activityCenterNotifications)+
|
||||||
|
@ -328,7 +333,8 @@ func (r *MessengerResponse) Merge(response *MessengerResponse) error {
|
||||||
r.CustomizationColor = response.CustomizationColor
|
r.CustomizationColor = response.CustomizationColor
|
||||||
r.WatchOnlyAccounts = append(r.WatchOnlyAccounts, response.WatchOnlyAccounts...)
|
r.WatchOnlyAccounts = append(r.WatchOnlyAccounts, response.WatchOnlyAccounts...)
|
||||||
r.Keypairs = append(r.Keypairs, response.Keypairs...)
|
r.Keypairs = append(r.Keypairs, response.Keypairs...)
|
||||||
r.WatchOnlyAccounts = append(r.AccountsPositions, response.AccountsPositions...)
|
r.AccountsPositions = append(r.AccountsPositions, response.AccountsPositions...)
|
||||||
|
r.TokenPreferences = append(r.TokenPreferences, response.TokenPreferences...)
|
||||||
r.SocialLinksInfo = response.SocialLinksInfo
|
r.SocialLinksInfo = response.SocialLinksInfo
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -220,6 +220,17 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er
|
||||||
m.logger.Error("failed to HandleSyncAccountsPositions when HandleSyncRawMessages", zap.Error(err))
|
m.logger.Error("failed to HandleSyncAccountsPositions when HandleSyncRawMessages", zap.Error(err))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
case protobuf.ApplicationMetadataMessage_SYNC_TOKEN_PREFERENCES:
|
||||||
|
var message protobuf.SyncTokenPreferences
|
||||||
|
err := proto.Unmarshal(rawMessage.GetPayload(), &message)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = m.HandleSyncTokenPreferences(state, &message, nil)
|
||||||
|
if err != nil {
|
||||||
|
m.logger.Error("failed to HandleSyncTokenPreferences when HandleSyncRawMessages", zap.Error(err))
|
||||||
|
continue
|
||||||
|
}
|
||||||
case protobuf.ApplicationMetadataMessage_SYNC_SAVED_ADDRESS:
|
case protobuf.ApplicationMetadataMessage_SYNC_SAVED_ADDRESS:
|
||||||
var message protobuf.SyncSavedAddress
|
var message protobuf.SyncSavedAddress
|
||||||
err := proto.Unmarshal(rawMessage.GetPayload(), &message)
|
err := proto.Unmarshal(rawMessage.GetPayload(), &message)
|
||||||
|
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"github.com/status-im/status-go/account"
|
"github.com/status-im/status-go/account"
|
||||||
"github.com/status-im/status-go/eth-node/types"
|
"github.com/status-im/status-go/eth-node/types"
|
||||||
"github.com/status-im/status-go/multiaccounts/accounts"
|
"github.com/status-im/status-go/multiaccounts/accounts"
|
||||||
|
walletsettings "github.com/status-im/status-go/multiaccounts/settings_wallet"
|
||||||
"github.com/status-im/status-go/protocol/common"
|
"github.com/status-im/status-go/protocol/common"
|
||||||
"github.com/status-im/status-go/protocol/encryption/multidevice"
|
"github.com/status-im/status-go/protocol/encryption/multidevice"
|
||||||
"github.com/status-im/status-go/protocol/protobuf"
|
"github.com/status-im/status-go/protocol/protobuf"
|
||||||
|
@ -417,6 +418,99 @@ func (m *Messenger) prepareSyncKeypairMessage(kp *accounts.Keypair) (*protobuf.S
|
||||||
return message, nil
|
return message, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) UpdateTokenPreferences(preferences []walletsettings.TokenPreferences) error {
|
||||||
|
clock, _ := m.getLastClockWithRelatedChat()
|
||||||
|
testNetworksEnabled, err := m.settings.GetTestNetworksEnabled()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
groupByCommunity, err := m.settings.GetTokenGroupByCommunity()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = m.settings.UpdateTokenPreferences(preferences, groupByCommunity, testNetworksEnabled, clock)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return m.syncTokenPreferences(m.dispatchMessage)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) GetTokenPreferences() ([]walletsettings.TokenPreferences, error) {
|
||||||
|
testNetworksEnabled, err := m.settings.GetTestNetworksEnabled()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
list, err := m.settings.GetTokenPreferences(testNetworksEnabled)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return list, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) prepareTokenPreferencesMessage(pref walletsettings.TokenPreferences) *protobuf.TokenPreferences {
|
||||||
|
return &protobuf.TokenPreferences{
|
||||||
|
Key: pref.Key,
|
||||||
|
Position: int64(pref.Position),
|
||||||
|
GroupPosition: int64(pref.GroupPosition),
|
||||||
|
Visible: pref.Visible,
|
||||||
|
CommunityId: pref.CommunityID,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) syncTokenPreferences(rawMessageHandler RawMessageHandler) error {
|
||||||
|
if !m.hasPairedDevices() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
_, chat := m.getLastClockWithRelatedChat()
|
||||||
|
|
||||||
|
lastUpdate, err := m.settings.GetClockOfLastTokenPreferencesChange()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
testNetworksEnabled, err := m.settings.GetTestNetworksEnabled()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
preferences, err := m.GetTokenPreferences()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
message := &protobuf.SyncTokenPreferences{
|
||||||
|
Clock: lastUpdate,
|
||||||
|
Testnet: testNetworksEnabled,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, pref := range preferences {
|
||||||
|
message.Preferences = append(message.Preferences, m.prepareTokenPreferencesMessage(pref))
|
||||||
|
}
|
||||||
|
|
||||||
|
encodedMessage, err := proto.Marshal(message)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
rawMessage := common.RawMessage{
|
||||||
|
LocalChatID: chat.ID,
|
||||||
|
Payload: encodedMessage,
|
||||||
|
MessageType: protobuf.ApplicationMetadataMessage_SYNC_TOKEN_PREFERENCES,
|
||||||
|
ResendAutomatically: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = rawMessageHandler(ctx, rawMessage)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (m *Messenger) syncAccountsPositions(rawMessageHandler RawMessageHandler) error {
|
func (m *Messenger) syncAccountsPositions(rawMessageHandler RawMessageHandler) error {
|
||||||
if !m.hasPairedDevices() {
|
if !m.hasPairedDevices() {
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
|
||||||
// protoc-gen-go v1.31.0
|
|
||||||
// protoc v4.24.4
|
|
||||||
// source: application_metadata_message.proto
|
// source: application_metadata_message.proto
|
||||||
|
|
||||||
package protobuf
|
package protobuf
|
||||||
|
|
||||||
import (
|
import (
|
||||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
fmt "fmt"
|
||||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
proto "github.com/golang/protobuf/proto"
|
||||||
reflect "reflect"
|
math "math"
|
||||||
sync "sync"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
// Verify that this generated code is sufficiently up-to-date.
|
var _ = proto.Marshal
|
||||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
var _ = fmt.Errorf
|
||||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
var _ = math.Inf
|
||||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
|
||||||
)
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
|
// is compatible with the proto package it is being compiled against.
|
||||||
|
// A compilation error at this line likely means your copy of the
|
||||||
|
// proto package needs to be updated.
|
||||||
|
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
||||||
|
|
||||||
type ApplicationMetadataMessage_Type int32
|
type ApplicationMetadataMessage_Type int32
|
||||||
|
|
||||||
|
@ -28,8 +28,7 @@ const (
|
||||||
ApplicationMetadataMessage_CONTACT_UPDATE ApplicationMetadataMessage_Type = 2
|
ApplicationMetadataMessage_CONTACT_UPDATE ApplicationMetadataMessage_Type = 2
|
||||||
ApplicationMetadataMessage_MEMBERSHIP_UPDATE_MESSAGE ApplicationMetadataMessage_Type = 3
|
ApplicationMetadataMessage_MEMBERSHIP_UPDATE_MESSAGE ApplicationMetadataMessage_Type = 3
|
||||||
ApplicationMetadataMessage_SYNC_PAIR_INSTALLATION ApplicationMetadataMessage_Type = 4
|
ApplicationMetadataMessage_SYNC_PAIR_INSTALLATION ApplicationMetadataMessage_Type = 4
|
||||||
// Deprecated: Marked as deprecated in application_metadata_message.proto.
|
ApplicationMetadataMessage_DEPRECATED_SYNC_INSTALLATION ApplicationMetadataMessage_Type = 5 // Deprecated: Do not use.
|
||||||
ApplicationMetadataMessage_DEPRECATED_SYNC_INSTALLATION ApplicationMetadataMessage_Type = 5
|
|
||||||
ApplicationMetadataMessage_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 6
|
ApplicationMetadataMessage_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 6
|
||||||
ApplicationMetadataMessage_ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 7
|
ApplicationMetadataMessage_ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 7
|
||||||
ApplicationMetadataMessage_DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 8
|
ApplicationMetadataMessage_DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 8
|
||||||
|
@ -49,8 +48,7 @@ const (
|
||||||
ApplicationMetadataMessage_GROUP_CHAT_INVITATION ApplicationMetadataMessage_Type = 23
|
ApplicationMetadataMessage_GROUP_CHAT_INVITATION ApplicationMetadataMessage_Type = 23
|
||||||
ApplicationMetadataMessage_CHAT_IDENTITY ApplicationMetadataMessage_Type = 24
|
ApplicationMetadataMessage_CHAT_IDENTITY ApplicationMetadataMessage_Type = 24
|
||||||
ApplicationMetadataMessage_COMMUNITY_DESCRIPTION ApplicationMetadataMessage_Type = 25
|
ApplicationMetadataMessage_COMMUNITY_DESCRIPTION ApplicationMetadataMessage_Type = 25
|
||||||
// Deprecated: Marked as deprecated in application_metadata_message.proto.
|
ApplicationMetadataMessage_COMMUNITY_INVITATION ApplicationMetadataMessage_Type = 26 // Deprecated: Do not use.
|
||||||
ApplicationMetadataMessage_COMMUNITY_INVITATION ApplicationMetadataMessage_Type = 26
|
|
||||||
ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN ApplicationMetadataMessage_Type = 27
|
ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN ApplicationMetadataMessage_Type = 27
|
||||||
ApplicationMetadataMessage_PIN_MESSAGE ApplicationMetadataMessage_Type = 28
|
ApplicationMetadataMessage_PIN_MESSAGE ApplicationMetadataMessage_Type = 28
|
||||||
ApplicationMetadataMessage_EDIT_MESSAGE ApplicationMetadataMessage_Type = 29
|
ApplicationMetadataMessage_EDIT_MESSAGE ApplicationMetadataMessage_Type = 29
|
||||||
|
@ -99,11 +97,10 @@ const (
|
||||||
ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_DELETED ApplicationMetadataMessage_Type = 75
|
ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_DELETED ApplicationMetadataMessage_Type = 75
|
||||||
ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_UNREAD ApplicationMetadataMessage_Type = 76
|
ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_UNREAD ApplicationMetadataMessage_Type = 76
|
||||||
ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION ApplicationMetadataMessage_Type = 77
|
ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION ApplicationMetadataMessage_Type = 77
|
||||||
|
ApplicationMetadataMessage_SYNC_TOKEN_PREFERENCES ApplicationMetadataMessage_Type = 78
|
||||||
)
|
)
|
||||||
|
|
||||||
// Enum value maps for ApplicationMetadataMessage_Type.
|
var ApplicationMetadataMessage_Type_name = map[int32]string{
|
||||||
var (
|
|
||||||
ApplicationMetadataMessage_Type_name = map[int32]string{
|
|
||||||
0: "UNKNOWN",
|
0: "UNKNOWN",
|
||||||
1: "CHAT_MESSAGE",
|
1: "CHAT_MESSAGE",
|
||||||
2: "CONTACT_UPDATE",
|
2: "CONTACT_UPDATE",
|
||||||
|
@ -178,8 +175,10 @@ var (
|
||||||
75: "SYNC_ACTIVITY_CENTER_DELETED",
|
75: "SYNC_ACTIVITY_CENTER_DELETED",
|
||||||
76: "SYNC_ACTIVITY_CENTER_UNREAD",
|
76: "SYNC_ACTIVITY_CENTER_UNREAD",
|
||||||
77: "SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION",
|
77: "SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION",
|
||||||
}
|
78: "SYNC_TOKEN_PREFERENCES",
|
||||||
ApplicationMetadataMessage_Type_value = map[string]int32{
|
}
|
||||||
|
|
||||||
|
var ApplicationMetadataMessage_Type_value = map[string]int32{
|
||||||
"UNKNOWN": 0,
|
"UNKNOWN": 0,
|
||||||
"CHAT_MESSAGE": 1,
|
"CHAT_MESSAGE": 1,
|
||||||
"CONTACT_UPDATE": 2,
|
"CONTACT_UPDATE": 2,
|
||||||
|
@ -254,329 +253,156 @@ var (
|
||||||
"SYNC_ACTIVITY_CENTER_DELETED": 75,
|
"SYNC_ACTIVITY_CENTER_DELETED": 75,
|
||||||
"SYNC_ACTIVITY_CENTER_UNREAD": 76,
|
"SYNC_ACTIVITY_CENTER_UNREAD": 76,
|
||||||
"SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION": 77,
|
"SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION": 77,
|
||||||
}
|
"SYNC_TOKEN_PREFERENCES": 78,
|
||||||
)
|
|
||||||
|
|
||||||
func (x ApplicationMetadataMessage_Type) Enum() *ApplicationMetadataMessage_Type {
|
|
||||||
p := new(ApplicationMetadataMessage_Type)
|
|
||||||
*p = x
|
|
||||||
return p
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x ApplicationMetadataMessage_Type) String() string {
|
func (x ApplicationMetadataMessage_Type) String() string {
|
||||||
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
return proto.EnumName(ApplicationMetadataMessage_Type_name, int32(x))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ApplicationMetadataMessage_Type) Descriptor() protoreflect.EnumDescriptor {
|
|
||||||
return file_application_metadata_message_proto_enumTypes[0].Descriptor()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ApplicationMetadataMessage_Type) Type() protoreflect.EnumType {
|
|
||||||
return &file_application_metadata_message_proto_enumTypes[0]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x ApplicationMetadataMessage_Type) Number() protoreflect.EnumNumber {
|
|
||||||
return protoreflect.EnumNumber(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use ApplicationMetadataMessage_Type.Descriptor instead.
|
|
||||||
func (ApplicationMetadataMessage_Type) EnumDescriptor() ([]byte, []int) {
|
func (ApplicationMetadataMessage_Type) EnumDescriptor() ([]byte, []int) {
|
||||||
return file_application_metadata_message_proto_rawDescGZIP(), []int{0, 0}
|
return fileDescriptor_ad09a6406fcf24c7, []int{0, 0}
|
||||||
}
|
}
|
||||||
|
|
||||||
type ApplicationMetadataMessage struct {
|
type ApplicationMetadataMessage struct {
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
// Signature of the payload field
|
// Signature of the payload field
|
||||||
Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"`
|
Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"`
|
||||||
// This is the encoded protobuf of the application level message, i.e ChatMessage
|
// This is the encoded protobuf of the application level message, i.e ChatMessage
|
||||||
Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"`
|
Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"`
|
||||||
// The type of protobuf message sent
|
// The type of protobuf message sent
|
||||||
Type ApplicationMetadataMessage_Type `protobuf:"varint,3,opt,name=type,proto3,enum=protobuf.ApplicationMetadataMessage_Type" json:"type,omitempty"`
|
Type ApplicationMetadataMessage_Type `protobuf:"varint,3,opt,name=type,proto3,enum=protobuf.ApplicationMetadataMessage_Type" json:"type,omitempty"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *ApplicationMetadataMessage) Reset() {
|
func (m *ApplicationMetadataMessage) Reset() { *m = ApplicationMetadataMessage{} }
|
||||||
*x = ApplicationMetadataMessage{}
|
func (m *ApplicationMetadataMessage) String() string { return proto.CompactTextString(m) }
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_application_metadata_message_proto_msgTypes[0]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ApplicationMetadataMessage) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*ApplicationMetadataMessage) ProtoMessage() {}
|
func (*ApplicationMetadataMessage) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *ApplicationMetadataMessage) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_application_metadata_message_proto_msgTypes[0]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use ApplicationMetadataMessage.ProtoReflect.Descriptor instead.
|
|
||||||
func (*ApplicationMetadataMessage) Descriptor() ([]byte, []int) {
|
func (*ApplicationMetadataMessage) Descriptor() ([]byte, []int) {
|
||||||
return file_application_metadata_message_proto_rawDescGZIP(), []int{0}
|
return fileDescriptor_ad09a6406fcf24c7, []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *ApplicationMetadataMessage) GetSignature() []byte {
|
func (m *ApplicationMetadataMessage) XXX_Unmarshal(b []byte) error {
|
||||||
if x != nil {
|
return xxx_messageInfo_ApplicationMetadataMessage.Unmarshal(m, b)
|
||||||
return x.Signature
|
}
|
||||||
|
func (m *ApplicationMetadataMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
return xxx_messageInfo_ApplicationMetadataMessage.Marshal(b, m, deterministic)
|
||||||
|
}
|
||||||
|
func (m *ApplicationMetadataMessage) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_ApplicationMetadataMessage.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *ApplicationMetadataMessage) XXX_Size() int {
|
||||||
|
return xxx_messageInfo_ApplicationMetadataMessage.Size(m)
|
||||||
|
}
|
||||||
|
func (m *ApplicationMetadataMessage) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_ApplicationMetadataMessage.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_ApplicationMetadataMessage proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *ApplicationMetadataMessage) GetSignature() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.Signature
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *ApplicationMetadataMessage) GetPayload() []byte {
|
func (m *ApplicationMetadataMessage) GetPayload() []byte {
|
||||||
if x != nil {
|
if m != nil {
|
||||||
return x.Payload
|
return m.Payload
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *ApplicationMetadataMessage) GetType() ApplicationMetadataMessage_Type {
|
func (m *ApplicationMetadataMessage) GetType() ApplicationMetadataMessage_Type {
|
||||||
if x != nil {
|
if m != nil {
|
||||||
return x.Type
|
return m.Type
|
||||||
}
|
}
|
||||||
return ApplicationMetadataMessage_UNKNOWN
|
return ApplicationMetadataMessage_UNKNOWN
|
||||||
}
|
}
|
||||||
|
|
||||||
var File_application_metadata_message_proto protoreflect.FileDescriptor
|
func init() {
|
||||||
|
proto.RegisterEnum("protobuf.ApplicationMetadataMessage_Type", ApplicationMetadataMessage_Type_name, ApplicationMetadataMessage_Type_value)
|
||||||
var file_application_metadata_message_proto_rawDesc = []byte{
|
proto.RegisterType((*ApplicationMetadataMessage)(nil), "protobuf.ApplicationMetadataMessage")
|
||||||
0x0a, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65,
|
|
||||||
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70,
|
|
||||||
0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0xa6,
|
|
||||||
0x13, 0x0a, 0x1a, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65,
|
|
||||||
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a,
|
|
||||||
0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
|
|
||||||
0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70,
|
|
||||||
0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61,
|
|
||||||
0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20,
|
|
||||||
0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41,
|
|
||||||
0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
|
||||||
0x74, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04,
|
|
||||||
0x74, 0x79, 0x70, 0x65, 0x22, 0x90, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a,
|
|
||||||
0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x48,
|
|
||||||
0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e,
|
|
||||||
0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x02,
|
|
||||||
0x12, 0x1d, 0x0a, 0x19, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x53, 0x48, 0x49, 0x50, 0x5f, 0x55,
|
|
||||||
0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12,
|
|
||||||
0x1a, 0x0a, 0x16, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x5f, 0x49, 0x4e, 0x53,
|
|
||||||
0x54, 0x41, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x1c, 0x44,
|
|
||||||
0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x49,
|
|
||||||
0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x1a, 0x02, 0x08,
|
|
||||||
0x01, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x44, 0x44,
|
|
||||||
0x52, 0x45, 0x53, 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43,
|
|
||||||
0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54,
|
|
||||||
0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53,
|
|
||||||
0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e,
|
|
||||||
0x10, 0x07, 0x12, 0x2b, 0x0a, 0x27, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x52, 0x45,
|
|
||||||
0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x46, 0x4f,
|
|
||||||
0x52, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12,
|
|
||||||
0x17, 0x0a, 0x13, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53,
|
|
||||||
0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, 0x4e, 0x44,
|
|
||||||
0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, 0x1f,
|
|
||||||
0x0a, 0x1b, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53,
|
|
||||||
0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0b, 0x12,
|
|
||||||
0x20, 0x0a, 0x1c, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x41,
|
|
||||||
0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x56, 0x32, 0x10,
|
|
||||||
0x0c, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c,
|
|
||||||
0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x0d,
|
|
||||||
0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x43, 0x4f, 0x44, 0x45,
|
|
||||||
0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x0f,
|
|
||||||
0x12, 0x22, 0x0a, 0x1e, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43,
|
|
||||||
0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49,
|
|
||||||
0x4f, 0x4e, 0x10, 0x10, 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54,
|
|
||||||
0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54,
|
|
||||||
0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x10,
|
|
||||||
0x11, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49,
|
|
||||||
0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x12, 0x12, 0x24,
|
|
||||||
0x0a, 0x20, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54,
|
|
||||||
0x49, 0x4f, 0x4e, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e,
|
|
||||||
0x53, 0x45, 0x10, 0x13, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54,
|
|
||||||
0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53,
|
|
||||||
0x54, 0x10, 0x14, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, 0x49,
|
|
||||||
0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53,
|
|
||||||
0x45, 0x10, 0x15, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4d, 0x4f, 0x4a, 0x49, 0x5f, 0x52, 0x45, 0x41,
|
|
||||||
0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x52, 0x4f, 0x55, 0x50,
|
|
||||||
0x5f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e,
|
|
||||||
0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54,
|
|
||||||
0x49, 0x54, 0x59, 0x10, 0x18, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49,
|
|
||||||
0x54, 0x59, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x19,
|
|
||||||
0x12, 0x1c, 0x0a, 0x14, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x49, 0x4e,
|
|
||||||
0x56, 0x49, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x1a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d,
|
|
||||||
0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55,
|
|
||||||
0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x1b, 0x12, 0x0f, 0x0a,
|
|
||||||
0x0b, 0x50, 0x49, 0x4e, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x1c, 0x12, 0x10,
|
|
||||||
0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x1d,
|
|
||||||
0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54,
|
|
||||||
0x45, 0x10, 0x1e, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x4d, 0x45,
|
|
||||||
0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x1f, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x59, 0x4e, 0x43, 0x5f,
|
|
||||||
0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d,
|
|
||||||
0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x10, 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x4e, 0x4f, 0x4e,
|
|
||||||
0x59, 0x4d, 0x4f, 0x55, 0x53, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x42, 0x41, 0x54,
|
|
||||||
0x43, 0x48, 0x10, 0x21, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x48, 0x41,
|
|
||||||
0x54, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x22, 0x12, 0x1b, 0x0a, 0x17, 0x53,
|
|
||||||
0x59, 0x4e, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45,
|
|
||||||
0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x23, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x41, 0x43, 0x4b,
|
|
||||||
0x55, 0x50, 0x10, 0x24, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54,
|
|
||||||
0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41,
|
|
||||||
0x44, 0x10, 0x25, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49,
|
|
||||||
0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x43, 0x43, 0x45,
|
|
||||||
0x50, 0x54, 0x45, 0x44, 0x10, 0x26, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41,
|
|
||||||
0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x44,
|
|
||||||
0x49, 0x53, 0x4d, 0x49, 0x53, 0x53, 0x45, 0x44, 0x10, 0x27, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x59,
|
|
||||||
0x4e, 0x43, 0x5f, 0x42, 0x4f, 0x4f, 0x4b, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x28, 0x12, 0x16, 0x0a,
|
|
||||||
0x12, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x5f, 0x48, 0x49, 0x53, 0x54,
|
|
||||||
0x4f, 0x52, 0x59, 0x10, 0x29, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x53, 0x45,
|
|
||||||
0x54, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x2a, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x4f, 0x4d, 0x4d, 0x55,
|
|
||||||
0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x41, 0x52, 0x43,
|
|
||||||
0x48, 0x49, 0x56, 0x45, 0x5f, 0x4d, 0x41, 0x47, 0x4e, 0x45, 0x54, 0x4c, 0x49, 0x4e, 0x4b, 0x10,
|
|
||||||
0x2b, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c,
|
|
||||||
0x45, 0x5f, 0x50, 0x49, 0x43, 0x54, 0x55, 0x52, 0x45, 0x53, 0x10, 0x2c, 0x12, 0x10, 0x0a, 0x0c,
|
|
||||||
0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x2d, 0x12, 0x1a,
|
|
||||||
0x0a, 0x16, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54,
|
|
||||||
0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x2e, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45,
|
|
||||||
0x54, 0x52, 0x41, 0x43, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x52, 0x45,
|
|
||||||
0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x2f, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x4f, 0x4d, 0x4d, 0x55,
|
|
||||||
0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f,
|
|
||||||
0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x10, 0x30, 0x12,
|
|
||||||
0x1b, 0x0a, 0x17, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54,
|
|
||||||
0x59, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x10, 0x31, 0x12, 0x20, 0x0a, 0x1c,
|
|
||||||
0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f,
|
|
||||||
0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x32, 0x12, 0x1f,
|
|
||||||
0x0a, 0x1b, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54,
|
|
||||||
0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x33, 0x12,
|
|
||||||
0x20, 0x0a, 0x1c, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41,
|
|
||||||
0x43, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10,
|
|
||||||
0x34, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x45,
|
|
||||||
0x44, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x35, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x59, 0x4e, 0x43,
|
|
||||||
0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45,
|
|
||||||
0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x36, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x59, 0x4e, 0x43, 0x5f,
|
|
||||||
0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f,
|
|
||||||
0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x38, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4f,
|
|
||||||
0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f,
|
|
||||||
0x54, 0x4f, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0x39, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x59,
|
|
||||||
0x4e, 0x43, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x4d, 0x45,
|
|
||||||
0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x3a, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x59,
|
|
||||||
0x4e, 0x43, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x44, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53,
|
|
||||||
0x10, 0x3b, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f,
|
|
||||||
0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54,
|
|
||||||
0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x3c, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x41, 0x4e, 0x43,
|
|
||||||
0x45, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46,
|
|
||||||
0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x3d, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x59, 0x4e,
|
|
||||||
0x43, 0x5f, 0x4b, 0x45, 0x59, 0x50, 0x41, 0x49, 0x52, 0x10, 0x3e, 0x12, 0x15, 0x0a, 0x11, 0x53,
|
|
||||||
0x59, 0x4e, 0x43, 0x5f, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x4c, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x53,
|
|
||||||
0x10, 0x3f, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x45, 0x4e, 0x53, 0x5f, 0x55,
|
|
||||||
0x53, 0x45, 0x52, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x10, 0x40,
|
|
||||||
0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x45, 0x56,
|
|
||||||
0x45, 0x4e, 0x54, 0x53, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x43, 0x12, 0x23,
|
|
||||||
0x0a, 0x1f, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x45, 0x44, 0x49, 0x54,
|
|
||||||
0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x45,
|
|
||||||
0x53, 0x10, 0x44, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x43, 0x4f,
|
|
||||||
0x55, 0x4e, 0x54, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f,
|
|
||||||
0x4e, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x10, 0x45, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x59, 0x4e,
|
|
||||||
0x43, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x53, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54,
|
|
||||||
0x49, 0x4f, 0x4e, 0x53, 0x10, 0x46, 0x12, 0x25, 0x0a, 0x21, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e,
|
|
||||||
0x49, 0x54, 0x59, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41,
|
|
||||||
0x47, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x47, 0x12, 0x2a, 0x0a,
|
|
||||||
0x26, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x49,
|
|
||||||
0x4c, 0x45, 0x47, 0x45, 0x44, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f,
|
|
||||||
0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x48, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4d,
|
|
||||||
0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x4b, 0x45, 0x59,
|
|
||||||
0x10, 0x49, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x54, 0x10,
|
|
||||||
0x4a, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49,
|
|
||||||
0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45,
|
|
||||||
0x44, 0x10, 0x4b, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49,
|
|
||||||
0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x52, 0x45,
|
|
||||||
0x41, 0x44, 0x10, 0x4c, 0x12, 0x33, 0x0a, 0x2f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54,
|
|
||||||
0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4d,
|
|
||||||
0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x44,
|
|
||||||
0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x4d, 0x22, 0x04, 0x08, 0x0e, 0x10, 0x0e, 0x22,
|
|
||||||
0x04, 0x08, 0x41, 0x10, 0x41, 0x22, 0x04, 0x08, 0x42, 0x10, 0x42, 0x2a, 0x1d, 0x53, 0x59, 0x4e,
|
|
||||||
0x43, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50,
|
|
||||||
0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x54, 0x2a, 0x22, 0x53, 0x59, 0x4e, 0x43,
|
|
||||||
0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52,
|
|
||||||
0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x2a, 0x27,
|
|
||||||
0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45,
|
|
||||||
0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f,
|
|
||||||
0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72,
|
|
||||||
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
func init() {
|
||||||
file_application_metadata_message_proto_rawDescOnce sync.Once
|
proto.RegisterFile("application_metadata_message.proto", fileDescriptor_ad09a6406fcf24c7)
|
||||||
file_application_metadata_message_proto_rawDescData = file_application_metadata_message_proto_rawDesc
|
|
||||||
)
|
|
||||||
|
|
||||||
func file_application_metadata_message_proto_rawDescGZIP() []byte {
|
|
||||||
file_application_metadata_message_proto_rawDescOnce.Do(func() {
|
|
||||||
file_application_metadata_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_application_metadata_message_proto_rawDescData)
|
|
||||||
})
|
|
||||||
return file_application_metadata_message_proto_rawDescData
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_application_metadata_message_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
var fileDescriptor_ad09a6406fcf24c7 = []byte{
|
||||||
var file_application_metadata_message_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
|
// 1140 bytes of a gzipped FileDescriptorProto
|
||||||
var file_application_metadata_message_proto_goTypes = []interface{}{
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x56, 0x6d, 0x53, 0x1b, 0x37,
|
||||||
(ApplicationMetadataMessage_Type)(0), // 0: protobuf.ApplicationMetadataMessage.Type
|
0x17, 0x7d, 0x48, 0xfc, 0x24, 0x8e, 0x08, 0x44, 0x51, 0xde, 0x0c, 0x98, 0x37, 0x87, 0x00, 0x21,
|
||||||
(*ApplicationMetadataMessage)(nil), // 1: protobuf.ApplicationMetadataMessage
|
0xad, 0x69, 0xa1, 0xed, 0xb4, 0x4d, 0xd3, 0x56, 0x96, 0x2e, 0xb6, 0xf0, 0xae, 0xb4, 0x91, 0xb4,
|
||||||
}
|
0xee, 0x38, 0x5f, 0x34, 0x4e, 0xe3, 0x66, 0x98, 0x49, 0x82, 0x27, 0x38, 0x1f, 0xf8, 0x4f, 0xfd,
|
||||||
var file_application_metadata_message_proto_depIdxs = []int32{
|
0x15, 0xfd, 0x65, 0x1d, 0xed, 0xab, 0xc1, 0xa6, 0x7c, 0x02, 0xeb, 0x1e, 0x5d, 0xe9, 0x9c, 0x7b,
|
||||||
0, // 0: protobuf.ApplicationMetadataMessage.type:type_name -> protobuf.ApplicationMetadataMessage.Type
|
0xee, 0xd5, 0xa2, 0xc6, 0x60, 0x34, 0xfa, 0x70, 0xf2, 0xe7, 0x60, 0x7c, 0x72, 0xfa, 0xc9, 0x7d,
|
||||||
1, // [1:1] is the sub-list for method output_type
|
0x1c, 0x8e, 0x07, 0xef, 0x06, 0xe3, 0x81, 0xfb, 0x38, 0x3c, 0x3b, 0x1b, 0xbc, 0x1f, 0x36, 0x47,
|
||||||
1, // [1:1] is the sub-list for method input_type
|
0x9f, 0x4f, 0xc7, 0xa7, 0xa4, 0x9a, 0xfc, 0x79, 0xfb, 0xe5, 0xaf, 0xc6, 0x3f, 0x0f, 0xd0, 0x32,
|
||||||
1, // [1:1] is the sub-list for extension type_name
|
0x2d, 0x37, 0x84, 0x19, 0x3e, 0x4c, 0xe1, 0xa4, 0x8e, 0xee, 0x9c, 0x9d, 0xbc, 0xff, 0x34, 0x18,
|
||||||
1, // [1:1] is the sub-list for extension extendee
|
0x7f, 0xf9, 0x3c, 0xac, 0xcd, 0x6d, 0xcc, 0xed, 0xde, 0xd5, 0xe5, 0x02, 0xa9, 0xa1, 0xdb, 0xa3,
|
||||||
0, // [0:1] is the sub-list for field type_name
|
0xc1, 0xf9, 0x87, 0xd3, 0xc1, 0xbb, 0xda, 0x8d, 0x24, 0x96, 0xff, 0x24, 0xaf, 0x50, 0x65, 0x7c,
|
||||||
}
|
0x3e, 0x1a, 0xd6, 0x6e, 0x6e, 0xcc, 0xed, 0x2e, 0x1e, 0x3c, 0x6f, 0xe6, 0xe7, 0x35, 0xaf, 0x3e,
|
||||||
|
0xab, 0x69, 0xcf, 0x47, 0x43, 0x9d, 0x6c, 0x6b, 0xfc, 0x4d, 0x50, 0xc5, 0xff, 0x24, 0xf3, 0xe8,
|
||||||
func init() { file_application_metadata_message_proto_init() }
|
0x76, 0x2c, 0xbb, 0x52, 0xfd, 0x21, 0xf1, 0xff, 0x08, 0x46, 0x77, 0x59, 0x87, 0x5a, 0x17, 0x82,
|
||||||
func file_application_metadata_message_proto_init() {
|
0x31, 0xb4, 0x0d, 0x78, 0x8e, 0x10, 0xb4, 0xc8, 0x94, 0xb4, 0x94, 0x59, 0x17, 0x47, 0x9c, 0x5a,
|
||||||
if File_application_metadata_message_proto != nil {
|
0xc0, 0x37, 0xc8, 0x2a, 0x5a, 0x0a, 0x21, 0x6c, 0x81, 0x36, 0x1d, 0x11, 0x65, 0xcb, 0xc5, 0x96,
|
||||||
return
|
0x9b, 0x64, 0x19, 0x3d, 0x36, 0x7d, 0xc9, 0x5c, 0x44, 0x85, 0x76, 0x42, 0x1a, 0x4b, 0x83, 0x80,
|
||||||
}
|
0x5a, 0xa1, 0x24, 0xae, 0x90, 0x2d, 0x54, 0xe7, 0x10, 0x69, 0x60, 0xd4, 0x02, 0x77, 0x09, 0xec,
|
||||||
if !protoimpl.UnsafeEnabled {
|
0x02, 0xe2, 0xff, 0xcb, 0x37, 0xaa, 0x73, 0xe4, 0x29, 0x5a, 0xd7, 0xf0, 0x3a, 0x06, 0x63, 0x1d,
|
||||||
file_application_metadata_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
0xe5, 0x5c, 0x83, 0x31, 0xee, 0x48, 0x69, 0x67, 0x35, 0x95, 0x86, 0xb2, 0x04, 0x78, 0x8b, 0xec,
|
||||||
switch v := v.(*ApplicationMetadataMessage); i {
|
0xa1, 0x6d, 0xca, 0x18, 0x44, 0xd6, 0x5d, 0x87, 0xbd, 0x4d, 0x5e, 0xa0, 0x1d, 0x0e, 0x2c, 0x10,
|
||||||
case 0:
|
0x12, 0xae, 0x05, 0x57, 0xc9, 0x13, 0xf4, 0x20, 0x07, 0x4d, 0x06, 0xee, 0x90, 0x87, 0x08, 0x1b,
|
||||||
return &v.state
|
0x90, 0xfc, 0xc2, 0x2a, 0x22, 0xeb, 0x68, 0xe5, 0x72, 0xee, 0x49, 0xc0, 0x3c, 0xd9, 0x40, 0xf5,
|
||||||
case 1:
|
0x29, 0xa2, 0x2e, 0x17, 0xb5, 0x77, 0x80, 0xef, 0x7a, 0x41, 0xa7, 0x11, 0x94, 0x31, 0x15, 0x4b,
|
||||||
return &v.sizeCache
|
0x8b, 0x17, 0xc8, 0x1a, 0x5a, 0xce, 0xe1, 0x4c, 0x71, 0x70, 0x94, 0xf7, 0x40, 0x5b, 0x61, 0x20,
|
||||||
case 2:
|
0x04, 0x69, 0xf1, 0x3d, 0xd2, 0x40, 0x6b, 0x51, 0x6c, 0x3a, 0x4e, 0x2a, 0x2b, 0x8e, 0x04, 0x4b,
|
||||||
return &v.unknownFields
|
0xb7, 0x6b, 0x68, 0x0b, 0x63, 0x75, 0x2a, 0x2b, 0xf6, 0x0a, 0xfc, 0x37, 0xc6, 0x69, 0x30, 0x91,
|
||||||
default:
|
0x92, 0x06, 0xf0, 0x7d, 0xb2, 0x82, 0x9e, 0x4c, 0x83, 0x5f, 0xc7, 0xa0, 0xfb, 0x98, 0x90, 0x2d,
|
||||||
return nil
|
0xb4, 0x71, 0x45, 0xb0, 0x4c, 0xf1, 0xc0, 0x53, 0x9a, 0x75, 0x5e, 0xa2, 0x0f, 0x7e, 0xe8, 0x29,
|
||||||
}
|
0xcd, 0x0a, 0x67, 0xdb, 0x1f, 0x79, 0xdb, 0x41, 0xa8, 0x8e, 0x85, 0xd3, 0x90, 0xe9, 0xf8, 0x98,
|
||||||
}
|
0x2c, 0xa1, 0x47, 0x6d, 0xad, 0xe2, 0xc8, 0x25, 0x16, 0x15, 0xb2, 0x27, 0x6c, 0xca, 0xee, 0x09,
|
||||||
}
|
0xb9, 0x8f, 0x16, 0xd2, 0x45, 0x0e, 0xd2, 0x0a, 0xdb, 0xc7, 0x35, 0x8f, 0x66, 0x2a, 0x0c, 0x63,
|
||||||
type x struct{}
|
0x29, 0x6c, 0xdf, 0x71, 0x30, 0x4c, 0x8b, 0x28, 0x41, 0x2f, 0x91, 0x3a, 0x7a, 0x58, 0x86, 0x26,
|
||||||
out := protoimpl.TypeBuilder{
|
0xf2, 0x2c, 0x27, 0xe6, 0x5b, 0x45, 0x4b, 0x65, 0xb4, 0xa8, 0xa8, 0x72, 0xc7, 0x4a, 0x48, 0xbc,
|
||||||
File: protoimpl.DescBuilder{
|
0x42, 0xee, 0xa1, 0xf9, 0x48, 0xc8, 0xc2, 0xee, 0x75, 0xdf, 0x33, 0xc0, 0x45, 0xd9, 0x33, 0xab,
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
0xfe, 0x36, 0xc6, 0x52, 0x1b, 0x9b, 0xbc, 0x65, 0xd6, 0x3c, 0x1f, 0x0e, 0x01, 0x4c, 0xf4, 0xc9,
|
||||||
RawDescriptor: file_application_metadata_message_proto_rawDesc,
|
0xba, 0x37, 0xce, 0x2c, 0x5f, 0x64, 0x47, 0xe3, 0x0d, 0xdf, 0x48, 0x54, 0x2a, 0xd9, 0x0f, 0x55,
|
||||||
NumEnums: 1,
|
0x6c, 0x5c, 0x08, 0x56, 0x0b, 0xe6, 0x5a, 0xd4, 0xb2, 0x0e, 0xde, 0x24, 0x8f, 0xd0, 0xfd, 0x64,
|
||||||
NumMessages: 1,
|
0x73, 0x42, 0x5b, 0x43, 0xa8, 0x7a, 0xc0, 0x71, 0xc3, 0x57, 0xae, 0x5c, 0xce, 0x8e, 0x32, 0x5e,
|
||||||
NumExtensions: 0,
|
0x44, 0x8e, 0x9f, 0x12, 0x84, 0x6e, 0xb5, 0x28, 0xeb, 0xc6, 0x11, 0xde, 0x2a, 0x2c, 0xe7, 0xd5,
|
||||||
NumServices: 0,
|
0xed, 0x79, 0xa6, 0x0c, 0xa4, 0x05, 0x9d, 0x42, 0x9f, 0x91, 0x4d, 0xb4, 0x3a, 0x33, 0x9c, 0x76,
|
||||||
},
|
0x1c, 0x70, 0xbc, 0xed, 0x5d, 0x37, 0x13, 0xc2, 0x85, 0x09, 0x85, 0x31, 0xc0, 0xf1, 0x4e, 0xa2,
|
||||||
GoTypes: file_application_metadata_message_proto_goTypes,
|
0x84, 0xc7, 0xb4, 0x94, 0xea, 0x86, 0x54, 0x77, 0xf1, 0x2e, 0x79, 0x8c, 0x48, 0x7a, 0xc3, 0x00,
|
||||||
DependencyIndexes: file_application_metadata_message_proto_depIdxs,
|
0xa8, 0x76, 0x1d, 0x61, 0xac, 0xd2, 0x7d, 0xfc, 0xdc, 0xcb, 0x98, 0xac, 0x1b, 0xb0, 0x56, 0xc8,
|
||||||
EnumInfos: file_application_metadata_message_proto_enumTypes,
|
0x36, 0xde, 0x23, 0xbb, 0x68, 0xab, 0x2c, 0x44, 0xc6, 0xc5, 0x51, 0xcd, 0x3a, 0xa2, 0x07, 0x2e,
|
||||||
MessageInfos: file_application_metadata_message_proto_msgTypes,
|
0xa4, 0x6d, 0x09, 0x36, 0x10, 0xb2, 0x8b, 0x5f, 0xf8, 0x5a, 0xa7, 0x13, 0x47, 0xab, 0x23, 0x11,
|
||||||
}.Build()
|
0x80, 0x8b, 0x04, 0xb3, 0xb1, 0x06, 0x83, 0xbf, 0x2a, 0xd2, 0xe6, 0xdd, 0xf4, 0x75, 0xa2, 0x6a,
|
||||||
File_application_metadata_message_proto = out.File
|
0x3a, 0x37, 0xf2, 0xa6, 0xca, 0x6d, 0xd9, 0xf4, 0xf2, 0x69, 0xb0, 0x3a, 0xed, 0xb4, 0x8b, 0xc1,
|
||||||
file_application_metadata_message_proto_rawDesc = nil
|
0x7d, 0xb2, 0x8d, 0x1a, 0x57, 0x1a, 0xa3, 0xf4, 0xee, 0x37, 0x65, 0x0d, 0x0a, 0x70, 0xc6, 0xc9,
|
||||||
file_application_metadata_message_proto_goTypes = nil
|
0xe0, 0x6f, 0xfd, 0x30, 0xc8, 0xb7, 0x16, 0x23, 0x00, 0x74, 0xd1, 0x03, 0xf8, 0xc0, 0xdb, 0xe2,
|
||||||
file_application_metadata_message_proto_depIdxs = nil
|
0xd2, 0xfd, 0x2e, 0x00, 0x0e, 0x7d, 0x8a, 0x7c, 0xe0, 0xcc, 0x44, 0x7c, 0x57, 0x98, 0xc3, 0xea,
|
||||||
|
0xd8, 0xf8, 0x39, 0x1b, 0x1b, 0xd0, 0xf8, 0xfb, 0xa2, 0xe6, 0x93, 0xe8, 0x82, 0xdf, 0x0f, 0x45,
|
||||||
|
0xcd, 0x2f, 0x31, 0x77, 0x1c, 0x98, 0x30, 0x3e, 0xf1, 0x8f, 0xe9, 0x24, 0x9a, 0x21, 0x41, 0x00,
|
||||||
|
0xb4, 0x07, 0xf8, 0x27, 0x1f, 0x4f, 0x52, 0x64, 0x5e, 0xf7, 0xb3, 0x35, 0x2c, 0x2d, 0xff, 0x73,
|
||||||
|
0x51, 0x7c, 0x43, 0x7b, 0xc0, 0xf3, 0x11, 0x8c, 0x5f, 0xfa, 0x99, 0x52, 0xe6, 0x65, 0x54, 0x32,
|
||||||
|
0x08, 0xa6, 0x5a, 0xef, 0x17, 0xaf, 0x4c, 0x16, 0x9b, 0xc9, 0xfb, 0x55, 0x51, 0xec, 0x2e, 0xf4,
|
||||||
|
0xfd, 0xe3, 0x83, 0x7f, 0x2d, 0x94, 0x30, 0x8a, 0x09, 0x1a, 0x38, 0xef, 0x17, 0x83, 0x7f, 0x23,
|
||||||
|
0x75, 0x54, 0x4b, 0x96, 0x41, 0x9a, 0x44, 0x1c, 0x49, 0x43, 0x70, 0x1c, 0x2c, 0x15, 0x01, 0xfe,
|
||||||
|
0xdd, 0x47, 0xcb, 0xdb, 0x40, 0x0f, 0xa4, 0x35, 0x05, 0x07, 0xe6, 0x1f, 0xa7, 0x89, 0xa8, 0xef,
|
||||||
|
0x7c, 0xd3, 0xa1, 0xba, 0xa4, 0x03, 0x06, 0x73, 0x4f, 0x68, 0xd2, 0x76, 0x8e, 0xc5, 0xc6, 0xaa,
|
||||||
|
0x50, 0xbc, 0xc9, 0x9b, 0x3c, 0x50, 0x1a, 0x43, 0xe1, 0x94, 0x0c, 0x65, 0x5c, 0xa4, 0x8c, 0xf0,
|
||||||
|
0x08, 0x83, 0x8f, 0xc8, 0x33, 0xb4, 0x79, 0xd5, 0x2d, 0x9c, 0x86, 0x63, 0x60, 0xbe, 0x0d, 0xdb,
|
||||||
|
0xfe, 0x19, 0x2c, 0x61, 0x91, 0x16, 0x3d, 0x11, 0x40, 0x3b, 0xab, 0x79, 0xfa, 0xc0, 0xe6, 0x57,
|
||||||
|
0xef, 0xf8, 0x97, 0x6d, 0xc2, 0x94, 0x1d, 0xaa, 0xb9, 0x97, 0x0a, 0x0b, 0xb2, 0x80, 0xee, 0x14,
|
||||||
|
0x63, 0x03, 0x1f, 0x17, 0x2f, 0xd6, 0x54, 0x6b, 0x27, 0x65, 0xe5, 0xb8, 0x5b, 0xcc, 0xae, 0xcb,
|
||||||
|
0x88, 0x58, 0x26, 0x03, 0x24, 0x20, 0x87, 0x68, 0x7f, 0x26, 0x60, 0xda, 0x3e, 0x85, 0xbd, 0xc2,
|
||||||
|
0xe2, 0xcb, 0xc1, 0xaa, 0x2e, 0x48, 0x17, 0x69, 0x38, 0x02, 0x0d, 0x92, 0x81, 0xc1, 0xb2, 0x51,
|
||||||
|
0xa9, 0x2e, 0xe2, 0xc5, 0x46, 0xa5, 0x4a, 0x31, 0x6d, 0x54, 0xaa, 0x2d, 0xdc, 0xda, 0x5b, 0x9d,
|
||||||
|
0x9e, 0x9e, 0x51, 0xdc, 0x0a, 0x44, 0x4a, 0x63, 0xaf, 0x31, 0xf3, 0xfc, 0xc9, 0x07, 0xc7, 0xec,
|
||||||
|
0xed, 0x5c, 0x8b, 0x71, 0x7e, 0x92, 0x43, 0x6b, 0xe1, 0xcd, 0x7c, 0x73, 0xff, 0x65, 0xfe, 0x8d,
|
||||||
|
0xf5, 0xf6, 0x56, 0xf2, 0xdf, 0xe1, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x0e, 0x9d, 0xe5, 0x86,
|
||||||
|
0x0a, 0x0a, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,5 +95,6 @@ message ApplicationMetadataMessage {
|
||||||
SYNC_ACTIVITY_CENTER_DELETED = 75;
|
SYNC_ACTIVITY_CENTER_DELETED = 75;
|
||||||
SYNC_ACTIVITY_CENTER_UNREAD = 76;
|
SYNC_ACTIVITY_CENTER_UNREAD = 76;
|
||||||
SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION = 77;
|
SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION = 77;
|
||||||
|
SYNC_TOKEN_PREFERENCES = 78;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
|
||||||
// protoc-gen-go v1.31.0
|
|
||||||
// protoc v4.24.4
|
|
||||||
// source: community_privileged_user_sync_message.proto
|
// source: community_privileged_user_sync_message.proto
|
||||||
|
|
||||||
package protobuf
|
package protobuf
|
||||||
|
|
||||||
import (
|
import (
|
||||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
fmt "fmt"
|
||||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
proto "github.com/golang/protobuf/proto"
|
||||||
reflect "reflect"
|
math "math"
|
||||||
sync "sync"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
// Verify that this generated code is sufficiently up-to-date.
|
var _ = proto.Marshal
|
||||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
var _ = fmt.Errorf
|
||||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
var _ = math.Inf
|
||||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
|
||||||
)
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
|
// is compatible with the proto package it is being compiled against.
|
||||||
|
// A compilation error at this line likely means your copy of the
|
||||||
|
// proto package needs to be updated.
|
||||||
|
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
||||||
|
|
||||||
type CommunityPrivilegedUserSyncMessage_EventType int32
|
type CommunityPrivilegedUserSyncMessage_EventType int32
|
||||||
|
|
||||||
|
@ -29,250 +29,135 @@ const (
|
||||||
CommunityPrivilegedUserSyncMessage_CONTROL_NODE_ALL_SYNC_REQUESTS_TO_JOIN CommunityPrivilegedUserSyncMessage_EventType = 3
|
CommunityPrivilegedUserSyncMessage_CONTROL_NODE_ALL_SYNC_REQUESTS_TO_JOIN CommunityPrivilegedUserSyncMessage_EventType = 3
|
||||||
)
|
)
|
||||||
|
|
||||||
// Enum value maps for CommunityPrivilegedUserSyncMessage_EventType.
|
var CommunityPrivilegedUserSyncMessage_EventType_name = map[int32]string{
|
||||||
var (
|
|
||||||
CommunityPrivilegedUserSyncMessage_EventType_name = map[int32]string{
|
|
||||||
0: "UNKNOWN",
|
0: "UNKNOWN",
|
||||||
1: "CONTROL_NODE_ACCEPT_REQUEST_TO_JOIN",
|
1: "CONTROL_NODE_ACCEPT_REQUEST_TO_JOIN",
|
||||||
2: "CONTROL_NODE_REJECT_REQUEST_TO_JOIN",
|
2: "CONTROL_NODE_REJECT_REQUEST_TO_JOIN",
|
||||||
3: "CONTROL_NODE_ALL_SYNC_REQUESTS_TO_JOIN",
|
3: "CONTROL_NODE_ALL_SYNC_REQUESTS_TO_JOIN",
|
||||||
}
|
}
|
||||||
CommunityPrivilegedUserSyncMessage_EventType_value = map[string]int32{
|
|
||||||
|
var CommunityPrivilegedUserSyncMessage_EventType_value = map[string]int32{
|
||||||
"UNKNOWN": 0,
|
"UNKNOWN": 0,
|
||||||
"CONTROL_NODE_ACCEPT_REQUEST_TO_JOIN": 1,
|
"CONTROL_NODE_ACCEPT_REQUEST_TO_JOIN": 1,
|
||||||
"CONTROL_NODE_REJECT_REQUEST_TO_JOIN": 2,
|
"CONTROL_NODE_REJECT_REQUEST_TO_JOIN": 2,
|
||||||
"CONTROL_NODE_ALL_SYNC_REQUESTS_TO_JOIN": 3,
|
"CONTROL_NODE_ALL_SYNC_REQUESTS_TO_JOIN": 3,
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func (x CommunityPrivilegedUserSyncMessage_EventType) Enum() *CommunityPrivilegedUserSyncMessage_EventType {
|
|
||||||
p := new(CommunityPrivilegedUserSyncMessage_EventType)
|
|
||||||
*p = x
|
|
||||||
return p
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x CommunityPrivilegedUserSyncMessage_EventType) String() string {
|
func (x CommunityPrivilegedUserSyncMessage_EventType) String() string {
|
||||||
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
return proto.EnumName(CommunityPrivilegedUserSyncMessage_EventType_name, int32(x))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (CommunityPrivilegedUserSyncMessage_EventType) Descriptor() protoreflect.EnumDescriptor {
|
|
||||||
return file_community_privileged_user_sync_message_proto_enumTypes[0].Descriptor()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (CommunityPrivilegedUserSyncMessage_EventType) Type() protoreflect.EnumType {
|
|
||||||
return &file_community_privileged_user_sync_message_proto_enumTypes[0]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x CommunityPrivilegedUserSyncMessage_EventType) Number() protoreflect.EnumNumber {
|
|
||||||
return protoreflect.EnumNumber(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use CommunityPrivilegedUserSyncMessage_EventType.Descriptor instead.
|
|
||||||
func (CommunityPrivilegedUserSyncMessage_EventType) EnumDescriptor() ([]byte, []int) {
|
func (CommunityPrivilegedUserSyncMessage_EventType) EnumDescriptor() ([]byte, []int) {
|
||||||
return file_community_privileged_user_sync_message_proto_rawDescGZIP(), []int{0, 0}
|
return fileDescriptor_158595055b4cfee2, []int{0, 0}
|
||||||
}
|
}
|
||||||
|
|
||||||
type CommunityPrivilegedUserSyncMessage struct {
|
type CommunityPrivilegedUserSyncMessage struct {
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
|
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
|
||||||
Type CommunityPrivilegedUserSyncMessage_EventType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityPrivilegedUserSyncMessage_EventType" json:"type,omitempty"`
|
Type CommunityPrivilegedUserSyncMessage_EventType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityPrivilegedUserSyncMessage_EventType" json:"type,omitempty"`
|
||||||
CommunityId []byte `protobuf:"bytes,3,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"`
|
CommunityId []byte `protobuf:"bytes,3,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"`
|
||||||
RequestToJoin map[string]*CommunityRequestToJoin `protobuf:"bytes,4,rep,name=request_to_join,json=requestToJoin,proto3" json:"request_to_join,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
RequestToJoin map[string]*CommunityRequestToJoin `protobuf:"bytes,4,rep,name=request_to_join,json=requestToJoin,proto3" json:"request_to_join,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
||||||
SyncRequestsToJoin []*SyncCommunityRequestsToJoin `protobuf:"bytes,5,rep,name=sync_requests_to_join,json=syncRequestsToJoin,proto3" json:"sync_requests_to_join,omitempty"`
|
SyncRequestsToJoin []*SyncCommunityRequestsToJoin `protobuf:"bytes,5,rep,name=sync_requests_to_join,json=syncRequestsToJoin,proto3" json:"sync_requests_to_join,omitempty"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *CommunityPrivilegedUserSyncMessage) Reset() {
|
func (m *CommunityPrivilegedUserSyncMessage) Reset() { *m = CommunityPrivilegedUserSyncMessage{} }
|
||||||
*x = CommunityPrivilegedUserSyncMessage{}
|
func (m *CommunityPrivilegedUserSyncMessage) String() string { return proto.CompactTextString(m) }
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_community_privileged_user_sync_message_proto_msgTypes[0]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *CommunityPrivilegedUserSyncMessage) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*CommunityPrivilegedUserSyncMessage) ProtoMessage() {}
|
func (*CommunityPrivilegedUserSyncMessage) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *CommunityPrivilegedUserSyncMessage) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_community_privileged_user_sync_message_proto_msgTypes[0]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use CommunityPrivilegedUserSyncMessage.ProtoReflect.Descriptor instead.
|
|
||||||
func (*CommunityPrivilegedUserSyncMessage) Descriptor() ([]byte, []int) {
|
func (*CommunityPrivilegedUserSyncMessage) Descriptor() ([]byte, []int) {
|
||||||
return file_community_privileged_user_sync_message_proto_rawDescGZIP(), []int{0}
|
return fileDescriptor_158595055b4cfee2, []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *CommunityPrivilegedUserSyncMessage) GetClock() uint64 {
|
func (m *CommunityPrivilegedUserSyncMessage) XXX_Unmarshal(b []byte) error {
|
||||||
if x != nil {
|
return xxx_messageInfo_CommunityPrivilegedUserSyncMessage.Unmarshal(m, b)
|
||||||
return x.Clock
|
}
|
||||||
|
func (m *CommunityPrivilegedUserSyncMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
return xxx_messageInfo_CommunityPrivilegedUserSyncMessage.Marshal(b, m, deterministic)
|
||||||
|
}
|
||||||
|
func (m *CommunityPrivilegedUserSyncMessage) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_CommunityPrivilegedUserSyncMessage.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *CommunityPrivilegedUserSyncMessage) XXX_Size() int {
|
||||||
|
return xxx_messageInfo_CommunityPrivilegedUserSyncMessage.Size(m)
|
||||||
|
}
|
||||||
|
func (m *CommunityPrivilegedUserSyncMessage) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_CommunityPrivilegedUserSyncMessage.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_CommunityPrivilegedUserSyncMessage proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *CommunityPrivilegedUserSyncMessage) GetClock() uint64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Clock
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *CommunityPrivilegedUserSyncMessage) GetType() CommunityPrivilegedUserSyncMessage_EventType {
|
func (m *CommunityPrivilegedUserSyncMessage) GetType() CommunityPrivilegedUserSyncMessage_EventType {
|
||||||
if x != nil {
|
if m != nil {
|
||||||
return x.Type
|
return m.Type
|
||||||
}
|
}
|
||||||
return CommunityPrivilegedUserSyncMessage_UNKNOWN
|
return CommunityPrivilegedUserSyncMessage_UNKNOWN
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *CommunityPrivilegedUserSyncMessage) GetCommunityId() []byte {
|
func (m *CommunityPrivilegedUserSyncMessage) GetCommunityId() []byte {
|
||||||
if x != nil {
|
if m != nil {
|
||||||
return x.CommunityId
|
return m.CommunityId
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *CommunityPrivilegedUserSyncMessage) GetRequestToJoin() map[string]*CommunityRequestToJoin {
|
func (m *CommunityPrivilegedUserSyncMessage) GetRequestToJoin() map[string]*CommunityRequestToJoin {
|
||||||
if x != nil {
|
if m != nil {
|
||||||
return x.RequestToJoin
|
return m.RequestToJoin
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *CommunityPrivilegedUserSyncMessage) GetSyncRequestsToJoin() []*SyncCommunityRequestsToJoin {
|
func (m *CommunityPrivilegedUserSyncMessage) GetSyncRequestsToJoin() []*SyncCommunityRequestsToJoin {
|
||||||
if x != nil {
|
if m != nil {
|
||||||
return x.SyncRequestsToJoin
|
return m.SyncRequestsToJoin
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var File_community_privileged_user_sync_message_proto protoreflect.FileDescriptor
|
func init() {
|
||||||
|
proto.RegisterEnum("protobuf.CommunityPrivilegedUserSyncMessage_EventType", CommunityPrivilegedUserSyncMessage_EventType_name, CommunityPrivilegedUserSyncMessage_EventType_value)
|
||||||
var file_community_privileged_user_sync_message_proto_rawDesc = []byte{
|
proto.RegisterType((*CommunityPrivilegedUserSyncMessage)(nil), "protobuf.CommunityPrivilegedUserSyncMessage")
|
||||||
0x0a, 0x2c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x76,
|
proto.RegisterMapType((map[string]*CommunityRequestToJoin)(nil), "protobuf.CommunityPrivilegedUserSyncMessage.RequestToJoinEntry")
|
||||||
0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x79, 0x6e, 0x63,
|
|
||||||
0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08,
|
|
||||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e,
|
|
||||||
0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x70, 0x61, 0x69,
|
|
||||||
0x72, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe9, 0x04, 0x0a, 0x22, 0x43,
|
|
||||||
0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67,
|
|
||||||
0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
|
|
||||||
0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
|
|
||||||
0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x4a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
|
|
||||||
0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
|
|
||||||
0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c,
|
|
||||||
0x65, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x65, 0x73, 0x73,
|
|
||||||
0x61, 0x67, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74,
|
|
||||||
0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79,
|
|
||||||
0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75,
|
|
||||||
0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x67, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
|
|
||||||
0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
|
|
||||||
0x3f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75,
|
|
||||||
0x6e, 0x69, 0x74, 0x79, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x55, 0x73,
|
|
||||||
0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x65,
|
|
||||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79,
|
|
||||||
0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12,
|
|
||||||
0x58, 0x0a, 0x15, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73,
|
|
||||||
0x5f, 0x74, 0x6f, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25,
|
|
||||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f,
|
|
||||||
0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x54,
|
|
||||||
0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x12, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65,
|
|
||||||
0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x1a, 0x62, 0x0a, 0x12, 0x52, 0x65, 0x71,
|
|
||||||
0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
|
|
||||||
0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
|
|
||||||
0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
|
|
||||||
0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
|
|
||||||
0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f,
|
|
||||||
0x69, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x96, 0x01,
|
|
||||||
0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55,
|
|
||||||
0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x43, 0x4f, 0x4e, 0x54,
|
|
||||||
0x52, 0x4f, 0x4c, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x5f,
|
|
||||||
0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10,
|
|
||||||
0x01, 0x12, 0x27, 0x0a, 0x23, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4e, 0x4f, 0x44,
|
|
||||||
0x45, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54,
|
|
||||||
0x5f, 0x54, 0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x43, 0x4f,
|
|
||||||
0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x53,
|
|
||||||
0x59, 0x4e, 0x43, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x53, 0x5f, 0x54, 0x4f, 0x5f,
|
|
||||||
0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x03, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f,
|
|
||||||
0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
func init() {
|
||||||
file_community_privileged_user_sync_message_proto_rawDescOnce sync.Once
|
proto.RegisterFile("community_privileged_user_sync_message.proto", fileDescriptor_158595055b4cfee2)
|
||||||
file_community_privileged_user_sync_message_proto_rawDescData = file_community_privileged_user_sync_message_proto_rawDesc
|
|
||||||
)
|
|
||||||
|
|
||||||
func file_community_privileged_user_sync_message_proto_rawDescGZIP() []byte {
|
|
||||||
file_community_privileged_user_sync_message_proto_rawDescOnce.Do(func() {
|
|
||||||
file_community_privileged_user_sync_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_community_privileged_user_sync_message_proto_rawDescData)
|
|
||||||
})
|
|
||||||
return file_community_privileged_user_sync_message_proto_rawDescData
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_community_privileged_user_sync_message_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
var fileDescriptor_158595055b4cfee2 = []byte{
|
||||||
var file_community_privileged_user_sync_message_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
|
// 407 bytes of a gzipped FileDescriptorProto
|
||||||
var file_community_privileged_user_sync_message_proto_goTypes = []interface{}{
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x90, 0x5f, 0xab, 0xd3, 0x30,
|
||||||
(CommunityPrivilegedUserSyncMessage_EventType)(0), // 0: protobuf.CommunityPrivilegedUserSyncMessage.EventType
|
0x18, 0xc6, 0xed, 0xda, 0xa9, 0x27, 0x3d, 0xd3, 0x19, 0x14, 0xca, 0xae, 0xea, 0x44, 0x2d, 0x22,
|
||||||
(*CommunityPrivilegedUserSyncMessage)(nil), // 1: protobuf.CommunityPrivilegedUserSyncMessage
|
0x15, 0x26, 0x1c, 0x44, 0x2f, 0x44, 0x6b, 0x2e, 0x4e, 0x9d, 0xed, 0x31, 0xed, 0xf0, 0xcf, 0x4d,
|
||||||
nil, // 2: protobuf.CommunityPrivilegedUserSyncMessage.RequestToJoinEntry
|
0xd8, 0xba, 0x58, 0xe2, 0xb6, 0xa4, 0x26, 0xed, 0xa0, 0x5f, 0xc4, 0xef, 0xe8, 0xb7, 0x90, 0x35,
|
||||||
(*SyncCommunityRequestsToJoin)(nil), // 3: protobuf.SyncCommunityRequestsToJoin
|
0x6b, 0xe7, 0x98, 0x20, 0x5e, 0xf5, 0x7d, 0x9f, 0x3e, 0xf9, 0x3d, 0xbc, 0x0f, 0x78, 0x9a, 0x89,
|
||||||
(*CommunityRequestToJoin)(nil), // 4: protobuf.CommunityRequestToJoin
|
0xcd, 0xa6, 0xe2, 0xac, 0xac, 0x49, 0x21, 0xd9, 0x96, 0xad, 0x69, 0x4e, 0x97, 0xa4, 0x52, 0x54,
|
||||||
}
|
0x12, 0x55, 0xf3, 0x8c, 0x6c, 0xa8, 0x52, 0xf3, 0x9c, 0xfa, 0x85, 0x14, 0xa5, 0x80, 0x37, 0x9b,
|
||||||
var file_community_privileged_user_sync_message_proto_depIdxs = []int32{
|
0xcf, 0xa2, 0xfa, 0x36, 0xba, 0xd3, 0xbe, 0x63, 0x54, 0xe9, 0x9f, 0xa3, 0x41, 0x31, 0x67, 0x92,
|
||||||
0, // 0: protobuf.CommunityPrivilegedUserSyncMessage.type:type_name -> protobuf.CommunityPrivilegedUserSyncMessage.EventType
|
0xf1, 0x5c, 0xaf, 0xe3, 0x5f, 0x16, 0x18, 0x07, 0x2d, 0xfc, 0xaa, 0x63, 0xcf, 0x14, 0x95, 0x49,
|
||||||
2, // 1: protobuf.CommunityPrivilegedUserSyncMessage.request_to_join:type_name -> protobuf.CommunityPrivilegedUserSyncMessage.RequestToJoinEntry
|
0xcd, 0xb3, 0x0f, 0x1a, 0x0c, 0xef, 0x82, 0x7e, 0xb6, 0x16, 0xd9, 0xca, 0x31, 0x5c, 0xc3, 0xb3,
|
||||||
3, // 2: protobuf.CommunityPrivilegedUserSyncMessage.sync_requests_to_join:type_name -> protobuf.SyncCommunityRequestsToJoin
|
0xb0, 0x5e, 0x60, 0x08, 0xac, 0xb2, 0x2e, 0xa8, 0xd3, 0x73, 0x0d, 0xef, 0xd6, 0xe4, 0xc2, 0x6f,
|
||||||
4, // 3: protobuf.CommunityPrivilegedUserSyncMessage.RequestToJoinEntry.value:type_name -> protobuf.CommunityRequestToJoin
|
0x73, 0xfd, 0x7f, 0x13, 0x7d, 0xb4, 0xa5, 0xbc, 0x4c, 0xeb, 0x82, 0xe2, 0x86, 0x01, 0xef, 0x83,
|
||||||
4, // [4:4] is the sub-list for method output_type
|
0xf3, 0xc3, 0x91, 0x6c, 0xe9, 0x98, 0xae, 0xe1, 0x9d, 0x63, 0xbb, 0xd3, 0x2e, 0x97, 0x30, 0x07,
|
||||||
4, // [4:4] is the sub-list for method input_type
|
0xb7, 0x25, 0xfd, 0x51, 0x51, 0x55, 0x92, 0x52, 0x90, 0xef, 0x82, 0x71, 0xc7, 0x72, 0x4d, 0xcf,
|
||||||
4, // [4:4] is the sub-list for extension type_name
|
0x9e, 0xbc, 0xfe, 0xaf, 0x64, 0xac, 0x19, 0xa9, 0x08, 0x05, 0xe3, 0x88, 0x97, 0xb2, 0xc6, 0x03,
|
||||||
4, // [4:4] is the sub-list for extension extendee
|
0xf9, 0xa7, 0x06, 0x3f, 0x83, 0x7b, 0x4d, 0xad, 0x7b, 0x55, 0x75, 0x71, 0xfd, 0x26, 0xee, 0xe1,
|
||||||
0, // [0:4] is the sub-list for field type_name
|
0x21, 0x6e, 0xc7, 0xed, 0x22, 0xf7, 0x60, 0xa5, 0x29, 0x18, 0xee, 0x18, 0xc7, 0xda, 0x68, 0x01,
|
||||||
}
|
0xe0, 0x69, 0x3c, 0x1c, 0x02, 0x73, 0x45, 0xeb, 0xa6, 0xdb, 0x33, 0xbc, 0x1b, 0xe1, 0x05, 0xe8,
|
||||||
|
0x6f, 0xe7, 0xeb, 0x4a, 0x57, 0x6b, 0x4f, 0xdc, 0xbf, 0x1c, 0x78, 0xc4, 0xc1, 0xda, 0xfe, 0xb2,
|
||||||
func init() { file_community_privileged_user_sync_message_proto_init() }
|
0xf7, 0xc2, 0x18, 0xff, 0x34, 0xc0, 0x59, 0xd7, 0x2e, 0xb4, 0xc1, 0x8d, 0x59, 0xf4, 0x3e, 0x8a,
|
||||||
func file_community_privileged_user_sync_message_proto_init() {
|
0x3f, 0x45, 0xc3, 0x6b, 0xf0, 0x31, 0x78, 0x10, 0xc4, 0x51, 0x8a, 0xe3, 0x29, 0x89, 0xe2, 0x77,
|
||||||
if File_community_privileged_user_sync_message_proto != nil {
|
0x88, 0xbc, 0x09, 0x02, 0x74, 0x95, 0x12, 0x8c, 0x3e, 0xce, 0x50, 0x92, 0x92, 0x34, 0x26, 0x61,
|
||||||
return
|
0x7c, 0x19, 0x0d, 0x8d, 0x13, 0x23, 0x46, 0x21, 0x0a, 0x4e, 0x8d, 0x3d, 0xf8, 0x04, 0x3c, 0x3a,
|
||||||
}
|
0x26, 0x4e, 0xa7, 0x24, 0xf9, 0x12, 0x05, 0xad, 0x35, 0xe9, 0xbc, 0xe6, 0xdb, 0xc1, 0x57, 0xdb,
|
||||||
file_communities_proto_init()
|
0x7f, 0xf6, 0xaa, 0xbd, 0x64, 0x71, 0xbd, 0x99, 0x9e, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x83,
|
||||||
file_pairing_proto_init()
|
0x24, 0x18, 0xbe, 0xdd, 0x02, 0x00, 0x00,
|
||||||
if !protoimpl.UnsafeEnabled {
|
|
||||||
file_community_privileged_user_sync_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*CommunityPrivilegedUserSyncMessage); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
type x struct{}
|
|
||||||
out := protoimpl.TypeBuilder{
|
|
||||||
File: protoimpl.DescBuilder{
|
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
|
||||||
RawDescriptor: file_community_privileged_user_sync_message_proto_rawDesc,
|
|
||||||
NumEnums: 1,
|
|
||||||
NumMessages: 2,
|
|
||||||
NumExtensions: 0,
|
|
||||||
NumServices: 0,
|
|
||||||
},
|
|
||||||
GoTypes: file_community_privileged_user_sync_message_proto_goTypes,
|
|
||||||
DependencyIndexes: file_community_privileged_user_sync_message_proto_depIdxs,
|
|
||||||
EnumInfos: file_community_privileged_user_sync_message_proto_enumTypes,
|
|
||||||
MessageInfos: file_community_privileged_user_sync_message_proto_msgTypes,
|
|
||||||
}.Build()
|
|
||||||
File_community_privileged_user_sync_message_proto = out.File
|
|
||||||
file_community_privileged_user_sync_message_proto_rawDesc = nil
|
|
||||||
file_community_privileged_user_sync_message_proto_goTypes = nil
|
|
||||||
file_community_privileged_user_sync_message_proto_depIdxs = nil
|
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -407,3 +407,17 @@ message SyncAccountCustomizationColor {
|
||||||
string customization_color = 2;
|
string customization_color = 2;
|
||||||
string key_uid = 3;
|
string key_uid = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message TokenPreferences {
|
||||||
|
string key = 1;
|
||||||
|
int64 position = 2;
|
||||||
|
int64 groupPosition = 3;
|
||||||
|
bool visible = 4;
|
||||||
|
string communityId = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SyncTokenPreferences {
|
||||||
|
uint64 clock = 1;
|
||||||
|
bool testnet = 2;
|
||||||
|
repeated TokenPreferences preferences = 3;
|
||||||
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"github.com/status-im/status-go/account"
|
"github.com/status-im/status-go/account"
|
||||||
"github.com/status-im/status-go/eth-node/types"
|
"github.com/status-im/status-go/eth-node/types"
|
||||||
"github.com/status-im/status-go/multiaccounts/accounts"
|
"github.com/status-im/status-go/multiaccounts/accounts"
|
||||||
|
walletsettings "github.com/status-im/status-go/multiaccounts/settings_wallet"
|
||||||
"github.com/status-im/status-go/params"
|
"github.com/status-im/status-go/params"
|
||||||
"github.com/status-im/status-go/protocol"
|
"github.com/status-im/status-go/protocol"
|
||||||
"github.com/status-im/status-go/services/accounts/accountsevent"
|
"github.com/status-im/status-go/services/accounts/accountsevent"
|
||||||
|
@ -84,6 +85,14 @@ func (api *API) MoveWalletAccount(ctx context.Context, fromPosition int64, toPos
|
||||||
return (*api.messenger).MoveWalletAccount(fromPosition, toPosition)
|
return (*api.messenger).MoveWalletAccount(fromPosition, toPosition)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (api *API) UpdateTokenPreferences(ctx context.Context, preferences []walletsettings.TokenPreferences) error {
|
||||||
|
return (*api.messenger).UpdateTokenPreferences(preferences)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (api *API) GetTokenPreferences(ctx context.Context) ([]walletsettings.TokenPreferences, error) {
|
||||||
|
return (*api.messenger).GetTokenPreferences()
|
||||||
|
}
|
||||||
|
|
||||||
func (api *API) GetAccounts(ctx context.Context) ([]*accounts.Account, error) {
|
func (api *API) GetAccounts(ctx context.Context) ([]*accounts.Account, error) {
|
||||||
return api.db.GetActiveAccounts()
|
return api.db.GetActiveAccounts()
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,7 +102,7 @@ type Token struct {
|
||||||
MarketValuesPerCurrency map[string]TokenMarketValues `json:"marketValuesPerCurrency"`
|
MarketValuesPerCurrency map[string]TokenMarketValues `json:"marketValuesPerCurrency"`
|
||||||
PegSymbol string `json:"pegSymbol"`
|
PegSymbol string `json:"pegSymbol"`
|
||||||
Verified bool `json:"verified"`
|
Verified bool `json:"verified"`
|
||||||
CommunitID string `json:"communityId"`
|
CommunityID string `json:"communityId"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func splitVerifiedTokens(tokens []*token.Token) ([]*token.Token, []*token.Token) {
|
func splitVerifiedTokens(tokens []*token.Token) ([]*token.Token, []*token.Token) {
|
||||||
|
@ -337,7 +337,7 @@ func (r *Reader) GetWalletToken(ctx context.Context, addresses []common.Address)
|
||||||
Decimals: decimals,
|
Decimals: decimals,
|
||||||
PegSymbol: token.GetTokenPegSymbol(symbol),
|
PegSymbol: token.GetTokenPegSymbol(symbol),
|
||||||
Verified: tokens[0].Verified,
|
Verified: tokens[0].Verified,
|
||||||
CommunitID: communityID,
|
CommunityID: communityID,
|
||||||
}
|
}
|
||||||
|
|
||||||
tokenSymbols = append(tokenSymbols, symbol)
|
tokenSymbols = append(tokenSymbols, symbol)
|
||||||
|
|
Loading…
Reference in New Issue