From 798e55a4ab8f65c5a6fb01f8af042331543868f9 Mon Sep 17 00:00:00 2001 From: Toby Brennan <contact@apptekstudios.com> Date: Fri, 17 Jul 2020 19:31:22 +1000 Subject: [PATCH] Swift 5.2 support --- memri/cvu/defaults/type/Note.cvu | 2 +- memri/gui/common/UIElementView.swift | 6 ++--- .../CalendarRenderer/CalendarRenderer.swift | 10 ++++----- .../MapRenderer/MapRendererView.swift | 8 +++---- memri/gui/renderers/MessageRenderer.swift | 6 ++--- .../TimelineRenderer/TimelineRenderer.swift | 22 ++++++++++--------- 6 files changed, 28 insertions(+), 26 deletions(-) diff --git a/memri/cvu/defaults/type/Note.cvu b/memri/cvu/defaults/type/Note.cvu index 2edad808..030098f6 100644 --- a/memri/cvu/defaults/type/Note.cvu +++ b/memri/cvu/defaults/type/Note.cvu @@ -197,7 +197,7 @@ Note[] { } } - [renderer = calendar] { + [renderer = calendar.timeline] { dateTime: {{.dateModified}} TimelineItem { diff --git a/memri/gui/common/UIElementView.swift b/memri/gui/common/UIElementView.swift index 13783b50..91e24592 100644 --- a/memri/gui/common/UIElementView.swift +++ b/memri/gui/common/UIElementView.swift @@ -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) diff --git a/memri/gui/renderers/CalendarRenderer/CalendarRenderer.swift b/memri/gui/renderers/CalendarRenderer/CalendarRenderer.swift index 6be0e7ba..9f8f7395 100644 --- a/memri/gui/renderers/CalendarRenderer/CalendarRenderer.swift +++ b/memri/gui/renderers/CalendarRenderer/CalendarRenderer.swift @@ -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]) } } diff --git a/memri/gui/renderers/MapRenderer/MapRendererView.swift b/memri/gui/renderers/MapRenderer/MapRendererView.swift index d49c610c..0ca8832a 100644 --- a/memri/gui/renderers/MapRenderer/MapRendererView.swift +++ b/memri/gui/renderers/MapRenderer/MapRendererView.swift @@ -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) diff --git a/memri/gui/renderers/MessageRenderer.swift b/memri/gui/renderers/MessageRenderer.swift index acfd0442..9ad96d67 100644 --- a/memri/gui/renderers/MessageRenderer.swift +++ b/memri/gui/renderers/MessageRenderer.swift @@ -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) } } diff --git a/memri/gui/renderers/TimelineRenderer/TimelineRenderer.swift b/memri/gui/renderers/TimelineRenderer/TimelineRenderer.swift index 8bc96529..c5178e8b 100644 --- a/memri/gui/renderers/TimelineRenderer/TimelineRenderer.swift +++ b/memri/gui/renderers/TimelineRenderer/TimelineRenderer.swift @@ -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, -- GitLab