collectibles

package
v0.171.35 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 18, 2023 License: MPL-2.0 Imports: 36 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EventCollectiblesOwnershipUpdateStarted           walletevent.EventType = "wallet-collectibles-ownership-update-started"
	EventCollectiblesOwnershipUpdatePartial           walletevent.EventType = "wallet-collectibles-ownership-update-partial"
	EventCollectiblesOwnershipUpdateFinished          walletevent.EventType = "wallet-collectibles-ownership-update-finished"
	EventCollectiblesOwnershipUpdateFinishedWithError walletevent.EventType = "wallet-collectibles-ownership-update-finished-with-error"
	EventCommunityCollectiblesReceived                walletevent.EventType = "wallet-collectibles-community-collectibles-received"

	EventOwnedCollectiblesFilteringDone walletevent.EventType = "wallet-owned-collectibles-filtering-done"
	EventGetCollectiblesDetailsDone     walletevent.EventType = "wallet-get-collectibles-details-done"
)

These events are used to notify the UI of state changes

View Source
const EventCollectiblesConnectionStatusChanged walletevent.EventType = "wallet-collectible-status-changed"
View Source
const InvalidTimestamp = int64(-1)

Variables

View Source
var (
	ErrAllProvidersFailedForChainID   = errors.New("all providers failed for chainID")
	ErrNoProvidersAvailableForChainID = errors.New("no providers available for chainID")
)

Functions

This section is empty.

Types

type Collectible added in v0.171.21

type Collectible struct {
	DataType        CollectibleDataType            `json:"data_type"`
	ID              thirdparty.CollectibleUniqueID `json:"id"`
	CollectibleData *CollectibleData               `json:"collectible_data,omitempty"`
	CollectionData  *CollectionData                `json:"collection_data,omitempty"`
	CommunityData   *CommunityData                 `json:"community_data,omitempty"`
	Ownership       []thirdparty.AccountBalance    `json:"ownership,omitempty"`
}

Combined Collection+Collectible info, used to display a detailed view of a collectible

type CollectibleData added in v0.171.21

type CollectibleData struct {
	Name               string                         `json:"name"`
	Description        *string                        `json:"description,omitempty"`
	ImageURL           *string                        `json:"image_url,omitempty"`
	AnimationURL       *string                        `json:"animation_url,omitempty"`
	AnimationMediaType *string                        `json:"animation_media_type,omitempty"`
	Traits             *[]thirdparty.CollectibleTrait `json:"traits,omitempty"`
	BackgroundColor    *string                        `json:"background_color,omitempty"`
}

type CollectibleDataDB added in v0.163.4

type CollectibleDataDB struct {
	// contains filtered or unexported fields
}

func NewCollectibleDataDB added in v0.163.4

func NewCollectibleDataDB(sqlDb *sql.DB) *CollectibleDataDB

func (*CollectibleDataDB) GetCommunityInfo added in v0.171.8

func (*CollectibleDataDB) GetData added in v0.163.4

func (*CollectibleDataDB) GetIDsNotInDB added in v0.163.4

func (*CollectibleDataDB) SetCommunityInfo added in v0.171.8

func (o *CollectibleDataDB) SetCommunityInfo(id thirdparty.CollectibleUniqueID, communityInfo thirdparty.CollectibleCommunityInfo) (err error)

func (*CollectibleDataDB) SetData added in v0.163.4

func (o *CollectibleDataDB) SetData(collectibles []thirdparty.CollectibleData) (err error)

type CollectibleDataType added in v0.171.21

type CollectibleDataType byte
const (
	CollectibleDataTypeUniqueID CollectibleDataType = iota
	CollectibleDataTypeHeader
	CollectibleDataTypeDetails
	CollectibleDataTypeCommunityHeader
)

type CollectionData added in v0.171.21

type CollectionData struct {
	Name     string `json:"name"`
	Slug     string `json:"slug"`
	ImageURL string `json:"image_url"`
}

type CollectionDataDB added in v0.163.4

type CollectionDataDB struct {
	// contains filtered or unexported fields
}

func NewCollectionDataDB added in v0.163.4

func NewCollectionDataDB(sqlDb *sql.DB) *CollectionDataDB

func (*CollectionDataDB) GetData added in v0.163.4

func (*CollectionDataDB) GetIDsNotInDB added in v0.163.4

