Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
galaxy-iOS
Project
Project
Details
Activity
Releases
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
mobile-group
galaxy-iOS
Commits
555ade9b
Commit
555ade9b
authored
May 28, 2025
by
Alex朱枝文
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
IM列表追加到消息页以及推送跳转
parent
13f7a1f0
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
317 additions
and
13 deletions
+317
-13
Applegate(JPush).swift
galaxy/galaxy/Applegate(JPush).swift
+5
-3
YHCommunityViewController.swift
...s/Modules/Community(社区)/C/YHCommunityViewController.swift
+11
-2
YHMessageListVC.swift
...alaxy/Classes/Modules/Message(消息)/C/YHMessageListVC.swift
+187
-4
YHMsgListModel.swift
...galaxy/Classes/Modules/Message(消息)/M/YHMsgListModel.swift
+55
-0
YHMessageSessionCell.swift
.../Classes/Modules/Message(消息)/V/YHMessageSessionCell.swift
+59
-4
No files found.
galaxy/galaxy/Applegate(JPush).swift
View file @
555ade9b
...
@@ -72,7 +72,7 @@ extension AppDelegate: JPUSHRegisterDelegate {
...
@@ -72,7 +72,7 @@ extension AppDelegate: JPUSHRegisterDelegate {
// 转换到消息tab
// 转换到消息tab
YHLoginManager
.
shared
.
needJumpToMsgTabFlag
=
true
YHLoginManager
.
shared
.
needJumpToMsgTabFlag
=
true
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
0.25
,
execute
:
{
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
0.25
,
execute
:
{
goToMessagePage
()
goToMessagePage
(
userInfo
)
})
})
}
}
...
@@ -113,12 +113,11 @@ extension AppDelegate: JPUSHRegisterDelegate {
...
@@ -113,12 +113,11 @@ extension AppDelegate: JPUSHRegisterDelegate {
}
}
// 系统要求执行这个方法
// 系统要求执行这个方法
completionHandler
()
completionHandler
()
// 转换到消息tab
// 转换到消息tab
YHLoginManager
.
shared
.
needJumpToMsgTabFlag
=
true
YHLoginManager
.
shared
.
needJumpToMsgTabFlag
=
true
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
0.25
,
execute
:
{
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
0.25
,
execute
:
{
goToMessagePage
()
if
let
msgType
=
userInfo
[
"msg_type"
]
as?
Int
,
msgType
==
YHMessageType
.
article
.
rawValue
{
if
let
msgType
=
userInfo
[
"msg_type"
]
as?
Int
,
msgType
==
YHMessageType
.
article
.
rawValue
{
goToMessagePage
()
let
model
=
YHNewsModel
()
let
model
=
YHNewsModel
()
model
.
id
=
userInfo
[
"msg_id"
]
as?
String
??
""
model
.
id
=
userInfo
[
"msg_id"
]
as?
String
??
""
model
.
article_id
=
userInfo
[
"article_id"
]
as?
Int
??
0
model
.
article_id
=
userInfo
[
"article_id"
]
as?
Int
??
0
...
@@ -129,7 +128,10 @@ extension AppDelegate: JPUSHRegisterDelegate {
...
@@ -129,7 +128,10 @@ extension AppDelegate: JPUSHRegisterDelegate {
model
.
media_transcode_url
=
userInfo
[
"media_transcode_url"
]
as?
String
??
""
model
.
media_transcode_url
=
userInfo
[
"media_transcode_url"
]
as?
String
??
""
yh_newsList
.
enterDetail
(
model
)
yh_newsList
.
enterDetail
(
model
)
yh_newsList
.
markRead
(
model
)
yh_newsList
.
markRead
(
model
)
}
else
{
goToMessagePage
(
userInfo
)
}
}
})
})
}
}
...
...
galaxy/galaxy/Classes/Modules/Community(社区)/C/YHCommunityViewController.swift
View file @
555ade9b
...
@@ -146,7 +146,7 @@ class YHCommunityViewController: YHBaseViewController {
...
@@ -146,7 +146,7 @@ class YHCommunityViewController: YHBaseViewController {
make
.
edges
.
equalToSuperview
()
make
.
edges
.
equalToSuperview
()
}
}
NotificationCenter
.
default
.
addObserver
(
self
,
selector
:
#selector(
goMessageListVC
)
,
name
:
YhConstant
.
YhNotification
.
goMessageVCNotifiction
,
object
:
nil
)
NotificationCenter
.
default
.
addObserver
(
self
,
selector
:
#selector(
goMessageListVC
(_:)
)
,
name
:
YhConstant
.
YhNotification
.
goMessageVCNotifiction
,
object
:
nil
)
NotificationCenter
.
default
.
addObserver
(
self
,
selector
:
#selector(
goActivityVC
)
,
name
:
YhConstant
.
YhNotification
.
goActivityVCNotifiction
,
object
:
nil
)
NotificationCenter
.
default
.
addObserver
(
self
,
selector
:
#selector(
goActivityVC
)
,
name
:
YhConstant
.
YhNotification
.
goActivityVCNotifiction
,
object
:
nil
)
...
@@ -271,8 +271,17 @@ class YHCommunityViewController: YHBaseViewController {
...
@@ -271,8 +271,17 @@ class YHCommunityViewController: YHBaseViewController {
}
}
}
}
@objc
func
goMessageListVC
()
{
@objc
func
goMessageListVC
(
_
notification
:
Notification
)
{
segmentedView
.
selectItemAt
(
index
:
0
)
segmentedView
.
selectItemAt
(
index
:
0
)
guard
let
userInfo
=
notification
.
userInfo
else
{
return
}
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
0.15
)
{
guard
let
messageListVC
=
self
.
arrItemVCs
[
0
]
as?
YHMessageListVC
else
{
return
}
messageListVC
.
handleRemoteNotification
(
userInfo
)
}
}
}
@objc
func
goActivityVC
()
{
@objc
func
goActivityVC
()
{
...
...
galaxy/galaxy/Classes/Modules/Message(消息)/C/YHMessageListVC.swift
View file @
555ade9b
...
@@ -8,9 +8,13 @@
...
@@ -8,9 +8,13 @@
import
UIKit
import
UIKit
import
JXSegmentedView
import
JXSegmentedView
import
TUIConversation
import
TUIChat
import
IQKeyboardManagerSwift
import
GKNavigationBarSwift
class
YHMessageListVC
:
YHBaseViewController
{
class
YHMessageListVC
:
YHBaseViewController
{
private
let
messageListManager
=
YHTUIMessageListManager
.
shared
var
msgArr
:
[
YHMessageInfoModel
]
=
[]
var
msgArr
:
[
YHMessageInfoModel
]
=
[]
lazy
var
viewModel
=
{
lazy
var
viewModel
=
{
let
model
=
YHMsgViewModel
()
let
model
=
YHMsgViewModel
()
...
@@ -24,6 +28,11 @@ class YHMessageListVC: YHBaseViewController {
...
@@ -24,6 +28,11 @@ class YHMessageListVC: YHBaseViewController {
var
isNotifyEnabled
=
false
var
isNotifyEnabled
=
false
private
lazy
var
previewFileTool
:
YHFilePreviewTool
=
{
let
tool
=
YHFilePreviewTool
(
targetVC
:
self
)
return
tool
}()
lazy
var
tableView
:
UITableView
=
{
lazy
var
tableView
:
UITableView
=
{
let
tableView
=
UITableView
(
frame
:
.
zero
,
style
:
.
grouped
)
let
tableView
=
UITableView
(
frame
:
.
zero
,
style
:
.
grouped
)
tableView
.
estimatedSectionHeaderHeight
=
1.0
tableView
.
estimatedSectionHeaderHeight
=
1.0
...
@@ -99,6 +108,7 @@ class YHMessageListVC: YHBaseViewController {
...
@@ -99,6 +108,7 @@ class YHMessageListVC: YHBaseViewController {
override
func
viewDidLoad
()
{
override
func
viewDidLoad
()
{
super
.
viewDidLoad
()
super
.
viewDidLoad
()
setupUI
()
setupUI
()
setupMessageList
()
}
}
override
func
viewWillAppear
(
_
animated
:
Bool
)
{
override
func
viewWillAppear
(
_
animated
:
Bool
)
{
...
@@ -119,7 +129,7 @@ class YHMessageListVC: YHBaseViewController {
...
@@ -119,7 +129,7 @@ class YHMessageListVC: YHBaseViewController {
// 银河管家 始终放在第一位
// 银河管家 始终放在第一位
if
YHButlerServiceManager
.
shared
.
isUatAllowed
()
{
if
YHButlerServiceManager
.
shared
.
isUatAllowed
()
{
msgArr
.
append
(
self
.
managerSession
)
msgArr
.
insert
(
self
.
managerSession
,
at
:
0
)
}
}
self
.
tableView
.
reloadData
()
self
.
tableView
.
reloadData
()
...
@@ -146,6 +156,29 @@ class YHMessageListVC: YHBaseViewController {
...
@@ -146,6 +156,29 @@ class YHMessageListVC: YHBaseViewController {
NotificationCenter
.
default
.
addObserver
(
self
,
selector
:
#selector(
didRefreshYinHeManagerUnreadMsg
)
,
name
:
YhConstant
.
YhNotification
.
didQiYuUnReadMsgCountChangeNotification
,
object
:
nil
)
NotificationCenter
.
default
.
addObserver
(
self
,
selector
:
#selector(
didRefreshYinHeManagerUnreadMsg
)
,
name
:
YhConstant
.
YhNotification
.
didQiYuUnReadMsgCountChangeNotification
,
object
:
nil
)
}
}
private
func
setupMessageList
()
{
// 设置代理
messageListManager
.
delegate
=
self
// 首次加载消息列表
messageListManager
.
refreshMessageList
()
}
// 处理置顶
func
pinConversation
(
_
message
:
TUIConversationCellData
)
{
messageListManager
.
pinConversation
(
message
,
isPinned
:
!
message
.
isOnTop
)
}
// 处理已读
func
markAsRead
(
_
message
:
TUIConversationCellData
)
{
messageListManager
.
markAsRead
(
message
)
}
// 处理删除
func
deleteConversation
(
_
message
:
TUIConversationCellData
)
{
messageListManager
.
deleteConversation
(
message
)
}
deinit
{
deinit
{
NotificationCenter
.
default
.
removeObserver
(
self
)
NotificationCenter
.
default
.
removeObserver
(
self
)
}
}
...
@@ -194,14 +227,14 @@ class YHMessageListVC: YHBaseViewController {
...
@@ -194,14 +227,14 @@ class YHMessageListVC: YHBaseViewController {
guard
let
self
=
self
else
{
return
}
guard
let
self
=
self
else
{
return
}
// 保留第一个元素银河管家,删除其他元素
// 保留第一个元素银河管家,删除其他元素
msgArr
.
removeAll
()
msgArr
.
removeAll
(
where
:
{
$0
.
conversationID
==
""
}
)
if
YHButlerServiceManager
.
shared
.
isUatAllowed
()
{
if
YHButlerServiceManager
.
shared
.
isUatAllowed
()
{
self
.
managerSession
.
unreadCount
=
YHButlerServiceManager
.
shared
.
unreadCount
self
.
managerSession
.
unreadCount
=
YHButlerServiceManager
.
shared
.
unreadCount
if
let
lastMsg
=
YHButlerServiceManager
.
shared
.
getLastMessage
()
{
if
let
lastMsg
=
YHButlerServiceManager
.
shared
.
getLastMessage
()
{
self
.
managerSession
.
lastMessage
=
lastMsg
.
content
self
.
managerSession
.
lastMessage
=
lastMsg
.
content
self
.
managerSession
.
lastMessageTime
=
Int64
(
lastMsg
.
timeStamp
)
self
.
managerSession
.
lastMessageTime
=
Int64
(
lastMsg
.
timeStamp
)
}
}
msgArr
.
append
(
self
.
managerSession
)
msgArr
.
insert
(
self
.
managerSession
,
at
:
0
)
}
}
// 银河资讯
// 银河资讯
...
@@ -302,6 +335,11 @@ class YHMessageListVC: YHBaseViewController {
...
@@ -302,6 +335,11 @@ class YHMessageListVC: YHBaseViewController {
func
markAllMsgsRead
()
{
func
markAllMsgsRead
()
{
// 清除银河管家未读消息数
// 清除银河管家未读消息数
YHButlerServiceManager
.
shared
.
clearUnreadCount
()
YHButlerServiceManager
.
shared
.
clearUnreadCount
()
// 清理im未读消息
let
list
=
messageListManager
.
getMessageList
()
list
.
forEach
{
messageListManager
.
markAsRead
(
$0
)
}
YHHUD
.
show
(
.
progress
(
message
:
"清除中..."
))
YHHUD
.
show
(
.
progress
(
message
:
"清除中..."
))
self
.
viewModel
.
readMessages
(
type
:
nil
,
msgIds
:
nil
,
isAllRead
:
true
)
{
self
.
viewModel
.
readMessages
(
type
:
nil
,
msgIds
:
nil
,
isAllRead
:
true
)
{
...
@@ -412,6 +450,60 @@ extension YHMessageListVC {
...
@@ -412,6 +450,60 @@ extension YHMessageListVC {
})
})
}
}
}
}
func
handleRemoteNotification
(
_
userInfo
:
[
AnyHashable
:
Any
])
{
let
extString
=
userInfo
[
"ext"
]
as?
String
??
"{}"
let
extData
=
extString
.
data
(
using
:
.
utf8
)
??
Data
()
let
ext
=
(
try
?
JSONSerialization
.
jsonObject
(
with
:
extData
,
options
:
[]))
as?
[
String
:
Any
]
??
[:]
let
entity
=
ext
[
"entity"
]
as?
[
String
:
Any
]
??
[:]
let
chatType
=
entity
[
"chatType"
]
as?
Int
??
0
// 1: 单聊, 2: 群聊
let
senderID
=
entity
[
"sender"
]
as?
String
??
""
let
nickName
=
entity
[
"nickname"
]
as?
String
??
""
let
aps
=
userInfo
[
"aps"
]
as?
[
String
:
Any
]
??
[:]
let
alert
=
aps
[
"alert"
]
as?
[
String
:
Any
]
??
[:]
let
title
=
alert
[
"title"
]
as?
String
??
nickName
// 备用昵称
guard
senderID
.
count
>
0
else
{
return
}
updateNavigateBarBeforeEnterChatVC
()
var
param
:
[
String
:
Any
]
=
[
TUICore_TUIChatObjectFactory_ChatViewController_Title
:
title
,
TUICore_TUIChatObjectFactory_ChatViewController_AvatarUrl
:
""
,
// 通知无头像 URL
TUICore_TUIChatObjectFactory_ChatViewController_AtTipsStr
:
""
,
TUICore_TUIChatObjectFactory_ChatViewController_AtMsgSeqs
:
[],
TUICore_TUIChatObjectFactory_ChatViewController_Draft
:
""
]
// 5. 区分单聊/群聊
if
chatType
==
2
{
// 群聊
param
[
TUICore_TUIChatObjectFactory_ChatViewController_GroupID
]
=
senderID
param
[
TUICore_TUIChatObjectFactory_ChatViewController_ConversationID
]
=
"group_
\(
senderID
)
"
}
else
{
// 单聊
param
[
TUICore_TUIChatObjectFactory_ChatViewController_UserID
]
=
senderID
param
[
TUICore_TUIChatObjectFactory_ChatViewController_ConversationID
]
=
"c2c_
\(
senderID
)
"
}
// 3. 跳转
let
vc
=
navigationController
?
.
push
(
TUICore_TUIChatObjectFactory_ChatViewController_Classic
,
param
:
param
,
forResult
:
nil
)
if
let
vc
=
vc
as?
TUIBaseChatViewController
{
vc
.
filePreviewDelegate
=
self
}
}
private
func
updateNavigateBarBeforeEnterChatVC
()
{
IQKeyboardManager
.
shared
.
isEnabled
=
false
navigationController
?
.
gk_hideNavigationBar
=
false
navigationController
?
.
isNavigationBarHidden
=
false
let
appearance
=
UINavigationBarAppearance
()
appearance
.
backgroundColor
=
.
white
// 背景色
appearance
.
shadowImage
=
UIImage
()
// 移除黑线
appearance
.
shadowColor
=
.
clear
// 或直接设置阴影颜色为透明
navigationController
?
.
navigationBar
.
tintColor
=
.
black
// 返回图标颜色
navigationController
?
.
navigationBar
.
standardAppearance
=
appearance
navigationController
?
.
navigationBar
.
scrollEdgeAppearance
=
appearance
}
}
}
extension
YHMessageListVC
:
UITableViewDelegate
,
UITableViewDataSource
{
extension
YHMessageListVC
:
UITableViewDelegate
,
UITableViewDataSource
{
...
@@ -458,6 +550,28 @@ extension YHMessageListVC: UITableViewDelegate, UITableViewDataSource {
...
@@ -458,6 +550,28 @@ extension YHMessageListVC: UITableViewDelegate, UITableViewDataSource {
}
}
}
}
return
return
}
else
if
msgItem
.
type
==
YHMessageType
.
txIM
.
rawValue
{
let
item
=
msgArr
[
indexPath
.
row
]
guard
let
data
=
messageListManager
.
getMessageList
()
.
first
(
where
:
{
$0
.
conversationID
==
item
.
conversationID
})
else
{
return
}
updateNavigateBarBeforeEnterChatVC
()
let
param
:
[
String
:
Any
]
=
[
TUICore_TUIChatObjectFactory_ChatViewController_Title
:
data
.
title
,
TUICore_TUIChatObjectFactory_ChatViewController_UserID
:
data
.
userID
,
TUICore_TUIChatObjectFactory_ChatViewController_GroupID
:
data
.
groupID
,
TUICore_TUIChatObjectFactory_ChatViewController_AvatarImage
:
data
.
avatarImage
,
TUICore_TUIChatObjectFactory_ChatViewController_AvatarUrl
:
data
.
faceUrl
,
TUICore_TUIChatObjectFactory_ChatViewController_ConversationID
:
data
.
conversationID
,
TUICore_TUIChatObjectFactory_ChatViewController_AtTipsStr
:
data
.
atTipsStr
,
TUICore_TUIChatObjectFactory_ChatViewController_AtMsgSeqs
:
data
.
atMsgSeqs
,
TUICore_TUIChatObjectFactory_ChatViewController_Draft
:
data
.
draftText
]
let
vc
=
navigationController
?
.
push
(
TUICore_TUIChatObjectFactory_ChatViewController_Classic
,
param
:
param
,
forResult
:
nil
)
if
let
vc
=
vc
as?
TUIBaseChatViewController
{
vc
.
filePreviewDelegate
=
self
}
return
}
}
if
msgItem
.
type
==
YHMessageType
.
article
.
rawValue
{
// 银河资讯
if
msgItem
.
type
==
YHMessageType
.
article
.
rawValue
{
// 银河资讯
...
@@ -537,3 +651,72 @@ extension YHMessageListVC: JXSegmentedListContainerViewListDelegate {
...
@@ -537,3 +651,72 @@ extension YHMessageListVC: JXSegmentedListContainerViewListDelegate {
return
view
return
view
}
}
}
}
// MARK: - YHMessageListDelegate
extension
YHMessageListVC
:
YHMessageListDelegate
{
func
onMessageSelected
(
message
:
TUIConversationCellData
)
{
// 处理消息选中,如打开聊天页面
}
private
func
mergeConversations
(
_
newConversations
:
[
TUIConversationCellData
])
{
var
convertedItems
=
newConversations
.
map
{
conversation
->
YHMessageInfoModel
in
YHMessageInfoModel
(
unreadCount
:
Int
(
conversation
.
unreadCount
),
lastMessage
:
conversation
.
subTitle
.
string
,
lastMessageTime
:
Int64
(
conversation
.
time
.
timeIntervalSince1970
),
type
:
YHMessageType
.
txIM
.
rawValue
,
title
:
conversation
.
title
,
avatar
:
conversation
.
faceUrl
,
conversationID
:
conversation
.
conversationID
,
userID
:
conversation
.
userID
,
groupID
:
conversation
.
groupID
,
orderKey
:
Int64
(
conversation
.
orderKey
),
isPinned
:
conversation
.
isOnTop
,
isNotDisturb
:
conversation
.
isNotDisturb
,
isOnline
:
conversation
.
onlineStatus
==
.
online
,
draftText
:
conversation
.
draftText
,
attributedSubtitle
:
conversation
.
subTitle
,
avatarImage
:
conversation
.
avatarImage
,
groupType
:
conversation
.
groupType
)
}
msgArr
.
removeAll
(
where
:
{
$0
.
type
==
YHMessageType
.
txIM
.
rawValue
})
convertedItems
.
sort
{
$0
.
lastMessageTime
>
$1
.
lastMessageTime
}
if
msgArr
.
count
>
0
{
msgArr
.
insert
(
contentsOf
:
convertedItems
,
at
:
1
)
}
else
{
msgArr
.
insert
(
contentsOf
:
convertedItems
,
at
:
0
)
}
tableView
.
reloadData
()
}
func
onMessageListDataSourceChanged
()
{
let
messages
=
messageListManager
.
getMessageList
()
mergeConversations
(
messages
)
}
func
onUnreadCountChanged
(
unreadCount
:
Int
,
hideUnreadCount
:
Int
)
{
// totalUnreadCount = unreadCount + hideUnreadCount
// 更新未读数显示
// updateUnreadBadge()
}
// 可选实现:自定义消息显示文本
func
getCustomMessageDisplay
(
conversation
:
V2TIMConversation
)
->
String
?
{
// 根据需要自定义会话的显示文本
return
nil
}
}
extension
YHMessageListVC
:
TUICustomOpenFileDelegate
{
func
didTap
(
inFileCell
cellData
:
TUIFileMessageCellData
)
{
var
isExist
:
ObjCBool
=
false
let
path
=
cellData
.
getFilePath
(
&
isExist
)
if
isExist
.
boolValue
{
let
url
=
URL
(
fileURLWithPath
:
path
)
previewFileTool
.
openXLSXFile
(
at
:
url
,
fileName
:
cellData
.
fileName
)
}
else
{
cellData
.
downloadFile
()
}
}
}
galaxy/galaxy/Classes/Modules/Message(消息)/M/YHMsgListModel.swift
View file @
555ade9b
...
@@ -23,6 +23,7 @@ enum YHMessageType: Int {
...
@@ -23,6 +23,7 @@ enum YHMessageType: Int {
case
article
=
10
// 资讯
case
article
=
10
// 资讯
case
yinheManager
=
9527
// 银河管家
case
yinheManager
=
9527
// 银河管家
case
txIM
=
9528
// im聊天
}
}
class
YHMessageInfoModel
:
SmartCodable
{
class
YHMessageInfoModel
:
SmartCodable
{
...
@@ -30,10 +31,61 @@ class YHMessageInfoModel: SmartCodable {
...
@@ -30,10 +31,61 @@ class YHMessageInfoModel: SmartCodable {
var
lastMessage
:
String
=
""
var
lastMessage
:
String
=
""
var
lastMessageTime
:
Int64
=
0
var
lastMessageTime
:
Int64
=
0
var
type
:
Int
=
0
var
type
:
Int
=
0
var
title
:
String
=
""
var
avatar
:
String
=
""
var
conversationID
:
String
=
""
var
userID
:
String
=
""
var
groupID
:
String
=
""
var
orderKey
:
Int64
=
0
var
isPinned
:
Bool
=
false
var
isNotDisturb
:
Bool
=
false
var
isOnline
:
Bool
=
false
var
draftText
:
String
=
""
var
attributedSubtitle
:
NSAttributedString
=
NSAttributedString
()
var
avatarImage
:
UIImage
?
var
groupType
:
String
=
""
required
init
()
{
required
init
()
{
}
}
init
(
unreadCount
:
Int
=
0
,
lastMessage
:
String
=
""
,
lastMessageTime
:
Int64
=
0
,
type
:
Int
=
0
,
title
:
String
=
""
,
avatar
:
String
=
""
,
conversationID
:
String
=
""
,
userID
:
String
=
""
,
groupID
:
String
=
""
,
orderKey
:
Int64
=
0
,
isPinned
:
Bool
=
false
,
isNotDisturb
:
Bool
=
false
,
isOnline
:
Bool
=
false
,
draftText
:
String
=
""
,
attributedSubtitle
:
NSAttributedString
=
NSAttributedString
(),
avatarImage
:
UIImage
?,
groupType
:
String
)
{
self
.
unreadCount
=
unreadCount
self
.
lastMessage
=
lastMessage
self
.
lastMessageTime
=
lastMessageTime
self
.
type
=
type
self
.
title
=
title
self
.
avatar
=
avatar
self
.
conversationID
=
conversationID
self
.
userID
=
userID
self
.
groupID
=
groupID
self
.
orderKey
=
orderKey
self
.
isPinned
=
isPinned
self
.
isNotDisturb
=
isNotDisturb
self
.
isOnline
=
isOnline
self
.
draftText
=
draftText
self
.
attributedSubtitle
=
attributedSubtitle
self
.
avatarImage
=
avatarImage
self
.
groupType
=
groupType
}
enum
CodingKeys
:
String
,
CodingKey
{
enum
CodingKeys
:
String
,
CodingKey
{
case
unreadCount
=
"unread_count"
case
unreadCount
=
"unread_count"
...
@@ -77,6 +129,9 @@ class YHMessageInfoModel: SmartCodable {
...
@@ -77,6 +129,9 @@ class YHMessageInfoModel: SmartCodable {
}
else
if
type
==
YHMessageType
.
article
.
rawValue
{
}
else
if
type
==
YHMessageType
.
article
.
rawValue
{
return
"银河资讯"
return
"银河资讯"
}
else
if
type
==
YHMessageType
.
txIM
.
rawValue
{
return
title
}
}
return
""
return
""
}
}
...
...
galaxy/galaxy/Classes/Modules/Message(消息)/V/YHMessageSessionCell.swift
View file @
555ade9b
...
@@ -7,6 +7,7 @@
...
@@ -7,6 +7,7 @@
//
//
import
UIKit
import
UIKit
import
TUICore
class
YHMessageSessionCell
:
UITableViewCell
{
class
YHMessageSessionCell
:
UITableViewCell
{
...
@@ -69,6 +70,9 @@ class YHMessageSessionCell: UITableViewCell {
...
@@ -69,6 +70,9 @@ class YHMessageSessionCell: UITableViewCell {
self
.
iconImgView
.
image
=
UIImage
(
named
:
"msg_icon_news"
)
self
.
iconImgView
.
image
=
UIImage
(
named
:
"msg_icon_news"
)
self
.
iconContentView
.
backgroundColor
=
UIColor
(
hex
:
0xF0F5FF
)
self
.
iconContentView
.
backgroundColor
=
UIColor
(
hex
:
0xF0F5FF
)
}
else
if
model
.
type
==
YHMessageType
.
txIM
.
rawValue
{
// self.iconImgView.kf.setImage(with: URL(string: model.avatar), placeholder: model.avatarImage ?? UIImage(named: "people_head_default"))
updatePortrait
(
convData
:
model
)
}
}
self
.
badgeLabel
.
isHidden
=
model
.
unreadCount
<=
0
self
.
badgeLabel
.
isHidden
=
model
.
unreadCount
<=
0
...
@@ -86,15 +90,21 @@ class YHMessageSessionCell: UITableViewCell {
...
@@ -86,15 +90,21 @@ class YHMessageSessionCell: UITableViewCell {
}
}
make
.
width
.
equalTo
(
width
)
make
.
width
.
equalTo
(
width
)
}
}
let
isBigIcon
=
model
.
type
==
YHMessageType
.
yinheManager
.
rawValue
||
model
.
type
==
YHMessageType
.
txIM
.
rawValue
self
.
iconImgView
.
snp
.
updateConstraints
{
make
in
self
.
iconImgView
.
snp
.
updateConstraints
{
make
in
let
width
=
model
.
type
==
YHMessageType
.
yinheManager
.
rawValue
?
44.0
:
21.0
let
width
=
isBigIcon
?
44.0
:
21.0
let
height
=
model
.
type
==
YHMessageType
.
yinheManager
.
rawValue
?
44.0
:
21.0
let
height
=
isBigIcon
?
44.0
:
21.0
make
.
width
.
equalTo
(
width
)
make
.
width
.
equalTo
(
width
)
make
.
height
.
equalTo
(
height
)
make
.
height
.
equalTo
(
height
)
}
}
self
.
detailLabel
.
text
=
!
model
.
lastMessage
.
isEmpty
?
model
.
lastMessage
:
"暂无消息"
.
local
if
model
.
type
==
YHMessageType
.
txIM
.
rawValue
{
let
attr
=
NSMutableAttributedString
(
attributedString
:
model
.
attributedSubtitle
)
attr
.
setAttributes
([
.
foregroundColor
:
UIColor
.
mainTextColor50
,
.
font
:
UIFont
.
PFSC_R
(
ofSize
:
12
)],
range
:
NSRange
(
location
:
0
,
length
:
attr
.
string
.
count
))
self
.
detailLabel
.
attributedText
=
!
attr
.
string
.
isEmpty
?
attr
:
NSAttributedString
(
string
:
"暂无消息"
.
local
,
attributes
:
[
.
foregroundColor
:
UIColor
.
mainTextColor50
,
.
font
:
UIFont
.
PFSC_R
(
ofSize
:
12
)])
}
else
{
self
.
detailLabel
.
text
=
!
model
.
lastMessage
.
isEmpty
?
model
.
lastMessage
:
"暂无消息"
.
local
}
self
.
timeLabel
.
text
=
formatTimestamp
(
Double
(
model
.
lastMessageTime
))
self
.
timeLabel
.
text
=
formatTimestamp
(
Double
(
model
.
lastMessageTime
))
self
.
timeLabel
.
isHidden
=
model
.
lastMessage
.
isEmpty
self
.
timeLabel
.
isHidden
=
model
.
lastMessage
.
isEmpty
}
}
...
@@ -124,6 +134,51 @@ class YHMessageSessionCell: UITableViewCell {
...
@@ -124,6 +134,51 @@ class YHMessageSessionCell: UITableViewCell {
return
dateFormatter
.
string
(
from
:
date
)
return
dateFormatter
.
string
(
from
:
date
)
}
}
private
func
updatePortrait
(
convData
:
YHMessageInfoModel
)
{
if
!
convData
.
groupID
.
isEmpty
{
// Group avatar
if
!
convData
.
avatar
.
isEmpty
{
// Group avatar has been manually set externally
self
.
iconImgView
.
kf
.
setImage
(
with
:
URL
(
string
:
convData
.
avatar
),
placeholder
:
convData
.
avatarImage
??
UIImage
(
named
:
"people_head_default"
))
}
else
{
if
TUIConfig
.
default
()
.
enableGroupGridAvatar
{
// Use synthetic avatar
self
.
iconImgView
.
image
=
convData
.
avatarImage
??
UIImage
(
named
:
"people_head_default"
)
TUIGroupAvatar
.
getCacheGroupAvatar
(
convData
.
groupID
)
{
[
weak
self
]
(
avatar
,
callbackGroupID
)
in
guard
let
self
=
self
else
{
return
}
if
callbackGroupID
==
convData
.
groupID
{
if
let
avatar
=
avatar
{
// Cache hit
self
.
iconImgView
.
image
=
avatar
}
else
{
// Need to synthesize new avatar
self
.
iconImgView
.
image
=
convData
.
avatarImage
??
UIImage
(
named
:
"people_head_default"
)
let
placeholderImage
=
convData
.
avatarImage
??
UIImage
(
named
:
"people_head_default"
)
??
UIImage
()
TUIGroupAvatar
.
fetchGroupAvatars
(
convData
.
groupID
,
placeholder
:
placeholderImage
)
{
[
weak
self
]
(
success
,
image
,
fetchGroupID
)
in
guard
let
self
=
self
else
{
return
}
if
fetchGroupID
==
convData
.
groupID
{
let
placeholder
=
success
?
image
:
TUIConfig
.
default
()
.
getGroupAvatarImage
(
byGroupType
:
convData
.
groupType
)
self
.
iconImgView
.
image
=
placeholder
}
// Ignore if cell has been reused
}
}
}
// Ignore if cell has been reused
}
}
else
{
// Synthetic avatars not allowed, use default
self
.
iconImgView
.
image
=
convData
.
avatarImage
??
UIImage
(
named
:
"people_head_default"
)
}
}
}
else
{
self
.
iconImgView
.
kf
.
setImage
(
with
:
URL
(
string
:
convData
.
avatar
),
placeholder
:
convData
.
avatarImage
??
UIImage
(
named
:
"people_head_default"
))
}
}
func
setupUI
()
{
func
setupUI
()
{
self
.
selectionStyle
=
.
none
self
.
selectionStyle
=
.
none
...
...
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