From 1ff83189dba6c4704d4a4c712f17375b91662e60 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 16 Jun 2020 16:42:05 +0100 Subject: [PATCH] demo-protobuf: Include protobuf type decorator in CosmosMessage --- packages/demo-protobuf/src/decorator.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/demo-protobuf/src/decorator.ts b/packages/demo-protobuf/src/decorator.ts index 4f5ec5ec..0ee99b97 100644 --- a/packages/demo-protobuf/src/decorator.ts +++ b/packages/demo-protobuf/src/decorator.ts @@ -1,17 +1,23 @@ -import { Field, Message, Type } from "protobufjs"; +import { Constructor, Field, Message, TypeDecorator, util } from "protobufjs"; -import { GeneratedType, Registry } from "./registry"; +import { Registry } from "./registry"; export const myRegistry = new Registry(); -function CosmosMessage(registry: Registry, typeUrl: string) { - return (generatedType: GeneratedType) => { +function getTypeName(typeUrl: string): string { + const parts = typeUrl.split("."); + return parts[parts.length - 1]; +} + +function CosmosMessage(registry: Registry, typeUrl: string): TypeDecorator { + return (constructor: Constructor>) => { + const typeName = getTypeName(typeUrl); + const generatedType = util.decorateType(constructor, typeName); registry.register(typeUrl, generatedType); }; } @CosmosMessage(myRegistry, "/demo.MsgDemo") -@Type.d("MsgDemo") export class MsgDemo extends Message<{}> { @Field.d(1, "string") public readonly example: string = "";