mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-17 02:58:07 +00:00
Store and use default account avatar to improve display speed
This commit is contained in:
parent
56f732144d
commit
413e1b4082
2 changed files with 34 additions and 11 deletions
|
|
@ -81,7 +81,6 @@ struct ContentView: View {
|
|||
@State private var isShowLoginFragment: Bool = false
|
||||
|
||||
private let avatarSize = 45.0
|
||||
@State private var imagePath: URL?
|
||||
|
||||
var body: some View {
|
||||
let pub = NotificationCenter.default
|
||||
|
|
@ -316,8 +315,8 @@ struct ContentView: View {
|
|||
VStack(spacing: 0) {
|
||||
if searchIsActive == false {
|
||||
HStack {
|
||||
if (accountProfileViewModel.accountModelIndex ?? 0) < CoreContext.shared.accounts.count {
|
||||
AsyncImage(url: imagePath) { image in
|
||||
if sharedMainViewModel.defaultAvatar != nil {
|
||||
AsyncImage(url: sharedMainViewModel.defaultAvatar) { image in
|
||||
switch image {
|
||||
case .empty:
|
||||
ProgressView()
|
||||
|
|
@ -342,22 +341,29 @@ struct ContentView: View {
|
|||
.onTapGesture {
|
||||
openMenu()
|
||||
}
|
||||
.onAppear {
|
||||
if let accountModelIndex = accountProfileViewModel.accountModelIndex,
|
||||
accountModelIndex < CoreContext.shared.accounts.count {
|
||||
imagePath = CoreContext.shared.accounts[accountModelIndex].getImagePath()
|
||||
}
|
||||
}
|
||||
.onChange(of: CoreContext.shared.accounts[accountProfileViewModel.accountModelIndex ?? 0].usernaneAvatar) { _ in
|
||||
if let accountModelIndex = accountProfileViewModel.accountModelIndex,
|
||||
accountModelIndex < CoreContext.shared.accounts.count {
|
||||
imagePath = CoreContext.shared.accounts[accountModelIndex].getImagePath()
|
||||
sharedMainViewModel.changeDefaultAvatar(defaultAvatarURL: CoreContext.shared.accounts[accountModelIndex].getImagePath())
|
||||
}
|
||||
}
|
||||
.onReceive(imageChanged) { _ in
|
||||
if let accountModelIndex = accountProfileViewModel.accountModelIndex,
|
||||
accountModelIndex < CoreContext.shared.accounts.count {
|
||||
imagePath = CoreContext.shared.accounts[accountModelIndex].getImagePath()
|
||||
sharedMainViewModel.changeDefaultAvatar(defaultAvatarURL: CoreContext.shared.accounts[accountModelIndex].getImagePath())
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Image(uiImage: contactsManager.textToImage(
|
||||
firstName: CoreContext.shared.accounts[accountProfileViewModel.accountModelIndex ?? 0].avatarModel?.name ?? "",
|
||||
lastName: ""))
|
||||
.resizable()
|
||||
.frame(width: avatarSize, height: avatarSize)
|
||||
.clipShape(Circle())
|
||||
.onAppear {
|
||||
if let accountModelIndex = accountProfileViewModel.accountModelIndex,
|
||||
accountModelIndex < CoreContext.shared.accounts.count {
|
||||
sharedMainViewModel.changeDefaultAvatar(defaultAvatarURL: CoreContext.shared.accounts[accountModelIndex].getImagePath())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,10 +26,12 @@ class SharedMainViewModel: ObservableObject {
|
|||
@Published var welcomeViewDisplayed = false
|
||||
@Published var generalTermsAccepted = false
|
||||
@Published var displayProfileMode = false
|
||||
@Published var defaultAvatar: URL?
|
||||
|
||||
let welcomeViewKey = "welcome_view"
|
||||
let generalTermsKey = "general_terms"
|
||||
let displayProfileModeKey = "display_profile_mode"
|
||||
let defaultAvatarKey = "default_avatar"
|
||||
|
||||
var maxWidth = 400.0
|
||||
|
||||
|
|
@ -53,6 +55,14 @@ class SharedMainViewModel: ObservableObject {
|
|||
} else {
|
||||
displayProfileMode = preferences.bool(forKey: displayProfileModeKey)
|
||||
}
|
||||
|
||||
if preferences.object(forKey: defaultAvatarKey) == nil {
|
||||
preferences.set(defaultAvatar, forKey: defaultAvatarKey)
|
||||
} else {
|
||||
if let defaultAvatarTmp = preferences.url(forKey: defaultAvatarKey) {
|
||||
defaultAvatar = defaultAvatarTmp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func changeWelcomeView() {
|
||||
|
|
@ -82,4 +92,11 @@ class SharedMainViewModel: ObservableObject {
|
|||
displayProfileMode = false
|
||||
preferences.set(displayProfileMode, forKey: displayProfileModeKey)
|
||||
}
|
||||
|
||||
func changeDefaultAvatar(defaultAvatarURL: URL) {
|
||||
let preferences = UserDefaults.standard
|
||||
|
||||
defaultAvatar = defaultAvatarURL
|
||||
preferences.set(defaultAvatar, forKey: defaultAvatarKey)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue