Commit 798e55a4 authored by Toby Brennan's avatar Toby Brennan
Browse files

Swift 5.2 support

parent c7ee2c27
Showing with 28 additions and 26 deletions
+28 -26
......@@ -197,7 +197,7 @@ Note[] {
}
}
[renderer = calendar] {
[renderer = calendar.timeline] {
dateTime: {{.dateModified}}
TimelineItem {
......
......@@ -267,9 +267,9 @@ public struct UIElementView: SwiftUI.View {
} else if from.type == .Map {
MapView(useMapBox: context.settings.get("/user/general/gui/useMapBox", type: Bool.self) ?? false,
config: .init(dataItems: [self.item],
locationResolver: { _ in get("location") },
addressResolver: { _ in get("address", type: Address.self) ?? get("address", type: Results<Item>.self) },
labelResolver: { _ in get("label") })
locationResolver: { _ in self.get("location") },
addressResolver: { _ in (self.get("address", type: Address.self) as Any?) ?? (self.get("address", type: Results<Item>.self) as Any?) },
labelResolver: { _ in self.get("label") })
)
.background(Color(.secondarySystemBackground))
.setProperties(from.properties, self.item, context, self.viewArguments)
......
......@@ -94,9 +94,9 @@ struct CalendarView: View {
day.map { day in
VStack(spacing: 0) {
Spacer()
Text(calendarHelper.dayString(for: day))
.foregroundColor(calendarHelper.isToday(day) ? .red : Color(.label))
Circle().fill(hasItemOnDay(day) ? Color.red : Color.clear)
Text(self.calendarHelper.dayString(for: day))
.foregroundColor(self.calendarHelper.isToday(day) ? .red : Color(.label))
Circle().fill(self.hasItemOnDay(day) ? Color.red : Color.clear)
.frame(width: 10, height: 10)
.padding(4)
Spacer()
......@@ -117,12 +117,12 @@ struct CalendarView: View {
formatter.dateStyle = .long
formatter.timeStyle = .none
// handle press on day
let items = itemsOnDay(day)
let items = self.itemsOnDay(day)
let uids = items.compactMap { $0.uid }
guard let itemType = items.first?.genericType, !uids.isEmpty else { return }
try? ActionOpenViewWithUIDs(context).exec(["itemType": itemType, "uids": uids])
try? ActionOpenViewWithUIDs(self.context).exec(["itemType": itemType, "uids": uids])
}
}
......
......@@ -58,14 +58,14 @@ struct MapRendererView: View {
var body: some View {
let config = MapViewConfig(dataItems: context.items,
locationResolver: {
self.resolveExpression(renderConfig.location, forItem: $0)
self.resolveExpression(self.renderConfig.location, forItem: $0)
},
addressResolver: {
self.resolveExpression(renderConfig.address, toType: Results<Item>.self, forItem: $0)
?? self.resolveExpression(renderConfig.address, toType: Address.self, forItem: $0)
self.resolveExpression(self.renderConfig.address, toType: Results<Item>.self, forItem: $0)
?? self.resolveExpression(self.renderConfig.address, toType: Address.self, forItem: $0)
},
labelResolver: {
self.resolveExpression(renderConfig.label, forItem: $0)
self.resolveExpression(self.renderConfig.label, forItem: $0)
},
mapStyle: renderConfig.mapStyle,
onPress: self.onPress)
......
......@@ -60,14 +60,14 @@ struct MessageRenderer: View {
var section: ASSection<Int> {
ASSection<Int>(id: 0, data: context.items, selectedItems: selectedItems) { item, cellContext in
renderConfig.render(item: item)
self.renderConfig.render(item: item)
.environmentObject(self.context)
}
.onSelectSingle { (index) in
guard let selectedItem = context.items[safe: index],
guard let selectedItem = self.context.items[safe: index],
let press = self.renderConfig.press
else { return }
context.executeAction(press, with: selectedItem)
self.context.executeAction(press, with: selectedItem)
}
}
......
......@@ -44,17 +44,17 @@ struct TimelineRenderer: View {
return model.data.map { group in
let matchesNow = model.calendarHelper.isSameAsNow(group.date, byComponents: model.detailLevel.relevantComponents)
return ASSection<Date>(id: group.date, data: group.items) { element, cellContext in
renderElement(element)
self.renderElement(element)
.if(group.items.count < 2) { $0.frame(minHeight: 35) }
}
.onSelectSingle({ (index) in
guard let element = group.items[safe: index] else { return }
if element.isGroup {
let uids = element.items.compactMap { $0.uid }
try? ActionOpenViewWithUIDs(context).exec(["itemType": element.itemType, "uids": uids])
try? ActionOpenViewWithUIDs(self.context).exec(["itemType": element.itemType, "uids": uids])
} else {
if let press = self.renderConfig.press, let item = element.items.first {
context.executeAction(press, with: item)
self.context.executeAction(press, with: item)
}
}
})
......@@ -99,10 +99,12 @@ struct TimelineRenderer: View {
backgroundColor: ItemFamily(rawValue: element.itemType)?.backgroundColor ?? .gray)
.frame(maxWidth: .infinity, alignment: .leading)
#warning("@Ruben: I couldn't figure out a way using current CVU options to provide a way to render for a `group` of items")
} else if let item = element.items.first {
self.renderConfig.render(item: item)
.frame(maxWidth: .infinity, alignment: .leading)
.environmentObject(context)
} else {
element.items.first.map {
self.renderConfig.render(item: $0)
.frame(maxWidth: .infinity, alignment: .leading)
.environmentObject(context)
}
}
}
......@@ -119,7 +121,7 @@ struct TimelineRenderer: View {
var layout: ASCollectionLayout<Date> {
ASCollectionLayout(scrollDirection: .vertical, interSectionSpacing: 0) { () -> ASCollectionLayoutSection in
ASCollectionLayoutSection { layoutEnvironment -> NSCollectionLayoutSection in
let hasFullWidthHeader: Bool = renderConfig.detailLevel == .year
let hasFullWidthHeader: Bool = self.renderConfig.detailLevel == .year
let itemLayoutSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(20))
......@@ -130,7 +132,7 @@ struct TimelineRenderer: View {
let section = NSCollectionLayoutSection(group: group)
section.contentInsets = .init(top: 15, leading: hasFullWidthHeader ? 10 : leadingInset + 5 , bottom: 15, trailing: 10)
section.contentInsets = .init(top: 15, leading: hasFullWidthHeader ? 10 : self.leadingInset + 5 , bottom: 15, trailing: 10)
section.interGroupSpacing = 10
section.visibleItemsInvalidationHandler = { visibleItems, contentOffset, layoutEnvironment in
// If this isn't defined, there is a bug in UICVCompositional Layout that will fail to update sizes of cells
......@@ -146,7 +148,7 @@ struct TimelineRenderer: View {
headerSupplementary.extendsBoundary = true
headerSupplementary.pinToVisibleBounds = false
} else {
let supplementarySize = NSCollectionLayoutSize(widthDimension: .absolute(leadingInset), heightDimension: .absolute(64))
let supplementarySize = NSCollectionLayoutSize(widthDimension: .absolute(self.leadingInset), heightDimension: .absolute(64))
headerSupplementary = NSCollectionLayoutBoundarySupplementaryItem(
layoutSize: supplementarySize,
elementKind: UICollectionView.elementKindSectionHeader,
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment