Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
YDL-Component-Medical
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨凯
YDL-Component-Medical
Commits
19b956db
Commit
19b956db
authored
Dec 17, 2019
by
konghaorui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
私聊模块 补充防止 Rxjava 内存泄露逻辑
parent
aa09a02c
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
84 additions
and
69 deletions
+84
-69
DemoGlobalConfig.java
app/src/main/java/com/ydl/component/base/DemoGlobalConfig.java
+2
-2
OrderAction.java
m-im/src/main/java/com/yidianling/im/session/action/OrderAction.java
+18
-13
OtherMsgDetailActivity.java
m-im/src/main/java/com/yidianling/im/ui/activity/OtherMsgDetailActivity.java
+7
-7
SystemMsgDetailActivity.java
m-im/src/main/java/com/yidianling/im/ui/activity/SystemMsgDetailActivity.java
+5
-4
MsgListAdapter.java
m-im/src/main/java/com/yidianling/im/ui/adapter/MsgListAdapter.java
+9
-6
NewMultiMessageFragment.kt
m-im/src/main/java/com/yidianling/im/ui/page/NewMultiMessageFragment.kt
+4
-6
ChatFragment.kt
m-im/src/main/java/com/yidianling/im/ui/page/fragment/ChatFragment.kt
+3
-6
InteractFragment.kt
m-im/src/main/java/com/yidianling/im/ui/page/fragment/InteractFragment.kt
+2
-5
NoticeFragment.kt
m-im/src/main/java/com/yidianling/im/ui/page/fragment/NoticeFragment.kt
+5
-8
ChatAdapter.kt
m-im/src/main/java/com/yidianling/im/ui/page/fragment/adapter/ChatAdapter.kt
+8
-8
YDLBaseMessageActivity.java
m-im/src/main/java/com/yidianling/uikit/business/session/activity/YDLBaseMessageActivity.java
+3
-3
RxUtils.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/data/http/RxUtils.kt
+17
-0
RxLifecycleUtils.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/RxLifecycleUtils.kt
+1
-1
No files found.
app/src/main/java/com/ydl/component/base/DemoGlobalConfig.java
View file @
19b956db
...
@@ -20,8 +20,8 @@ import java.util.List;
...
@@ -20,8 +20,8 @@ import java.util.List;
public
final
class
DemoGlobalConfig
implements
IConfigModule
{
public
final
class
DemoGlobalConfig
implements
IConfigModule
{
String
APP_DOMAIN
=
"https://api.github.com/"
;
String
APP_DOMAIN
=
"https://api.github.com/"
;
// public static String appEnv = YDLConstants.ENV_AUTO_TEST;
// public static String appEnv = YDLConstants.ENV_AUTO_TEST;
//
public static String appEnv = YDLConstants.ENV_PROD;
public
static
String
appEnv
=
YDLConstants
.
ENV_PROD
;
public
static
String
appEnv
=
YDLConstants
.
ENV_TEST
;
//
public static String appEnv = YDLConstants.ENV_TEST;
@Override
@Override
public
void
injectAppLifecycle
(
@NotNull
Context
context
,
@NotNull
List
<
IAppLifecycles
>
lifecycles
)
{
public
void
injectAppLifecycle
(
@NotNull
Context
context
,
@NotNull
List
<
IAppLifecycles
>
lifecycles
)
{
...
...
m-im/src/main/java/com/yidianling/im/session/action/OrderAction.java
View file @
19b956db
...
@@ -2,23 +2,24 @@ package com.yidianling.im.session.action;
...
@@ -2,23 +2,24 @@ package com.yidianling.im.session.action;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
import
com.yidianling.nimbase.business.session.actions.BaseAction
;
import
com.yidianling.im.R
;
import
com.yidianling.im.http.ImHttpImpl
;
import
com.yidianling.im.http.ImRetrofitApi
;
import
com.yidianling.im.http.param.ExpertParam
;
import
com.yidianling.router.im.IMExpertBuild
;
import
com.ydl.webview.H5Params
;
import
com.ydl.webview.H5Params
;
import
com.ydl.webview.NewH5Activity
;
import
com.ydl.webview.NewH5Activity
;
import
com.ydl.ydlcommon.base.lifecycle.ILifecycleable
;
import
com.ydl.ydlcommon.data.http.BaseResponse
;
import
com.ydl.ydlcommon.data.http.BaseResponse
;
import
com.ydl.ydlcommon.data.http.RxUtils
;
import
com.ydl.ydlcommon.data.http.ThrowableConsumer
;
import
com.ydl.ydlcommon.data.http.ThrowableConsumer
;
import
com.ydl.ydlcommon.utils.remind.ToastHelper
;
import
com.ydl.ydlcommon.utils.remind.ToastHelper
;
import
com.yidianling.im.R
;
import
com.yidianling.im.http.ImHttpImpl
;
import
com.yidianling.im.http.ImRetrofitApi
;
import
com.yidianling.im.http.param.ExpertParam
;
import
com.yidianling.nimbase.business.session.actions.BaseAction
;
import
com.yidianling.router.im.IMExpertBuild
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.NotNull
;
import
io.reactivex.Observable
;
import
io.reactivex.Observable
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.disposables.Disposable
;
import
io.reactivex.schedulers.Schedulers
;
/**
/**
* author : Zhangwenchao
* author : Zhangwenchao
...
@@ -35,10 +36,14 @@ public class OrderAction extends BaseAction {
...
@@ -35,10 +36,14 @@ public class OrderAction extends BaseAction {
@Override
@Override
public
void
onClick
()
{
public
void
onClick
()
{
ILifecycleable
lifecycleable
=
null
;
if
(
getActivity
()
instanceof
ILifecycleable
)
{
lifecycleable
=
(
ILifecycleable
)(
getActivity
());
}
//先根据uid判断用户类型:专家调一个接口,非专家调另外的接口
//先根据uid判断用户类型:专家调一个接口,非专家调另外的接口
ImRetrofitApi
.
Companion
.
getImJavaApi
().
getUserType
(
getAccount
())
Disposable
dis
=
ImRetrofitApi
.
Companion
.
getImJavaApi
().
getUserType
(
getAccount
())
.
subscribeOn
(
Schedulers
.
io
())
.
compose
(
RxUtils
.
applySchedulers
(
lifecycleable
))
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
res
->
{
.
subscribe
(
res
->
{
if
(
res
.
code
==
200
)
{
if
(
res
.
code
==
200
)
{
Observable
<
BaseResponse
<
IMExpertBuild
>>
observable
;
Observable
<
BaseResponse
<
IMExpertBuild
>>
observable
;
...
@@ -48,8 +53,8 @@ public class OrderAction extends BaseAction {
...
@@ -48,8 +53,8 @@ public class OrderAction extends BaseAction {
observable
=
ImHttpImpl
.
Companion
.
getInstance
().
getExpert
(
new
ExpertParam
(
Integer
.
valueOf
(
getAccount
()),
0
));
observable
=
ImHttpImpl
.
Companion
.
getInstance
().
getExpert
(
new
ExpertParam
(
Integer
.
valueOf
(
getAccount
()),
0
));
}
}
observable
.
subscribeOn
(
Schedulers
.
io
())
Disposable
disposable
=
observable
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
compose
(
RxUtils
.
applySchedulers
())
.
subscribe
(
resp
->
{
.
subscribe
(
resp
->
{
if
(
resp
!=
null
&&
resp
.
data
!=
null
&&
resp
.
data
.
shareData
!=
null
&&
!
TextUtils
.
isEmpty
(
resp
.
data
.
shareData
.
order_url
))
{
if
(
resp
!=
null
&&
resp
.
data
!=
null
&&
resp
.
data
.
shareData
!=
null
&&
!
TextUtils
.
isEmpty
(
resp
.
data
.
shareData
.
order_url
))
{
NewH5Activity
.
start
(
getActivity
(),
new
H5Params
(
resp
.
data
.
shareData
.
order_url
+
"?search="
+
resp
.
data
.
shareData
.
doctorName
,
"订单"
));
NewH5Activity
.
start
(
getActivity
(),
new
H5Params
(
resp
.
data
.
shareData
.
order_url
+
"?search="
+
resp
.
data
.
shareData
.
doctorName
,
"订单"
));
...
...
m-im/src/main/java/com/yidianling/im/ui/activity/OtherMsgDetailActivity.java
View file @
19b956db
...
@@ -32,12 +32,12 @@ import in.srain.cube.views.ptr.PtrDefaultHandler;
...
@@ -32,12 +32,12 @@ import in.srain.cube.views.ptr.PtrDefaultHandler;
import
in.srain.cube.views.ptr.PtrFrameLayout
;
import
in.srain.cube.views.ptr.PtrFrameLayout
;
import
in.srain.cube.views.ptr.PtrHandler
;
import
in.srain.cube.views.ptr.PtrHandler
;
import
in.srain.cube.views.ptr.header.MaterialHeader
;
import
in.srain.cube.views.ptr.header.MaterialHeader
;
import
io.reactivex.
android.schedulers.AndroidSchedulers
;
import
io.reactivex.
disposables.Disposable
;
/**
/**
* 动态消息列表
* 动态消息列表
*/
*/
public
class
OtherMsgDetailActivity
extends
BaseActivity
implements
PtrHandler
{
public
class
OtherMsgDetailActivity
extends
BaseActivity
implements
PtrHandler
{
String
title
=
""
;
String
title
=
""
;
...
@@ -106,7 +106,7 @@ public class OtherMsgDetailActivity extends BaseActivity implements PtrHandler {
...
@@ -106,7 +106,7 @@ public class OtherMsgDetailActivity extends BaseActivity implements PtrHandler {
store_house_ptr_frame
.
setPtrHandler
(
this
);
store_house_ptr_frame
.
setPtrHandler
(
this
);
store_house_ptr_frame
.
addPtrUIHandler
(
header
);
store_house_ptr_frame
.
addPtrUIHandler
(
header
);
adapter
=
new
MsgListAdapter
(
this
,
type
);
adapter
=
new
MsgListAdapter
(
this
,
type
,
this
);
lv_content
.
setAdapter
(
adapter
);
lv_content
.
setAdapter
(
adapter
);
lv_content
.
setEmptyView
(
ll_empty
);
lv_content
.
setEmptyView
(
ll_empty
);
...
@@ -118,9 +118,9 @@ public class OtherMsgDetailActivity extends BaseActivity implements PtrHandler {
...
@@ -118,9 +118,9 @@ public class OtherMsgDetailActivity extends BaseActivity implements PtrHandler {
private
void
allMarkReaded
()
{
private
void
allMarkReaded
()
{
showProgressDialog
(
""
);
showProgressDialog
(
""
);
httpHelper
.
updateRead
(
new
ReadParam
(
type
))
Disposable
disposable
=
httpHelper
.
updateRead
(
new
ReadParam
(
type
))
.
compose
(
RxUtils
.
applySchedulers
(
this
))
.
compose
(
RxUtils
.
resultData
())
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
updateStatusBean
->
{
.
subscribe
(
updateStatusBean
->
{
dismissProgressDialog
();
dismissProgressDialog
();
if
(
updateStatusBean
!=
null
)
{
if
(
updateStatusBean
!=
null
)
{
...
@@ -147,9 +147,9 @@ public class OtherMsgDetailActivity extends BaseActivity implements PtrHandler {
...
@@ -147,9 +147,9 @@ public class OtherMsgDetailActivity extends BaseActivity implements PtrHandler {
page
=
1
;
page
=
1
;
}
}
httpHelper
.
getMsgList
(
new
MsgListParam
(
page
+
""
,
type
))
Disposable
dis
=
httpHelper
.
getMsgList
(
new
MsgListParam
(
page
+
""
,
type
))
.
compose
(
RxUtils
.
applySchedulers
(
this
))
.
compose
(
RxUtils
.
resultData
())
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
msgData
->
{
.
subscribe
(
msgData
->
{
LogUtil
.
d
(
"data fetch compelete"
);
LogUtil
.
d
(
"data fetch compelete"
);
store_house_ptr_frame
.
refreshComplete
();
store_house_ptr_frame
.
refreshComplete
();
...
...
m-im/src/main/java/com/yidianling/im/ui/activity/SystemMsgDetailActivity.java
View file @
19b956db
...
@@ -28,11 +28,12 @@ import in.srain.cube.views.ptr.PtrHandler;
...
@@ -28,11 +28,12 @@ import in.srain.cube.views.ptr.PtrHandler;
import
in.srain.cube.views.ptr.header.MaterialHeader
;
import
in.srain.cube.views.ptr.header.MaterialHeader
;
import
io.reactivex.Observable
;
import
io.reactivex.Observable
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.disposables.Disposable
;
/**
/**
* 系统消息列表
* 系统消息列表
*/
*/
public
class
SystemMsgDetailActivity
extends
BaseActivity
implements
PtrHandler
{
public
class
SystemMsgDetailActivity
extends
BaseActivity
implements
PtrHandler
{
PtrFrameLayout
store_house_ptr_frame
;
PtrFrameLayout
store_house_ptr_frame
;
ListView
lv_content
;
ListView
lv_content
;
...
@@ -99,9 +100,9 @@ public class SystemMsgDetailActivity extends BaseActivity implements PtrHandler
...
@@ -99,9 +100,9 @@ public class SystemMsgDetailActivity extends BaseActivity implements PtrHandler
}
}
ImHttp
httpHelper
=
ImHttpImpl
.
Companion
.
getInstance
();
ImHttp
httpHelper
=
ImHttpImpl
.
Companion
.
getInstance
();
httpHelper
.
getSysMsgList
(
new
MsgListParam
(
page
+
""
,
type
))
Disposable
disposable
=
httpHelper
.
getSysMsgList
(
new
MsgListParam
(
page
+
""
,
type
))
.
compose
(
RxUtils
.
applySchedulers
(
this
))
.
compose
(
RxUtils
.
resultData
())
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
systemMsgBeans
->
{
.
subscribe
(
systemMsgBeans
->
{
store_house_ptr_frame
.
refreshComplete
();
store_house_ptr_frame
.
refreshComplete
();
if
(
systemMsgBeans
.
isEmpty
())
{
if
(
systemMsgBeans
.
isEmpty
())
{
...
@@ -112,7 +113,7 @@ public class SystemMsgDetailActivity extends BaseActivity implements PtrHandler
...
@@ -112,7 +113,7 @@ public class SystemMsgDetailActivity extends BaseActivity implements PtrHandler
newTemps
.
addAll
(
adapter
.
getDataList
());
newTemps
.
addAll
(
adapter
.
getDataList
());
adapter
.
update
(
newTemps
);
adapter
.
update
(
newTemps
);
if
(!
loadMore
)
{
if
(!
loadMore
)
{
Observable
.
timer
(
300
,
TimeUnit
.
MILLISECONDS
)
Disposable
dis
=
Observable
.
timer
(
300
,
TimeUnit
.
MILLISECONDS
)
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
aLong
->
{
.
subscribe
(
aLong
->
{
//滚动到底部
//滚动到底部
...
...
m-im/src/main/java/com/yidianling/im/ui/adapter/MsgListAdapter.java
View file @
19b956db
...
@@ -10,6 +10,7 @@ import com.ydl.webview.H5Params;
...
@@ -10,6 +10,7 @@ import com.ydl.webview.H5Params;
import
com.ydl.webview.NewH5Activity
;
import
com.ydl.webview.NewH5Activity
;
import
com.ydl.ydlcommon.adapter.CommonAdapter
;
import
com.ydl.ydlcommon.adapter.CommonAdapter
;
import
com.ydl.ydlcommon.base.BaseActivity
;
import
com.ydl.ydlcommon.base.BaseActivity
;
import
com.ydl.ydlcommon.base.lifecycle.ILifecycleable
;
import
com.ydl.ydlcommon.data.http.RxUtils
;
import
com.ydl.ydlcommon.data.http.RxUtils
;
import
com.ydl.ydlcommon.data.http.ThrowableConsumer
;
import
com.ydl.ydlcommon.data.http.ThrowableConsumer
;
import
com.ydl.ydlcommon.utils.StringUtils
;
import
com.ydl.ydlcommon.utils.StringUtils
;
...
@@ -28,13 +29,14 @@ import org.jetbrains.annotations.NotNull;
...
@@ -28,13 +29,14 @@ import org.jetbrains.annotations.NotNull;
import
java.util.Map
;
import
java.util.Map
;
import
de.greenrobot.event.EventBus
;
import
de.greenrobot.event.EventBus
;
import
io.reactivex.
android.schedulers.AndroidSchedulers
;
import
io.reactivex.
disposables.Disposable
;
/**
/**
* 消息adapter
* 消息adapter
* Created by softrice on 15/12/10.
* Created by softrice on 15/12/10.
*/
*/
public
class
MsgListAdapter
extends
CommonAdapter
<
MsgData
>
{
public
class
MsgListAdapter
extends
CommonAdapter
<
MsgData
>
{
private
ILifecycleable
lifecycleable
;
private
Activity
context
;
private
Activity
context
;
private
int
type
=
0
;
//消息类型
private
int
type
=
0
;
//消息类型
...
@@ -44,9 +46,10 @@ public class MsgListAdapter extends CommonAdapter<MsgData> {
...
@@ -44,9 +46,10 @@ public class MsgListAdapter extends CommonAdapter<MsgData> {
private
ImHttp
httpHelper
;
private
ImHttp
httpHelper
;
public
MsgListAdapter
(
Activity
context
,
int
typ
e
)
{
public
MsgListAdapter
(
Activity
context
,
int
type
,
ILifecycleable
lifecycleabl
e
)
{
this
.
context
=
context
;
this
.
context
=
context
;
this
.
type
=
type
;
this
.
type
=
type
;
this
.
lifecycleable
=
lifecycleable
;
httpHelper
=
ImHttpImpl
.
Companion
.
getInstance
();
httpHelper
=
ImHttpImpl
.
Companion
.
getInstance
();
}
}
...
@@ -109,9 +112,9 @@ public class MsgListAdapter extends CommonAdapter<MsgData> {
...
@@ -109,9 +112,9 @@ public class MsgListAdapter extends CommonAdapter<MsgData> {
if
(
fla
||
boo
)
{
if
(
fla
||
boo
)
{
//跟新未读
//跟新未读
httpHelper
.
getMsgDetail
(
new
MsgDetailParam
(
mDataList
.
get
(
position
).
id
))
Disposable
dis
=
httpHelper
.
getMsgDetail
(
new
MsgDetailParam
(
mDataList
.
get
(
position
).
id
))
.
compose
(
RxUtils
.
applySchedulers
(
lifecycleable
))
.
compose
(
RxUtils
.
resultData
())
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
msgDetail
->
{
.
subscribe
(
msgDetail
->
{
mDataList
.
get
(
position
).
is_read
=
2
;
mDataList
.
get
(
position
).
is_read
=
2
;
notifyDataSetChanged
();
notifyDataSetChanged
();
...
@@ -125,9 +128,9 @@ public class MsgListAdapter extends CommonAdapter<MsgData> {
...
@@ -125,9 +128,9 @@ public class MsgListAdapter extends CommonAdapter<MsgData> {
return
;
//如果是动态消息则到此结束,其它消息类型走下面流程
return
;
//如果是动态消息则到此结束,其它消息类型走下面流程
}
}
((
BaseActivity
)
context
).
showProgressDialog
(
"正在中转"
);
((
BaseActivity
)
context
).
showProgressDialog
(
"正在中转"
);
httpHelper
.
getMsgDetail
(
new
MsgDetailParam
(
mDataList
.
get
(
position
).
id
))
Disposable
di
=
httpHelper
.
getMsgDetail
(
new
MsgDetailParam
(
mDataList
.
get
(
position
).
id
))
.
compose
(
RxUtils
.
applySchedulers
(
lifecycleable
))
.
compose
(
RxUtils
.
resultData
())
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
msgDetail
->
{
.
subscribe
(
msgDetail
->
{
mDataList
.
get
(
position
).
is_read
=
2
;
mDataList
.
get
(
position
).
is_read
=
2
;
((
BaseActivity
)
context
).
dismissProgressDialog
();
((
BaseActivity
)
context
).
dismissProgressDialog
();
...
...
m-im/src/main/java/com/yidianling/im/ui/page/NewMultiMessageFragment.kt
View file @
19b956db
...
@@ -159,10 +159,9 @@ class NewMultiMessageFragment : BaseFragment() {
...
@@ -159,10 +159,9 @@ class NewMultiMessageFragment : BaseFragment() {
*/
*/
fun
requestTopUnReadNumber
()
{
fun
requestTopUnReadNumber
()
{
if
(
ImIn
.
getUserInfo
()
?.
uid
!=
"0"
)
{
if
(
ImIn
.
getUserInfo
()
?.
uid
!=
"0"
)
{
ImHttpImpl
.
getInstance
().
getUnreadMessage
(
UnreadParam
(
"${ImIn.getUserInfo()?.uid}"
))
var
dis
=
ImHttpImpl
.
getInstance
().
getUnreadMessage
(
UnreadParam
(
"${ImIn.getUserInfo()?.uid}"
))
.
compose
<
UnreadMessageBean
>(
RxUtils
.
resultJavaData
())
.
compose
<
UnreadMessageBean
>(
RxUtils
.
resultJavaData
())
.
subscribeOn
(
Schedulers
.
io
())
.
compose
(
RxUtils
.
applySchedulers
(
this
))
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
it
->
.
subscribe
({
it
->
resetTopUnReadNumber
(
it
)
resetTopUnReadNumber
(
it
)
},
{
t
->
},
{
t
->
...
@@ -269,9 +268,8 @@ class NewMultiMessageFragment : BaseFragment() {
...
@@ -269,9 +268,8 @@ class NewMultiMessageFragment : BaseFragment() {
* 全部已读(私聊是单独处理的)
* 全部已读(私聊是单独处理的)
*/
*/
fun
markAllMessageRead
()
{
fun
markAllMessageRead
()
{
ImHttpImpl
.
getInstance
().
clearMessage
(
ClearMessageParam
(
"${ImIn.getUserInfo()?.uid}"
,
"1"
))
var
dis
=
ImHttpImpl
.
getInstance
().
clearMessage
(
ClearMessageParam
(
"${ImIn.getUserInfo()?.uid}"
,
"1"
))
.
subscribeOn
(
Schedulers
.
io
())
.
compose
(
RxUtils
.
applySchedulers
(
this
))
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
it
->
.
subscribe
({
it
->
if
(
it
.
data
)
{
if
(
it
.
data
)
{
//清除私聊群聊未读数
//清除私聊群聊未读数
...
...
m-im/src/main/java/com/yidianling/im/ui/page/fragment/ChatFragment.kt
View file @
19b956db
...
@@ -21,8 +21,6 @@ import com.yidianling.im.ui.page.widget.ChatUnusualView
...
@@ -21,8 +21,6 @@ import com.yidianling.im.ui.page.widget.ChatUnusualView
import
com.yidianling.im.ui.param.ChatParam
import
com.yidianling.im.ui.param.ChatParam
import
com.yidianling.router.RouterManager
import
com.yidianling.router.RouterManager
import
de.greenrobot.event.EventBus
import
de.greenrobot.event.EventBus
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.schedulers.Schedulers
import
kotlinx.android.synthetic.main.im_chat_fragment_layout.*
import
kotlinx.android.synthetic.main.im_chat_fragment_layout.*
/**
/**
...
@@ -84,10 +82,9 @@ class ChatFragment : BaseFragment(), XRecyclerView.LoadingListener {
...
@@ -84,10 +82,9 @@ class ChatFragment : BaseFragment(), XRecyclerView.LoadingListener {
var
selectType
:
Int
=
if
(
mChatModelType
==
ChatModelType
.
ALL
)
0
else
if
(
mChatModelType
==
ChatModelType
.
SERVICING
)
1
else
2
var
selectType
:
Int
=
if
(
mChatModelType
==
ChatModelType
.
ALL
)
0
else
if
(
mChatModelType
==
ChatModelType
.
SERVICING
)
1
else
2
if
(
ImIn
.
getUserInfo
()
?.
uid
!=
"0"
)
{
if
(
ImIn
.
getUserInfo
()
?.
uid
!=
"0"
)
{
ImHttpImpl
.
getInstance
().
getAllChatMessage
(
ChatParam
(
"${ImIn.getUserInfo()?.uid}"
,
"${selectType}"
))
var
dis
=
ImHttpImpl
.
getInstance
().
getAllChatMessage
(
ChatParam
(
"${ImIn.getUserInfo()?.uid}"
,
"${selectType}"
))
.
compose
(
RxUtils
.
applySchedulers
(
this
))
.
compose
<
ChatModelBean
>(
RxUtils
.
resultJavaData
())
.
compose
<
ChatModelBean
>(
RxUtils
.
resultJavaData
())
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
it
->
.
subscribe
({
it
->
if
(
it
.
before
.
data
.
size
!=
0
||
it
.
nomal
.
data
.
size
!=
0
)
{
if
(
it
.
before
.
data
.
size
!=
0
||
it
.
nomal
.
data
.
size
!=
0
)
{
setData
(
it
)
setData
(
it
)
...
@@ -207,7 +204,7 @@ class ChatFragment : BaseFragment(), XRecyclerView.LoadingListener {
...
@@ -207,7 +204,7 @@ class ChatFragment : BaseFragment(), XRecyclerView.LoadingListener {
private
fun
initListData
()
{
private
fun
initListData
()
{
chatAdapter
=
ChatAdapter
(
context
,
showData
)
chatAdapter
=
ChatAdapter
(
context
,
showData
,
this
)
chatAdapter
?.
setlistener
(
object
:
ChatAdapter
.
ChatRecyclerViewCallback
{
chatAdapter
?.
setlistener
(
object
:
ChatAdapter
.
ChatRecyclerViewCallback
{
override
fun
onRefresh
()
{
override
fun
onRefresh
()
{
getChatMessageData
()
getChatMessageData
()
...
...
m-im/src/main/java/com/yidianling/im/ui/page/fragment/InteractFragment.kt
View file @
19b956db
...
@@ -19,8 +19,6 @@ import com.yidianling.im.ui.page.fragment.view.InteractFooterItemView
...
@@ -19,8 +19,6 @@ import com.yidianling.im.ui.page.fragment.view.InteractFooterItemView
import
com.yidianling.im.ui.page.widget.ChatUnusualView
import
com.yidianling.im.ui.page.widget.ChatUnusualView
import
com.yidianling.im.ui.param.InteractMessageParam
import
com.yidianling.im.ui.param.InteractMessageParam
import
de.greenrobot.event.EventBus
import
de.greenrobot.event.EventBus
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.schedulers.Schedulers
import
kotlinx.android.synthetic.main.im_interact_fragment.*
import
kotlinx.android.synthetic.main.im_interact_fragment.*
/**
/**
...
@@ -91,10 +89,9 @@ class InteractFragment : BaseFragment(), XRecyclerView.LoadingListener {
...
@@ -91,10 +89,9 @@ class InteractFragment : BaseFragment(), XRecyclerView.LoadingListener {
if
(
ImIn
.
getUserInfo
()
?.
uid
!=
"0"
)
{
if
(
ImIn
.
getUserInfo
()
?.
uid
!=
"0"
)
{
// 由于当前方法会因为各种因素多次调用,因此在接口返回值内判断只有在pageOn=1或者onLoadMore得时候,才将返回值加入展示列表中
// 由于当前方法会因为各种因素多次调用,因此在接口返回值内判断只有在pageOn=1或者onLoadMore得时候,才将返回值加入展示列表中
ImHttpImpl
.
getInstance
().
getInteractMessage
(
InteractMessageParam
(
"${ImIn.getUserInfo()?.uid}"
,
"${requestPage}"
,
"${pageSize}"
))
var
dis
=
ImHttpImpl
.
getInstance
().
getInteractMessage
(
InteractMessageParam
(
"${ImIn.getUserInfo()?.uid}"
,
"${requestPage}"
,
"${pageSize}"
))
.
compose
(
RxUtils
.
applySchedulers
(
this
))
.
compose
(
RxUtils
.
resultJavaData
())
.
compose
(
RxUtils
.
resultJavaData
())
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
it
->
.
subscribe
({
it
->
interact_recyclerview
.
refreshComplete
()
interact_recyclerview
.
refreshComplete
()
// 请求页面大于当前页面,才进行数据操作
// 请求页面大于当前页面,才进行数据操作
...
...
m-im/src/main/java/com/yidianling/im/ui/page/fragment/NoticeFragment.kt
View file @
19b956db
...
@@ -3,20 +3,18 @@ package com.yidianling.im.ui.page.fragment
...
@@ -3,20 +3,18 @@ package com.yidianling.im.ui.page.fragment
import
android.support.v7.widget.LinearLayoutManager
import
android.support.v7.widget.LinearLayoutManager
import
android.view.View
import
android.view.View
import
com.jcodecraeer.xrecyclerview.XRecyclerView
import
com.jcodecraeer.xrecyclerview.XRecyclerView
import
com.ydl.ydlcommon.base.BaseFragment
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.im.R
import
com.yidianling.im.R
import
com.yidianling.im.event.MessageListRefreshEvent
import
com.yidianling.im.http.ImHttpImpl
import
com.yidianling.im.http.ImHttpImpl
import
com.yidianling.im.router.ImIn
import
com.yidianling.im.router.ImIn
import
com.yidianling.im.ui.page.fragment.adapter.NoticeAdapter
import
com.yidianling.im.ui.page.fragment.adapter.NoticeAdapter
import
com.yidianling.im.ui.page.fragment.bean.NoticeItemBean
import
com.yidianling.im.ui.page.fragment.bean.NoticeItemBean
import
com.yidianling.im.ui.page.widget.ChatUnusualView
import
com.yidianling.im.ui.page.widget.ChatUnusualView
import
com.yidianling.im.ui.param.NoticeParam
import
com.yidianling.im.ui.param.NoticeParam
import
com.ydl.ydlcommon.base.BaseFragment
import
com.yidianling.im.event.MessageListRefreshEvent
import
com.ydl.ydlcommon.data.http.RxUtils
import
de.greenrobot.event.EventBus
import
de.greenrobot.event.EventBus
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.schedulers.Schedulers
import
kotlinx.android.synthetic.main.im_notice_fragment.*
import
kotlinx.android.synthetic.main.im_notice_fragment.*
/**
/**
...
@@ -58,10 +56,9 @@ class NoticeFragment : BaseFragment(), XRecyclerView.LoadingListener {
...
@@ -58,10 +56,9 @@ class NoticeFragment : BaseFragment(), XRecyclerView.LoadingListener {
*/
*/
fun
getNoticeMessageData
()
{
fun
getNoticeMessageData
()
{
if
(
ImIn
.
getUserInfo
()
?.
uid
!=
"0"
)
{
if
(
ImIn
.
getUserInfo
()
?.
uid
!=
"0"
)
{
ImHttpImpl
.
getInstance
().
getNoticeMessage
(
NoticeParam
(
"${ImIn.getUserInfo()?.uid}"
))
var
dis
=
ImHttpImpl
.
getInstance
().
getNoticeMessage
(
NoticeParam
(
"${ImIn.getUserInfo()?.uid}"
))
.
compose
(
RxUtils
.
applySchedulers
(
this
))
.
compose
(
RxUtils
.
resultJavaData
())
.
compose
(
RxUtils
.
resultJavaData
())
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
it
->
.
subscribe
({
it
->
noticeList
.
clear
()
noticeList
.
clear
()
// content为空的不展示
// content为空的不展示
...
...
m-im/src/main/java/com/yidianling/im/ui/page/fragment/adapter/ChatAdapter.kt
View file @
19b956db
...
@@ -10,6 +10,7 @@ import android.view.ViewGroup
...
@@ -10,6 +10,7 @@ import android.view.ViewGroup
import
com.netease.nimlib.sdk.NIMClient
import
com.netease.nimlib.sdk.NIMClient
import
com.netease.nimlib.sdk.msg.MsgService
import
com.netease.nimlib.sdk.msg.MsgService
import
com.netease.nimlib.sdk.msg.constant.SessionTypeEnum
import
com.netease.nimlib.sdk.msg.constant.SessionTypeEnum
import
com.ydl.ydlcommon.base.lifecycle.ILifecycleable
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.ydl.ydlcommon.utils.log.LogHelper
import
com.ydl.ydlcommon.utils.log.LogHelper
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.ydl.ydlcommon.utils.remind.ToastHelper
...
@@ -27,13 +28,12 @@ import com.yidianling.im.ui.page.fragment.bean.ChatItemBean
...
@@ -27,13 +28,12 @@ import com.yidianling.im.ui.page.fragment.bean.ChatItemBean
import
com.yidianling.im.ui.page.fragment.view.ChatItemView
import
com.yidianling.im.ui.page.fragment.view.ChatItemView
import
com.yidianling.im.ui.page.fragment.view.ChatTimeItemView
import
com.yidianling.im.ui.page.fragment.view.ChatTimeItemView
import
de.greenrobot.event.EventBus
import
de.greenrobot.event.EventBus
import
io.reactivex.android.schedulers.AndroidSchedulers
/**
/**
* 互动列表适配器
* 互动列表适配器
* Created by xj on 2019/10/14.
* Created by xj on 2019/10/14.
*/
*/
class
ChatAdapter
(
var
context
:
Context
,
private
var
mList
:
ArrayList
<
ChatItemBean
>):
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>()
{
class
ChatAdapter
(
var
context
:
Context
,
private
var
mList
:
ArrayList
<
ChatItemBean
>
,
private
var
lifecycleable
:
ILifecycleable
<*>
):
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>()
{
companion
object
{
companion
object
{
...
@@ -138,9 +138,9 @@ class ChatAdapter(var context: Context, private var mList: ArrayList<ChatItemBea
...
@@ -138,9 +138,9 @@ class ChatAdapter(var context: Context, private var mList: ArrayList<ChatItemBea
private
fun
delete
(
bean
:
ChatItemBean
)
{
private
fun
delete
(
bean
:
ChatItemBean
)
{
LogHelper
.
getInstance
().
writeLogSync
(
"删除聊天:uid = "
+
bean
.
toUid
)
LogHelper
.
getInstance
().
writeLogSync
(
"删除聊天:uid = "
+
bean
.
toUid
)
ImHttpImpl
.
getInstance
().
rmHistory
(
RmHistoryParam
(
bean
.
toUid
.
toString
(),
1
))
var
dis
=
ImHttpImpl
.
getInstance
().
rmHistory
(
RmHistoryParam
(
bean
.
toUid
.
toString
(),
1
))
.
compose
(
RxUtils
.
applySchedulers
(
lifecycleable
))
.
compose
(
RxUtils
.
resultData
())
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
o
->
.
subscribe
({
o
->
LogHelper
.
getInstance
().
writeLogSync
(
"删除聊天成功:uid = "
+
bean
.
toUid
)
LogHelper
.
getInstance
().
writeLogSync
(
"删除聊天成功:uid = "
+
bean
.
toUid
)
NIMClient
.
getService
(
MsgService
::
class
.
java
).
clearChattingHistory
(
bean
.
toUid
.
toString
(),
SessionTypeEnum
.
P2P
)
NIMClient
.
getService
(
MsgService
::
class
.
java
).
clearChattingHistory
(
bean
.
toUid
.
toString
(),
SessionTypeEnum
.
P2P
)
...
@@ -153,9 +153,9 @@ class ChatAdapter(var context: Context, private var mList: ArrayList<ChatItemBea
...
@@ -153,9 +153,9 @@ class ChatAdapter(var context: Context, private var mList: ArrayList<ChatItemBea
private
fun
deleteItem
(
bean
:
ChatItemBean
)
{
private
fun
deleteItem
(
bean
:
ChatItemBean
)
{
ImHttpImpl
.
getInstance
().
rmTalk
(
RmTalkParam
(
bean
.
toUid
.
toString
()))
var
dis
=
ImHttpImpl
.
getInstance
().
rmTalk
(
RmTalkParam
(
bean
.
toUid
.
toString
()))
.
compose
(
RxUtils
.
applySchedulers
(
lifecycleable
))
.
compose
(
RxUtils
.
resultData
())
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
o
->
.
subscribe
({
o
->
NIMClient
.
getService
(
MsgService
::
class
.
java
).
clearUnreadCount
(
bean
.
toUid
.
toString
(),
SessionTypeEnum
.
P2P
)
NIMClient
.
getService
(
MsgService
::
class
.
java
).
clearUnreadCount
(
bean
.
toUid
.
toString
(),
SessionTypeEnum
.
P2P
)
NIMClient
.
getService
(
MsgService
::
class
.
java
).
clearUnreadCount
(
bean
.
toUid
.
toString
(),
SessionTypeEnum
.
Team
)
NIMClient
.
getService
(
MsgService
::
class
.
java
).
clearUnreadCount
(
bean
.
toUid
.
toString
(),
SessionTypeEnum
.
Team
)
...
@@ -170,9 +170,9 @@ class ChatAdapter(var context: Context, private var mList: ArrayList<ChatItemBea
...
@@ -170,9 +170,9 @@ class ChatAdapter(var context: Context, private var mList: ArrayList<ChatItemBea
private
fun
toTop
(
bean
:
ChatItemBean
,
istop
:
Int
)
{
private
fun
toTop
(
bean
:
ChatItemBean
,
istop
:
Int
)
{
LogHelper
.
getInstance
().
writeLogSync
(
"置顶聊天:uid = "
+
bean
.
toUid
.
toString
()
+
LogHelper
.
getInstance
().
writeLogSync
(
"置顶聊天:uid = "
+
bean
.
toUid
.
toString
()
+
"取消置顶 = "
+
(
istop
==
0
))
"取消置顶 = "
+
(
istop
==
0
))
ImHttpImpl
.
getInstance
().
topMessage
(
TopMessageParam
(
bean
.
toUid
.
toString
(),
1
,
istop
))
var
dis
=
ImHttpImpl
.
getInstance
().
topMessage
(
TopMessageParam
(
bean
.
toUid
.
toString
(),
1
,
istop
))
.
compose
(
RxUtils
.
applySchedulers
(
lifecycleable
))
.
compose
(
RxUtils
.
resultData
())
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
o
->
.
subscribe
({
o
->
LogHelper
.
getInstance
().
writeLogSync
(
"置顶聊天成功:uid = "
+
bean
.
toUid
.
toString
()
+
LogHelper
.
getInstance
().
writeLogSync
(
"置顶聊天成功:uid = "
+
bean
.
toUid
.
toString
()
+
"取消置顶 = "
+
(
istop
==
0
))
"取消置顶 = "
+
(
istop
==
0
))
...
...
m-im/src/main/java/com/yidianling/uikit/business/session/activity/YDLBaseMessageActivity.java
View file @
19b956db
...
@@ -10,6 +10,7 @@ import android.widget.ImageView;
...
@@ -10,6 +10,7 @@ import android.widget.ImageView;
import
android.widget.LinearLayout
;
import
android.widget.LinearLayout
;
import
android.widget.RelativeLayout
;
import
android.widget.RelativeLayout
;
import
com.ydl.ydlcommon.data.http.RxUtils
;
import
com.yidianling.common.tools.ToastUtil
;
import
com.yidianling.common.tools.ToastUtil
;
import
com.yidianling.im.R
;
import
com.yidianling.im.R
;
import
com.yidianling.nimbase.api.model.session.SessionCustomization
;
import
com.yidianling.nimbase.api.model.session.SessionCustomization
;
...
@@ -27,6 +28,7 @@ import java.net.URLEncoder;
...
@@ -27,6 +28,7 @@ import java.net.URLEncoder;
import
java.util.List
;
import
java.util.List
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.disposables.Disposable
;
import
io.reactivex.schedulers.Schedulers
;
import
io.reactivex.schedulers.Schedulers
;
/**
/**
...
@@ -139,9 +141,7 @@ public abstract class YDLBaseMessageActivity extends UI {
...
@@ -139,9 +141,7 @@ public abstract class YDLBaseMessageActivity extends UI {
if
(
ActionHandlerStorage
.
getL
(
sessionId
).
getUserType
()
==
2
)
{
if
(
ActionHandlerStorage
.
getL
(
sessionId
).
getUserType
()
==
2
)
{
// 专家
// 专家
// 调取接口获取专家状态
// 调取接口获取专家状态
ServiceImpl
.
Companion
.
getInstance
().
getDoctorChatStatus
(
Long
.
parseLong
(
ActionHandlerStorage
.
getL
(
sessionId
).
getInfo
().
toUid
))
Disposable
dis
=
ServiceImpl
.
Companion
.
getInstance
().
getDoctorChatStatus
(
Long
.
parseLong
(
ActionHandlerStorage
.
getL
(
sessionId
).
getInfo
().
toUid
))
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
chatStatusBean
->
{
.
subscribe
(
chatStatusBean
->
{
int
status
=
chatStatusBean
.
data
.
getStatus
();
int
status
=
chatStatusBean
.
data
.
getStatus
();
...
...
ydl-platform/src/main/java/com/ydl/ydlcommon/data/http/RxUtils.kt
View file @
19b956db
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
package
com.ydl.ydlcommon.data.http
package
com.ydl.ydlcommon.data.http
import
com.ydl.ydlcommon.base.BaseApp
import
com.ydl.ydlcommon.base.BaseApp
import
com.ydl.ydlcommon.base.lifecycle.ILifecycleable
import
com.ydl.ydlcommon.mvp.base.IView
import
com.ydl.ydlcommon.mvp.base.IView
import
com.ydl.ydlcommon.mvp.lce.ILceView
import
com.ydl.ydlcommon.mvp.lce.ILceView
import
com.ydl.ydlcommon.utils.RxLifecycleUtils
import
com.ydl.ydlcommon.utils.RxLifecycleUtils
...
@@ -89,6 +90,7 @@ object RxUtils {
...
@@ -89,6 +90,7 @@ object RxUtils {
* 自动调用 showLoading/hideLoading 方法
* 自动调用 showLoading/hideLoading 方法
* @param view LceView 强转使用
* @param view LceView 强转使用
*/
*/
@JvmStatic
fun
<
T
>
applySchedulers
(
view
:
ILceView
):
ObservableTransformer
<
T
,
T
>
{
fun
<
T
>
applySchedulers
(
view
:
ILceView
):
ObservableTransformer
<
T
,
T
>
{
return
ObservableTransformer
{
observable
->
return
ObservableTransformer
{
observable
->
observable
.
subscribeOn
(
Schedulers
.
io
())
observable
.
subscribeOn
(
Schedulers
.
io
())
...
@@ -107,6 +109,7 @@ object RxUtils {
...
@@ -107,6 +109,7 @@ object RxUtils {
* RxJava 线程协调 / RxLifecycle绑定方法
* RxJava 线程协调 / RxLifecycle绑定方法
*
*
*/
*/
@JvmStatic
fun
<
T
>
applySchedulers
(
view
:
IView
):
ObservableTransformer
<
T
,
T
>
{
fun
<
T
>
applySchedulers
(
view
:
IView
):
ObservableTransformer
<
T
,
T
>
{
return
ObservableTransformer
{
observable
->
return
ObservableTransformer
{
observable
->
observable
.
subscribeOn
(
Schedulers
.
io
())
observable
.
subscribeOn
(
Schedulers
.
io
())
...
@@ -116,9 +119,23 @@ object RxUtils {
...
@@ -116,9 +119,23 @@ object RxUtils {
}
}
}
}
@JvmStatic
fun
<
T
>
applySchedulers
(
iLifecycleable
:
ILifecycleable
<*>
?=
null
):
ObservableTransformer
<
T
,
T
>
{
if
(
iLifecycleable
==
null
){
return
applySchedulers
()
}
return
ObservableTransformer
{
observable
->
observable
.
subscribeOn
(
Schedulers
.
io
())
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
iLifecycleable
))
}
}
/**
/**
* RxJava 线程协调方法
* RxJava 线程协调方法
*/
*/
@JvmStatic
fun
<
T
>
applySchedulers
():
ObservableTransformer
<
T
,
T
>
{
fun
<
T
>
applySchedulers
():
ObservableTransformer
<
T
,
T
>
{
return
ObservableTransformer
{
observable
->
return
ObservableTransformer
{
observable
->
observable
.
subscribeOn
(
Schedulers
.
io
())
observable
.
subscribeOn
(
Schedulers
.
io
())
...
...
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/RxLifecycleUtils.kt
View file @
19b956db
...
@@ -83,7 +83,7 @@ class RxLifecycleUtils private constructor() {
...
@@ -83,7 +83,7 @@ class RxLifecycleUtils private constructor() {
/**
/**
* 绑定 Activity/Fragment 的生命周期
* 绑定 Activity/Fragment 的生命周期
*
*
* @param
view
* @param
activity
* @param <T>
* @param <T>
* @return
* @return
</T> */
</T> */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment