Skip to content

Commit

Permalink
added build Conversation in Flutter Web
Browse files Browse the repository at this point in the history
  • Loading branch information
AbhijeetRanjan308 committed Apr 15, 2024
1 parent add60cb commit e03d4da
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 14 deletions.
5 changes: 5 additions & 0 deletions lib/kommunicate_flutter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:flutter/services.dart';
import 'package:flutter/foundation.dart' show kIsWeb;

class KommunicateFlutterPlugin {
static const MethodChannel _channel =
Expand All @@ -13,7 +14,11 @@ class KommunicateFlutterPlugin {
}

static Future<dynamic> buildConversation(dynamic conversationObject) async {
if (kIsWeb) {
return await _channel.invokeMethod('buildConversation', jsonEncode(conversationObject));
} else {
return await _channel.invokeMethod('buildConversation', Platform.isAndroid ? conversationObject : jsonEncode(conversationObject));
}
}

static Future<dynamic> logout() async {
Expand Down
41 changes: 27 additions & 14 deletions lib/web/kommunicate_flutter_web.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@
import 'dart:async';
import 'dart:convert';
import 'dart:js' as js;

import 'dart:js_util' as js_util;
import 'package:flutter/services.dart';
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
import 'package:kommunicate_flutter/kommunicate_flutter.dart';

class KommunicateFlutterPluginWeb {
static void registerWith(Registrar registrar) {
Expand Down Expand Up @@ -131,37 +130,51 @@ class KommunicateFlutterPluginWeb {
}

Future<dynamic> buildConversation(dynamic conversationObject) async {
Map<String, dynamic> conversationData = jsonDecode(conversationObject);
Map<String, dynamic> conversationData;
if (conversationObject is String) {
conversationData = jsonDecode(conversationObject);
} else if (conversationObject is Map<String, dynamic>) {
conversationData = conversationObject;
} else {
throw ArgumentError('conversationObject must be a JSON string or a Map<String, dynamic>');
}

Map<String, dynamic> conversationDetail = {};

if (conversationData["messageMetadata"]) {
if (conversationData["messageMetadata"] != null) {
conversationDetail["conversationMetadata"] = conversationData["messageMetadata"];
}
if (conversationData["agentIds"]) {
if (conversationData["agentIds"] != null) {
conversationDetail["agentIds"] = conversationData["agentIds"];
if (!conversationDetail["skipRouting"]) {
if (conversationDetail["skipRouting"] == null) {
conversationDetail["skipRouting"] = "true";
}
}
if (conversationData["botIds"]) {
if (conversationData["botIds"] != null) {
conversationDetail["botIds"] = conversationData["botIds"];
if (!conversationDetail["skipRouting"]) {
if (conversationDetail["skipRouting"] == null) {
conversationDetail["skipRouting"] = "true";
}
}
if (conversationData["conversationAssignee"]) {
if (conversationData["conversationAssignee"] != null) {
conversationDetail["assignee"] = conversationData["conversationAssignee"];
if (!conversationDetail["skipRouting"]) {
if (conversationDetail["skipRouting"] == null) {
conversationDetail["skipRouting"] = "true";
}
}
if (conversationData["clientConversationId"]) {
if (conversationData["clientConversationId"] != null) {
conversationDetail["clientGroupId"] = conversationData["clientConversationId"];
}
if (conversationData["conversationTitle"]) {
if (conversationData["conversationTitle"] != null) {
conversationDetail["defaultGroupName"] = conversationData["conversationTitle"];
}
print("converastionON : $conversationDetail");

String jsCode = '''
Kommunicate.startConversation(${jsonEncode(conversationDetail)}, function (response) {
console.log("new conversation created");
});
''';

await js.context.callMethod('eval', [jsCode]);
}

}

0 comments on commit e03d4da

Please sign in to comment.