func (o *CollectionDataDB) GetIDsNotInDB(ids []thirdparty.ContractID) ([]thirdparty.ContractID, error)

func (*CollectionDataDB) SetData added in v0.163.4

func (o *CollectionDataDB) SetData(collections []thirdparty.CollectionData) (err error)

type CommunityData added in v0.171.21

type CommunityData struct {
	ID              string                `json:"id"`
	Name            string                `json:"name"`
	Color           string                `json:"color"`
	PrivilegesLevel token.PrivilegesLevel `json:"privileges_level"`
	ImageURL        *string               `json:"image_url,omitempty"`
}

type Controller added in v0.170.0

type Controller struct {
	// contains filtered or unexported fields
}

func NewController added in v0.170.0

func NewController(
	db *sql.DB,
	walletFeed *event.Feed,
	accountsDB *accounts.Database,
	accountsFeed *event.Feed,
	settingsFeed *event.Feed,
	networkManager *network.Manager,
	manager *Manager) *Controller

func (*Controller) GetCommandState added in v0.170.0

func (c *Controller) GetCommandState(chainID walletCommon.ChainID, address common.Address) OwnershipState

func (*Controller) RefetchOwnedCollectibles added in v0.170.0

func (c *Controller) RefetchOwnedCollectibles()

func (*Controller) SetReceivedCollectiblesCb added in v0.171.21

func (c *Controller) SetReceivedCollectiblesCb(cb OwnedCollectiblesCb)

func (*Controller) Start added in v0.170.0

func (c *Controller) Start()

func (*Controller) Stop added in v0.170.0

func (c *Controller) Stop()

type ErrorCode added in v0.162.13

type ErrorCode = int
const (
	ErrorCodeSuccess ErrorCode = iota + 1
	ErrorCodeTaskCanceled
	ErrorCodeFailed
)

type FetchCriteria added in v0.171.21

type FetchCriteria struct {
	FetchType          FetchType `json:"fetch_type"`
	MaxCacheAgeSeconds int64     `json:"max_cache_age_seconds"`
}

type FetchType added in v0.171.21

type FetchType byte
const (
	FetchTypeNeverFetch FetchType = iota
	FetchTypeAlwaysFetch
	FetchTypeFetchIfNotCached
	FetchTypeFetchIfCacheOld
)

type Filter added in v0.171.9

type Filter struct {
	CommunityIDs              []string                `json:"community_ids"`
	CommunityPrivilegesLevels []token.PrivilegesLevel `json:"community_privileges_levels"`

	FilterCommunity FilterCommunityType `json:"filter_community"`
}

type FilterCommunityType added in v0.171.9

type FilterCommunityType int
const (
	All FilterCommunityType = iota
	OnlyNonCommunity
	OnlyCommunity
)

type GetCollectiblesByUniqueIDResponse added in v0.171.21

type GetCollectiblesByUniqueIDResponse struct {
	Collectibles []Collectible `json:"collectibles"`
	ErrorCode    ErrorCode     `json:"errorCode"`
}

type GetCollectiblesByUniqueIDReturnType added in v0.171.21

type GetCollectiblesByUniqueIDReturnType struct {
	// contains filtered or unexported fields
}

type GetOwnedCollectiblesResponse added in v0.171.21

type GetOwnedCollectiblesResponse struct {
	Collectibles []Collectible `json:"collectibles"`
	Offset       int           `json:"offset"`
	// Used to indicate that there might be more collectibles that were not returned
	// based on a simple heuristic
	HasMore         bool                                `json:"hasMore"`
	OwnershipStatus OwnershipStatusPerAddressAndChainID `json:"ownershipStatus"`
	ErrorCode       ErrorCode                           `json:"errorCode"`
}

type GetOwnedCollectiblesReturnType added in v0.171.21

type GetOwnedCollectiblesReturnType struct {
	// contains filtered or unexported fields
}

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

func NewManager

func NewManager(
	db *sql.DB,
	rpcClient *rpc.Client,
	communityManager *community.Manager,
	contractOwnershipProviders []thirdparty.CollectibleContractOwnershipProvider,
	accountOwnershipProviders []thirdparty.CollectibleAccountOwnershipProvider,
	collectibleDataProviders []thirdparty.CollectibleDataProvider,
	collectionDataProviders []thirdparty.CollectionDataProvider,
	mediaServer *server.MediaServer,
	feed *event.Feed) *Manager

