Commit 57f5faf0 authored by sheteng's avatar sheteng

xiugai extdata

parent 097174c8
...@@ -52,6 +52,7 @@ dependencies { ...@@ -52,6 +52,7 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:2.1.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
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 'org.greenrobot:eventbus:3.1.1'
// implementation(name: 'ccim-release', ext: 'aar') // implementation(name: 'ccim-release', ext: 'aar')
implementation project(path: ':ccim') implementation project(path: ':ccim')
......
...@@ -22,10 +22,7 @@ ...@@ -22,10 +22,7 @@
android:name=".MainActivity2" android:name=".MainActivity2"
android:exported="false" android:exported="false"
android:label="@string/title_activity_main2" android:label="@string/title_activity_main2"
android:screenOrientation="portrait" /> <!-- <activity --> android:screenOrientation="portrait" />
<!-- android:name=".ui.login.LoginActivity" -->
<!-- android:exported="false" -->
<!-- android:label="@string/title_activity_login" /> -->
<activity <activity
android:name=".ui.login.LoginActivity" android:name=".ui.login.LoginActivity"
android:label="@string/app_name" android:label="@string/app_name"
......
This diff is collapsed.
package com.ccwangluo.im;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import androidx.appcompat.app.AppCompatActivity;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import com.ccwangluo.im.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
private AppBarConfiguration appBarConfiguration;
private ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
setSupportActionBar(binding.toolbar);
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
appBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph()).build();
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu) ;
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
return NavigationUI.navigateUp(navController, appBarConfiguration)
|| super.onSupportNavigateUp();
}
}
\ No newline at end of file
...@@ -24,6 +24,8 @@ import com.ccwangluo.im.data.LoginViewModel; ...@@ -24,6 +24,8 @@ import com.ccwangluo.im.data.LoginViewModel;
import com.ccwangluo.im.databinding.ActivityMain2Binding; import com.ccwangluo.im.databinding.ActivityMain2Binding;
import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.android.material.bottomnavigation.BottomNavigationView;
import org.greenrobot.eventbus.EventBus;
public class MainActivity2 extends AppCompatActivity { public class MainActivity2 extends AppCompatActivity {
private LoginViewModel loginViewModel; private LoginViewModel loginViewModel;
...@@ -53,18 +55,19 @@ public class MainActivity2 extends AppCompatActivity { ...@@ -53,18 +55,19 @@ public class MainActivity2 extends AppCompatActivity {
loginViewModel = new ViewModelProvider(this) loginViewModel = new ViewModelProvider(this)
.get(LoginViewModel.class); .get(LoginViewModel.class);
CCIMClient.getInstance().registerMessageListener(new OnPushMsgListener() { CCIMClient.getInstance().registerMessageListener(new OnPushMsgListener() {
@Override @Override
public void pushPrivateMsg(MessageContent msg) { public void pushPrivateMsg(MessageContent msg) {
loginViewModel.addPrivateMsg(msg); loginViewModel.addPrivateMsg(msg);
loginViewModel.getContactList(); loginViewModel.getContactList();
EventBus.getDefault().post(msg);
} }
@Override @Override
public void pushChannelMsg(MessageContent msg) { public void pushChannelMsg(MessageContent msg) {
loginViewModel.addChannelMsg(msg); loginViewModel.addChannelMsg(msg);
EventBus.getDefault().post(msg);
} }
@Override @Override
......
...@@ -16,15 +16,15 @@ import com.ccwangluo.ccim.listener.ResultEventCallback; ...@@ -16,15 +16,15 @@ import com.ccwangluo.ccim.listener.ResultEventCallback;
import com.ccwangluo.ccim.modle.MessageContent; import com.ccwangluo.ccim.modle.MessageContent;
import com.ccwangluo.im.R; import com.ccwangluo.im.R;
import java.util.Collection; import java.util.List;
public class PrivateMsgAdapter extends BaseAdapter { public class PrivateMsgAdapter extends BaseAdapter {
private Collection<MessageContent> dataList; private List<MessageContent> dataList;
private Context context; private Context context;
public PrivateMsgAdapter(Collection<MessageContent> dataList, Context context) { public PrivateMsgAdapter(List<MessageContent> dataList, Context context) {
this.dataList = dataList; this.dataList = dataList;
this.context = context; this.context = context;
} }
...@@ -46,7 +46,7 @@ public class PrivateMsgAdapter extends BaseAdapter { ...@@ -46,7 +46,7 @@ public class PrivateMsgAdapter extends BaseAdapter {
@Override @Override
public Object getItem(int position) { public Object getItem(int position) {
return position; return dataList.get(position);
} }
@Override @Override
...@@ -68,7 +68,7 @@ public class PrivateMsgAdapter extends BaseAdapter { ...@@ -68,7 +68,7 @@ public class PrivateMsgAdapter extends BaseAdapter {
} else { } else {
mHolder = (ViewHolder) convertView.getTag(); mHolder = (ViewHolder) convertView.getTag();
} }
MessageContent message = (MessageContent) dataList.toArray()[position]; MessageContent message = dataList.get(position);
if (message.getSenderUserId() != null) { if (message.getSenderUserId() != null) {
mHolder.msg_content.setVisibility(View.VISIBLE); mHolder.msg_content.setVisibility(View.VISIBLE);
mHolder.msg_content_send.setVisibility(View.GONE); mHolder.msg_content_send.setVisibility(View.GONE);
......
...@@ -14,6 +14,7 @@ import com.ccwangluo.ccim.modle.Dialog; ...@@ -14,6 +14,7 @@ import com.ccwangluo.ccim.modle.Dialog;
import com.ccwangluo.ccim.modle.MessageContent; import com.ccwangluo.ccim.modle.MessageContent;
import com.ccwangluo.ccim.modle.PullContactsRes; import com.ccwangluo.ccim.modle.PullContactsRes;
import com.ccwangluo.ccim.util.HmacUtil; import com.ccwangluo.ccim.util.HmacUtil;
import com.ccwangluo.im.util.ToastUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
...@@ -48,7 +49,7 @@ public class LoginViewModel extends ViewModel { ...@@ -48,7 +49,7 @@ public class LoginViewModel extends ViewModel {
@Override @Override
public void onSocketDisconnection(int code) { public void onSocketDisconnection(int code) {
System.out.println("onSocketDisconnection"); ToastUtil.show(context,"onSocketDisconnection + " + code);
//重连 //重连
// login(context, appKey, appsecret, username, userId, ip, port); // login(context, appKey, appsecret, username, userId, ip, port);
} }
......
...@@ -17,14 +17,18 @@ import com.ccwangluo.im.data.LoginViewModel; ...@@ -17,14 +17,18 @@ import com.ccwangluo.im.data.LoginViewModel;
import com.ccwangluo.im.databinding.ActivityConnectBinding; import com.ccwangluo.im.databinding.ActivityConnectBinding;
import com.ccwangluo.im.util.ToastUtil; import com.ccwangluo.im.util.ToastUtil;
import java.util.HashMap; import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class ConnectActivity extends AppCompatActivity { public class ConnectActivity extends AppCompatActivity {
private ActivityConnectBinding binding; private ActivityConnectBinding binding;
private LoginViewModel loginViewModel; private LoginViewModel loginViewModel;
private PrivateMsgAdapter privaetMsgAdapter; private PrivateMsgAdapter privaetMsgAdapter;
private HashMap<Long,MessageContent> map = new HashMap<>(); private List<MessageContent> list = new ArrayList<>();
private String filePath; private String filePath;
private boolean isSuccess = false; private boolean isSuccess = false;
...@@ -36,7 +40,7 @@ public class ConnectActivity extends AppCompatActivity { ...@@ -36,7 +40,7 @@ public class ConnectActivity extends AppCompatActivity {
loginViewModel = new ViewModelProvider(this) loginViewModel = new ViewModelProvider(this)
.get(LoginViewModel.class); .get(LoginViewModel.class);
privaetMsgAdapter = new PrivateMsgAdapter(map.values(),this); privaetMsgAdapter = new PrivateMsgAdapter(list,this);
binding.msgList.setAdapter(privaetMsgAdapter); binding.msgList.setAdapter(privaetMsgAdapter);
...@@ -46,7 +50,7 @@ public class ConnectActivity extends AppCompatActivity { ...@@ -46,7 +50,7 @@ public class ConnectActivity extends AppCompatActivity {
@Override @Override
public void onChanged(MessageContent messageContent) { public void onChanged(MessageContent messageContent) {
if (messageContent.getSenderUserId().equals(contact.getContactUserId()) || messageContent.getReciveUserId().equals(contact.getContactUserId())) { if (messageContent.getSenderUserId().equals(contact.getContactUserId()) || messageContent.getReciveUserId().equals(contact.getContactUserId())) {
map.put(messageContent.getMsgId(),messageContent); list.add(messageContent);
privaetMsgAdapter.refreshData(); privaetMsgAdapter.refreshData();
binding.msgList.setSelection(privaetMsgAdapter.getCount() - 1); binding.msgList.setSelection(privaetMsgAdapter.getCount() - 1);
} }
...@@ -114,7 +118,7 @@ public class ConnectActivity extends AppCompatActivity { ...@@ -114,7 +118,7 @@ public class ConnectActivity extends AppCompatActivity {
@Override @Override
public void onSuccess(List<MessageContent> messageContents) { public void onSuccess(List<MessageContent> messageContents) {
for (MessageContent messageContent : messageContents) { for (MessageContent messageContent : messageContents) {
map.put(messageContent.getMsgId(),messageContent); list.add(messageContent);
} }
privaetMsgAdapter.refreshData(); privaetMsgAdapter.refreshData();
binding.msgList.setSelection(privaetMsgAdapter.getCount() - 1); binding.msgList.setSelection(privaetMsgAdapter.getCount() - 1);
...@@ -125,5 +129,18 @@ public class ConnectActivity extends AppCompatActivity { ...@@ -125,5 +129,18 @@ public class ConnectActivity extends AppCompatActivity {
} }
}); });
EventBus.getDefault().register(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onGetMessage(MessageContent message) {
loginViewModel.addPrivateMsg(message);
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
} }
} }
\ No newline at end of file
package com.ccwangluo.im.ui.dashboard;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import com.ccwangluo.ccim.CCIMClient;
import com.ccwangluo.ccim.listener.ResultEventCallback;
import com.ccwangluo.ccim.modle.Contact;
import com.ccwangluo.ccim.modle.MessageContent;
import com.ccwangluo.im.adapter.PrivateMsgAdapter;
import com.ccwangluo.im.data.LoginViewModel;
import com.ccwangluo.im.databinding.FragmentConnectBinding;
import com.ccwangluo.im.util.ToastUtil;
import java.util.HashMap;
import java.util.List;
public class ConnectFragment extends Fragment {
private FragmentConnectBinding binding;
private LoginViewModel loginViewModel;
private PrivateMsgAdapter privaetMsgAdapter;
private HashMap<Long,MessageContent> map = new HashMap<>();
private String filePath;
private boolean isSuccess = false;
@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(map.values(), getContext());
binding.msgList.setAdapter(privaetMsgAdapter);
Contact contact = (Contact) getArguments().getSerializable("contact");
loginViewModel.privateMsgList.observe(getViewLifecycleOwner(), new Observer<MessageContent>() {
@Override
public void onChanged(MessageContent messageContent) {
if (messageContent.getSenderUserId().equals(contact.getContactUserId()) || messageContent.getReciveUserId().equals(contact.getContactUserId())) {
map.put(messageContent.getMsgId(),messageContent);
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(), contact.getContactUserName(), new ResultEventCallback<MessageContent>() {
@Override
public void onSuccess(MessageContent messageContent) {
binding.sendEdit.setText("");
loginViewModel.addPrivateMsg(messageContent);
ToastUtil.show(getContext(), "send Success");
}
@Override
public void onFailed(int errorCode) {
ToastUtil.show(getContext(), "send onFailed :" + errorCode);
}
});
}
});
binding.sendVoice.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
if (isSuccess)
CCIMClient.getInstance().stopAndSendAudioMessage(contact.getContactUserId(), contact.getContactUserName(), new ResultEventCallback<MessageContent>() {
@Override
public void onSuccess(MessageContent message) {
binding.sendEdit.setText("");
loginViewModel.addPrivateMsg(message);
ToastUtil.show(getContext(), "send Success");
}
@Override
public void onFailed(int errorCode) {
ToastUtil.show(getContext(), "send onFailed :" + errorCode);
}
});
}
if (event.getAction() == MotionEvent.ACTION_DOWN) {
CCIMClient.getInstance().startRecordAudioMessage(getActivity(), new ResultEventCallback<Void>() {
@Override
public void onSuccess(Void unused) {
isSuccess = true;
}
@Override
public void onFailed(int errorCode) {
isSuccess = false;
ToastUtil.show(getContext(), errorCode + "");
}
});
}
return false;
}
});
CCIMClient.getInstance().getPrivateMessage(contact.getContactUserId(), new ResultEventCallback<List<MessageContent>>() {
@Override
public void onSuccess(List<MessageContent> messageContents) {
for (MessageContent messageContent : messageContents) {
map.put(messageContent.getMsgId(),messageContent);
}
privaetMsgAdapter.refreshData();
binding.msgList.setSelection(privaetMsgAdapter.getCount() - 1);
}
@Override
public void onFailed(int errorCode) {
}
});
return binding.getRoot();
}
}
\ No newline at end of file
...@@ -2,6 +2,7 @@ package com.ccwangluo.im.ui.dashboard; ...@@ -2,6 +2,7 @@ package com.ccwangluo.im.ui.dashboard;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
...@@ -23,7 +24,6 @@ import com.ccwangluo.ccim.modle.ContactGroup; ...@@ -23,7 +24,6 @@ import com.ccwangluo.ccim.modle.ContactGroup;
import com.ccwangluo.ccim.modle.Dialog; import com.ccwangluo.ccim.modle.Dialog;
import com.ccwangluo.ccim.modle.SearchRes; import com.ccwangluo.ccim.modle.SearchRes;
import com.ccwangluo.ccim.modle.User; import com.ccwangluo.ccim.modle.User;
import com.ccwangluo.im.R;
import com.ccwangluo.im.adapter.ContactExpandableAdapter; import com.ccwangluo.im.adapter.ContactExpandableAdapter;
import com.ccwangluo.im.data.LoginViewModel; import com.ccwangluo.im.data.LoginViewModel;
import com.ccwangluo.im.databinding.FragmentDashboardBinding; import com.ccwangluo.im.databinding.FragmentDashboardBinding;
...@@ -56,9 +56,12 @@ public class ContactsFragment extends Fragment { ...@@ -56,9 +56,12 @@ public class ContactsFragment extends Fragment {
contactExpandableAdapter = new ContactExpandableAdapter(getContext(), contactGroupList, contactList, loginViewModel, new OnContactClickLisener() { contactExpandableAdapter = new ContactExpandableAdapter(getContext(), contactGroupList, contactList, loginViewModel, new OnContactClickLisener() {
@Override @Override
public void onClick(Contact contact) { public void onClick(Contact contact) {
Bundle bundle = new Bundle(); // Bundle bundle = new Bundle();
bundle.putSerializable("contact", contact); // bundle.putSerializable("contact", contact);
navController.navigate(R.id.navigation_connect, bundle); // navController.navigate(R.id.navigation_connect, bundle);
Intent intent = new Intent(getContext(), ConnectActivity.class);
intent.putExtra("contact", contact);
startActivity(intent);
} }
}); });
......
...@@ -16,6 +16,10 @@ import com.ccwangluo.im.data.LoginViewModel; ...@@ -16,6 +16,10 @@ import com.ccwangluo.im.data.LoginViewModel;
import com.ccwangluo.im.databinding.ActivityConnectChannelBinding; import com.ccwangluo.im.databinding.ActivityConnectChannelBinding;
import com.ccwangluo.im.util.ToastUtil; import com.ccwangluo.im.util.ToastUtil;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -123,5 +127,19 @@ public class ConnectChannelActivity extends AppCompatActivity { ...@@ -123,5 +127,19 @@ public class ConnectChannelActivity extends AppCompatActivity {
return false; return false;
} }
}); });
EventBus.getDefault().register(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onGetMessage(MessageContent message) {
loginViewModel.addChannelMsg(message);
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
} }
} }
\ No newline at end of file
...@@ -39,7 +39,6 @@ import java.util.concurrent.Executors; ...@@ -39,7 +39,6 @@ import java.util.concurrent.Executors;
import java.util.logging.Logger; import java.util.logging.Logger;
import ccim.protocol.Chat; import ccim.protocol.Chat;
import ccim.protocol.Message;
import ccim.protocol.MessageSpec; import ccim.protocol.MessageSpec;
import ccim.protocol.Push; import ccim.protocol.Push;
...@@ -360,8 +359,8 @@ public class CCIMClient { ...@@ -360,8 +359,8 @@ public class CCIMClient {
/** /**
* 同步离线消息 * 同步离线消息
*/ */
private void getOfflineMessage(Long lastPullMsgId, ResultEventCallback<List<Message.PullOfflineMessageResponse.OfflineMessage>> resultEventCallback) { private void getOfflineMessage(Long contactId,ResultEventCallback<List<MessageContent>> resultEventCallback) {
messageManager.getOfflineMessage(lastPullMsgId, resultEventCallback); messageManager.getOfflineMessage(contactId,resultEventCallback);
} }
/** /**
......
...@@ -22,4 +22,7 @@ public interface MessageDao { ...@@ -22,4 +22,7 @@ public interface MessageDao {
@Query("SELECT * FROM messagecontent where msgId = :msgId") @Query("SELECT * FROM messagecontent where msgId = :msgId")
MessageContent getMsgById(Long msgId); MessageContent getMsgById(Long msgId);
@Query("SELECT * FROM messagecontent where senderUserId = :userId or reciveUserId = :userId")
MessageContent getLastMsgById(Long userId);
} }
...@@ -9,10 +9,12 @@ import com.ccwangluo.ccim.database.AppDatabase; ...@@ -9,10 +9,12 @@ import com.ccwangluo.ccim.database.AppDatabase;
import com.ccwangluo.ccim.listener.ResultEventCallback; import com.ccwangluo.ccim.listener.ResultEventCallback;
import com.ccwangluo.ccim.modle.MessageContent; import com.ccwangluo.ccim.modle.MessageContent;
import com.ccwangluo.ccim.modle.PullMessageRes; import com.ccwangluo.ccim.modle.PullMessageRes;
import com.ccwangluo.ccim.modle.PullOffLineMessageRes;
import com.ccwangluo.ccim.util.ErrorCode; import com.ccwangluo.ccim.util.ErrorCode;
import com.ccwangluo.ccim.util.FileUtils; import com.ccwangluo.ccim.util.FileUtils;
import com.ccwangluo.ccim.util.MediaHelper; import com.ccwangluo.ccim.util.MediaHelper;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.util.JsonFormat; import com.google.protobuf.util.JsonFormat;
import java.io.File; import java.io.File;
...@@ -51,7 +53,13 @@ public class MessageManager { ...@@ -51,7 +53,13 @@ public class MessageManager {
/** /**
* 同步离线消息 * 同步离线消息
*/ */
public void getOfflineMessage(Long lastPullMsgId, ResultEventCallback<List<Message.PullOfflineMessageResponse.OfflineMessage>> resultEventCallback) { public void getOfflineMessage(Long contactId, ResultEventCallback<List<MessageContent>> resultEventCallback) {
executor.execute(() -> {
long lastPullMsgId = 0;
MessageContent lastMsgById = db.messageDao().getLastMsgById(contactId);
if (lastMsgById != null) {
lastPullMsgId = lastMsgById.getMsgId();
}
Message.PullOfflineMessageRequest offlineMessageRequest = Message.PullOfflineMessageRequest.newBuilder() Message.PullOfflineMessageRequest offlineMessageRequest = Message.PullOfflineMessageRequest.newBuilder()
.setLastPulledMsgId(lastPullMsgId) .setLastPulledMsgId(lastPullMsgId)
.build(); .build();
...@@ -63,8 +71,21 @@ public class MessageManager { ...@@ -63,8 +71,21 @@ public class MessageManager {
public void onSuccess(Chat.ChatResponseMessage chatResponseMessage) { public void onSuccess(Chat.ChatResponseMessage chatResponseMessage) {
if (chatResponseMessage.hasPullOfflineMsgRes()) { if (chatResponseMessage.hasPullOfflineMsgRes()) {
logger.info(String.valueOf(chatResponseMessage)); logger.info(String.valueOf(chatResponseMessage));
List<Message.PullOfflineMessageResponse.OfflineMessage> offlineMsgsList = chatResponseMessage.getPullOfflineMsgRes().getOfflineMsgsList(); Gson gson = new Gson();
resultEventCallback.onSuccess(offlineMsgsList); try {
String print = JsonFormat.printer().print(chatResponseMessage.getPullOfflineMsgRes());
PullOffLineMessageRes pullOffLineMessageRes = gson.fromJson(print, PullOffLineMessageRes.class);
List<MessageContent> message = pullOffLineMessageRes.getOfflineMessages();
for (MessageContent messageContent : message) {
if (!messageContent.getSenderUserId().equals(userId)) {
messageContent.setReciveUserId(userId);
}
}
resultEventCallback.onSuccess(message);
pushNewMessageList(message);
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
} }
} }
...@@ -73,6 +94,8 @@ public class MessageManager { ...@@ -73,6 +94,8 @@ public class MessageManager {
resultEventCallback.onFailed(errorCode); resultEventCallback.onFailed(errorCode);
} }
}); });
});
} }
......
...@@ -15,6 +15,15 @@ public class MessageContent { ...@@ -15,6 +15,15 @@ public class MessageContent {
private Long channelId; private Long channelId;
private MessageType msgType = MessageType.MESSAGE_TYPE_TEXT; private MessageType msgType = MessageType.MESSAGE_TYPE_TEXT;
private MessageSourceType msgSrcType = MessageSourceType.MESSAGE_SOURCE_TYPE_PRIVATE; private MessageSourceType msgSrcType = MessageSourceType.MESSAGE_SOURCE_TYPE_PRIVATE;
private User senderUser;
public User getSenderUser() {
return senderUser;
}
public void setSenderUser(User senderUser) {
this.senderUser = senderUser;
}
public MessageType getMsgType() { public MessageType getMsgType() {
return msgType; return msgType;
......
package com.ccwangluo.ccim.modle;
import java.util.List;
public class PullOffLineMessageRes {
private List<MessageContent> offlineMessages;
public List<MessageContent> getOfflineMessages() {
return offlineMessages;
}
public void setOfflineMessages(List<MessageContent> offlineMessages) {
this.offlineMessages = offlineMessages;
}
}
...@@ -9,6 +9,15 @@ public class User { ...@@ -9,6 +9,15 @@ public class User {
private Long userId; private Long userId;
private String username; private String username;
private String extData;
public String getExtData() {
return extData;
}
public void setExtData(String extData) {
this.extData = extData;
}
public Long getUserId() { public Long getUserId() {
return userId; return userId;
......
...@@ -7,6 +7,8 @@ message CreateChannelRequest { ...@@ -7,6 +7,8 @@ message CreateChannelRequest {
string tag = 2; string tag = 2;
bool open = 3; bool open = 3;
repeated int64 user_ids = 4; repeated int64 user_ids = 4;
int32 limit = 5;
string game_server = 6;
} }
message CreateChannelResponse { message CreateChannelResponse {
...@@ -37,7 +39,7 @@ message ExitChannelResponse { ...@@ -37,7 +39,7 @@ message ExitChannelResponse {
message ChannelBlockUserRequest { message ChannelBlockUserRequest {
int64 channel_id = 1; int64 channel_id = 1;
int64 blocked_user_id = 2; int64 blocked_user_id = 2;
int64 expired_at_millis = 3; // 频道拉黑到期时间,毫秒 int64 expired_at_millis = 3;
} }
message ChannelBlockUserResponse { message ChannelBlockUserResponse {
......
...@@ -153,6 +153,7 @@ message SearchResponse { ...@@ -153,6 +153,7 @@ message SearchResponse {
message User { message User {
int64 user_id = 1; int64 user_id = 1;
string username = 2; string username = 2;
string ext_data = 3;
} }
repeated User users = 1; repeated User users = 1;
int32 total = 2; int32 total = 2;
......
...@@ -38,6 +38,7 @@ message Dialog { ...@@ -38,6 +38,7 @@ message Dialog {
message ContactReqData { message ContactReqData {
int64 user_id = 1; int64 user_id = 1;
string username = 2; string username = 2;
string ext_data = 3;
} }
message AddContactResponse { message AddContactResponse {
......
...@@ -35,17 +35,13 @@ message SendChannelMessageResponse { ...@@ -35,17 +35,13 @@ message SendChannelMessageResponse {
} }
message PullOfflineMessageRequest { message PullOfflineMessageRequest {
int64 last_pulled_msg_id = 1; int64 last_pulled_msg_id = 1; // 本地存储最后一条私聊消息id,调用此接口时带上,若没有填0
int32 limit = 2; // 条数
} }
message PullOfflineMessageResponse { message PullOfflineMessageResponse {
message OfflineMessage { // repeated OfflineMessage offline_msgs = 1; reserved for compatibility
int64 msg_src_id = 1; repeated ChatMessage offline_messages = 2;
MessageSourceType msg_src_type = 2;
ChatMessage message = 3;
int64 send_date = 4;
}
repeated OfflineMessage offline_msgs = 1;
} }
message PullPrivateMessageRequest { message PullPrivateMessageRequest {
......
...@@ -13,6 +13,12 @@ enum MessageSourceType { ...@@ -13,6 +13,12 @@ enum MessageSourceType {
} }
message ChatMessage { message ChatMessage {
message UserInfo {
int64 user_id = 1;
string username = 2;
string ext_data = 3;
}
int64 msg_id = 1; int64 msg_id = 1;
int64 sender_user_id = 2; int64 sender_user_id = 2;
int64 msg_src_id = 3; int64 msg_src_id = 3;
...@@ -21,4 +27,6 @@ message ChatMessage { ...@@ -21,4 +27,6 @@ message ChatMessage {
string content = 6; string content = 6;
int64 created_date = 7; int64 created_date = 7;
int64 modified_date = 8; int64 modified_date = 8;
UserInfo sender_user = 9;
} }
\ No newline at end of file
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