conversations-classic-ios/ConversationsClassic/View/Main/Conversation/Attachments/MediaPicker/MediaPickerView.swift

161 lines
6.4 KiB
Swift
Raw Normal View History

2024-08-17 08:50:44 +00:00
import AVFoundation
import MobileCoreServices
import Photos
import SwiftUI
struct MediaPickerView: View {
// @State private var showCameraPicker = false
// @State private var cameraReady = false
2024-08-17 10:39:40 +00:00
@State private var selectedItems: [String] = []
2024-08-17 08:50:44 +00:00
var body: some View {
let columns = Array(repeating: GridItem(.flexible(), spacing: 0), count: 3)
VStack(spacing: 0) {
// List of media
ScrollView(showsIndicators: false) {
LazyVGrid(columns: columns, spacing: 0) {
// For camera
2024-08-17 10:39:40 +00:00
CameraCellPreview()
2024-08-17 08:50:44 +00:00
// For gallery
// if store.state.sharingState.isGalleryAccessGranted {
// ForEach(store.state.sharingState.galleryItems) { item in
// GridViewItem(item: item, selected: $selectedItems)
// }
// } else {
// Button {
// openAppSettings()
// } label: {
// ZStack {
// Rectangle()
// .fill(Color.Material.Background.light)
// .overlay {
// VStack {
// Image(systemName: "photo")
// .foregroundColor(.Material.Elements.active)
// .font(.system(size: 30))
// Text("Allow gallery access")
// .foregroundColor(.Material.Text.main)
// .font(.body3)
// }
// }
// .frame(height: 100)
// }
// }
// }
}
}
// .fullScreenCover(isPresented: $showCameraPicker) {
// CameraPicker(sourceType: .camera) { data, type in
// store.dispatch(.sharingAction(.cameraCaptured(media: data, type: type)))
// showCameraPicker = false
// store.dispatch(.sharingAction(.showSharing(false)))
// }
// .edgesIgnoringSafeArea(.all)
// }
// Send panel
Rectangle()
.foregroundColor(.Material.Shape.black)
.frame(maxWidth: .infinity)
.frame(height: self.selectedItems.isEmpty ? 0 : 50)
.overlay {
HStack {
Text(L10n.Attachment.Send.media)
.foregroundColor(.Material.Text.white)
.font(.body1)
Image(systemName: "arrow.up.circle")
.foregroundColor(.Material.Text.white)
.font(.body1)
.padding(.leading, 8)
}
.padding()
}
.clipped()
.onTapGesture {
// store.dispatch(.sharingAction(.shareMedia(ids: selectedItems)))
// store.dispatch(.sharingAction(.showSharing(false)))
}
}
// .onAppear {
// store.dispatch(.sharingAction(.checkCameraAccess))
// store.dispatch(.sharingAction(.checkGalleryAccess))
// }
// .onChange(of: store.state.sharingState.isGalleryAccessGranted) { granted in
// if granted {
// store.dispatch(.fileAction(.fetchItemsFromGallery))
// }
// }
}
}
private struct GridViewItem: View {
// let item: SharingGalleryItem
@Binding var selected: [String]
@State var isSelected = false
var body: some View {
Text("Test")
// if let data = item.thumbnail {
// ZStack {
// Image(uiImage: UIImage(data: data) ?? UIImage())
// .resizable()
// .aspectRatio(contentMode: .fill)
// .frame(width: Const.galleryGridSize, height: Const.galleryGridSize)
// .clipped()
// if let duration = item.duration {
// VStack {
// Spacer()
// HStack {
// Spacer()
// Text(duration)
// .foregroundColor(.Material.Text.white)
// .font(.sub1)
// .shadow(color: .black, radius: 2)
// .padding(4)
// }
// }
// }
// if isSelected {
// VStack {
// HStack {
// Spacer()
// Circle()
// .frame(width: 30, height: 30)
// .shadow(color: .black, radius: 2)
// .foregroundColor(.Material.Shape.white)
// .overlay {
// Image(systemName: "checkmark")
// .foregroundColor(.Material.Elements.active)
// .font(.body3)
// }
// .padding(4)
// }
// Spacer()
// }
// }
// }
// .onTapGesture {
// isSelected.toggle()
// if isSelected {
// selected.append(item.id)
// } else {
// selected.removeAll { $0 == item.id }
// }
// }
// } else {
// ZStack {
// Rectangle()
// .fill(Color.Material.Background.light)
// .overlay {
// ProgressView()
// .foregroundColor(.Material.Elements.active)
// }
// .frame(width: Const.galleryGridSize, height: Const.galleryGridSize)
// }
// }
}
}