Commit a3d105f5 authored by sheteng's avatar sheteng

fix1

parent 2b73dc9c
...@@ -31,6 +31,12 @@ android { ...@@ -31,6 +31,12 @@ android {
} }
} }
repositories {
flatDir {
dirs 'libs'
}
}
dependencies { dependencies {
implementation 'androidx.annotation:annotation:1.2.0' implementation 'androidx.annotation:annotation:1.2.0'
implementation 'androidx.vectordrawable:vectordrawable:1.1.0' implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
...@@ -40,6 +46,7 @@ dependencies { ...@@ -40,6 +46,7 @@ dependencies {
implementation "androidx.multidex:multidex:$multidex_version" implementation "androidx.multidex:multidex:$multidex_version"
def lifecycle_version = "2.3.1" def lifecycle_version = "2.3.1"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'androidx.appcompat:appcompat:1.3.1'
...@@ -48,9 +55,12 @@ dependencies { ...@@ -48,9 +55,12 @@ dependencies {
implementation 'androidx.navigation:navigation-fragment:2.3.0' implementation 'androidx.navigation:navigation-fragment:2.3.0'
implementation 'androidx.navigation:navigation-ui:2.3.0' implementation 'androidx.navigation:navigation-ui:2.3.0'
// implementation(name: 'ccim-release', ext: 'aar')
implementation project(path: ':ccim') implementation project(path: ':ccim')
implementation 'com.google.protobuf:protobuf-java:3.13.0' implementation 'com.google.protobuf:protobuf-java:3.13.0'
implementation 'com.google.protobuf:protobuf-java:3.13.0' implementation 'com.google.protobuf:protobuf-java:3.13.0'
implementation 'com.google.protobuf:protobuf-java-util:3.12.0' implementation 'com.google.protobuf:protobuf-java-util:3.12.0'
implementation 'com.guolindev.permissionx:permissionx:1.6.1' implementation 'com.guolindev.permissionx:permissionx:1.6.1'
implementation 'com.tonystark.android:socket:latest.release'
implementation 'com.tonystark.android:socket-server:latest.release'
} }
\ No newline at end of file
package com.ccwangluo.im.ui.dashboard;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import com.ccwangluo.ccim.CCIMClient;
import com.ccwangluo.ccim.data.Contact;
import com.ccwangluo.ccim.data.PushPrivateMsgRes;
import com.ccwangluo.ccim.listener.ResultCallback;
import com.ccwangluo.im.adapter.PrivateMsgAdapter;
import com.ccwangluo.im.data.LoginViewModel;
import com.ccwangluo.im.databinding.FragmentConnectBinding;
import java.util.ArrayList;
import java.util.List;
public class ConnectFragment extends Fragment {
private FragmentConnectBinding binding;
private LoginViewModel loginViewModel;
private PrivateMsgAdapter privaetMsgAdapter;
private List<PushPrivateMsgRes.MessageDTO> list = new ArrayList<>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentConnectBinding.inflate(inflater, container, false);
loginViewModel = new ViewModelProvider(getActivity())
.get(LoginViewModel.class);
privaetMsgAdapter = new PrivateMsgAdapter(list,getContext());
binding.msgList.setAdapter(privaetMsgAdapter);
Contact contact = (Contact) getArguments().getSerializable("contact");
loginViewModel.privateMsgList.observe(getViewLifecycleOwner(), new Observer<List<PushPrivateMsgRes>>() {
@Override
public void onChanged(List<PushPrivateMsgRes> pushPrivateMsgRes) {
list.clear();
for (PushPrivateMsgRes pushPrivateMsgRe : pushPrivateMsgRes) {
if ((contact.getContactUserId().equals(pushPrivateMsgRe.getMessage().getSenderUserId())|| contact.getContactUserId().equals(pushPrivateMsgRe.getMessage().getReciveUserId()))) {
list.add(pushPrivateMsgRe.getMessage());
}
}
privaetMsgAdapter.refreshData();
binding.msgList.setSelection(privaetMsgAdapter.getCount() - 1);
}
});
binding.sendBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String content = binding.sendEdit.getText().toString();
CCIMClient.getInstance().sendTextMessage(content, contact.getContactUserId(), new ResultCallback() {
@Override
public void onSuccess() {
binding.sendEdit.setText("");
PushPrivateMsgRes.MessageDTO messageDTO = new PushPrivateMsgRes.MessageDTO();
messageDTO.setReciveUserId(contact.getContactUserId());
messageDTO.setContent(content);
PushPrivateMsgRes pushPrivateMsgRes = new PushPrivateMsgRes();
pushPrivateMsgRes.setMessage(messageDTO);
loginViewModel.addPrivateMsg(pushPrivateMsgRes);
Toast.makeText(getContext(),"send Success",Toast.LENGTH_LONG).show();
}
});
}
});
return binding.getRoot();
}
}
\ No newline at end of file
...@@ -3,6 +3,7 @@ package com.ccwangluo.im.ui.notifications; ...@@ -3,6 +3,7 @@ package com.ccwangluo.im.ui.notifications;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -82,6 +83,9 @@ public class NotificationsFragment extends Fragment { ...@@ -82,6 +83,9 @@ public class NotificationsFragment extends Fragment {
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
String channelId = inputServer.getText().toString(); String channelId = inputServer.getText().toString();
if (TextUtils.isEmpty(channelId)){
Toast.makeText(getContext(),"channel id is null",Toast.LENGTH_SHORT).show();
}
long Id = Long.parseLong(channelId); long Id = Long.parseLong(channelId);
CCIMClient.getInstance().joinChannel(Id, new ResultCallback() { CCIMClient.getInstance().joinChannel(Id, new ResultCallback() {
@Override @Override
...@@ -123,10 +127,12 @@ public class NotificationsFragment extends Fragment { ...@@ -123,10 +127,12 @@ public class NotificationsFragment extends Fragment {
boolean checked = checkBox.isChecked(); boolean checked = checkBox.isChecked();
String users = userList.getText().toString(); String users = userList.getText().toString();
ArrayList<Long> longs = new ArrayList<>(); ArrayList<Long> longs = new ArrayList<>();
if (!TextUtils.isEmpty(users)) {
String[] split = users.split(","); String[] split = users.split(",");
for (int i = 0; i < split.length; i++) { for (int i = 0; i < split.length; i++) {
longs.add(Long.parseLong(split[i])); longs.add(Long.parseLong(split[i]));
} }
}
CCIMClient.getInstance().createChannel(name, tag, checked, longs, new ResultEventCallback<Long>() { CCIMClient.getInstance().createChannel(name, tag, checked, longs, new ResultEventCallback<Long>() {
@Override @Override
public void onSuccess(Long aLong) { public void onSuccess(Long aLong) {
......
...@@ -26,7 +26,6 @@ import com.google.gson.Gson; ...@@ -26,7 +26,6 @@ import com.google.gson.Gson;
import com.google.protobuf.util.JsonFormat; import com.google.protobuf.util.JsonFormat;
import com.permissionx.guolindev.PermissionX; import com.permissionx.guolindev.PermissionX;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -77,14 +76,15 @@ public class CCIMClient { ...@@ -77,14 +76,15 @@ public class CCIMClient {
@Override @Override
public void onSocketConnection() { public void onSocketConnection() {
resultCallback.onSocketConnection(); resultCallback.onSocketConnection();
if (!isNeedFresh) {
isNeedFresh = true; isNeedFresh = true;
getContactList(new ContactsCallBack() { contacts.clear();
@Override contactGroups.clear();
public void onSuccess(Collection<Contact> contacts, Collection<ContactGroup> contactGroups) { getContactList((contacts, contactGroups) -> {
}
}); });
} }
}
@Override @Override
public void onSocketDisconnection() { public void onSocketDisconnection() {
...@@ -109,6 +109,7 @@ public class CCIMClient { ...@@ -109,6 +109,7 @@ public class CCIMClient {
e.printStackTrace(); e.printStackTrace();
} }
} }
if (chatResponseMessage.hasPushChannelMsgRes()) { if (chatResponseMessage.hasPushChannelMsgRes()) {
Push.PushChannelMessageResponse channelMsgRes = chatResponseMessage.getPushChannelMsgRes(); Push.PushChannelMessageResponse channelMsgRes = chatResponseMessage.getPushChannelMsgRes();
pushChannelMessage(channelMsgRes.getChannelId(), channelMsgRes.getMessage().getMsgId()); pushChannelMessage(channelMsgRes.getChannelId(), channelMsgRes.getMessage().getMsgId());
...@@ -158,7 +159,7 @@ public class CCIMClient { ...@@ -158,7 +159,7 @@ public class CCIMClient {
Push.PushBlockedByContactResponse pushContactNewReqRes = chatResponseMessage.getPushBlockedByContactRes(); Push.PushBlockedByContactResponse pushContactNewReqRes = chatResponseMessage.getPushBlockedByContactRes();
long contactUserId = pushContactNewReqRes.getContactUserId(); long contactUserId = pushContactNewReqRes.getContactUserId();
ContactOuterClass.ContactStatus contactStatus = pushContactNewReqRes.getContactStatus(); ContactOuterClass.ContactStatus contactStatus = pushContactNewReqRes.getContactStatus();
contacts.get(contactUserId).setStatus(Status.valueOf(contactStatus.name())); Objects.requireNonNull(contacts.get(contactUserId)).setStatus(Status.valueOf(contactStatus.name()));
pushMsgListener.pushBlockByContact(contactUserId); pushMsgListener.pushBlockByContact(contactUserId);
} }
...@@ -337,9 +338,8 @@ public class CCIMClient { ...@@ -337,9 +338,8 @@ public class CCIMClient {
public void onSuccess(Chat.ChatResponseMessage chatResponseMessage) { public void onSuccess(Chat.ChatResponseMessage chatResponseMessage) {
if (chatResponseMessage.hasCheckContactReqRes()) { if (chatResponseMessage.hasCheckContactReqRes()) {
ContactOuterClass.Contact newContact = chatResponseMessage.getCheckContactReqRes().getNewContact(); ContactOuterClass.Contact newContact = chatResponseMessage.getCheckContactReqRes().getNewContact();
String print = null;
try { try {
print = JsonFormat.printer().print(newContact); String print = JsonFormat.printer().print(newContact);
Contact contact = new Gson().fromJson(print, Contact.class); Contact contact = new Gson().fromJson(print, Contact.class);
contacts.put(contact.getContactUserId(),contact); contacts.put(contact.getContactUserId(),contact);
callback.onSuccess(); callback.onSuccess();
......
...@@ -66,11 +66,8 @@ public class SocketManageer { ...@@ -66,11 +66,8 @@ public class SocketManageer {
.setTs(ts) .setTs(ts)
.setSign(sign) .setSign(sign)
.build(); .build();
Common.RequestMessageHeader header = Common.RequestMessageHeader.newBuilder().setVersion(1).setSeq(1).build(); int idPlus = sendRequest(builder);
Chat.ChatRequestMessage build = Chat.ChatRequestMessage.newBuilder().setConnectReq(builder).setHeader(header).build(); callBackManager.addCallBack(idPlus, new ResultEventCallback<Chat.ChatResponseMessage>() {
OkSocket.open(getChatInfo())
.send(new IrequestData(build.toByteArray()));
callBackManager.addCallBack(idPlus(), new ResultEventCallback<Chat.ChatResponseMessage>() {
@Override @Override
public void onSuccess(Chat.ChatResponseMessage chatResponseMessage) { public void onSuccess(Chat.ChatResponseMessage chatResponseMessage) {
onConnectListener.onSocketConnection(); onConnectListener.onSocketConnection();
...@@ -251,6 +248,8 @@ public class SocketManageer { ...@@ -251,6 +248,8 @@ public class SocketManageer {
builder.setConnectionStateAckReq((Chat.ConnectionStateAckRequest) request); builder.setConnectionStateAckReq((Chat.ConnectionStateAckRequest) request);
} else if (request instanceof ContactOuterClass.DeleteContactGroupRequest) { } else if (request instanceof ContactOuterClass.DeleteContactGroupRequest) {
builder.setDeleteContactGroupReq((ContactOuterClass.DeleteContactGroupRequest) request); builder.setDeleteContactGroupReq((ContactOuterClass.DeleteContactGroupRequest) request);
} else if (request instanceof Chat.ConnectRequest){
builder.setConnectReq((Chat.ConnectRequest) request);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment