mirror of
https://github.com/status-im/status-go.git
synced 2025-02-18 01:37:22 +00:00
parent
02e4cc6e1f
commit
d909faf504
@ -29,6 +29,11 @@ const (
|
|||||||
ActivityCenterNotificationTypeContactVerification
|
ActivityCenterNotificationTypeContactVerification
|
||||||
ActivityCenterNotificationTypeContactRemoved
|
ActivityCenterNotificationTypeContactRemoved
|
||||||
ActivityCenterNotificationTypeNewKeypairAddedToPairedDevice
|
ActivityCenterNotificationTypeNewKeypairAddedToPairedDevice
|
||||||
|
ActivityCenterNotificationTypeOwnerTokenReceived
|
||||||
|
ActivityCenterNotificationTypeOwnershipReceived
|
||||||
|
ActivityCenterNotificationTypeOwnershipLost
|
||||||
|
ActivityCenterNotificationTypeSetSignerFailed
|
||||||
|
ActivityCenterNotificationTypeSetSignerDeclined
|
||||||
)
|
)
|
||||||
|
|
||||||
type ActivityCenterMembershipStatus int
|
type ActivityCenterMembershipStatus int
|
||||||
|
@ -6089,3 +6089,26 @@ func (m *Messenger) PromoteSelfToControlNode(communityID types.HexBytes) (*Messe
|
|||||||
|
|
||||||
return &response, nil
|
return &response, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) CreateResponseWithACNotification(communityID string, acType ActivityCenterType, isRead bool) (*MessengerResponse, error) {
|
||||||
|
// Activity center notification
|
||||||
|
notification := &ActivityCenterNotification{
|
||||||
|
ID: types.FromHex(uuid.New().String()),
|
||||||
|
Type: acType,
|
||||||
|
Timestamp: m.getTimesource().GetCurrentTime(),
|
||||||
|
CommunityID: communityID,
|
||||||
|
Read: isRead,
|
||||||
|
Deleted: false,
|
||||||
|
UpdatedAt: m.GetCurrentTimeInMillis(),
|
||||||
|
}
|
||||||
|
|
||||||
|
response := &MessengerResponse{}
|
||||||
|
|
||||||
|
err := m.addActivityCenterNotification(response, notification, nil)
|
||||||
|
if err != nil {
|
||||||
|
m.logger.Error("failed to save notification", zap.Error(err))
|
||||||
|
return response, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return response, nil
|
||||||
|
}
|
||||||
|
@ -830,19 +830,14 @@ func (api *API) validateBurnAmount(ctx context.Context, burnAmount *bigint.BigIn
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *API) estimateMethod(ctx context.Context, chainID uint64, contractAddress string, fromAddress string, methodName string, args ...interface{}) (uint64, error) {
|
func (api *API) estimateMethodForTokenInstance(ctx context.Context, contractInstance TokenInstance, chainID uint64, contractAddress string, fromAddress string, methodName string, args ...interface{}) (uint64, error) {
|
||||||
ethClient, err := api.s.manager.rpcClient.EthClient(chainID)
|
ethClient, err := api.s.manager.rpcClient.EthClient(chainID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(err.Error())
|
log.Error(err.Error())
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
contractInst, err := NewTokenInstance(api, chainID, contractAddress)
|
data, err := contractInstance.PackMethod(ctx, methodName, args...)
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
|
|
||||||
data, err := contractInst.PackMethod(ctx, methodName, args...)
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
@ -864,6 +859,14 @@ func (api *API) estimateMethod(ctx context.Context, chainID uint64, contractAddr
|
|||||||
return estimate + uint64(float32(estimate)*0.1), nil
|
return estimate + uint64(float32(estimate)*0.1), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (api *API) estimateMethod(ctx context.Context, chainID uint64, contractAddress string, fromAddress string, methodName string, args ...interface{}) (uint64, error) {
|
||||||
|
contractInst, err := NewTokenInstance(api, chainID, contractAddress)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
return api.estimateMethodForTokenInstance(ctx, contractInst, chainID, contractAddress, fromAddress, methodName, args...)
|
||||||
|
}
|
||||||
|
|
||||||
// Gets signer public key from smart contract with a given chainId and address
|
// Gets signer public key from smart contract with a given chainId and address
|
||||||
func (api *API) GetSignerPubKey(ctx context.Context, chainID uint64, contractAddress string) (string, error) {
|
func (api *API) GetSignerPubKey(ctx context.Context, chainID uint64, contractAddress string) (string, error) {
|
||||||
return api.s.GetSignerPubKey(ctx, chainID, contractAddress)
|
return api.s.GetSignerPubKey(ctx, chainID, contractAddress)
|
||||||
@ -887,5 +890,25 @@ func (api *API) EstimateSetSignerPubKey(ctx context.Context, chainID uint64, con
|
|||||||
if len(newSignerPubKey) <= 0 {
|
if len(newSignerPubKey) <= 0 {
|
||||||
return 0, fmt.Errorf("signerPubKey is empty")
|
return 0, fmt.Errorf("signerPubKey is empty")
|
||||||
}
|
}
|
||||||
return api.estimateMethod(ctx, chainID, contractAddress, fromAddress, "setSignerPublicKey", newSignerPubKey)
|
|
||||||
|
contractInst, err := api.NewOwnerTokenInstance(chainID, contractAddress)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
ownerTokenInstance := &OwnerTokenInstance{instance: contractInst}
|
||||||
|
|
||||||
|
return api.estimateMethodForTokenInstance(ctx, ownerTokenInstance, chainID, contractAddress, fromAddress, "setSignerPublicKey", common.FromHex(newSignerPubKey))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (api *API) OwnerTokenOwnerAddress(ctx context.Context, chainID uint64, contractAddress string) (string, error) {
|
||||||
|
callOpts := &bind.CallOpts{Context: ctx, Pending: false}
|
||||||
|
contractInst, err := api.NewOwnerTokenInstance(chainID, contractAddress)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
ownerAddress, err := contractInst.OwnerOf(callOpts, big.NewInt(0))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return ownerAddress.Hex(), nil
|
||||||
}
|
}
|
||||||
|
@ -1631,6 +1631,36 @@ func (api *PublicAPI) GetProfileShowcasePreferences() (*protocol.ProfileShowcase
|
|||||||
return api.service.messenger.GetProfileShowcasePreferences()
|
return api.service.messenger.GetProfileShowcasePreferences()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns response with AC notification when owner token is received
|
||||||
|
func (api *PublicAPI) RegisterOwnerTokenReceivedNotification(communityID string) (*protocol.MessengerResponse, error) {
|
||||||
|
return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeOwnerTokenReceived, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns response with AC notification when setting signer is successful
|
||||||
|
func (api *PublicAPI) RegisterReceivedOwnershipNotification(communityID string) (*protocol.MessengerResponse, error) {
|
||||||
|
return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeOwnershipReceived, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns response with AC notification when setting signer is failed
|
||||||
|
func (api *PublicAPI) RegisterSetSignerFailedNotification(communityID string) (*protocol.MessengerResponse, error) {
|
||||||
|
return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeSetSignerFailed, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns response with AC notification when setting signer is declined
|
||||||
|
func (api *PublicAPI) RegisterSetSignerDeclinedNotification(communityID string) (*protocol.MessengerResponse, error) {
|
||||||
|
return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeSetSignerDeclined, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns response with AC notification when ownership is lost
|
||||||
|
func (api *PublicAPI) RegisterLostOwnershipNotification(communityID string) (*protocol.MessengerResponse, error) {
|
||||||
|
return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeOwnershipLost, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (api *PublicAPI) PromoteSelfToControlMode(communityID string) error {
|
||||||
|
_, err := api.service.messenger.PromoteSelfToControlNode([]byte(communityID))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// -----
|
// -----
|
||||||
// HELPER
|
// HELPER
|
||||||
// -----
|
// -----
|
||||||
|
Loading…
x
Reference in New Issue
Block a user