file name in previews and w/t text
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user