GroupChannelOrder type definition

I’m trying to use create a GroupChannelCollection following the documentation like this:

sb.GroupChannel.createGroupChannelCollection()
	.setOrder(sb.GroupChannelCollection.GroupChannelOrder.LATEST_LAST_MESSAGE)
	.setFilter(groupChannelFilter)
	.build();

but I got a TypeScript error complaining that string is not assignable to GroupChannelOrder

Seems like there’s some problem in the type definition file:

type GroupChannelOrder = {
    LATEST_LAST_MESSAGE: 'latest_last_message',
    CHRONOLOGICAL: 'chronological',
    CHANNEL_NAME_ALPHABETICAL: 'channel_name_alphabetical',
};

This type expects me to pass in this exact object:

.setOrder({ LATEST_LAST_MESSAGE: 'latest_last_message', CHRONOLOGICAL: 'chronological', CHANNEL_NAME_ALPHABETICAL: 'channel_name_alphabetical' })

Also, I believe it doesn’t happen to just GroupChannelOrder

Hi hewong,

There should be no error when following the documentation below.

What is the type definition file you mentioned? Where did you find them?

Yes, that’s the documentation that I followed.

This is the type definition file that I mentioned: SendBird.d.ts (line 85)

Here’s a screenshot of the error when I followed exactly the documentation:


And if I put in a string:

The current GroupChannelOrder requires all properties to be present, which is an object.
What should be expected by .setOrder is a string, and to solve this issue, the type declaration should be something like this:

type GroupChannelOrder = 'latest_last_message' | 'chronological' | 'channel_name_alphabetical';

Could you try to use it like this?

.setOrder(sb.GroupChannelCollection.GroupChannelOrder.ORDER_LATEST_LAST_MESSAGE) 

Isn’t that what I did as mentioned in my topic and reply? That is also exactly what is documented.

If you’re thinking about the this keyword that’s because I’m using a class component.
It’s still the same even if I don’t put it in a class component.

I really hope you did read what I said, please take a look at the type definition file, any TypeScript programmer should know what I mean…

Thank you

Really sorry. Let me check with JS engineer.

My teammate suggested a workaround as below including a comment.

It’s like if you in typescript declare the variable as const sort :any = ... If you pass the string, it’s not the same as any

const order = sb.GroupChannelCollection.GroupChannelOrder.LATEST_LAST_MESSAGE;

var groupChannelCollection = sb.GroupChannel.createGroupChannelCollection()
        .setOrder(order)
        .setFilter(groupChannelFilter)
        .build();

Once getting the technical details, I will share with you.

Thanks, would give it a try

This issue will be fixed soon. Sorry to make you confusing.

No worries, thanks for the reply!

Hi @hewong this has been fixed in 3.1.4 version of the Sendbird SDK.

Update to resolve this by running:

npm i sendbird@3.1.4