Releases: GetStream/stream-chat-swift
Releases · GetStream/stream-chat-swift
1.5.2
1.5.1
1.5.0
Added
-
Added levels for
ClientLogger
.- Error Level:
ClientLogger.Options.requestsError
ClientLogger.Options.webSocketError
ClientLogger.Options.notificationsError
ClientLogger.Options.error
— all errors
- Debug Level:
ClientLogger.Options.requests
ClientLogger.Options.webSocket
ClientLogger.Options.notifications
ClientLogger.Options.debug
— all debug
- Info Level:
ClientLogger.Options.requestsInfo
ClientLogger.Options.webSocketInfo
ClientLogger.Options.notificationsInfo
ClientLogger.Options.info
— all info
- Error Level:
-
MessageViewStyle.showTimeThreshold
to show additional time for messages from the same user at different times.
. . . AdditionalDateStyle.messageAndDate
. . . . AdditionalDateStyle.userNameAndDate
. . .
-
Optimized MessageTableViewCell rendering.
-
Channel name. If it's empty:
- for 2 members: the 2nd member name
- for more than 2 members: member name + N others.
- channel
id
.
-
Channel.isDirectMessage
— checks if only 2 members in the channel and the channel name was generated. -
Improved work with
ExtraData
. -
A custom
ChannelType.custom(String)
Changed
- Removed a
channelType
parameter inChannelsPresenter.init
. - Renamed
ExtraData.data
->ExtraData.object
Channel.currentUnreadCount
update.
Fixed
- Detecting and highlighting URL's in messages.
- Skip empty messages.
ChatFooterView
with a white circle.- A user avatar missing.
1.4.4
1.4.3
Added
- The current user mentioned unread count
// The current unread count.
let count: Int = channel.currentMentionedUnreadCount
// An observable unread count.
channel.mentionedUnreadCount
.drive(onNext: { count in
print(count)
})
.disposed(by: disposeBag)
- Map an observable value to void.
.void()
1.4.2
1.4.1
1.4.0
Added
Channel.currentUnreadCount
value to show the number in table view.- Get a message by id:
Client.message(with messageId: String)
- Mark all messages as reader:
Client.markAllRead()
User.isInvisible
- Flag/unflag users:
Client.flag(user: User)
oruser.flag()
. - Ban user:
Chanel.ban(user: User, timeoutInMinutes: Int? = nil, reason: String? = nil)
. - Channel ban options:
Channel. banEnabling
:
/// Disabled for everyone.
case disabled
/// Enabled for everyone.
/// The default timeout in minutes until the ban is automatically expired.
/// The default reason the ban was created.
case enabled(timeoutInMinutes: Int?, reason: String?)
/// Enabled for channel members with a role of moderator or admin.
/// The default timeout in minutes until the ban is automatically expired.
/// The default reason the ban was created.
case enabledForModerators(timeoutInMinutes: Int?, reason: String?)
- Event
userBanned
- Debug info when API key is empty.
- More logs for Notifications errors.
ChannelPresenter. messageRead
for the current user.- Client API key property is public and mutable for development in different environments. Not recommended for production.
- Hiding the keyboard on landscape mode to add attachments.
- Message search.
- New flow to invite members to a channel:
// 1. Invite members with a creating a new channel
let channel = Channel(type: .messaging,
id: "awesome-chat",
members: [tomasso, thierry]
invitedMembers: [nick])
channel.create().subscribe().disposed(by: disposeBag)
// 2. Invite user(s) to an exists channel.
channel.invite(nick).subscribe().disposed(by: disposeBag)
Renamed
ChannelsQuery
:.messageLimit
→.messagesLimit
.User
:.online
→.isOnline
.
Changed
ClientLogger
updatedAtomic
from:
typealias DidSetCallback = (T?) -> Void
to:
typealias DidSetCallback = (_ value: T?, _ oldValue: T?) -> Void
Channel.watch(options: QueryOptions = [])
with query options.
Fixed
BannerView
memory leak.- A bug with the composer attachment button, when a channel config wasn't loaded.
- ComposerView position with opaque Tabbar.
- Reconnection after sleep for 10+ minutes.
- Popup menu for iPad.
- ReactionsView for iPhone in landscape orientation.
- ComposerView bottom constraint when iPhone on the landscape orientation.