creating another footer to handle convos
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// ConvoFooterView.swift
|
||||
// nirvana-ios
|
||||
//
|
||||
// Created by Arjun Patel on 12/30/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct ConvoFooterView: View {
|
||||
@EnvironmentObject var convoVM: ConvoViewModel
|
||||
|
||||
@State private var convoRelativeTime = "started 20 minutes ago"
|
||||
|
||||
var body: some View {
|
||||
ZStack(alignment:.bottomTrailing) {
|
||||
VStack(alignment:.center) {
|
||||
Spacer()
|
||||
|
||||
HStack {
|
||||
ProfilePictureOverlap()
|
||||
|
||||
// meta data of convo
|
||||
VStack (alignment: .leading) {
|
||||
Text("kev, sarth, and 5 others")
|
||||
.font(.footnote)
|
||||
.foregroundColor(NirvanaColor.light)
|
||||
|
||||
Text(self.convoRelativeTime)
|
||||
.font(.caption2)
|
||||
.foregroundColor(.gray)
|
||||
}
|
||||
|
||||
Spacer()
|
||||
|
||||
// disconnect button
|
||||
Button {
|
||||
print("showing more info about the chat")
|
||||
|
||||
// show a sheet of the members in the call and add them if I want
|
||||
|
||||
} label: {
|
||||
Label("attendees", systemImage: "person.2.circle.fill")
|
||||
.labelStyle(.iconOnly)
|
||||
.foregroundColor(NirvanaColor.teal)
|
||||
.padding()
|
||||
.font(.title2)
|
||||
}
|
||||
|
||||
// disconnect button
|
||||
Button {
|
||||
print("disconnecting user now ")
|
||||
|
||||
self.convoVM.leaveConvo()
|
||||
|
||||
// show success or failure toast
|
||||
} label: {
|
||||
Label("Call", systemImage: "powerplug.fill")
|
||||
.labelStyle(.iconOnly)
|
||||
.foregroundColor(Color.orange)
|
||||
.padding()
|
||||
.font(.title2)
|
||||
}
|
||||
|
||||
}
|
||||
.frame(maxWidth: .infinity, maxHeight: 60) // 60 is the height of the footer control big circle
|
||||
.background(Color.white.opacity(0.5))
|
||||
.clipShape(RoundedRectangle(cornerRadius: 30, style: .continuous))
|
||||
.shadow(color: Color.black.opacity(0.25), radius: 30, x: 0, y: 20)
|
||||
}
|
||||
}
|
||||
.padding()
|
||||
.animation(Animation.spring(), value: self.convoVM.selectedConvoId)
|
||||
.offset(
|
||||
x:0,
|
||||
y:self.convoVM.selectedConvoId == nil ? 150 : 0
|
||||
)
|
||||
.onChange(of: self.convoVM.selectedConvoId) {newConvo in
|
||||
// update meta data based on which convo was selected
|
||||
|
||||
// reset the selected options to start fresh
|
||||
// self.convoRelativeTime = ""
|
||||
|
||||
// get relative start time of convo
|
||||
// let formatter = RelativeDateTimeFormatter()
|
||||
// formatter.unitsStyle = .full
|
||||
//
|
||||
// let relativeDate = formatter.localizedString(for: ?.sentTimestamp ?? Date(), relativeTo: Date())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct ConvoFooterView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
ConvoFooterView()
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,6 @@ struct CircleFooterView: View {
|
||||
@EnvironmentObject var navigationStack: NavigationStack
|
||||
@EnvironmentObject var authSessionStore: AuthSessionStore
|
||||
@EnvironmentObject var innerCircleVM: InnerCircleViewModel
|
||||
@EnvironmentObject var convoVM: ConvoViewModel
|
||||
|
||||
@Binding var selectedFriendIndex: String?
|
||||
|
||||
@@ -131,6 +130,11 @@ struct CircleFooterView: View {
|
||||
// update meta data based on which friend was selected
|
||||
let myId = self.authSessionStore.user?.id
|
||||
|
||||
// reset the selected options to start fresh
|
||||
self.selectedFriend = nil
|
||||
self.myTurn = false
|
||||
self.convoRelativeTime = ""
|
||||
|
||||
// set convo moment/relative time to show
|
||||
if newValue != nil && myId != nil {
|
||||
self.selectedFriend = self.authSessionStore.relevantUsersDict[newValue!]
|
||||
|
||||
@@ -86,19 +86,11 @@ struct InnerCircleView: View {
|
||||
}
|
||||
.padding()
|
||||
} else {
|
||||
VStack(alignment: .leading) {
|
||||
// convos
|
||||
// ConvosView()
|
||||
// .environmentObject(self.convoViewModel)
|
||||
// .padding(.top, 50)
|
||||
|
||||
// inner circle grid
|
||||
CircleGridView(selectedFriendIndex: self.$selectedFriendIndex)
|
||||
.environmentObject(self.innerCircleVM)
|
||||
.environmentObject(self.convoViewModel)
|
||||
|
||||
Spacer()
|
||||
}
|
||||
// inner circle grid
|
||||
CircleGridView(selectedFriendIndex: self.$selectedFriendIndex)
|
||||
.environmentObject(self.innerCircleVM)
|
||||
.environmentObject(self.convoViewModel)
|
||||
|
||||
}
|
||||
|
||||
// header
|
||||
|
||||
Reference in New Issue
Block a user