WIP: link real data to swiftui message info screen

pull/874/head
Ryan Zhao 2 years ago
parent 3ccf5995f2
commit d91fd27260

@ -154,6 +154,7 @@ extension ContextMenuVC {
currentUserBlinded25PublicKey: String?, currentUserBlinded25PublicKey: String?,
currentUserIsOpenGroupModerator: Bool, currentUserIsOpenGroupModerator: Bool,
currentThreadIsMessageRequest: Bool, currentThreadIsMessageRequest: Bool,
forMessageInfoScreen: Bool,
delegate: ContextMenuActionDelegate? delegate: ContextMenuActionDelegate?
) -> [Action]? { ) -> [Action]? {
switch cellViewModel.variant { switch cellViewModel.variant {
@ -225,11 +226,9 @@ extension ContextMenuVC {
on: cellViewModel.threadOpenGroupServer on: cellViewModel.threadOpenGroupServer
) )
} }
return !currentThreadIsMessageRequest return !currentThreadIsMessageRequest && !forMessageInfoScreen
}() }()
let shouldShowInfo: Bool = (cellViewModel.attachments?.isEmpty == false)
let generatedActions: [Action] = [ let generatedActions: [Action] = [
(canRetry ? Action.retry(cellViewModel, delegate) : nil), (canRetry ? Action.retry(cellViewModel, delegate) : nil),
(viewModelCanReply(cellViewModel) ? Action.reply(cellViewModel, delegate) : nil), (viewModelCanReply(cellViewModel) ? Action.reply(cellViewModel, delegate) : nil),
@ -239,15 +238,15 @@ extension ContextMenuVC {
(canDelete ? Action.delete(cellViewModel, delegate) : nil), (canDelete ? Action.delete(cellViewModel, delegate) : nil),
(canBan ? Action.ban(cellViewModel, delegate) : nil), (canBan ? Action.ban(cellViewModel, delegate) : nil),
(canBan ? Action.banAndDeleteAllMessages(cellViewModel, delegate) : nil), (canBan ? Action.banAndDeleteAllMessages(cellViewModel, delegate) : nil),
(shouldShowInfo ? Action.info(cellViewModel, delegate) : nil), (forMessageInfoScreen ? nil : Action.info(cellViewModel, delegate)),
] ]
.appending(contentsOf: (shouldShowEmojiActions ? recentEmojis : []).map { Action.react(cellViewModel, $0, delegate) }) .appending(contentsOf: (shouldShowEmojiActions ? recentEmojis : []).map { Action.react(cellViewModel, $0, delegate) })
.appending(Action.emojiPlusButton(cellViewModel, delegate)) .appending(forMessageInfoScreen ? nil : Action.emojiPlusButton(cellViewModel, delegate))
.compactMap { $0 } .compactMap { $0 }
guard !generatedActions.isEmpty else { return [] } guard !generatedActions.isEmpty else { return [] }
return generatedActions.appending(Action.dismiss(delegate)) return generatedActions.appending(forMessageInfoScreen ? nil : Action.dismiss(delegate))
} }
} }

@ -11,6 +11,7 @@ import SessionUIKit
import SessionMessagingKit import SessionMessagingKit
import SessionUtilitiesKit import SessionUtilitiesKit
import SignalUtilitiesKit import SignalUtilitiesKit
import SwiftUI
extension ConversationVC: extension ConversationVC:
InputViewDelegate, InputViewDelegate,
@ -758,6 +759,7 @@ extension ConversationVC:
on: self.viewModel.threadData.openGroupServer on: self.viewModel.threadData.openGroupServer
), ),
currentThreadIsMessageRequest: (self.viewModel.threadData.threadIsMessageRequest == true), currentThreadIsMessageRequest: (self.viewModel.threadData.threadIsMessageRequest == true),
forMessageInfoScreen: false,
delegate: self delegate: self
) )
else { return } else { return }
@ -1608,14 +1610,26 @@ extension ConversationVC:
// MARK: - ContextMenuActionDelegate // MARK: - ContextMenuActionDelegate
func info(_ cellViewModel: MessageViewModel) { func info(_ cellViewModel: MessageViewModel) {
let mediaInfoVC = MediaInfoVC( let actions: [ContextMenuVC.Action] = ContextMenuVC.actions(
attachments: (cellViewModel.attachments ?? []), for: cellViewModel,
isOutgoing: (cellViewModel.variant == .standardOutgoing), recentEmojis: [],
threadId: self.viewModel.threadData.threadId, currentUserPublicKey: self.viewModel.threadData.currentUserPublicKey,
threadVariant: self.viewModel.threadData.threadVariant, currentUserBlinded15PublicKey: self.viewModel.threadData.currentUserBlinded15PublicKey,
interactionId: cellViewModel.id currentUserBlinded25PublicKey: self.viewModel.threadData.currentUserBlinded25PublicKey,
) currentUserIsOpenGroupModerator: OpenGroupManager.isUserModeratorOrAdmin(
navigationController?.pushViewController(mediaInfoVC, animated: true) self.viewModel.threadData.currentUserPublicKey,
for: self.viewModel.threadData.openGroupRoomToken,
on: self.viewModel.threadData.openGroupServer
),
currentThreadIsMessageRequest: (self.viewModel.threadData.threadIsMessageRequest == true),
forMessageInfoScreen: true,
delegate: self
) ?? []
let messageInfoView = MessageInfoView(actions: actions, messageViewModel: cellViewModel)
let hostingViewController = UIHostingController(rootView: messageInfoView)
hostingViewController.title = "message_info_title".localized()
navigationController?.pushViewController(hostingViewController, animated: true)
} }
func retry(_ cellViewModel: MessageViewModel) { func retry(_ cellViewModel: MessageViewModel) {

@ -16,9 +16,9 @@ struct MessageInfoView: View {
NavigationView { NavigationView {
ZStack (alignment: .topLeading) { ZStack (alignment: .topLeading) {
if #available(iOS 14.0, *) { if #available(iOS 14.0, *) {
Color.black.ignoresSafeArea() ThemeManager.currentTheme.colorSwiftUI(for: .backgroundPrimary).ignoresSafeArea()
} else { } else {
Color.black ThemeManager.currentTheme.colorSwiftUI(for: .backgroundPrimary)
} }
ScrollView(.vertical, showsIndicators: false) { ScrollView(.vertical, showsIndicators: false) {
@ -373,10 +373,6 @@ struct MessageInfoView: View {
} }
} }
} }
.navigationBarTitle(
"Message Info",
displayMode: .inline
)
} }
} }
} }

Loading…
Cancel
Save