feat: update photo preview

This commit is contained in:
dscyrescotti
2024-06-26 21:16:08 +07:00
parent b9dbcc4506
commit 78e14c65aa
4 changed files with 9 additions and 9 deletions

View File

@@ -61,12 +61,11 @@ final class PenStroke: Stroke, @unchecked Sendable {
convenience init(object: StrokeObject) { convenience init(object: StrokeObject) {
let style = StrokeStyle(rawValue: object.style) ?? .marker let style = StrokeStyle(rawValue: object.style) ?? .marker
#warning("TODO: revisit here and check if there is any crash")
self.init( self.init(
bounds: object.bounds, bounds: object.bounds,
color: object.color, color: object.color,
style: style, style: style,
createdAt: object.createdAt ?? .now, // sometimes crash here createdAt: object.createdAt ?? .now,
thickness: object.thickness thickness: object.thickness
) )
self.object = object self.object = object

View File

@@ -125,10 +125,10 @@ public class Tool: NSObject, ObservableObject {
func selectPhoto(_ image: UIImage, for canvasID: NSManagedObjectID) { func selectPhoto(_ image: UIImage, for canvasID: NSManagedObjectID) {
guard let (resizedImage, dimension) = resizePhoto(of: image) else { return } guard let (resizedImage, dimension) = resizePhoto(of: image) else { return }
let photoItem = bookmarkPhoto(of: resizedImage, in: dimension, with: canvasID) let photoItem = bookmarkPhoto(of: resizedImage, and: image, in: dimension, with: canvasID)
isLoadingPhoto = false
withAnimation { withAnimation {
selectedPhotoItem = photoItem selectedPhotoItem = photoItem
isLoadingPhoto = false
} }
} }
@@ -153,7 +153,7 @@ public class Tool: NSObject, ObservableObject {
return (newImage, dimension) return (newImage, dimension)
} }
private func bookmarkPhoto(of image: UIImage, in dimension: CGSize, with canvasID: NSManagedObjectID) -> PhotoItem? { private func bookmarkPhoto(of image: UIImage, and previewImage: UIImage, in dimension: CGSize, with canvasID: NSManagedObjectID) -> PhotoItem? {
guard let data = image.jpegData(compressionQuality: 1) else { return nil } guard let data = image.jpegData(compressionQuality: 1) else { return nil }
let fileManager = FileManager.default let fileManager = FileManager.default
guard let directory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { guard let directory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else {
@@ -180,7 +180,7 @@ public class Tool: NSObject, ObservableObject {
var photoBookmark: PhotoItem? var photoBookmark: PhotoItem?
do { do {
let bookmark = try file.bookmarkData(options: .minimalBookmark) let bookmark = try file.bookmarkData(options: .minimalBookmark)
photoBookmark = PhotoItem(id: file, image: image, dimension: dimension, bookmark: bookmark) photoBookmark = PhotoItem(id: file, image: image, previewImage: previewImage, dimension: dimension, bookmark: bookmark)
} catch { } catch {
NSLog("[Memola] - \(error.localizedDescription)") NSLog("[Memola] - \(error.localizedDescription)")
} }

View File

@@ -11,6 +11,7 @@ import Foundation
struct PhotoItem: Identifiable, Equatable { struct PhotoItem: Identifiable, Equatable {
var id: URL var id: URL
let image: UIImage let image: UIImage
let previewImage: UIImage
let dimension: CGSize let dimension: CGSize
let bookmark: Data let bookmark: Data

View File

@@ -12,10 +12,10 @@ struct PhotoPreview: View {
@ObservedObject var tool: Tool @ObservedObject var tool: Tool
var body: some View { var body: some View {
Image(uiImage: photoItem.image) Image(uiImage: photoItem.previewImage)
.resizable() .resizable()
.scaledToFill() .scaledToFit()
.frame(width: 100, height: 100) .frame(height: 100)
.cornerRadius(5) .cornerRadius(5)
.overlay { .overlay {
RoundedRectangle(cornerRadius: 5) RoundedRectangle(cornerRadius: 5)