func (*Manager) FetchAllAssetsByOwner

func (o *Manager) FetchAllAssetsByOwner(ctx context.Context, chainID walletCommon.ChainID, owner common.Address, cursor string, limit int, providerID string) (*thirdparty.FullCollectibleDataContainer, error)

func (*Manager) FetchAllAssetsByOwnerAndContractAddress

func (o *Manager) FetchAllAssetsByOwnerAndContractAddress(ctx context.Context, chainID walletCommon.ChainID, owner common.Address, contractAddresses []common.Address, cursor string, limit int, providerID string) (*thirdparty.FullCollectibleDataContainer, error)

func (*Manager) FetchAssetsByCollectibleUniqueID added in v0.162.13

func (o *Manager) FetchAssetsByCollectibleUniqueID(ctx context.Context, uniqueIDs []thirdparty.CollectibleUniqueID) ([]thirdparty.FullCollectibleData, error)

func (*Manager) FetchBalancesByOwnerAndContractAddress added in v0.162.5

func (o *Manager) FetchBalancesByOwnerAndContractAddress(ctx context.Context, chainID walletCommon.ChainID, ownerAddress common.Address, contractAddresses []common.Address) (thirdparty.TokenBalancesPerContractAddress, error)

Need to combine different providers to support all needed ChainIDs

func (*Manager) FetchCollectibleOwnersByContractAddress added in v0.162.13

func (o *Manager) FetchCollectibleOwnersByContractAddress(ctx context.Context, chainID walletCommon.ChainID, contractAddress common.Address) (*thirdparty.CollectibleContractOwnership, error)

func (*Manager) FetchCollectibleOwnershipByOwner added in v0.162.13

func (o *Manager) FetchCollectibleOwnershipByOwner(ctx context.Context, chainID walletCommon.ChainID, owner common.Address, cursor string, limit int, providerID string) (*thirdparty.CollectibleOwnershipContainer, error)

func (*Manager) FetchCollectionsDataByContractID added in v0.162.15

func (o *Manager) FetchCollectionsDataByContractID(ctx context.Context, ids []thirdparty.ContractID) ([]thirdparty.CollectionData, error)

func (*Manager) ResetConnectionStatus added in v0.167.5

func (o *Manager) ResetConnectionStatus()

Reset connection status to trigger notifications on the next status update

type ManagerInterface added in v0.166.7

type ManagerInterface interface {
	FetchAssetsByCollectibleUniqueID(ctx context.Context, uniqueIDs []thirdparty.CollectibleUniqueID) ([]thirdparty.FullCollectibleData, error)
}

type OwnedCollectibles added in v0.170.0

type OwnedCollectibles struct {
	// contains filtered or unexported fields
}

type OwnedCollectiblesCb added in v0.170.0

type OwnedCollectiblesCb func(OwnedCollectibles)

type OwnershipDB added in v0.162.13

type OwnershipDB struct {
	// contains filtered or unexported fields
}

func NewOwnershipDB added in v0.162.13

func NewOwnershipDB(sqlDb *sql.DB) *OwnershipDB

func (*OwnershipDB) GetIDsNotInDB added in v0.170.0

func (o *OwnershipDB) GetIDsNotInDB(
	chainID w_common.ChainID,
	ownerAddress common.Address,
	newIDs []thirdparty.CollectibleUniqueID) ([]thirdparty.CollectibleUniqueID, error)

Returns the list of new IDs when comparing the given list of IDs with the ones in the DB. Call before Update for the result to be useful.

func (*OwnershipDB) GetLatestOwnershipUpdateTimestamp added in v0.167.5

func (o *OwnershipDB) GetLatestOwnershipUpdateTimestamp(chainID walletCommon.ChainID) (int64, error)

func (*OwnershipDB) GetOwnedCollectible added in v0.166.9

func (o *OwnershipDB) GetOwnedCollectible(chainID w_common.ChainID, ownerAddresses common.Address, contractAddress common.Address, tokenID *big.Int) (*thirdparty.CollectibleUniqueID, error)

func (*OwnershipDB) GetOwnedCollectibles added in v0.162.13

func (o *OwnershipDB) GetOwnedCollectibles(chainIDs []w_common.ChainID, ownerAddresses []common.Address, offset int, limit int) ([]thirdparty.CollectibleUniqueID, error)

