forked from mirrors/linphone-iphone
Add loading spinner for to wait for media data
This commit is contained in:
parent
caf9a510e0
commit
1c8b755ce0
2 changed files with 51 additions and 10 deletions
|
|
@ -76,6 +76,9 @@ import AVFoundation
|
||||||
return collectionView
|
return collectionView
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
let loadingView = UIView()
|
||||||
|
let loading = RotatingSpinner()
|
||||||
|
|
||||||
let menu: DropDown = {
|
let menu: DropDown = {
|
||||||
let menu = DropDown()
|
let menu = DropDown()
|
||||||
menu.dataSource = [""]
|
menu.dataSource = [""]
|
||||||
|
|
@ -181,7 +184,6 @@ import AVFoundation
|
||||||
|
|
||||||
override func viewDidAppear(_ animated: Bool) {
|
override func viewDidAppear(_ animated: Bool) {
|
||||||
tableController.reloadData()
|
tableController.reloadData()
|
||||||
messageView.ephemeralIndicator.isHidden = (linphone_chat_room_ephemeral_enabled(chatRoom?.getCobject) == 0)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override func viewDidDisappear(_ animated: Bool) {
|
override func viewDidDisappear(_ animated: Bool) {
|
||||||
|
|
@ -1024,6 +1026,15 @@ import AVFoundation
|
||||||
collectionView.dataSource = self
|
collectionView.dataSource = self
|
||||||
collectionView.delegate = self
|
collectionView.delegate = self
|
||||||
collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cell")
|
collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cell")
|
||||||
|
|
||||||
|
|
||||||
|
loadingView.backgroundColor = .gray.withAlphaComponent(0.6)
|
||||||
|
mediaSelector.addSubview(loadingView)
|
||||||
|
loadingView.matchParentEdges().done()
|
||||||
|
|
||||||
|
|
||||||
|
loadingView.addSubview(loading)
|
||||||
|
loading.square(Int(top_bar_height*2)).alignVerticalCenterWith(loadingView).alignHorizontalCenterWith(loadingView).done()
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
@objc func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
||||||
|
|
@ -1031,17 +1042,13 @@ import AVFoundation
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc(collectionView:cellForItemAtIndexPath:) func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
@objc(collectionView:cellForItemAtIndexPath:) func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
||||||
if(self.mediaCollectionView.count > 0 && !mediaSelectorVisible){
|
|
||||||
self.selectionMedia()
|
|
||||||
self.messageView.sendButton.isEnabled = true
|
|
||||||
self.messageView.fileContext = true
|
|
||||||
}
|
|
||||||
|
|
||||||
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
|
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
|
||||||
let viewCell: UIView = UIView(frame: cell.contentView.frame)
|
let viewCell: UIView = UIView(frame: cell.contentView.frame)
|
||||||
cell.addSubview(viewCell)
|
cell.addSubview(viewCell)
|
||||||
|
|
||||||
let deleteButton = CallControlButton(width: 22, height: 22, buttonTheme:VoipTheme.nav_black_button("reply_cancel"), onClickAction: {
|
let deleteButton = CallControlButton(width: 22, height: 22, buttonTheme:VoipTheme.nav_black_button("reply_cancel"))
|
||||||
|
|
||||||
|
deleteButton.onClickAction = {
|
||||||
self.collectionView.deleteItems(at: [indexPath])
|
self.collectionView.deleteItems(at: [indexPath])
|
||||||
self.mediaCollectionView.remove(at: indexPath.row)
|
self.mediaCollectionView.remove(at: indexPath.row)
|
||||||
self.mediaURLCollection.remove(at: indexPath.row)
|
self.mediaURLCollection.remove(at: indexPath.row)
|
||||||
|
|
@ -1055,7 +1062,7 @@ import AVFoundation
|
||||||
self.messageView.sendButton.isEnabled = true
|
self.messageView.sendButton.isEnabled = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
|
||||||
let imageCell = mediaCollectionView[indexPath.row]
|
let imageCell = mediaCollectionView[indexPath.row]
|
||||||
var myImageView = UIImageView()
|
var myImageView = UIImageView()
|
||||||
|
|
@ -1095,6 +1102,22 @@ import AVFoundation
|
||||||
|
|
||||||
@available(iOS 14.0, *)
|
@available(iOS 14.0, *)
|
||||||
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
|
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
|
||||||
|
|
||||||
|
let mediaCount = mediaCollectionView.count
|
||||||
|
let newMediaCount = results.count
|
||||||
|
loadingView.isHidden = false
|
||||||
|
messageView.isLoading = true
|
||||||
|
loading.startRotation()
|
||||||
|
|
||||||
|
if(self.mediaCollectionView.count == 0 && results.count >= 1){
|
||||||
|
self.selectionMedia()
|
||||||
|
self.messageView.sendButton.isEnabled = !messageView.isLoading
|
||||||
|
self.messageView.fileContext = true
|
||||||
|
}
|
||||||
|
if(self.mediaCollectionView.count > 0){
|
||||||
|
self.messageView.sendButton.isEnabled = !messageView.isLoading
|
||||||
|
}
|
||||||
|
|
||||||
picker.dismiss(animated: true, completion: nil)
|
picker.dismiss(animated: true, completion: nil)
|
||||||
let itemProviders = results.map(\.itemProvider)
|
let itemProviders = results.map(\.itemProvider)
|
||||||
for item in itemProviders {
|
for item in itemProviders {
|
||||||
|
|
@ -1109,6 +1132,14 @@ import AVFoundation
|
||||||
let indexPath = IndexPath(row: self.mediaCollectionView.count, section: 0)
|
let indexPath = IndexPath(row: self.mediaCollectionView.count, section: 0)
|
||||||
self.mediaCollectionView.append(image)
|
self.mediaCollectionView.append(image)
|
||||||
self.collectionView.insertItems(at: [indexPath])
|
self.collectionView.insertItems(at: [indexPath])
|
||||||
|
if(mediaCount + newMediaCount <= indexPath.row+1){
|
||||||
|
if(self.mediaCollectionView.count > 0){
|
||||||
|
self.messageView.sendButton.isEnabled = true
|
||||||
|
}
|
||||||
|
self.loadingView.isHidden = true
|
||||||
|
self.messageView.isLoading = false
|
||||||
|
self.loading.stopRotation()
|
||||||
|
}
|
||||||
}, completion: nil)
|
}, completion: nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1138,6 +1169,14 @@ import AVFoundation
|
||||||
} catch let error{
|
} catch let error{
|
||||||
print(error.localizedDescription)
|
print(error.localizedDescription)
|
||||||
}
|
}
|
||||||
|
if(mediaCount + newMediaCount <= indexPath.row+1){
|
||||||
|
if(self.mediaCollectionView.count > 0){
|
||||||
|
self.messageView.sendButton.isEnabled = true
|
||||||
|
}
|
||||||
|
self.loadingView.isHidden = true
|
||||||
|
self.messageView.isLoading = false
|
||||||
|
self.loading.stopRotation()
|
||||||
|
}
|
||||||
}, completion: nil)
|
}, completion: nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1254,6 +1293,7 @@ import AVFoundation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
controller.dismiss(animated: true)
|
controller.dismiss(animated: true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ class MessageView: UIView, UITextViewDelegate {
|
||||||
let ephemeralIndicator = UIImageView(image: UIImage(named: "ephemeral_messages_color_A.png"))
|
let ephemeralIndicator = UIImageView(image: UIImage(named: "ephemeral_messages_color_A.png"))
|
||||||
var fileContext = false
|
var fileContext = false
|
||||||
var isComposing = false
|
var isComposing = false
|
||||||
|
var isLoading = false
|
||||||
|
|
||||||
override init(frame: CGRect) {
|
override init(frame: CGRect) {
|
||||||
super.init(frame: frame)
|
super.init(frame: frame)
|
||||||
|
|
@ -84,7 +85,7 @@ class MessageView: UIView, UITextViewDelegate {
|
||||||
|
|
||||||
func textViewDidChangeSelection(_ textView: UITextView) {
|
func textViewDidChangeSelection(_ textView: UITextView) {
|
||||||
let chatRoom = ChatRoom.getSwiftObject(cObject: PhoneMainView.instance().currentRoom)
|
let chatRoom = ChatRoom.getSwiftObject(cObject: PhoneMainView.instance().currentRoom)
|
||||||
if messageText.text.isEmpty && fileContext == false {
|
if ((messageText.text.isEmpty && !fileContext) || isLoading) {
|
||||||
sendButton.isEnabled = false
|
sendButton.isEnabled = false
|
||||||
} else {
|
} else {
|
||||||
if !isComposing {
|
if !isComposing {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue