BlueWallet/ios/Widgets/PriceWidget/PriceWidget.swift

82 lines
2.4 KiB
Swift
Raw Normal View History

2020-11-10 06:51:02 -05:00
//
// PriceWidget.swift
// PriceWidget
//
// Created by Marcos Rodriguez on 11/8/20.
// Copyright © 2020 BlueWallet. All rights reserved.
//
import WidgetKit
import SwiftUI
2024-10-27 18:14:37 -04:00
@available(iOS 16.0, *)
struct PriceWidget: Widget {
let kind: String = "PriceWidget"
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: PriceWidgetProvider()) { entry in
PriceWidgetEntryView(entry: entry)
}
.configurationDisplayName("Price")
.description("View the current price of Bitcoin.")
.supportedFamilies(supportedFamilies)
.contentMarginsDisabledIfAvailable()
2020-11-10 06:51:02 -05:00
}
2024-07-08 14:19:47 -04:00
2024-10-27 18:14:37 -04:00
@available(iOS 16.0, *)
private var supportedFamilies: [WidgetFamily] {
if #available(iOSApplicationExtension 16.0, *) {
return [.systemSmall, .accessoryCircular, .accessoryInline, .accessoryRectangular]
} else {
2024-10-27 18:14:37 -04:00
return [.systemSmall]
2021-03-07 19:00:48 -05:00
}
}
2024-07-08 14:19:47 -04:00
}
2024-10-27 18:14:37 -04:00
@available(iOS 16.0, *)
struct PriceWidget_Previews: PreviewProvider {
static var previews: some View {
Group {
PriceWidgetEntryView(entry: PreviewData.entry)
.previewContext(WidgetPreviewContext(family: .systemSmall))
if #available(iOSApplicationExtension 16.0, *) {
PriceWidgetEntryView(entry: PreviewData.entry)
.previewContext(WidgetPreviewContext(family: .accessoryCircular))
PriceWidgetEntryView(entry: PreviewData.entry)
.previewContext(WidgetPreviewContext(family: .accessoryInline))
PriceWidgetEntryView(entry: PreviewData.entry)
.previewContext(WidgetPreviewContext(family: .accessoryRectangular))
}
}
}
2024-07-08 14:19:47 -04:00
}
2024-10-27 18:14:37 -04:00
let previewMarketData = MarketData(nextBlock: "", sats: "", price: "$10,000", rate: 10000, dateString: "2019-09-18T17:27:00+00:00")
2024-07-08 14:19:47 -04:00
2024-10-27 18:14:37 -04:00
@available(iOS 14.0, *)
struct PreviewData {
static let entry = PriceWidgetEntry(
date: Date(),
family: .systemSmall,
currentMarketData: previewMarketData,
previousMarketData: emptyMarketData
)
2024-07-08 14:19:47 -04:00
}
2024-10-27 18:14:37 -04:00
@available(iOS 14.0, *)
extension WidgetConfiguration
{
@available(iOS 15.0, *)
func contentMarginsDisabledIfAvailable() -> some WidgetConfiguration
{
if #available(iOSApplicationExtension 17.0, *)
{
return self.contentMarginsDisabled()
}
else
{
return self
}
2024-07-08 14:19:47 -04:00
}
2020-11-10 06:51:02 -05:00
}