diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 26c4d66ef..56b9bc6dd 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -44,6 +44,36 @@ import ( "github.com/xrash/smetrics" ) +func (tx *Transaction) doSetAttrViewCoverFromAssetKeyID(operation *Operation) (ret *TxErr) { + err := setAttrViewCoverFromAssetKeyID(operation) + if err != nil { + return &TxErr{code: TxErrWriteAttributeView, id: operation.AvID, msg: err.Error()} + } + return +} + +func setAttrViewCoverFromAssetKeyID(operation *Operation) (err error) { + attrView, err := av.ParseAttributeView(operation.AvID) + if err != nil { + return + } + + view, err := getAttrViewViewByBlockID(attrView, operation.BlockID) + if err != nil { + return + } + + switch view.LayoutType { + case av.LayoutTypeTable: + return + case av.LayoutTypeGallery: + view.Gallery.CoverFromAssetKeyID = operation.KeyID + } + + err = av.SaveAttributeView(attrView) + return +} + func (tx *Transaction) doSetAttrViewCoverFrom(operation *Operation) (ret *TxErr) { err := setAttrViewCoverFrom(operation) if err != nil { diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index ab0620cca..d4d17785b 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -280,6 +280,8 @@ func performTx(tx *Transaction) (ret *TxErr) { ret = tx.doDuplicateAttrViewKey(op) case "setAttrViewCoverFrom": ret = tx.doSetAttrViewCoverFrom(op) + case "setAttrViewCoverFromAssetKeyID": + ret = tx.doSetAttrViewCoverFromAssetKeyID(op) } if nil != ret {