mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
use UIIimage to generate the local thumbnail for the avatar image so that snapshotting works fine and performance are improved
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
// Please see LICENSE files in the repository root for full details.
|
// Please see LICENSE files in the repository root for full details.
|
||||||
//
|
//
|
||||||
|
|
||||||
import Foundation
|
import SwiftUI
|
||||||
|
|
||||||
enum CreateRoomScreenErrorType: Error {
|
enum CreateRoomScreenErrorType: Error {
|
||||||
case failedCreatingRoom
|
case failedCreatingRoom
|
||||||
@@ -31,7 +31,19 @@ struct CreateRoomScreenViewState: BindableState {
|
|||||||
let isKnockingFeatureEnabled: Bool
|
let isKnockingFeatureEnabled: Bool
|
||||||
var aliasLocalPart: String
|
var aliasLocalPart: String
|
||||||
var bindings: CreateRoomScreenViewStateBindings
|
var bindings: CreateRoomScreenViewStateBindings
|
||||||
var avatarMediaInfo: MediaInfo?
|
var avatarMediaInfo: MediaInfo? {
|
||||||
|
didSet {
|
||||||
|
switch avatarMediaInfo {
|
||||||
|
case .image(_, let thumbnailURL, _):
|
||||||
|
avatarImage = UIImage(contentsOfFile: thumbnailURL.path(percentEncoded: false))
|
||||||
|
default:
|
||||||
|
avatarImage = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var avatarImage: UIImage?
|
||||||
|
|
||||||
var canCreateRoom: Bool {
|
var canCreateRoom: Bool {
|
||||||
!roomName.isEmpty && aliasErrors.isEmpty
|
!roomName.isEmpty && aliasErrors.isEmpty
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,14 +103,10 @@ struct CreateRoomScreen: View {
|
|||||||
focus = nil
|
focus = nil
|
||||||
context.showAttachmentConfirmationDialog = true
|
context.showAttachmentConfirmationDialog = true
|
||||||
} label: {
|
} label: {
|
||||||
if let url = context.viewState.avatarMediaInfo?.thumbnailURL {
|
if let avatarImage = context.viewState.avatarImage {
|
||||||
AsyncImage(url: url) { image in
|
Image(uiImage: avatarImage)
|
||||||
image
|
|
||||||
.resizable()
|
.resizable()
|
||||||
.aspectRatio(contentMode: .fill)
|
.aspectRatio(contentMode: .fill)
|
||||||
} placeholder: {
|
|
||||||
ProgressView()
|
|
||||||
}
|
|
||||||
.scaledFrame(size: 70, relativeTo: .title)
|
.scaledFrame(size: 70, relativeTo: .title)
|
||||||
.clipShape(context.viewState.isSpace ? AnyShape(RoundedRectangle(cornerRadius: 16)) : AnyShape(Circle()))
|
.clipShape(context.viewState.isSpace ? AnyShape(RoundedRectangle(cornerRadius: 16)) : AnyShape(Circle()))
|
||||||
.overlay(alignment: .bottomTrailing) {
|
.overlay(alignment: .bottomTrailing) {
|
||||||
@@ -143,7 +139,7 @@ struct CreateRoomScreen: View {
|
|||||||
}
|
}
|
||||||
.accessibilityIdentifier(A11yIdentifiers.createRoomScreen.mediaPicker)
|
.accessibilityIdentifier(A11yIdentifiers.createRoomScreen.mediaPicker)
|
||||||
|
|
||||||
if context.viewState.avatarMediaInfo?.thumbnailURL != nil {
|
if context.viewState.avatarImage != nil {
|
||||||
Button(L10n.actionRemove, role: .destructive) {
|
Button(L10n.actionRemove, role: .destructive) {
|
||||||
context.send(viewAction: .removeImage)
|
context.send(viewAction: .removeImage)
|
||||||
}
|
}
|
||||||
@@ -407,7 +403,7 @@ struct CreateRoom_Previews: PreviewProvider, TestablePreview {
|
|||||||
CreateRoomScreen(context: avatarViewModel.context)
|
CreateRoomScreen(context: avatarViewModel.context)
|
||||||
}
|
}
|
||||||
.previewDisplayName("Create Room with avatar")
|
.previewDisplayName("Create Room with avatar")
|
||||||
.snapshotPreferences(expect: avatarViewModel.context.$viewState.map { $0.avatarMediaInfo != nil })
|
.snapshotPreferences(expect: avatarViewModel.context.$viewState.map { $0.avatarImage != nil })
|
||||||
|
|
||||||
NavigationStack {
|
NavigationStack {
|
||||||
CreateRoomScreen(context: spaceViewModel.context)
|
CreateRoomScreen(context: spaceViewModel.context)
|
||||||
@@ -418,7 +414,7 @@ struct CreateRoom_Previews: PreviewProvider, TestablePreview {
|
|||||||
CreateRoomScreen(context: spaceWithAvatarViewModel.context)
|
CreateRoomScreen(context: spaceWithAvatarViewModel.context)
|
||||||
}
|
}
|
||||||
.previewDisplayName("Create Space with avatar")
|
.previewDisplayName("Create Space with avatar")
|
||||||
.snapshotPreferences(expect: spaceWithAvatarViewModel.context.$viewState.map { $0.avatarMediaInfo != nil })
|
.snapshotPreferences(expect: spaceWithAvatarViewModel.context.$viewState.map { $0.avatarImage != nil })
|
||||||
|
|
||||||
NavigationStack {
|
NavigationStack {
|
||||||
CreateRoomScreen(context: publicRoomViewModel.context)
|
CreateRoomScreen(context: publicRoomViewModel.context)
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:9540a4055953e7e3462ccff5605af75f435f5ce7743f09f745d560c3daba7afd
|
oid sha256:dcbee0919af7296c78578076842b77cea64add28137e6d6bf27e1837563c9eab
|
||||||
size 122057
|
size 156762
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:d573231fbd9098847e02e294a362116e6b71a5959b37cfcd46043dfc18e5d2de
|
oid sha256:dd2792d7127bb9e498a814189fb5c5dfa2b270dd333cea7623ea2b9905ee981f
|
||||||
size 139671
|
size 174527
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:eebf3dac12738f6f864f382ac9b136e29c19ae9c9874d900891a1c55c6d006da
|
oid sha256:d9d45b7c4d6aebb9c72558ed440ee099c756eb6b0196a5657d7da85557853d39
|
||||||
size 72559
|
size 105940
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:68000903e55e1ba5a98b082b33b65d03c111c5751947bf6297f1a4fd46d0189f
|
oid sha256:3be54af6b52da9441294266c11a08bcaf85abfd2005e6ecc795e6e2d1b9b6cf6
|
||||||
size 89331
|
size 122952
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:619174a05f46847dfcab7d8edb7687ac87a6691ba2e7cbbb7965fd7d607269ff
|
oid sha256:569ae5d062fed37b3c8854f7b3b7cf9c249b2ce0f908fe4e28e82a3838695228
|
||||||
size 122895
|
size 159323
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:957faa7854136c335661ece9b9b57fa40ecee742cbaf2f01b8e96035f267a859
|
oid sha256:330df16d27772ba0405c2736a066fff8fbf3c9a8488a7f9c3a463ed98b64603a
|
||||||
size 140534
|
size 176756
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:c7b4bd8e3da8f046b783b20fd2ac3f13fb6dd9fab1db692e5fa57f6a46f25f14
|
oid sha256:56398aae31bffa08edc7f04fb2ef6df80f8047e9d885fb802ad7d5759b56aef1
|
||||||
size 73322
|
size 108161
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:a87553939add3b0a99da570833fed8c0607afa8a10b0543c16d08154ddba34ff
|
oid sha256:06073d17aae5d0c0c6ab75491bcd9a18e51827ec10ded21431934a7361c12506
|
||||||
size 90212
|
size 125293
|
||||||
|
|||||||
Reference in New Issue
Block a user