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
- Host: GitHub
- URL: https://github.com/scerio/usedesk.dart
- Owner: ScerIO
- License: mit
- Created: 2022-03-04T02:18:12.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-08-16T01:02:40.000Z (almost 4 years ago)
- Last Synced: 2025-06-11T05:08:15.614Z (about 1 year ago)
- Language: Dart
- Size: 262 KB
- Stars: 0
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# usedesk
Pure dart SDK implementation of usedesk.com service
Now added only `UsedeskChat` sdk
[](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
```