android: remove unnecessary READ_EXTERNAL_STORAGE permission request, open image picker in Gallery; IMG timestamp format (#610)
This commit is contained in:
@@ -26,17 +26,17 @@ func getAppFilePath(_ fileName: String) -> URL {
|
||||
getAppFilesDirectory().appendingPathComponent(fileName)
|
||||
}
|
||||
|
||||
func getStoredFilePath(_ file: CIFile?) -> String? {
|
||||
func getLoadedFilePath(_ file: CIFile?) -> String? {
|
||||
if let file = file,
|
||||
file.stored,
|
||||
file.loaded,
|
||||
let savedFile = file.filePath {
|
||||
return getAppFilePath(savedFile).path
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func getStoredImage(_ file: CIFile?) -> UIImage? {
|
||||
if let filePath = getStoredFilePath(file) {
|
||||
func getLoadedImage(_ file: CIFile?) -> UIImage? {
|
||||
if let filePath = getLoadedFilePath(file) {
|
||||
return UIImage(contentsOfFile: filePath)
|
||||
}
|
||||
return nil
|
||||
@@ -63,13 +63,22 @@ func saveFileFromURL(_ url: URL) -> String? {
|
||||
|
||||
func saveImage(_ uiImage: UIImage) -> String? {
|
||||
if let imageDataResized = resizeImageToDataSize(uiImage, maxDataSize: maxImageSize) {
|
||||
let millisecondsSince1970 = Int64((Date().timeIntervalSince1970 * 1000.0).rounded())
|
||||
let fileName = uniqueCombine("image_\(millisecondsSince1970).jpg")
|
||||
let timestamp = Date().getFormattedDate("yyyyMMdd_HHmmss")
|
||||
let fileName = uniqueCombine("IMG_\(timestamp).jpg")
|
||||
return saveFile(imageDataResized, fileName)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
extension Date {
|
||||
func getFormattedDate(_ format: String) -> String {
|
||||
let df = DateFormatter()
|
||||
df.dateFormat = format
|
||||
df.locale = Locale(identifier: "US")
|
||||
return df.string(from: self)
|
||||
}
|
||||
}
|
||||
|
||||
private func saveFile(_ data: Data, _ fileName: String) -> String? {
|
||||
let filePath = getAppFilePath(fileName)
|
||||
do {
|
||||
|
||||
@@ -655,15 +655,18 @@ struct CIFile: Decodable {
|
||||
CIFile(fileId: fileId, fileName: fileName, fileSize: fileSize, filePath: filePath, fileStatus: fileStatus)
|
||||
}
|
||||
|
||||
var stored: Bool {
|
||||
var loaded: Bool {
|
||||
get {
|
||||
switch self.fileStatus {
|
||||
case .sndStored: return true
|
||||
case .sndTransfer: return true
|
||||
case .sndComplete: return true
|
||||
case .sndCancelled: return true
|
||||
case .rcvInvitation: return false
|
||||
case .rcvAccepted: return false
|
||||
case .rcvTransfer: return false
|
||||
case .rcvCancelled: return false
|
||||
case .rcvComplete: return true
|
||||
default: return false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,7 +148,7 @@ struct ChatView: View {
|
||||
} label: { Label("Reply", systemImage: "arrowshape.turn.up.left") }
|
||||
Button {
|
||||
var shareItems: [Any] = [ci.content.text]
|
||||
if case .image = ci.content.msgContent, let image = getStoredImage(ci.file) {
|
||||
if case .image = ci.content.msgContent, let image = getLoadedImage(ci.file) {
|
||||
shareItems.append(image)
|
||||
}
|
||||
showShareSheet(items: shareItems)
|
||||
@@ -156,14 +156,14 @@ struct ChatView: View {
|
||||
Button {
|
||||
if case let .image(text, _) = ci.content.msgContent,
|
||||
text == "",
|
||||
let image = getStoredImage(ci.file) {
|
||||
let image = getLoadedImage(ci.file) {
|
||||
UIPasteboard.general.image = image
|
||||
} else {
|
||||
UIPasteboard.general.string = ci.content.text
|
||||
}
|
||||
} label: { Label("Copy", systemImage: "doc.on.doc") }
|
||||
if case .image = ci.content.msgContent,
|
||||
let image = getStoredImage(ci.file) {
|
||||
let image = getLoadedImage(ci.file) {
|
||||
Button {
|
||||
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
|
||||
} label: { Label("Save", systemImage: "square.and.arrow.down") }
|
||||
|
||||
@@ -78,7 +78,7 @@ struct CIFileView: View {
|
||||
)
|
||||
case .rcvComplete:
|
||||
logger.debug("CIFileView processFile - in .rcvComplete")
|
||||
if let filePath = getStoredFilePath(file){
|
||||
if let filePath = getLoadedFilePath(file){
|
||||
let url = URL(fileURLWithPath: filePath)
|
||||
showShareSheet(items: [url])
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ struct CIImageView: View {
|
||||
|
||||
var body: some View {
|
||||
VStack(alignment: .center, spacing: 6) {
|
||||
if let uiImage = getStoredImage(file) {
|
||||
if let uiImage = getLoadedImage(file) {
|
||||
imageView(uiImage)
|
||||
.fullScreenCover(isPresented: $showFullScreenImage) {
|
||||
ZStack {
|
||||
|
||||
Reference in New Issue
Block a user