|
|
@@ -5,6 +5,7 @@ import android.content.Context;
|
|
|
import android.content.Intent;
|
|
|
import android.os.Bundle;
|
|
|
import android.os.IBinder;
|
|
|
+import android.text.TextUtils;
|
|
|
import android.view.MotionEvent;
|
|
|
import android.view.View;
|
|
|
import android.view.inputmethod.InputMethodManager;
|
|
|
@@ -12,16 +13,25 @@ import android.widget.Button;
|
|
|
import android.widget.EditText;
|
|
|
import android.widget.ImageView;
|
|
|
import android.widget.LinearLayout;
|
|
|
+import android.widget.Toast;
|
|
|
|
|
|
import com.bumptech.glide.Glide;
|
|
|
import com.netease.nim.uikit.NimUIKit;
|
|
|
+import com.netease.nim.uikit.cache.TeamDataCache;
|
|
|
import com.netease.nim.uikit.common.media.picker.PickImageHelper;
|
|
|
import com.netease.nim.uikit.common.media.picker.activity.PickImageActivity;
|
|
|
import com.netease.nim.uikit.common.media.picker.model.PhotoInfo;
|
|
|
+import com.netease.nim.uikit.common.ui.dialog.DialogMaker;
|
|
|
import com.netease.nim.uikit.common.ui.imageview.HeadImageView;
|
|
|
import com.netease.nim.uikit.contact_selector.activity.ContactSelectActivity;
|
|
|
+import com.netease.nim.uikit.session.actions.PickImageAction;
|
|
|
+import com.netease.nim.uikit.session.activity.TeamMessageActivity;
|
|
|
+import com.netease.nimlib.sdk.AbortableFuture;
|
|
|
import com.netease.nimlib.sdk.NIMClient;
|
|
|
import com.netease.nimlib.sdk.RequestCallback;
|
|
|
+import com.netease.nimlib.sdk.RequestCallbackWrapper;
|
|
|
+import com.netease.nimlib.sdk.ResponseCode;
|
|
|
+import com.netease.nimlib.sdk.nos.NosService;
|
|
|
import com.netease.nimlib.sdk.team.TeamService;
|
|
|
import com.netease.nimlib.sdk.team.constant.TeamBeInviteModeEnum;
|
|
|
import com.netease.nimlib.sdk.team.constant.TeamFieldEnum;
|
|
|
@@ -32,14 +42,18 @@ import com.netease.nimlib.sdk.team.model.Team;
|
|
|
import com.netease.nimlib.sdk.uinfo.UserService;
|
|
|
import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
|
|
|
import com.sheishuo.app.R;
|
|
|
+import com.sheishuo.app.cache.AccountCache;
|
|
|
import com.sheishuo.app.common.util.img.ImgUtil;
|
|
|
import com.sheishuo.app.common.util.net.INet;
|
|
|
import com.sheishuo.app.common.util.net.NetImpl;
|
|
|
import com.sheishuo.app.common.util.net.ResponseCallback;
|
|
|
import com.sheishuo.app.common.views.BaseToolbar;
|
|
|
+import com.sheishuo.app.core_module.mine.view.ui.activity.PersonalSettingsActivity;
|
|
|
+import com.sheishuo.app.impl.SheishuoTeamMessageActivity;
|
|
|
import com.sheishuo.app.impl.SheishuoUI;
|
|
|
import com.sheishuo.app.impl.SheishuoUIKit;
|
|
|
|
|
|
+import java.io.File;
|
|
|
import java.io.Serializable;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
@@ -54,6 +68,7 @@ import jp.wasabeef.glide.transformations.CropCircleTransformation;
|
|
|
|
|
|
public class CreateNewGroupActivity extends SheishuoUI {
|
|
|
|
|
|
+ public static final int AVATAR_TIME_OUT = 30000;
|
|
|
|
|
|
private String TAG = this.getClass().getSimpleName();
|
|
|
private Context context = this;
|
|
|
@@ -67,6 +82,8 @@ public class CreateNewGroupActivity extends SheishuoUI {
|
|
|
private String avatarIcon = "";
|
|
|
private List<String> memberIds = new ArrayList<>();
|
|
|
|
|
|
+ AbortableFuture<String> uploadAvatarFuture;
|
|
|
+
|
|
|
@Override
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
super.onCreate(savedInstanceState);
|
|
|
@@ -110,14 +127,30 @@ public class CreateNewGroupActivity extends SheishuoUI {
|
|
|
createGroupBtn.setOnClickListener(new View.OnClickListener() {
|
|
|
@Override
|
|
|
public void onClick(View v) {
|
|
|
- String groupName = groupNameTV.getText().toString().trim();
|
|
|
- String groupIntroduce = groupAnnouncementTV.getText().toString().trim();
|
|
|
+ final String groupName = groupNameTV.getText().toString().trim();
|
|
|
+ final String groupIntroduce = groupAnnouncementTV.getText().toString().trim();
|
|
|
|
|
|
if (avatarIcon.isEmpty() || groupName.isEmpty() || groupIntroduce.isEmpty()) {
|
|
|
showToast(context, "请先完善群信息");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ List<Team> teamList = TeamDataCache.getInstance().getAllAdvancedTeams();
|
|
|
+ int count = 0;
|
|
|
+ for(int i=0; i<teamList.size(); i++)
|
|
|
+ {
|
|
|
+ Team team = teamList.get(i);
|
|
|
+ if(team.getCreator().equals(AccountCache.getAccount().getId()))
|
|
|
+ {
|
|
|
+ count++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(count >= 6)
|
|
|
+ {
|
|
|
+ showToast(context, "已达创建群的上限");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
if (groupName.contains("国家")
|
|
|
||groupName.contains("省")
|
|
|
||groupName.contains("市")
|
|
|
@@ -129,30 +162,68 @@ public class CreateNewGroupActivity extends SheishuoUI {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- Map<TeamFieldEnum, Serializable> teamInfoMap = new HashMap<>();
|
|
|
- teamInfoMap.put(TeamFieldEnum.Name, groupName);
|
|
|
- teamInfoMap.put(TeamFieldEnum.Introduce, groupIntroduce);
|
|
|
- teamInfoMap.put(TeamFieldEnum.VerifyType, VerifyTypeEnum.Free);
|
|
|
- teamService.createTeam(teamInfoMap, TeamTypeEnum.Advanced, "邀请您加入群:"+groupName, memberIds).setCallback(new RequestCallback<Team>() {
|
|
|
+ DialogMaker.showProgressDialog(context, "", false);
|
|
|
+ getHandler().postDelayed(outimeTask, AVATAR_TIME_OUT);
|
|
|
+ uploadAvatarFuture = NIMClient.getService(NosService.class).upload(new File(avatarIcon), PickImageAction.MIME_JPEG);
|
|
|
+ uploadAvatarFuture.setCallback(new RequestCallbackWrapper<String>() {
|
|
|
@Override
|
|
|
- public void onSuccess(Team team) {
|
|
|
- createTeamComplete(team);
|
|
|
+ public void onResult(int code, String url, Throwable exception) {
|
|
|
+ if (code == ResponseCode.RES_SUCCESS && !TextUtils.isEmpty(url)) {
|
|
|
+ createTeam(groupName, groupIntroduce, url);
|
|
|
+ } else {
|
|
|
+ Toast.makeText(CreateNewGroupActivity.this, "上传图片失败", Toast
|
|
|
+ .LENGTH_SHORT).show();
|
|
|
+ onUpdateDone();
|
|
|
+ }
|
|
|
}
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void onFailed(int i) {
|
|
|
- showToast(context, "创建群组失败,错误代码:" + i);
|
|
|
- }
|
|
|
+ private void cancelUpload(String info) {
|
|
|
+ if (uploadAvatarFuture != null) {
|
|
|
+ uploadAvatarFuture.abort();
|
|
|
+ Toast.makeText(context, info, Toast.LENGTH_SHORT).show();
|
|
|
+ onUpdateDone();
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void onException(Throwable throwable) {
|
|
|
- throwable.printStackTrace();
|
|
|
- showToast(context, "创建群组失败");
|
|
|
- }
|
|
|
- });
|
|
|
+ private Runnable outimeTask = new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ cancelUpload("上传图片失败");
|
|
|
+ }
|
|
|
+ };
|
|
|
|
|
|
+ private void onUpdateDone() {
|
|
|
+ uploadAvatarFuture = null;
|
|
|
+ DialogMaker.dismissProgressDialog();
|
|
|
+ }
|
|
|
|
|
|
+ private void createTeam(String name, String intro, String icon)
|
|
|
+ {
|
|
|
+ Map<TeamFieldEnum, Serializable> teamInfoMap = new HashMap<>();
|
|
|
+ teamInfoMap.put(TeamFieldEnum.Name, name);
|
|
|
+ teamInfoMap.put(TeamFieldEnum.Introduce, intro);
|
|
|
+ teamInfoMap.put(TeamFieldEnum.VerifyType, VerifyTypeEnum.Free);
|
|
|
+ teamInfoMap.put(TeamFieldEnum.ICON, icon);
|
|
|
+ NIMClient.getService(TeamService.class).createTeam(teamInfoMap, TeamTypeEnum.Advanced, "邀请您加入群:"+name, memberIds).setCallback(new RequestCallback<Team>() {
|
|
|
+ @Override
|
|
|
+ public void onSuccess(Team team) {
|
|
|
+ createTeamComplete(team);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onFailed(int i) {
|
|
|
+ showToast(context, "创建群组失败,错误代码:" + i);
|
|
|
+ }
|
|
|
|
|
|
+ @Override
|
|
|
+ public void onException(Throwable throwable) {
|
|
|
+ throwable.printStackTrace();
|
|
|
+ showToast(context, "创建群组失败");
|
|
|
+ DialogMaker.dismissProgressDialog();
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
@@ -184,6 +255,7 @@ public class CreateNewGroupActivity extends SheishuoUI {
|
|
|
}
|
|
|
});
|
|
|
SheishuoUIKit.startTeamSession(context, team.getId());
|
|
|
+ DialogMaker.dismissProgressDialog();
|
|
|
finish();
|
|
|
}
|
|
|
|
|
|
@@ -256,7 +328,7 @@ public class CreateNewGroupActivity extends SheishuoUI {
|
|
|
//群头像选择
|
|
|
Bundle result = data.getExtras();
|
|
|
List<PhotoInfo> photoInfoList = (List<PhotoInfo>) result.getSerializable("photo_list");
|
|
|
- avatarIcon = photoInfoList.get(0).getFilePath();
|
|
|
+ avatarIcon = photoInfoList.get(0).getAbsolutePath();
|
|
|
Glide.with(context)
|
|
|
.load(avatarIcon)
|
|
|
.into(groupAvatar);
|