浏览代码

implement helper to save selfavatar in app-local document storage

cyberta 5 年之前
父节点
当前提交
8dcf1eb5de
共有 2 个文件被更改,包括 60 次插入0 次删除
  1. 4 0
      deltachat-ios.xcodeproj/project.pbxproj
  2. 56 0
      deltachat-ios/Helper/AvatarHelper.swift

+ 4 - 0
deltachat-ios.xcodeproj/project.pbxproj

@@ -83,6 +83,7 @@
 		306011B622E5E7FB00C1CE6F /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = 306011B422E5E7FB00C1CE6F /* Localizable.stringsdict */; };
 		3095A351237DD1F700AB07F7 /* MediaPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3095A350237DD1F700AB07F7 /* MediaPicker.swift */; };
 		30A4D9AE2332672700544344 /* QrInviteViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30A4D9AD2332672600544344 /* QrInviteViewController.swift */; };
+		30AC265F237F1807002A943F /* AvatarHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30AC265E237F1807002A943F /* AvatarHelper.swift */; };
 		30C0D49D237C4908008E2A0E /* CertificateCheckController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30C0D49C237C4908008E2A0E /* CertificateCheckController.swift */; };
 		30F9B9EC235F2116006E7ACF /* MessageCounter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30F9B9EB235F2116006E7ACF /* MessageCounter.swift */; };
 		6795F63A82E94FF7CD2CEC0F /* Pods_deltachat_iosTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F7009234DB9408201A6CDCB /* Pods_deltachat_iosTests.framework */; };
@@ -291,6 +292,7 @@
 		306011C922E5E83500C1CE6F /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = uk; path = uk.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
 		3095A350237DD1F700AB07F7 /* MediaPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPicker.swift; sourceTree = "<group>"; };
 		30A4D9AD2332672600544344 /* QrInviteViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QrInviteViewController.swift; sourceTree = "<group>"; };
+		30AC265E237F1807002A943F /* AvatarHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarHelper.swift; sourceTree = "<group>"; };
 		30C0D49C237C4908008E2A0E /* CertificateCheckController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CertificateCheckController.swift; sourceTree = "<group>"; };
 		30F9B9EB235F2116006E7ACF /* MessageCounter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageCounter.swift; sourceTree = "<group>"; };
 		6241BE1534A653E79AD5D01D /* Pods_deltachat_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_deltachat_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -693,6 +695,7 @@
 				AE38B3192267328200EC37A1 /* Colors.swift */,
 				AE851AC4227C755A00ED86F0 /* Protocols.swift */,
 				3095A350237DD1F700AB07F7 /* MediaPicker.swift */,
+				30AC265E237F1807002A943F /* AvatarHelper.swift */,
 			);
 			path = Helper;
 			sourceTree = "<group>";
@@ -1052,6 +1055,7 @@
 				305961ED2346125100C80F33 /* DetectorType.swift in Sources */,
 				305962062346125100C80F33 /* TypingIndicatorCellSizeCalculator.swift in Sources */,
 				AE851AC7227C776400ED86F0 /* Location.swift in Sources */,
+				30AC265F237F1807002A943F /* AvatarHelper.swift in Sources */,
 				7AE0A5491FC42F65005ECB4B /* NewChatViewController.swift in Sources */,
 				305961E52346125100C80F33 /* LabelAlignment.swift in Sources */,
 				305961E82346125100C80F33 /* Sender.swift in Sources */,

+ 56 - 0
deltachat-ios/Helper/AvatarHelper.swift

@@ -0,0 +1,56 @@
+//
+//  AvatarHelper.swift
+//  deltachat-ios
+//
+//  Created by Macci on 15.11.19.
+//  Copyright © 2019 Jonas Reinsch. All rights reserved.
+//
+
+import Foundation
+
+
+class AvatarHelper {
+
+    static let groupTemplate = "group_chat_avatar_%s_.jpg"
+    static let contactTemplate = "contact_avatar_%s.jpg"
+    static let selfAvatarFile = "contact_avatar_self.jpg"
+    private static let avatarPath = "avatars"
+
+    // blocking method (reads/writes to storage)
+    static func setSelfAvatarFile(fileUrl: URL) {
+        let filemanager = FileManager.default
+        let docDir = filemanager.urls(for: .documentDirectory, in: .userDomainMask)[0]
+        let avatarDir = docDir.appendingPathComponent(avatarPath)
+        let avatarFile = avatarDir.appendingPathComponent(selfAvatarFile)
+        do {
+            try filemanager.createDirectory(atPath: avatarDir.path,
+                                            withIntermediateDirectories: false)
+        } catch let error as NSError {
+            logger.warning("Could not create avatar directory: \(error.localizedDescription)")
+        }
+
+        if !filemanager.changeCurrentDirectoryPath(avatarDir.path) {
+            logger.warning("Could not change into avatar directory")
+            return
+        }
+
+        if filemanager.fileExists(atPath: avatarFile.path) {
+            do {
+                try filemanager.removeItem(atPath: avatarFile.path)
+            } catch let error {
+                logger.warning("Error: \(error.localizedDescription)")
+            }
+        }
+
+        do {
+            try filemanager.copyItem(at: fileUrl, to: avatarFile)
+        } catch let error {
+            logger.warning("Error: \(error.localizedDescription)")
+            return
+        }
+
+        DcConfig.selfavatar = avatarFile.path
+
+    }
+
+}