mattermost-mobile/ios/MattermostShare/Views/ContentViews/ChannelListView/CustomAsyncImage.swift
Elias Nahum 3a3123674a
[Gekidou] iOS Share extension (#6432)
* iOS Share extension

* Add Fastlane steps for iOS Share Extension

* new multi file layout

* Add recent label

* Refactor code & identation

* ux feedback

* downsample images

* remove options horizontal padding
2022-07-27 10:31:45 -04:00

42 lines
1 KiB
Swift

//
// CustomAsyncImage.swift
// MattermostShare
//
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
//
import SwiftUI
struct CustomAsyncImage<Content: View, Placeholder: View>: View {
@EnvironmentObject var shareViewModel: ShareViewModel
@State var uiImage: UIImage?
let serverUrl: String
let userId: String
let content: (Image) -> Content
let placeholder: () -> Placeholder
init(
serverUrl: String,
userId: String,
@ViewBuilder content: @escaping (Image) -> Content,
@ViewBuilder placeholder: @escaping () -> Placeholder
) {
self.serverUrl = serverUrl
self.userId = userId
self.content = content
self.placeholder = placeholder
}
var body: some View {
if let uiImage = uiImage {
content(Image(uiImage: uiImage))
} else {
placeholder()
.task {
shareViewModel.getProfileImage(serverUrl: self.serverUrl, userId: self.userId, imageBinding: $uiImage)
}
}
}
}