mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-02 17:31:39 +00:00
* refactor: rename project from onsonr/sonr to sonr-io/snrd (#1249) * refactor: rename project from onsonr/sonr to sonr-io/snrd * refactor: update package paths to use sonr-io org --------- Co-authored-by: Prad N <prad@didao.xyz> * feat: introduce devbox for consistent development environment * feat: integrate Doppler for secrets management * feat: streamline release process with Devbox * <no value> * bump: version 0.6.3 → 0.6.4 * feat: enable commit-less version bumping * bump: version 0.6.4 → 0.6.5 * feat: streamline release process and update project metadata * feat: streamline build process and configuration * feat: streamline build process by removing release target * bump: version 0.6.5 → 0.6.6 * feat: upgrade to go 1.24 and align binary name * bump: version 0.6.6 → 0.6.7 * feat: streamline release process and update project metadata * bump: version 0.6.3 → 0.6.4 * feat: streamline development and release processes * feat: streamline development and release processes * refactor: streamline release process with Taskfile * feat: enhance goreleaser output with title for better UX * feat: consolidate release notes * bump: version 0.6.3 → 0.6.4 * feat: streamline release process with improved automation * feat: streamline development and release workflow * bump: version 0.6.3 → 0.6.4 * feat: streamline release process with Taskfile and conventional commits * bump: version 0.6.4 → 0.6.5 * feat: enhance Docker image publishing with piped credentials * chore: remove outdated changelog entries * bump: version 0.6.3 → 0.6.4 * feat: improve release process with interactive feedback * feat: enhance release process with real-time version feedback * bump: version 0.6.4 → 0.6.5 * feat: enhance release process with dynamic version display and streamlined automation * bump: version 0.6.3 → 0.6.4 * refactor: streamline release process by removing redundant version display * bump: version 0.6.4 → 0.6.5 * refactor: streamline release process and simplify dev environment * bump: version 0.6.3 → 0.6.4 * ci: simplify PR checks by removing redundant release validation * refactor: consolidate release workflows for improved maintainability * ci: enhance release workflow for automated version publishing --------- Co-authored-by: Prad N <prad@didao.xyz>
67 lines
1.5 KiB
Go
67 lines
1.5 KiB
Go
package accounts
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
"strings"
|
|
|
|
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
|
|
"github.com/cosmos/gogoproto/proto"
|
|
|
|
"github.com/sonr-io/snrd/internal/transaction"
|
|
)
|
|
|
|
// ProtoMsgG is a generic interface for protobuf messages.
|
|
type ProtoMsgG[T any] interface {
|
|
*T
|
|
transaction.Msg
|
|
}
|
|
|
|
type Any = codectypes.Any
|
|
|
|
func FindMessageByName(name string) (transaction.Msg, error) {
|
|
typ := proto.MessageType(name)
|
|
if typ == nil {
|
|
return nil, fmt.Errorf("no message type found for %s", name)
|
|
}
|
|
return reflect.New(typ.Elem()).Interface().(transaction.Msg), nil
|
|
}
|
|
|
|
func MessageName(msg transaction.Msg) string {
|
|
return proto.MessageName(msg)
|
|
}
|
|
|
|
// PackAny packs a proto message into an anypb.Any.
|
|
func PackAny(msg transaction.Msg) (*Any, error) {
|
|
return codectypes.NewAnyWithValue(msg)
|
|
}
|
|
|
|
// UnpackAny unpacks an anypb.Any into a proto message.
|
|
func UnpackAny[T any, PT ProtoMsgG[T]](anyPB *Any) (PT, error) {
|
|
to := new(T)
|
|
return to, UnpackAnyTo(anyPB, PT(to))
|
|
}
|
|
|
|
func UnpackAnyTo(anyPB *Any, to transaction.Msg) error {
|
|
return proto.Unmarshal(anyPB.Value, to)
|
|
}
|
|
|
|
func UnpackAnyRaw(anyPB *Any) (proto.Message, error) {
|
|
split := strings.Split(anyPB.TypeUrl, "/")
|
|
name := split[len(split)-1]
|
|
typ := proto.MessageType(name)
|
|
if typ == nil {
|
|
return nil, fmt.Errorf("no message type found for %s", name)
|
|
}
|
|
to := reflect.New(typ.Elem()).Interface().(proto.Message)
|
|
return to, UnpackAnyTo(anyPB, to)
|
|
}
|
|
|
|
func Merge(a, b transaction.Msg) {
|
|
proto.Merge(a, b)
|
|
}
|
|
|
|
func Equal(a, b transaction.Msg) bool {
|
|
return proto.Equal(a, b)
|
|
}
|