func (*OwnershipDB) GetOwnership added in v0.171.35

func (*OwnershipDB) GetOwnershipUpdateTimestamp added in v0.166.11

func (o *OwnershipDB) GetOwnershipUpdateTimestamp(owner common.Address, chainID walletCommon.ChainID) (int64, error)

func (*OwnershipDB) Update added in v0.162.13

func (o *OwnershipDB) Update(chainID w_common.ChainID, ownerAddress common.Address, balances thirdparty.TokenBalancesPerContractAddress, timestamp int64) (err error)

type OwnershipState added in v0.166.11

type OwnershipState = int
const (
	OwnershipStateIdle OwnershipState = iota + 1
	OwnershipStateDelayed
	OwnershipStateUpdating
	OwnershipStateError
)

type OwnershipStatus added in v0.166.11

type OwnershipStatus struct {
	State     OwnershipState `json:"state"`
	Timestamp int64          `json:"timestamp"`
}

type OwnershipStatusPerAddressAndChainID added in v0.166.11

type OwnershipStatusPerAddressAndChainID = map[common.Address]OwnershipStatusPerChainID

type OwnershipStatusPerChainID added in v0.166.11

type OwnershipStatusPerChainID = map[walletCommon.ChainID]OwnershipStatus

type Service added in v0.162.13

type Service struct {
	// contains filtered or unexported fields
}

func NewService added in v0.162.13

func NewService(
	db *sql.DB,
	walletFeed *event.Feed,
	accountsDB *accounts.Database,
	accountsFeed *event.Feed,
	settingsFeed *event.Feed,
	communityManager *community.Manager,
	networkManager *network.Manager,
	manager *Manager) *Service

func (*Service) FilterOwnedCollectibles added in v0.171.9

func (s *Service) FilterOwnedCollectibles(chainIDs []walletCommon.ChainID, owners []common.Address, filter Filter, offset int, limit int) ([]thirdparty.CollectibleUniqueID, bool, error)

func (*Service) GetCollectiblesByUniqueID added in v0.171.21

func (s *Service) GetCollectiblesByUniqueID(
	ctx context.Context,
	uniqueIDs []thirdparty.CollectibleUniqueID,
	dataType CollectibleDataType) (*GetCollectiblesByUniqueIDReturnType, error)

func (*Service) GetCollectiblesByUniqueIDAsync added in v0.171.21

func (s *Service) GetCollectiblesByUniqueIDAsync(
	requestID int32,
	uniqueIDs []thirdparty.CollectibleUniqueID,
	dataType CollectibleDataType)

func (*Service) GetOwnedCollectible added in v0.166.9

func (s *Service) GetOwnedCollectible(chainID walletCommon.ChainID, owner common.Address, contractAddress common.Address, tokenID *big.Int) (*thirdparty.CollectibleUniqueID, error)

func (*Service) GetOwnedCollectibles added in v0.162.13

func (s *Service) GetOwnedCollectibles(
	ctx context.Context,
	chainIDs []walletCommon.ChainID,
	addresses []common.Address,
	filter Filter,
	offset int,
	limit int,
	dataType CollectibleDataType,
	fetchCriteria FetchCriteria) (*GetOwnedCollectiblesReturnType, error)

func (*Service) GetOwnedCollectiblesAsync added in v0.171.21

func (s *Service) GetOwnedCollectiblesAsync(
	requestID int32,
	chainIDs []walletCommon.ChainID,
	addresses []common.Address,
	filter Filter,
	offset int,
	limit int,
	dataType CollectibleDataType,
	fetchCriteria FetchCriteria)

GetOwnedCollectiblesAsync allows only one filter task to run at a time and it cancels the current one if a new one is started All calls will trigger an EventOwnedCollectiblesFilteringDone event with the result of the filtering

func (*Service) GetOwnershipStatus added in v0.166.11

func (s *Service) GetOwnershipStatus(chainIDs []walletCommon.ChainID, owners []common.Address) (OwnershipStatusPerAddressAndChainID, error)

func (*Service) RefetchOwnedCollectibles added in v0.167.5

func (s *Service) RefetchOwnedCollectibles()

func (*Service) Start added in v0.162.13

func (s *Service) Start()

func (*Service) Stop added in v0.162.13

func (s *Service) Stop()

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL