An open API service indexing awesome lists of open source software.

https://github.com/scerio/usedesk.dart

Pure dart SDK implementation of usedesk.ru
https://github.com/scerio/usedesk.dart

Last synced: 9 months ago
JSON representation

Pure dart SDK implementation of usedesk.ru

Awesome Lists containing this project

README

          

# usedesk

Pure dart SDK implementation of usedesk.com service
Now added only `UsedeskChat` sdk

[![pub package](https://img.shields.io/pub/v/usedesk.svg)](https://pub.dev/packages/usedesk)

## Getting Started

In Example dir fully flutter chat integration with package `flutter_chat_ui`

Integrate anywhere by steps:

1. Need implement token storage, example with shared_preferences:
```dart
import 'package:shared_preferences/shared_preferences.dart';
import 'package:usedesk/usedesk.dart';

class SharedPreferencesUsedeskChatStorage extends UsedeskChatStorageProvider {
SharedPreferencesUsedeskChatStorage(this.prefs);
final SharedPreferences prefs;

@override
Future getToken() async {
return prefs.getString('token');
}

@override
Future setToken(String token) {
return prefs.setString('token', token);
}

@override
Future clearToken() {
return prefs.remove('token');
}
}
```
2. Initialize chat
```dart
final usedeskChat = await UsedeskChat.init(
/* Required */
storage: SharedPreferencesUsedeskChatStorage(prefs),
companyId: companyId,

/* Optional */
channelId: channelId,
apiConfig: const ChatApiConfiguration(
urlChat: 'https://pubsubsec.usedesk.ru',
urlOfflineForm: 'https://secure.usedesk.ru/',
urlToSendFile: 'https://secure.usedesk.ru/uapi/v1/send_file',
),
);
```
3. Identify client / pass additional data
```dart
usedeskChat
..identify = IdentifyConfiguration(
/* All params optional */
name: 'Serge Shkurko',
email: 'mySuper@email.com',
phoneNumber: 88005553535,
additionalId: 'uuid_in_my_system',
)
..additionalFields = {
'99999': 'v$appVersion:$appBuildNumber'
};
```
4. Subscribe on messages stream
```dart
usedeskChat.messagesStream.listen((List message) {
MessageBase message = message.first;

final isMyMessage = message is MessageFromClient;

// Work with different messages
if (message is MessageTextBase) {
print(message.text);
} else if (message is MessageImageBase) {
print(message.file);
} else if (message is MessageFileBase) {
print(message.file);
}
});

```
5. Control connection
```dart
usedeskChat.connect(); // for receiving usedesk messages from socket

usedeskChat.disconnect(); // dismiss connection
```
6. Send message
```dart
// Text
usedeskChat.sendText('My cool message');

// File
usedeskChat.sendFile('My_cool_image.jpg', fileBytes);
```

## Contributing

Rebuild code generation tools
```bash
# One time run
dart pub run build_runner build --delete-conflicting-outputs

# Watching of file changes
dart pub run build_runner watch --delete-conflicting-outputs
```