cealning up sent message ux
This commit is contained in:
@@ -105,36 +105,40 @@ struct CircleFooterView: View {
|
|||||||
x:0,
|
x:0,
|
||||||
y:self.selectedFriendIndex == nil ? 150 : 0
|
y:self.selectedFriendIndex == nil ? 150 : 0
|
||||||
)
|
)
|
||||||
.onChange(of: self.selectedFriendIndex) {newValue in
|
.onChange(of: self.selectedFriendIndex) {_ in
|
||||||
// update meta data based on which friend was selected
|
self.updateLocals()
|
||||||
let myId = self.authSessionStore.user?.id
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// reset the selected options to start fresh
|
func updateLocals() {
|
||||||
self.selectedFriend = nil
|
// update meta data based on which friend was selected
|
||||||
self.myTurn = false
|
let myId = AuthSessionStore.getCurrentUserId()
|
||||||
self.convoRelativeTime = ""
|
|
||||||
|
|
||||||
// set convo moment/relative time to show
|
// reset the selected options to start fresh
|
||||||
if newValue != nil && myId != nil {
|
self.selectedFriend = nil
|
||||||
self.selectedFriend = self.authSessionStore.relevantUsersDict[newValue!]
|
self.myTurn = false
|
||||||
|
self.convoRelativeTime = ""
|
||||||
|
|
||||||
// get the latest message's timestamp...will be the first in list now
|
// set convo moment/relative time to show
|
||||||
let lastMessage = self.authSessionStore.relevantMessagesByUserDict[self.selectedFriend!.id!]?.first
|
if myId != nil && self.selectedFriendIndex != nil {
|
||||||
if lastMessage != nil {
|
self.selectedFriend = self.authSessionStore.relevantUsersDict[self.selectedFriendIndex!]
|
||||||
// figure out whose turn it is
|
|
||||||
self.myTurn = lastMessage!.receiverId == myId! ? true : false
|
|
||||||
|
|
||||||
// ask for the full relative date
|
// get the latest message's timestamp...will be the first in list now
|
||||||
let formatter = RelativeDateTimeFormatter()
|
let lastMessage = self.authSessionStore.relevantMessagesByUserDict[self.selectedFriend!.id!]?.first
|
||||||
formatter.unitsStyle = .full
|
if lastMessage != nil {
|
||||||
|
// figure out whose turn it is
|
||||||
|
self.myTurn = lastMessage!.receiverId == myId! ? true : false
|
||||||
|
|
||||||
let relativeDate = formatter.localizedString(for: lastMessage?.sentTimestamp ?? Date(), relativeTo: Date())
|
// ask for the full relative date
|
||||||
|
let formatter = RelativeDateTimeFormatter()
|
||||||
|
formatter.unitsStyle = .full
|
||||||
|
|
||||||
print("Relative date is: \(relativeDate)")
|
let relativeDate = formatter.localizedString(for: lastMessage?.sentTimestamp ?? Date(), relativeTo: Date())
|
||||||
|
|
||||||
// setting the state for ui to update
|
print("Relative date is: \(relativeDate)")
|
||||||
self.convoRelativeTime = self.myTurn! ? "received " + relativeDate: "sent " + relativeDate
|
|
||||||
}
|
// setting the state for ui to update
|
||||||
|
self.convoRelativeTime = self.myTurn! ? "received " + relativeDate: "sent " + relativeDate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ struct CircleGridView: View {
|
|||||||
count: totalColumns)
|
count: totalColumns)
|
||||||
|
|
||||||
@Binding var selectedFriendIndex: String?
|
@Binding var selectedFriendIndex: String?
|
||||||
|
@State var lastPersonIdSentMessageTo: String?
|
||||||
|
|
||||||
private let big:CGFloat = 1
|
private let big:CGFloat = 1
|
||||||
private let medium:CGFloat = 0.9
|
private let medium:CGFloat = 0.9
|
||||||
@@ -157,7 +158,8 @@ struct CircleGridView: View {
|
|||||||
|
|
||||||
if self.haveNewMessageFromFriend(friendDbId: friendId) {
|
if self.haveNewMessageFromFriend(friendDbId: friendId) {
|
||||||
ProgressBarView(progress: self.selectedFriendIndex == friendId ? self.innerCircleVM.messagesListeningProgress : Float(1), color: Color.orange)
|
ProgressBarView(progress: self.selectedFriendIndex == friendId ? self.innerCircleVM.messagesListeningProgress : Float(1), color: Color.orange)
|
||||||
} else if self.selectedFriendIndex == friendId {
|
}
|
||||||
|
else if friendId == self.lastPersonIdSentMessageTo { // show that I sent a message to the last person I sent a message to
|
||||||
ProgressBarView(progress: self.innerCircleVM.toast == InnerCircleViewModel.Toast.clipSent ? Float(1) : Float(0), color: NirvanaColor.dimTeal)
|
ProgressBarView(progress: self.innerCircleVM.toast == InnerCircleViewModel.Toast.clipSent ? Float(1) : Float(0), color: NirvanaColor.dimTeal)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,7 +254,8 @@ struct CircleGridView: View {
|
|||||||
// stop recording
|
// stop recording
|
||||||
print("stopping recording")
|
print("stopping recording")
|
||||||
|
|
||||||
// self.selectedFriendIndex = nil
|
self.lastPersonIdSentMessageTo = self.selectedFriendIndex
|
||||||
|
self.selectedFriendIndex = nil
|
||||||
|
|
||||||
self.innerCircleVM.stopRecording(sender: self.authSessionStore.user!, receiver: self.authSessionStore.relevantUsersDict[friendId]!)
|
self.innerCircleVM.stopRecording(sender: self.authSessionStore.user!, receiver: self.authSessionStore.relevantUsersDict[friendId]!)
|
||||||
|
|
||||||
@@ -360,7 +363,6 @@ struct CircleGridView: View {
|
|||||||
} //lazygrid // TODO: add padding based on if we are on any cornering item to allow the bubble to enlargen
|
} //lazygrid // TODO: add padding based on if we are on any cornering item to allow the bubble to enlargen
|
||||||
.padding(.trailing, Self.size / 2 + Self.spacingBetweenColumns / 2) // because of the offset of last column
|
.padding(.trailing, Self.size / 2 + Self.spacingBetweenColumns / 2) // because of the offset of last column
|
||||||
.padding(.top, Self.size / 2 + Self.spacingBetweenRows / 2) // because we are going under the nav bar
|
.padding(.top, Self.size / 2 + Self.spacingBetweenRows / 2) // because we are going under the nav bar
|
||||||
// .id(UUID())
|
|
||||||
}// scrollview
|
}// scrollview
|
||||||
.onAppear {
|
.onAppear {
|
||||||
// scrolling to first person in grid
|
// scrolling to first person in grid
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ class InnerCircleViewModel: NSObject, ObservableObject {
|
|||||||
case .problemSendingClip:
|
case .problemSendingClip:
|
||||||
return AlertToast(displayMode: .hud, type: .error(Color.orange), title: "problem sending clip", subTitle: "please try again")
|
return AlertToast(displayMode: .hud, type: .error(Color.orange), title: "problem sending clip", subTitle: "please try again")
|
||||||
case .startedClip:
|
case .startedClip:
|
||||||
return AlertToast(displayMode: .hud, type: .systemImage("waveform.and.mic", Color.orange), subTitle: "you're on")
|
return AlertToast(displayMode: .hud, type: .systemImage("waveform.and.mic", Color.orange))
|
||||||
default:
|
default:
|
||||||
return AlertToast(displayMode: .hud, type: .error(Color.orange), title: "Something went wrong ‼️")
|
return AlertToast(displayMode: .hud, type: .error(Color.orange), title: "Something went wrong ‼️")
|
||||||
}
|
}
|
||||||
@@ -74,6 +74,7 @@ class InnerCircleViewModel: NSObject, ObservableObject {
|
|||||||
|
|
||||||
var queuePlayer = AVQueuePlayer()
|
var queuePlayer = AVQueuePlayer()
|
||||||
var avplayer: AVPlayer?
|
var avplayer: AVPlayer?
|
||||||
|
|
||||||
private var cachedPlayerItemsDict: [String: URL] = [:] // firebase audio url to local url
|
private var cachedPlayerItemsDict: [String: URL] = [:] // firebase audio url to local url
|
||||||
|
|
||||||
@Published var isRecording : Bool = false
|
@Published var isRecording : Bool = false
|
||||||
|
|||||||
Reference in New Issue
Block a user