Skip to content

Commit

Permalink
Merge pull request #124 from Kommunicate-io/CM-1955
Browse files Browse the repository at this point in the history
[CM-1955] Expose Dynamic online/offline status update method
  • Loading branch information
AbhijeetRanjan308 committed Mar 11, 2024
2 parents 52f91a6 + d4544d3 commit b79181d
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import com.applozic.mobicomkit.uiwidgets.conversation.fragment.MobiComConversationFragment;
import com.applozic.mobicomkit.api.conversation.AlTotalUnreadCountTask;
import io.kommunicate.preference.KmConversationInfoSetting;
import io.kommunicate.utils.KMAgentStatusHelper;
import com.applozic.mobicomkit.broadcast.AlEventManager;
import com.applozic.mobicomkit.api.conversation.MessageBuilder;

Expand Down Expand Up @@ -105,6 +106,38 @@ public void onFailure(RegistrationResponse registrationResponse, Exception excep
} catch (Exception e) {
result.error(ERROR, e.getMessage(), null);
}
} else if (call.method.equals("updateStatus")) {
try {
JSONObject updateStatusObjc = new JSONObject(call.arguments.toString());
if (updateStatusObjc.has("assigneID") && updateStatusObjc.has("status")) {
final String assigneID = updateStatusObjc.get("assigneID").toString();
final String status = updateStatusObjc.get("status").toString();

if (status.isEmpty()) {
result.error(ERROR, "Status is empty.", null);
}

switch (status.toLowerCase()) {
case "online":
Kommunicate.updateAssigneeStatus(assigneID, KMAgentStatusHelper.KMAgentStatus.ONLINE);
break;
case "offline":
Kommunicate.updateAssigneeStatus(assigneID, KMAgentStatusHelper.KMAgentStatus.OFFLINE);
break;
case "away":
Kommunicate.updateAssigneeStatus(assigneID, KMAgentStatusHelper.KMAgentStatus.AWAY);
break;
default:
Kommunicate.updateAssigneeStatus(assigneID, KMAgentStatusHelper.KMAgentStatus.DefaultStatus);
break;
}
} else{
result.error(ERROR, "passed object is not having 'assigneID' or 'status' ", null);
}

} catch (Exception e) {
result.error(ERROR, e.toString(), null);
}
} else if (call.method.equals("sendMessage")) {
try {
JSONObject messageObject = new JSONObject(call.arguments.toString());
Expand Down
19 changes: 19 additions & 0 deletions ios/Classes/SwiftKommunicateFlutterPlugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,25 @@ public class SwiftKommunicateFlutterPlugin: NSObject, FlutterPlugin, KMPreChatFo
return
}
Kommunicate.updatePrefilledText(prefilledText)
} else if(call.method == "updateStatus") {
guard let jsonString = call.arguments as? String, var jsonObj = jsonString.convertToDictionary(), let assigneeID = jsonObj["assigneID"] as? String, let status = jsonObj["status"] as? String else {
self.sendErrorResultWithCallback(result: result, message: "Unable to parse update user status Object")
return
}
if status.isEmpty {
self.sendErrorResult(message: "Status is Empty.")
return
}
switch status.lowercased() {
case "online":
Kommunicate.updateAssigneeStatus(assigneeID: assigneeID, status: .online)
case "offline":
Kommunicate.updateAssigneeStatus(assigneeID: assigneeID, status: .offline)
case "away":
Kommunicate.updateAssigneeStatus(assigneeID: assigneeID, status: .away)
default:
Kommunicate.updateAssigneeStatus(assigneeID: assigneeID, status: .default)
}
} else if(call.method == "sendMessage") {
guard let jsonString = call.arguments as? String, var jsonObj = jsonString.convertToDictionary(), let conversationID = jsonObj["channelID"] as? String, let message = jsonObj["message"] as? String else {
self.sendErrorResultWithCallback(result: result, message: "Unable to parse send Message Object")
Expand Down
4 changes: 4 additions & 0 deletions lib/kommunicate_flutter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ class KommunicateFlutterPlugin {
return await _channel.invokeMethod('sendMessage', jsonEncode(messageObjc));
}

static Future<dynamic> updateUserStatus(dynamic updateStatusObjc) async {
return await _channel.invokeMethod('updateStatus', jsonEncode(updateStatusObjc));
}

static Future<dynamic> getConversarionIdOrKey(dynamic conversationIdObjc) async {
return await _channel.invokeMethod('getConversarionIdOrKey', jsonEncode(conversationIdObjc));
}
Expand Down

0 comments on commit b79181d

Please sign in to comment.