file name in previews and w/t text

This commit is contained in:
JRoberts
2022-04-16 22:25:40 +04:00
parent 7787e622a7
commit 0110570e55
4 changed files with 47 additions and 19 deletions

View File

@@ -585,6 +585,15 @@ struct ChatItem: Identifiable, Decodable {
var timestampText: Text { get { meta.timestampText } }
var text: String {
get {
switch (content.text, file) {
case let ("", .some(file)): return file.fileName
default: return content.text
}
}
}
func isRcvNew() -> Bool {
if case .rcvNew = meta.itemStatus { return true }
return false
@@ -725,6 +734,7 @@ enum CIContent: Decodable, ItemContent {
}
}
}
var msgContent: MsgContent? {
get {
switch self {

View File

@@ -24,7 +24,7 @@ struct FramedItemView: View {
VStack(alignment: .leading, spacing: 0) {
if let qi = chatItem.quotedItem {
MsgContentView(
content: qi,
text: qi.content.text,
sender: qi.sender
)
.lineLimit(3)
@@ -53,21 +53,19 @@ struct FramedItemView: View {
} else {
if case let .image(_, image) = chatItem.content.msgContent {
ChatItemImageView(image: image, file: chatItem.file)
ChatItemMsgContentView (chatItem: chatItem, showMember: showMember)
// // TODO make transparent background and change color for meta
// if case let .image(text, image) = chatItem.content.msgContent {
// ChatItemImageView(image: image, file: chatItem.file)
// if !text.isEmpty {
// ChatItemMsgContentView (chatItem: chatItem, showMember: showMember)
// }
} else if case let .link(_, preview) = chatItem.content.msgContent {
ChatItemLinkView(linkPreview: preview)
ChatItemMsgContentView (chatItem: chatItem, showMember: showMember)
} else {
ChatItemMsgContentView (chatItem: chatItem, showMember: showMember)
}
MsgContentView(
content: chatItem.content,
formattedText: chatItem.formattedText,
sender: showMember ? chatItem.memberDisplayName : nil,
metaText: chatItem.timestampText,
edited: chatItem.meta.itemEdited
)
.padding(.vertical, 6)
.padding(.horizontal, 12)
.overlay(DetermineWidth())
.frame(minWidth: 0, alignment: .leading)
.textSelection(.enabled)
}
}
@@ -97,6 +95,26 @@ struct FramedItemView: View {
}
}
struct ChatItemMsgContentView: View {
var chatItem: ChatItem
var showMember = false
var body: some View {
MsgContentView(
text: chatItem.text,
formattedText: chatItem.formattedText,
sender: showMember ? chatItem.memberDisplayName : nil,
metaText: chatItem.timestampText,
edited: chatItem.meta.itemEdited
)
.padding(.vertical, 6)
.padding(.horizontal, 12)
.overlay(DetermineWidth())
.frame(minWidth: 0, alignment: .leading)
.textSelection(.enabled)
}
}
func chatItemFrameColor(_ ci: ChatItem, _ colorScheme: ColorScheme) -> Color {
ci.chatDir.sent
? (colorScheme == .light ? sentColorLight : sentColorDark)

View File

@@ -12,14 +12,14 @@ private let uiLinkColor = UIColor(red: 0, green: 0.533, blue: 1, alpha: 1)
private let linkColor = Color(uiColor: uiLinkColor)
struct MsgContentView: View {
var content: ItemContent
var text: String
var formattedText: [FormattedText]? = nil
var sender: String? = nil
var metaText: Text? = nil
var edited = false
var body: some View {
let v = messageText(content, formattedText, sender)
let v = messageText(text, formattedText, sender)
if let mt = metaText {
return v + reserveSpaceForMeta(mt, edited)
} else {
@@ -35,8 +35,8 @@ struct MsgContentView: View {
}
}
func messageText(_ content: ItemContent, _ formattedText: [FormattedText]?, _ sender: String?, preview: Bool = false) -> Text {
let s = content.text
func messageText(_ text: String, _ formattedText: [FormattedText]?, _ sender: String?, preview: Bool = false) -> Text {
let s = text
var res: Text
if let ft = formattedText, ft.count > 0 {
res = formattText(ft[0], preview)
@@ -90,7 +90,7 @@ struct MsgContentView_Previews: PreviewProvider {
static var previews: some View {
let chatItem = ChatItem.getSample(1, .directSnd, .now, "hello")
return MsgContentView(
content: chatItem.content,
text: chatItem.text,
formattedText: chatItem.formattedText,
sender: chatItem.memberDisplayName,
metaText: chatItem.timestampText

View File

@@ -51,7 +51,7 @@ struct ChatPreviewView: View {
if let cItem = cItem {
ZStack(alignment: .topTrailing) {
(itemStatusMark(cItem) + messageText(cItem.content, cItem.formattedText, cItem.memberDisplayName, preview: true))
(itemStatusMark(cItem) + messageText(cItem.text, cItem.formattedText, cItem.memberDisplayName, preview: true))
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 44, maxHeight: 44, alignment: .topLeading)
.padding(.leading, 8)
.padding(.trailing, 36)