|
@@ -8,6 +8,7 @@ import android.util.Log;
|
|
import com.cooleshow.base.data.net.BaseResponse;
|
|
import com.cooleshow.base.data.net.BaseResponse;
|
|
import com.cooleshow.base.presenter.BasePresenter;
|
|
import com.cooleshow.base.presenter.BasePresenter;
|
|
import com.cooleshow.base.rx.BaseObserver;
|
|
import com.cooleshow.base.rx.BaseObserver;
|
|
|
|
+import com.cooleshow.base.utils.GsonUtils;
|
|
import com.cooleshow.base.utils.RequestBodyUtil;
|
|
import com.cooleshow.base.utils.RequestBodyUtil;
|
|
import com.cooleshow.usercenter.helper.UserHelper;
|
|
import com.cooleshow.usercenter.helper.UserHelper;
|
|
import com.daya.tclive.api.StudentAPIService;
|
|
import com.daya.tclive.api.StudentAPIService;
|
|
@@ -62,6 +63,7 @@ import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
|
|
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
|
|
|
|
+import io.reactivex.rxjava3.annotations.NonNull;
|
|
import io.reactivex.rxjava3.core.Observer;
|
|
import io.reactivex.rxjava3.core.Observer;
|
|
import io.reactivex.rxjava3.disposables.Disposable;
|
|
import io.reactivex.rxjava3.disposables.Disposable;
|
|
import io.reactivex.rxjava3.functions.Consumer;
|
|
import io.reactivex.rxjava3.functions.Consumer;
|
|
@@ -79,6 +81,9 @@ public class TTLiveRoomPresenter extends BasePresenter<TTLiveRoomContract.View>
|
|
private final static String TAG = "TTLiveRoomPresenter";
|
|
private final static String TAG = "TTLiveRoomPresenter";
|
|
private String roomId;
|
|
private String roomId;
|
|
private boolean isSendDefaultMsg = true;
|
|
private boolean isSendDefaultMsg = true;
|
|
|
|
+ private long joinLiveTime = -1;
|
|
|
|
+ private long startEnterLiveTime = -1;
|
|
|
|
+ private long leaveLiveTime = -1;
|
|
private List<Disposable> disposablesManager = new ArrayList<>();//监听管理器
|
|
private List<Disposable> disposablesManager = new ArrayList<>();//监听管理器
|
|
private TRTCCloudListener mCloudListener = new TRTCCloudListener() {
|
|
private TRTCCloudListener mCloudListener = new TRTCCloudListener() {
|
|
@Override
|
|
@Override
|
|
@@ -694,10 +699,15 @@ public class TTLiveRoomPresenter extends BasePresenter<TTLiveRoomContract.View>
|
|
if (TextUtils.isEmpty(roomId) || TextUtils.isEmpty(userId)) {
|
|
if (TextUtils.isEmpty(roomId) || TextUtils.isEmpty(userId)) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- addSubscribe(create(StudentAPIService.class).notifyJoinRoomAction(roomId, userId, true), new DisposableObserver() {
|
|
|
|
|
|
+ addSubscribe(create(StudentAPIService.class).notifyJoinRoomAction(roomId, userId, true), new DisposableObserver<BaseResponse<Long>>() {
|
|
@Override
|
|
@Override
|
|
- public void onNext(Object o) {
|
|
|
|
- //通知服务端加入成功即可,无须关注结果
|
|
|
|
|
|
+ public void onNext(@NonNull BaseResponse<Long> longBaseResponse) {
|
|
|
|
+ //通知服务端加入成功,取得加入时间搓
|
|
|
|
+ if (longBaseResponse != null) {
|
|
|
|
+ joinLiveTime = longBaseResponse.getData();
|
|
|
|
+ startEnterLiveTime = System.currentTimeMillis();
|
|
|
|
+ leaveLiveTime = -1;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -733,15 +743,31 @@ public class TTLiveRoomPresenter extends BasePresenter<TTLiveRoomContract.View>
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private long getLeaveTime() {
|
|
|
|
+ if (leaveLiveTime != -1) {
|
|
|
|
+ return leaveLiveTime;
|
|
|
|
+ }
|
|
|
|
+ long currentTime = System.currentTimeMillis();
|
|
|
|
+ if (joinLiveTime != -1 && startEnterLiveTime != -1) {
|
|
|
|
+ leaveLiveTime = currentTime - startEnterLiveTime + joinLiveTime;
|
|
|
|
+ } else {
|
|
|
|
+ leaveLiveTime = -1;
|
|
|
|
+ }
|
|
|
|
+ return leaveLiveTime;
|
|
|
|
+ }
|
|
|
|
+
|
|
public void notifyLeaveRoomAction() {
|
|
public void notifyLeaveRoomAction() {
|
|
handleAction(LiveRoomMsgConstants.ACTION_SEND_LEAVE_ROOM);
|
|
handleAction(LiveRoomMsgConstants.ACTION_SEND_LEAVE_ROOM);
|
|
ImUserState imUserState = new ImUserState();
|
|
ImUserState imUserState = new ImUserState();
|
|
imUserState.setStatus(ImUserState.ACTION_LEAVE_LIVE_ROOM);
|
|
imUserState.setStatus(ImUserState.ACTION_LEAVE_LIVE_ROOM);
|
|
- imUserState.setUserid(UserHelper.getUserId());
|
|
|
|
|
|
+ imUserState.setUserid(UserHelper.getImUserId());
|
|
imUserState.setOs("Android");
|
|
imUserState.setOs("Android");
|
|
|
|
+ if (getLeaveTime() != -1) {
|
|
|
|
+ imUserState.setTime(getLeaveTime());
|
|
|
|
+ }
|
|
ArrayList<ImUserState> imUserStates = new ArrayList();
|
|
ArrayList<ImUserState> imUserStates = new ArrayList();
|
|
imUserStates.add(imUserState);
|
|
imUserStates.add(imUserState);
|
|
- RequestBody body = RequestBodyUtil.convertToRequestBodyJson(new Gson().toJson(imUserStates));
|
|
|
|
|
|
+ RequestBody body = RequestBodyUtil.convertToRequestBodyJson(GsonUtils.toJson(imUserStates));
|
|
create(StudentAPIService.class).notifyLeaveRoomAction(body)
|
|
create(StudentAPIService.class).notifyLeaveRoomAction(body)
|
|
.subscribeOn(Schedulers.io())
|
|
.subscribeOn(Schedulers.io())
|
|
.observeOn(AndroidSchedulers.mainThread())
|
|
.observeOn(AndroidSchedulers.mainThread())
|