android: remove unnecessary READ_EXTERNAL_STORAGE permission request, open image picker in Gallery; IMG timestamp format (#610)

This commit is contained in:
JRoberts
2022-05-07 16:25:04 +04:00
committed by GitHub
parent fcb5c69281
commit 235bce8e2a
14 changed files with 67 additions and 73 deletions

View File

@@ -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 {

View File

@@ -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
}
}
}

View File

@@ -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") }

View File

@@ -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])
}

View File

@@ -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 {