Impressia/VernissageWidget/PhotoWidget/Views/PhotoMediumWidgetView.swift

49 lines
1.4 KiB
Swift
Raw Normal View History

2023-03-11 18:30:33 +01:00
//
// https://mczachurski.dev
// Copyright © 2023 Marcin Czachurski and the repository contributors.
2023-03-28 10:35:38 +02:00
// Licensed under the Apache License 2.0.
2023-03-11 18:30:33 +01:00
//
2023-03-11 18:30:33 +01:00
import SwiftUI
import WidgetKit
2023-04-07 16:59:18 +02:00
import EnvironmentKit
2023-03-11 18:30:33 +01:00
2023-05-01 07:50:24 +02:00
struct PhotoMediumWidgetView: View {
var entry: PhotoProvider.Entry
2023-03-11 18:30:33 +01:00
var body: some View {
if let uiImage = entry.image, let uiAvatar = entry.avatar {
self.getWidgetBody(uiImage: Image(uiImage: uiImage), uiAvatar: Image(uiImage: uiAvatar))
2023-03-11 18:30:33 +01:00
} else {
self.getWidgetBody(uiImage: Image("Placeholder"), uiAvatar: Image("Avatar"))
.unredacted()
}
}
@ViewBuilder
private func getWidgetBody(uiImage: Image, uiAvatar: Image) -> some View {
VStack {
Spacer()
HStack {
uiAvatar
2023-04-10 21:53:15 +02:00
.avatar(size: 24)
2023-03-11 18:30:33 +01:00
Text(entry.displayName ?? "")
2023-04-11 07:41:57 +02:00
.font(.system(size: 15))
2023-04-10 21:53:15 +02:00
.foregroundColor(.white.opacity(0.8))
.fontWeight(.semibold)
2023-03-12 07:46:14 +01:00
.shadow(color: .black, radius: 2)
Spacer()
2023-03-11 18:30:33 +01:00
}
.padding(.leading, 8)
.padding(.bottom, 8)
}
2023-09-16 10:39:21 +02:00
.widgetBackground {
uiImage
.resizable()
.aspectRatio(contentMode: .fill)
.widgetURL(URL(string: "\(AppConstants.statusUri)/\(entry.statusId ?? "")"))
}
2023-03-11 18:30:33 +01:00
}
}