Skip to main content

Версия 0.2.11

Кастомизация логирования​

Добавлена возможность передавать сообщения SDK в собственную систему логирования или аналитики.

Пример для Android:

ChatHDE.setLogHandler { message ->
Log.d("ChatSDK", message)
}

Обработчик получает сообщения SDK, которые можно сохранить или передать в систему аналитики. Чтобы удалить обработчик, передайте null.

Пример для iOS:

ChatLogger.handler = { message in
print(message)
}

SDK продолжает выводить сообщения в консоль и дополнительно передаёт каждое сообщение ChatLogger в установленный обработчик. Параметр logs: true включает подробные диагностические сообщения. Чтобы удалить обработчик, установите ChatLogger.handler = nil.

Настройка ошибки загрузки изображения в Android​

Добавлены параметры для настройки текста ошибки загрузки изображения и размера его шрифта:

val ui = ChatUIConfig(
texts = ChatUITexts(
imageLoadError = "Не удалось загрузить изображение"
),
dimensions = ChatUIDimensions(
imageLoadErrorFontSize = 16.sp
)
)

Переименование notShowChat в chatUnavailable​

В Android и iOS notShowChat заменён на chatUnavailable. Также компонент NotShowChat переименован в ChatUnavailableDefault.

// Раньше
Ticket(
notShowChat = { NotShowChat() }
)

// Сейчас
Ticket(
chatUnavailable = { ChatUnavailableDefault() }
)

Пример для IOS:

// Раньше: TicketStatus.notShowChat, slots.notShowChat,
// NotShowChat() и модификатор .noStaffOnline { ... }

// Сейчас
TicketPage(tvm, cvm)
.chatUnavailable {
ChatUnavailableDefault()
}

Кастомизация staffOffline в iOS​

В iOS добавлен отдельный модификатор .staffOffline { ... }, позволяющий заменить стандартный компонент для состояния, когда сотрудники не в сети. В отличие от chatUnavailable, этот компонент отображается над формой обращения, не скрывая саму форму.

TicketPage(tvm, cvm)
.staffOffline {
StaffOfflineDefault()
}

Сохранение состояния чата​

В iOS добавлены методы ChatSavableData.encoded() и ChatSavableData.decode(from:). Они позволяют сериализовать снимок состояния чата в Data, сохранить его вне SDK и восстановить перед следующим подключением.

if let savedData = await ChatHDE.shared.getSavedData(),
let data = savedData.encoded() {
UserDefaults.standard.set(data, forKey: "chatState")
}

if let data = UserDefaults.standard.data(forKey: "chatState"),
let savedData = ChatSavableData.decode(from: data) {
await ChatHDE.shared.setSavedData(savedData)
}