Releases: sendbird/sendbird-chat-sdk-javascript
Releases · sendbird/sendbird-chat-sdk-javascript
v4.0.0-beta.12
v4.0.0-beta.12 (June 09, 2022)
- Type of
SendbirdChatParams.useAsyncStorageStore
has changed to AsyncStorage of@react-native-async-storage/async-storage
. - Added
clearCachedMessages()
inSendbirdChat
. - Rename
SendbirdChat.clearCache()
toSendbirdChat.clearCachedData()
. - Bug fixed the logic for filtering public group channel in
GroupChannelCollection
. - Rename
SendbirdChat.Options.useMemberAsMessageSender
toSendbirdChat.Options.useMemberInfoInMessage
. useMemberInfoInMessage
now applies to bothmessage.sender
andmessage.mentionedUsers
.- Bug fixed cached channel not updated when disconnect and then connect.
- Bug fixed broken file data of auto-resent file message.
- Added
BaseMessage.parentMessage
. - Added
BaseMessage.applyParentMessage()
. - Parent message update event now updates
parentMessage
value of all its child messages. - Bug fixed
message.metaArrays
value not being updated after callingcreateMessageMetaArrayKeys()
,deleteMessageMetaArrayKeys()
,addMessageMetaArrayValues()
, andremoveMessageMetaArrayValues()
ofBaseChannel
. MessageCollectionInitPolicy.API_ONLY
has been removed.- All classes whose namespace ends with params (ex.
UserMessageCreateParams
,GroupChannelCreateParams
, etc.) is now changed to interfaces. - Improved stability.
v4.0.0-beta.11
v4.0.0-beta.11 (May 24, 2022)
groupChannel.leave()
now takes an optional inputshouldRemoveOperatorStatus: boolean = false
.SendbirdChat.connect()
now returnsUser
instance from the cache if local cache is enabled.- Improved stability.
v4.0.0-beta.10
Changelog (2022-05-17)
BaseMessage
’srequestedMentionUserIds
has been replaced withmentionedUserIds
.- Getter and setter for
mentionedUsers
have been added touserMessageCreateParams
,userMessageUpdateParams
,fileMessageUpdateParams
, andfileMessageUpdateParams
. - Getters for
BaseMessage
,isUserMessage
,isFileMessage
, andisAdminMessage
have been replaced withisUserMessage()
,isFileMessage()
, andisAdminMessage()
. - Getters for
BaseChannel
,isGroupChannel
, andisOpenChannel
, have been replaced withisGroupChannel()
, andisOpenChannel()
. reqId
inBaseMessageCreateParamsProperties
has been removed.- Added
translationTargetLanguages
inUserMessage
. - Added
translationTargetLanguages
inUserMessageUpdateParamsProperties
. - Scheduled message support:
- Deleted
ScheduledUserMessageParams
. - Deleted
ScheduledUserMessage
. - Deleted
registerScheduledUserMessage()
inGroupChannel
. - Added
scheduledInfo
inBaseMessage
. - Added
ScheduledStatus
. - Added
SCHEDULED
inSendingStatus
. - Added
ScheduledMessageRetrievalParams
. - Added
ScheduledFileMessageCreateParams
. - Added
ScheduledFileMessageUpdateParams
. - Added
ScheduledUserMessageCreateParams
. - Added
ScheduledUserMessageUpdateParams
. - Added
TotalScheduledMessageCountParams
. - Added
ScheduledMessageListOrder
. - Added
ScheduledMessageListQuery
. - Added
ScheduledMessageListQueryParams
. - Added
getScheduledMessage()
inMessageModule
, . - Added
createScheduledMessageListQuery() in
GroupChannelModule`. - Added
getTotalScheduledMessageCount() in
SendbirdChat`. - Added
createScheduledUserMessage()
,updateScheduledUserMessage()
,createScheduledFileMessage()
,updateScheduledFileMessage()
,cancelScheduledMessage()
,sendScheduledMessageNow() in
GroupChannel`.
- Deleted
v4.0.0-beta.9
- Bug-fix in sending a message.
v4.0.0-beta.8
v4.0.0-beta.8
v4.0.0-beta.7
v4.0.0-beta.6
v4.0.0-beta.4
v4.0.0-beta.3
- Bug-fixes
v4.0.0-beta
What's new in version 4?
Overall
- No callback. Use
Promise
.
// v3
sb.connect(userId, (err, user) => {});
// v4
const user = await sb.connect(userId);
Treeshaking
applied. The classes, interfaces, enums, types come to beimport
-able with treeshaking. See SDK reference page for detailed list of exports.
// v3
sb.GroupChannel
sb.LogLevel
...
// v4
import { LogLevel } from '@sendbird/chat';
import { GroupChannel } from '@sendbird/groupChannel';
...
static
object relocation.
v3 |
v4 |
---|---|
sb.GroupChannel |
sb.groupChannel * |
sb.OpenChannel |
sb.openChannel ** |
sb.BaseMessage |
sb.message |
* Should declare
GroupChannelModule
inSendbirdChat.init()
.
** Should declareOpenChannelModule
inSendbirdChat.init()
.
New features
- Added
onConnected()
,onDisconnected()
toConnectionHandler
.
Changes
- Changed initialization interface.
// v3
import SendBird from 'sendbird';
import AsyncStorage from '@react-native-async-storage/async-storage';
const sb = new SendBird({
appId: APP_ID,
localCacheEnabled: true,
});
sb.setLogLevel(sb.LogLevel.WARN);
sb.appVersion = APP_VERSION;
sb.Options.useMemberAsMessageSender = true;
// only for React Native
sb.useAsyncStorageAsDatabase(AsyncStorage);
// v4
import SendbirdChat, {
SendbirdChatOptions,
Loglevel
} from '@sendbird/chat';
import AsyncStorage from '@react-native-async-storage/async-storage';
const sb = SendbirdChat.init({
appId: APP_ID,
appVersion: APP_VERSION,
modules,
options: new SendbirdChatOptions({
useMemberAsMessageSender: true,
}),
logLevel: LogLevel.WARN,
localCacheEnabled: true,
useAsyncStorageStore: AsyncStorage, // only for React Native
});
- Replaced
ChannelHandler
toGroupChannelHandler
andOpenChannelHandler
// v3
const channelHandler = new sb.ChannelHandler();
channelHandler.onChannelChanged = (channel) => {
...
};
sb.addChannelHandler(EVENT_ID, channelHandler);
sb.removeChannelHandler(EVENT_ID);
// v4
import { GroupChannelHandler } from '@sendbird/chat/groupChannel';
const channelHandler = new GroupChannelHandler({
onChannelChanged: (channel) => {
...
},
});
sb.groupChannel.addGroupChannelHandler(EVENT_ID, channelHandler);
sb.groupChannel.removeGroupChannelHandler(EVENT_ID);
- No builder pattern for
Collection
s.
// v3
const groupChannelFilter = new sb.GroupChannelFilter();
const gc = sb.GroupChannel.createGroupChannelCollection()
.setOrder(sb.GroupChannelCollection.GroupChannelOrder.LATEST_LAST_MESSAGE)
.setFilter(groupChannelFilter)
.build();
const messageFilter = new sb.MessageFilter();
const mc = channel.createMessageCollection()
.setFilter(messageFilter)
.setStartingPoint(startingPoint)
.build();
// v4
import {
GroupChannelFilter,
GroupChannelListOrder
} from '@sendbird/chat/groupChannel';
import { MessageFilter } from '@sendbird/chat/message';
const groupChannelFilter = new GroupChannelFilter();
const gc = sb.groupChannel.createGroupChannelCollection({
filter: groupChannelFilter,
order: GroupChannelListOrder.LATEST_LAST_MESSAGE,
});
const messageFilter = new MessageFilter();
const mc = channel.createMessageCollection({
filter: messageFilter,
startingPoint: Date.now(),
});
- Changed
sb.updateCurrentUserInfo()
to takeUserUpdateParams
as a parameter.
// v3
sb.updateCurrentUserInfo(NICKNAME, PROFILE_URL);
sb.updateCurrentUserInfoWithProfileImage(NICKNAME, PROFILE_IMAGE);
// v4
import { UserUpdateParams } from '@sendbird/chat';
const params = new UserUpdateParams({
nickname: NICKNAME,
profileUrl: PROFILE_URL,
// or you can put a file as `profileImage` to upload the profile
});
sb.updateCurrentUserInfo(params);
// no sb.updateCurrentUserInfoWithProfileImage()
- Changed
sb.getUnreadItemCount()
to takeUnreadItemCountParams
as a parameter.
// v3
sb.getUnreadItemCount(KEYS);
// v4
const params = new UnreadItemCountParams({
keys: KEYS,
});
sb.getUnreadItemCount(params);
- Changed
sb.getTotalUnreadMessageCount()
to takeTotalUnreadMessageCountParams
as a parameter.
// v3
sb.getTotalUnreadMessageCount(CHANNEL_CUSTOM_TYPES);
// no super channel filter support
// v4
const params = new TotalUnreadMessageCountParams({
channelCustomTypesFilter: CHANNEL_CUSTOM_TYPES,
superChannelFilter: SUPER_CHANNEL_FILTER,
});
sb.getTotalUnreadMessageCount(params);
- Changed
sendUserMessage()
andsendFileMessage()
interface to chain the callbacks for pending/failed/succeeded messages.
// v3
const pendingMessage = channel.sendUserMessage(params, (err, message) => {
if (err) {
// message is a failed message
} else {
// message is a succeeded message
}
});
// v4
channel.sendUserMessage(params)
.onPending((pendingMessage: UserMessage) => {})
.onFailed((err: Error, failedMessage: UserMessage) => {})
.onSucceeded((succeededMessage: UserMessage) => {});
- Separated update params from create params.
// v3
GroupChannelParams // both for create/update
OpenChannelParams // both for create/update
UserMessageParams // both for send/update
FileMessageParams // both for send/update
// v4
GroupChannelCreateParams
GroupChannelUpdateParams
OpenChannelCreateParams
OpenChannelUpdateParams
UserMessageCreateParams
UserMessageUpdateParams
FileMessageCreateParams
FileMessageUpdateParams
- Changed to accept initial properties in
~Params
constructors.
// v3
const params = new sb.UserMessageParams();
params.message = 'message';
// v4
import { UserMessageParams } from '@sendbird/chat/message';
const params = new UserMessageCreateParams({
message: 'message',
});
// or you can still use it as v3
const params = new UserMessageCreateParams();
params.message = 'message';
- Changed to accept properties in
~Query
constructors. The query properties are immutable later on.
// v3
const query = sb.GroupChannel.createMyGroupChannelListQuery();
query.customTypesFilter = ['a', 'b'];
query.order = 'latest_last_message';
// v4
import { GroupChannelListOrder } from '@sendbird/chat/groupChannel';
const query = sb.groupChannel.createMyGroupChannelListQuery({
customTypesFilter: ['a', 'b'],
order: GroupChannelListOrder.LATEST_LAST_MESSAGE,
});
query.customTypesFilter = ['a', 'b']; // ERROR! IMMUTABLE PROPERTY!
- Changed
buildFromSerializedData()
paths.
// v3
sb.AdminMessage.buildFromSerializedData()
sb.FileMessage.buildFromSerializedData()
sb.UserMessage.buildFromSerializedData()
sb.Sender.buildFromSerializedData()
sb.GroupChannel.buildFromSerializedData()
sb.GroupChannelListQuery.buildFromSerializedData()
sb.Member.buildFromSerializedData()
sb.OpenChannel.buildFromSerializedData()
sb.User.buildFromSerializedData()
// v4
sb.message.buildMessageFromSerializedData() // admin/file/user altogether
sb.message.buildSenderFromSerializedData()
sb.groupChannel.buildGroupChannelFromSerializedData()
sb.groupChannel.buildGroupChannelListQueryFromSerializedData()
sb.groupChannel.buildMemberFromSerializedData()
sb.openChannel.buildOpenChannelFromSerializedData()
sb.buildUserFromSerializedData()
- Turned some getter functions to read-only properties.
// v3
SendBird.getInstance()
sb.getApplicationId()
sb.getConnectionState()
sb.getLastConnectedAt()
channel.isGroupChannel()
channel.isOpenChannel()
channel.getCachedMetaData()
message.isUserMessage()
message.isFileMessage()
message.isAdminMessage()
message.isResendable()
// v4
SendbirdChat.instance
sb.appId
sb.connectionState
sb.lastConnectedAt
channel.isGroupChannel
channel.isOpenChannel
channel.cachedMetaData
message.isUserMessage
message.isFileMessage
message.isAdminMessage
message.isResendable
- Relocations
v3 | v4 |
---|---|
sb.getMyGroupChannelChangeLogsByToken() |
sb.groupChannel.getMyGroupChannelChangeLogsByToken() |
sb.getMyGroupChannelChangeLogsByTimestamp() |
sb.groupChannel.getMyGroupChannelChangeLogsByTimestamp() |
- Renames
v3 | v4 |
---|---|
SendBird |
SendbirdChat |
SendBirdException |
SendbirdError |
GCMPushToken |
FCMPushToken * |
sb.initializeDatabase() |
sb.initializeCache() |
sb.clearDatabase() |
sb.clearCache() |
channelHandler.onReadReceiptUpdated() |
groupChannelHandler.onUnreadMemberStatusUpdated() |
channelHandler.onDeliveryReceiptUpdated() |
groupChannelHandler.onUndeliveredMemberStatusUpdated() |
groupChannel.cachedReadReceiptStatus |
groupChannel.cachedUnreadMemberState |
groupChannel.cachedDeliveryReceiptStatus |
groupChannel.cachedUndeliveredMemberState |
* But stilling meaning the token for Android.
Removes
- Removed
channel.getMessagesByID()
.