profile
viewpoint
Ben Cochran bencochran @square SF http://bencochran.com/ Engineer at @square

bencochran/bezelhud 44

Quicksilver Interface - Updated for Snow Leopard

bencochran/GNToggleBar 30

Custom iPhone toggle bar control. Like a UITabBar but… not. (This is very old. I don’t even know if it still works. So you should probably just move along…)

bencochran/gnarus 29

Augmented reality on the iPhone

bencochran/Kaleidoscope 22

Simple programming language written in Swift and compiled with LLVM

bencochran/CFPropertyList 19

Python module for reading/writing binary and XML property lists.

bencochran/iphonearkit 8

An Objective-C augmented reality kit for iPhone.

bencochran/gnarly 7

Gnarus server

bencochran/disciple 2

A python-based website that follows a set of github repositories...

issue commentnicklockwood/SwiftFormat

Inconsistent white space for template XCode SwiftUI project straight out of the box

It looks like there’s a form feed character (U+000C) after ContentView(). Are you sure this wasn’t modified by mistake after being generated? I just made a new SwiftUI app with Xcode 12.0 (12A7209) and got no unexpected character in that same location.

gigecogary

comment created time in 13 days

PullRequestReviewEvent

issue commentsquare/workflow-kotlin

Decouple modality from modal visual treatment

I’ve been leaning in this direction in things I’ve been working on lately.

One nice side-effect of it is other changes can happen at “runtime” too, for example: on tablet-sized devices we want some modal content to slide-over from the edge of the screen (what Dashboard web internally calls a “blade” today) but on phone-sized screens we want that to be a full-screen presentation. In my current modeling, the “inner” workflow specifies the target style for a modal like you’ve described, but the container itself can use the environment to decide to use a different presentation style (also the presentation style is added to the environment of the content for view-side internal styling that that content might need).

rjrjr

comment created time in 22 days

issue openedsquare/workflow-swift

Drop iOS 10 support

I don’t think it’s adding a ton of burden, but it’d be nice to not carry it forward.

created time in a month

Pull request review commentsquare/Blueprint

Alignment guides

 extension StackElement {     ///                     }     ///                     ```     ///+    ///   - alignmentGuide: A closure that can be used to provide a custom alignment guide for this+    ///                     child.+    ///+    ///                     This closure will be called with an `ElementDimensions` containing the+    ///                     dimensions of this child, and should return a value in the child's+    ///                     own coordinate space. This value represents the position along the+    ///                     child's cross axis that should be aligned relative to the values of+    ///                     its siblings.+    ///+    ///                     If not specified, the default value is provided by the stack's+    ///                     alignment.+    ///+    ///                     The alignment guide is ignored by the `fill` alignment type.+    ///     ///   - key: A key used to disambiguate children between subsequent updates of the view hierarchy     ///     ///   - child: The child element to add to this stack     ///-    public mutating func add(growPriority: CGFloat = 1.0, shrinkPriority: CGFloat = 1.0, key: AnyHashable? = nil, child: Element) {+    /// - Tag: StackElement.add+    ///+    mutating public func add(+        growPriority: CGFloat = 1.0,+        shrinkPriority: CGFloat = 1.0,+        alignmentGuide: ((ElementDimensions) -> CGFloat)? = nil,

Sorry, really late in the review with this, but why a closure here and not a HorizontalAlignment or VerticalAlignment? Would make us split out this method between the Column / Row, but feels like it makes using alignment in the common case much more straightforward/discoverable.

watt

comment created time in a month

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentsquare/Blueprint

Only build main branch

 sudo: false notifications:   email: false +branches:+  only:+    - master

nvm, you’re too fast

kylebshr

comment created time in a month

PullRequestReviewEvent

Pull request review commentsquare/Blueprint

Only build main branch

 sudo: false notifications:   email: false +branches:+  only:+    - master

should this be main?

kylebshr

comment created time in a month

PullRequestReviewEvent
PullRequestReviewEvent

delete branch square/Blueprint

delete branch : bc/equal-stack-constrain-measurement

delete time in a month

push eventsquare/Blueprint

Ben Cochran

commit sha f195020909bebf37ef53d9ec0c5d0b902783ace5

Properly constrain EqualStack measurement We know the constrained size when measuring an EqualStack, since it is divided evenly. Use that knowledge when measuring. This fixes measurement issues when adding multiline text elements to an EqualStack.

view details

Ben Cochran

commit sha 3c8a95f625eb4d5c8564d3dc7f309c382e7bdb96

Update changelog for EqualStack measurement fix

view details

Ben Cochran

commit sha 2d3db51b81330511cf0fa6e5c6ef832ca3064e53

Add tests for SizeConstraint.Axis mathematical operators

view details

Ben Cochran

commit sha 3ff5214e65990dab42c33bccca8be3d13b7f6d98

Return early from EqualStack measurement if we have no items

view details

Ben Cochran

commit sha 9d9599a98801adb39b7c8c531ef5319dd15e3908

Merge pull request #157 from square/bc/equal-stack-constrain-measurement Properly constrain EqualStack measurement

view details

push time in a month

PR merged square/Blueprint

Properly constrain EqualStack measurement

We know the constrained size when measuring an EqualStack, since it is divided evenly. Use that knowledge when measuring. This fixes measurement issues when adding multiline text elements to an EqualStack.

Before: before After: after

+338 -4

0 comment

5 changed files

bencochran

pr closed time in a month

push eventsquare/Blueprint

Ben Cochran

commit sha f195020909bebf37ef53d9ec0c5d0b902783ace5

Properly constrain EqualStack measurement We know the constrained size when measuring an EqualStack, since it is divided evenly. Use that knowledge when measuring. This fixes measurement issues when adding multiline text elements to an EqualStack.

view details

Ben Cochran

commit sha 3c8a95f625eb4d5c8564d3dc7f309c382e7bdb96

Update changelog for EqualStack measurement fix

view details

Ben Cochran

commit sha 2d3db51b81330511cf0fa6e5c6ef832ca3064e53

Add tests for SizeConstraint.Axis mathematical operators

view details

Ben Cochran

commit sha 3ff5214e65990dab42c33bccca8be3d13b7f6d98

Return early from EqualStack measurement if we have no items

view details

push time in a month

Pull request review commentsquare/Blueprint

Properly constrain EqualStack measurement

 class EqualStackTests: XCTestCase {      } +    func test_measuring_constrained() {++        let children = [+            AreaElement(area: 100),+            AreaElement(area: 1200), // The only one affecting the cross-axis size+            AreaElement(area: 100),+        ]++        // direction = .horizontal+        do {+            let constraint = SizeConstraint(width: .atMost(300), height: .unconstrained)++            // spacing = 0+            do {+                let stack = EqualStack(direction: .horizontal) { stack in+                    stack.spacing = 0+                    stack.children = children+                }++                // 300 / 3 = 100+                // 1200 / 100 = 12+                XCTAssertEqual(stack.content.measure(in: constraint), CGSize(width: 300, height: 12))+            }++            // spacing = 50+            do {+                let stack = EqualStack(direction: .horizontal) { stack in+                    stack.spacing = 30+                    stack.children = children+                }++                // 300 - 30 - 30 = 240+                // 240 / 3 = 80+                // 1200 / 80 = 15+                XCTAssertEqual(stack.content.measure(in: constraint), CGSize(width: 300, height: 15))+            }+        }++        // direction = .vertical+        do {+            let constraint = SizeConstraint(width: .unconstrained, height: .atMost(400))

Yep, that was intentional just to have some variance in the tests

bencochran

comment created time in a month

PullRequestReviewEvent

Pull request review commentsquare/Blueprint

Properly constrain EqualStack measurement

 class EqualStackTests: XCTestCase {      } +    func test_measuring_constrained() {++        let children = [+            AreaElement(area: 100),+            AreaElement(area: 1200), // The only one affecting the cross-axis size+            AreaElement(area: 100),+        ]++        // direction = .horizontal+        do {+            let constraint = SizeConstraint(width: .atMost(300), height: .unconstrained)++            // spacing = 0+            do {+                let stack = EqualStack(direction: .horizontal) { stack in+                    stack.spacing = 0+                    stack.children = children+                }++                // 300 / 3 = 100+                // 1200 / 100 = 12+                XCTAssertEqual(stack.content.measure(in: constraint), CGSize(width: 300, height: 12))+            }++            // spacing = 50

Ah, yep, changed it later to make the math in the comment cleaner. Will update the comment

bencochran

comment created time in a month

PullRequestReviewEvent

issue openedsquare/workflow-swift

Consider something like LifecycleWorker

Kotlin has LifecycleWorker that makes it easy to perform side-effects when the worker is started or stopped.

At the moment, this is essentially equivalent to doing the following in Swift:

func render(state: State, context: RenderContext<SomeWorkflow>) -> Rendering {
    let onStart: () -> Void = …
    let onEnd: () -> Void = …

    context.runSideEffect(key: "lifecycle") { lifetime in
        onStart()
        lifetime.onEnded(onEnd)
    }

    …
}

We might consider making some convenience for this in Swift land. I’d hesitate tying it to Worker specifically since that lives in WorkflowReactiveSwift and this could be built more generally.

Open to suggestions on API shape

created time in a month

push eventsquare/Blueprint

Noah Blake

commit sha c6eba1def4b3eec5809167a5bc65da3d47d6f161

[Box] Add support for boxes with semicircular edges

view details

Noah Blake

commit sha 5b598999bb1e123f686df34429a9ba038d91146e

[Gardening] Add changelog note

view details

Noah Blake

commit sha e2772d1e61bb9c518480bac68120df2efa3876eb

[Gardening] Rename semicircular to capsule, handle narrow capsule case

view details

Kyle Bashour

commit sha af5c6053bd7b800aa37e10726534e744dc5de979

Merge pull request #145 from nononoah/noahb/box-rounded-corners [Box] Add support for boxes with semicircular edges

view details

nononoah

commit sha d657d9a46a328492cad9324979f5b2bd37bc0dc5

[Gardening] Extend gitignore to cover artifacts of `swift package generate-xcodeproj` (#146) Co-authored-by: Kyle Bashour <kylebshr@gmail.com>

view details

Kyle Bashour

commit sha 9793103e6355befc542e238618ca0ad69fe109b0

Add accessibility size to AccessibilityElement (#144) * Add accessibility size to AccessibilityElement * Changelog Co-authored-by: Kyle Bashour <kbashour@squareup.com>

view details

Andrew Watt

commit sha 8d5a4634987ee9d3285f684b3b85d9226f1a3597

Recursively layoutIfNeeded on backing views

view details

Andrew Watt

commit sha 16bb7baf41a3b075a2dd23277bbceef862a1ca0a

Changelog update

view details

Andrew Watt

commit sha f7134f506e6c7980725cb7cbab41f87fef1a5d4a

Merge pull request #139 from square/watt/recursive-layout-subviews Recursively layoutIfNeeded on backing views

view details

Ben Cochran

commit sha 5ff83698cbe05052e0fd208170d7aadacdc887f8

Add Opacity wrapper (#147) Co-authored-by: Kyle Bashour <kylebshr@gmail.com>

view details

Kyle Bashour

commit sha 6203bbbaecb0660e8d5874d435e4e91e1bf4050e

Bumping versions to 0.15.0

view details

Kyle Bashour

commit sha 531569174d5bbc37fafa9645f6d0219443bf38ba

Merge pull request #148 from square/kb/release-0.15.0 Bumping versions to 0.15.0

view details

Kyle Bashour

commit sha b9b7302bacf5e913bd31ffc03d36bad806dfaf96

Fix possible crash when creating a shadow path in box

view details

Kyle Bashour

commit sha bca5997667f5dd8a453c33511ea6b5c8605c3248

Add test

view details

Kyle Bashour

commit sha fca292ad3a53bd51d1f757f3f02822b44b6c063a

Update changelog

view details

Kyle Bashour

commit sha 48d47a51d58682c63efc34d022b2217ceffc02d5

Prevent weird radii

view details

Kyle Bashour

commit sha d7ab362e5a6b6a2324dd1875c57061680ebb4af1

Merge pull request #149 from square/kb/box-crash Fix potential crash when creating a shadow path in box

view details

Kyle Bashour

commit sha 27f127893bdd556beb74a0ed845fd81effee4f42

Bumping versions to 0.15.1

view details

Kyle Bashour

commit sha 94218d766605beb1b6ea21ead1106ad475b8ec71

Merge pull request #150 from square/kb/release-0.15.1 Bumping versions to 0.15.1

view details

Noah Blake

commit sha 89228e8f942e672069c6223bdb1892c49a109afe

[TransitionContainer] Sugar transition composition and extend initializer

view details

push time in a month

Pull request review commentsquare/Blueprint

Properly constrain EqualStack measurement

 extension EqualStack {         var spacing: CGFloat          func measure(in constraint: SizeConstraint, items: [(traits: Void, content: Measurable)]) -> CGSize {-            let itemSizes = items.map { $1.measure(in: constraint) }+            let totalSpacing = (spacing * CGFloat(items.count - 1))

Added an early return

bencochran

comment created time in a month

PullRequestReviewEvent

Pull request review commentsquare/Blueprint

Properly constrain EqualStack measurement

 extension SizeConstraint {             }         } +        /// Divides an Axis by a scalar value. If the Axis is unconstrained the+        /// result will remain unconstrained.+        public static func /(lhs: SizeConstraint.Axis, rhs: CGFloat) -> SizeConstraint.Axis {

Not a ton of code in these, but it’s nice to have a seatbelt test just in case I mixed up a + and a * or something. Added.

bencochran

comment created time in a month

PullRequestReviewEvent

push eventsquare/Blueprint

Ben Cochran

commit sha a38efc32c93f61f862276e9fae740339cef97cd0

Add tests for SizeConstraint.Axis mathematical operators

view details

Ben Cochran

commit sha a08b52147773fec1ec4d14f919ded8a0f3e0ea2d

Return early from EqualStack measurement if we have no items

view details

push time in a month

Pull request review commentsquare/Blueprint

Properly constrain EqualStack measurement

 extension EqualStack {         var spacing: CGFloat          func measure(in constraint: SizeConstraint, items: [(traits: Void, content: Measurable)]) -> CGSize {-            let itemSizes = items.map { $1.measure(in: constraint) }+            let totalSpacing = (spacing * CGFloat(items.count - 1))

Yeah, the .max() ?? 0 below handles the zero-element case, but we could probably add an early bail to be more explicit and avoid the negative spacing weirdness

bencochran

comment created time in a month

PullRequestReviewEvent

push eventsquare/Blueprint

Ben Cochran

commit sha 17eb4a79f29a920d2d80fb2c404412c5da3080c1

Update changelog for EqualStack measurement fix

view details

push time in a month

PR opened square/Blueprint

Reviewers
Properly constrain EqualStack measurement

We know the constrained size when measuring an EqualStack, since it is divided evenly. Use that knowledge when measuring. This fixes measurement issues when adding multiline text elements to an EqualStack.

Before: before After: after

+185 -4

0 comment

3 changed files

pr created time in a month

create barnchsquare/Blueprint

branch : bc/equal-stack-constrain-measurement

created branch time in a month

PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentsquare/Blueprint

Bumping versions to 0.15.0

 into Box(cornerStyle: .capsule) ``` -- Add `accessibilityFrameSize` to `AccessibilityElement` for manually specifying a size for the frame rendered by Voice Over.+- Add `accessibilityFrameSize` to `AccessibilityElement` for manually specifying a size for the frame rendered by Voice Over. ([#144]) -### Removed+- Add `Opacity` element for modifying the opacity of a wrapped element. ([#147])

Thanks! Totally forgot this in my PR

kylebshr

comment created time in a month

PullRequestReviewEvent

delete branch square/Blueprint

delete branch : bc/fuzzy-tests

delete time in a month

delete branch square/Blueprint

delete branch : bc/intrinsic-content-size

delete time in a month

delete branch square/Blueprint

delete branch : bc/opacity

delete time in a month

pull request commentsquare/Blueprint

Add Opacity wrapper

What was your thinking behind not putting it in CommonControls?

Yeah, tbh I went back and forth on this. Technically since alpha is part of LayoutAttributes, this is a custom layout like Inset, etc. but that’s almost an implementation detail more than anything. I believe part of the distinction between BlueprintUI and BlueprintUICommonControls is a holdout from when Blueprint could theoretically support macOS (where things requiring UIKit directly would push toward CommonControls). But that line gets blurrier and blurrier every day, so I don’t have a strong opinion here.

bencochran

comment created time in a month

PR opened square/Blueprint

Reviewers
Add Opacity wrapper
+87 -0

0 comment

2 changed files

pr created time in a month

create barnchsquare/Blueprint

branch : bc/opacity

created branch time in a month

Pull request review commentsquare/Blueprint

[Box] Add support for boxes with semicircular edges

 class BoxTests: XCTestCase {             identifier: "clear")     } -    func test_cornerRadius() {

Oh oops, yeah sorry. GitHub on my phone really didn't want me to see it. Thanks!

nononoah

comment created time in a month

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentsquare/Blueprint

[Box] Add support for boxes with semicircular edges

 class BoxTests: XCTestCase {             identifier: "clear")     } -    func test_cornerRadius() {

Could you delete the old image please?

nononoah

comment created time in a month

Pull request review commentsquare/Blueprint

[Box] Add support for boxes with semicircular edges

 extension Box {      public enum CornerStyle {         case square+        case semicircular

Yeah, we've definitely got a less than idea parallelism here. I think were this has landed is more intuitive, though less … precise.

nononoah

comment created time in a month

PullRequestReviewEvent

Pull request review commentsquare/Blueprint

[Box] Add support for boxes with semicircular edges

 extension Box {      public enum CornerStyle {         case square+        case semicircular

Way overthought bikeshed:

I think part of the issue here is that the existing cases are purely the corner style where this new case is wanting to describe a shape as a whole (that is, affecting more than each corner individually). And I think we're left trying avoid using a “shape” word to describe a “corner.”

And my mind still reads it as a shape and expects a half a circle that's flat on the other side (that is to say, a literal semicircle).

FWIW SwiftUI avoids this issue by having this as a shape type (called Capsule) rather than a corner style.

I could see a few options:

  1. Rename this type/property to be “Shape” and then something like “Capsule” or “Pill” seems more right to me
  2. Put this into its own element type altogether (again, as Pill or Capsule IMO)
  3. Land as-is with the same or a different name (in which case I'd probably still lean against “semicircle” and just accept conflating shape and corner a bit)

(And Google's wrong, “chip” is a weird name)

nononoah

comment created time in a month

PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentsquare/Blueprint

Add convenience methods for adding children to stacks

 extension StackElement {         ))     } ++    /// Convenience method for adding a child with a grow and shrink priority of 0.0+    ///+    /// - parameters:+    ///   - child: The child element to add to this stack+    ///+    mutating func addFixed(child: Element) {

These should be public

kylebshr

comment created time in a month

PullRequestReviewEvent

Pull request review commentsquare/workflow-swift

Downgrading RxSwift

 Pod::Spec.new do |s|   s.source_files = 'WorkflowRxSwift/Sources/**/*.swift'    s.dependency 'Workflow', "#{s.version}"-  s.dependency 'RxSwift', '~> 5.1.1'+  s.dependency 'RxSwift', '>= 4.4.0'+  s.dependency 'RxCocoa', '>= 4.4.0'+  s.dependency 'RxAtomic', '>= 4.4.0'

Looks like it was this issue: https://github.com/ReactiveX/RxSwift/issues/1878

dhavalshreyas

comment created time in 2 months

Pull request review commentsquare/workflow-swift

Downgrading RxSwift

 Pod::Spec.new do |s|   s.source_files = 'WorkflowRxSwift/Sources/**/*.swift'    s.dependency 'Workflow', "#{s.version}"-  s.dependency 'RxSwift', '~> 5.1.1'+  s.dependency 'RxSwift', '>= 4.4.0'+  s.dependency 'RxCocoa', '>= 4.4.0'+  s.dependency 'RxAtomic', '>= 4.4.0'

The bug being RxSwift doesn’t declare a dependency on a module that must be present for it to compile.

dhavalshreyas

comment created time in 2 months

PullRequestReviewEvent

Pull request review commentsquare/workflow-swift

Downgrading RxSwift

 Pod::Spec.new do |s|   s.source_files = 'WorkflowRxSwift/Sources/**/*.swift'    s.dependency 'Workflow', "#{s.version}"-  s.dependency 'RxSwift', '~> 5.1.1'+  s.dependency 'RxSwift', '>= 4.4.0'+  s.dependency 'RxCocoa', '>= 4.4.0'+  s.dependency 'RxAtomic', '>= 4.4.0'

Thanks! Kinda silly about the RxAtomic thing, but we can’t go back in time and fix their bug, so. Onward to RxSwift 5.x!

dhavalshreyas

comment created time in 2 months

PullRequestReviewEvent

Pull request review commentsquare/workflow-swift

Downgrading RxSwift

 Pod::Spec.new do |s|   s.source_files = 'WorkflowRxSwift/Sources/**/*.swift'    s.dependency 'Workflow', "#{s.version}"-  s.dependency 'RxSwift', '~> 5.1.1'+  s.dependency 'RxSwift', '>= 4.4.0'+  s.dependency 'RxCocoa', '>= 4.4.0'+  s.dependency 'RxAtomic', '>= 4.4.0'

That’s weird. So RxSwift depends them but doesn’t declare them as dependencies? FWIW I couldn’t repro that problem locally removing these and doing pod gen

dhavalshreyas

comment created time in 2 months

PullRequestReviewEvent

Pull request review commentsquare/workflow-swift

Downgrading RxSwift

 Pod::Spec.new do |s|   s.source_files = 'WorkflowRxSwift/Sources/**/*.swift'    s.dependency 'Workflow', "#{s.version}"-  s.dependency 'RxSwift', '~> 5.1.1'+  s.dependency 'RxSwift', '>= 4.4.0'+  s.dependency 'RxCocoa', '>= 4.4.0'+  s.dependency 'RxAtomic', '>= 4.4.0'

Sorry, one more question. Do we actually use RxCocoa and RxAtomic directly?

dhavalshreyas

comment created time in 2 months

PullRequestReviewEvent

pull request commentsquare/workflow-swift

Downgrading RxSwift

Thanks, mostly wanted to make sure we’re not stuck needing a 2.x over here if/when we update to RxSwift 5.x internally

dhavalshreyas

comment created time in 2 months

pull request commentsquare/workflow-swift

Downgrading RxSwift

Does WorkflowRxSwift still work with 5.x correctly? If not, it’s a bummer to lock us in to 4.x for all of Workflow 1.x (as per my understanding of semver).

dhavalshreyas

comment created time in 2 months

Pull request review commentsquare/workflow-swift

Fixing RenderTester assert(action:)

 extension AnyWorkflowConvertible {     ///     /// - Returns: The `Rendering` generated by the workflow.     public func rendered<Parent>(in context: RenderContext<Parent>, key: String = "") -> Rendering where Output: WorkflowAction, Output.WorkflowType == Parent {-        return asAnyWorkflow().render(context: context, key: key, outputMap: { AnyWorkflowAction($0) })+        return asAnyWorkflow().render(context: context, key: key, outputMap: { $0 })     }      public func rendered<Parent, Action>(in context: RenderContext<Parent>, key: String = "", outputMap: @escaping (Output) -> Action) -> Rendering where Action: WorkflowAction, Action.WorkflowType == Parent {

The line below this too, yeah? (github won’t let me comment on collapsed parts of code…)

dhavalshreyas

comment created time in 2 months

Pull request review commentsquare/workflow-swift

Fixing RenderTester assert(action:)

 final class WorkflowRenderTesterTests: XCTestCase {             .assertNoAction()     } +    func test_childWorkflowAction() {

Would this test fail before? I thought this only happened when things got AnyWorkflowd?

dhavalshreyas

comment created time in 2 months

PullRequestReviewEvent
PullRequestReviewEvent

PR opened square/workflow-swift

Reviewers
Add `AnyWorkflow(rendering:)` to make a constant-rendering workflow

Kotlin has Workflow.rendering(). Seems like a handy convenience for fakes and testing (and dependency injection where you support dynamic content but some consumers just want static renderings).

Checklist

  • [X] Unit Tests
  • [X] ~UI Tests~
  • [X] ~Snapshot Tests (iOS only)~
  • [X] I have made corresponding changes to the documentation
+118 -0

0 comment

4 changed files

pr created time in 2 months

push eventsquare/workflow-swift

Ben Cochran

commit sha f3edfbef11d8d7c21bcf4fc47f56a153d6109d71

Add `AnyWorkflow(rendering:)` to make a constant-rendering workflow

view details

push time in 2 months

create barnchsquare/workflow-swift

branch : bc/static-rendering

created branch time in 2 months

PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentsquare/workflow-swift

[WIP] Introduce 'makeOutputSink' convenience on 'RenderContext'

 extension RenderContext {                 }             }     }++    /// Generates a sink that allows sending the Workflow's output wrapped in an AnyWorkflowAction, allowing bypassing an+    /// intermediate action.+    public func makeOutputSink(of output: WorkflowType.Output) -> Sink<WorkflowType.Output> {

should just be func makeOutputSink() -> Sink<WorkflowType.Output> since we want to be able to send the output to the resulting sink, not at creation time (as evidenced by output never being used here)

mattfaluotico

comment created time in 2 months

Pull request review commentsquare/workflow-swift

[WIP] Introduce 'makeOutputSink' convenience on 'RenderContext'

 _2020-07-15_ * Fix WorkflowRxSwift podsepcs (#45) * Constrain Worker Rendering type to Void (#44) * Remove unncessary dependencies (#47)+* Add `makeOutputSink` convenience on `RenderContext`  

This isn’t in alpha 4, so we shouldn’t add it here. We’ll add it to the changelog when we cut the next release.

mattfaluotico

comment created time in 2 months

push eventsquare/workflow-swift

Ben Cochran

commit sha dbb071a5bce41d6c7c90a17579ee4d986fe4ddfc

Deprecate `RenderContext.render(workflow:)`

view details

Ben Cochran

commit sha 3451169e652e652d88f01a4ac01123215e404d28

Merge pull request #54 from square/bc/missing-deprecation Deprecate `RenderContext.render(workflow:)`

view details

push time in 2 months

delete branch square/workflow-swift

delete branch : bc/missing-deprecation

delete time in 2 months

PR merged square/workflow-swift

Reviewers
Deprecate `RenderContext.render(workflow:)`

We accidentally forgot to deprecate this when moving to the rendered(in:) API. Fixes #52.

(Of note: there look to be a handful of uses of this across Square code, so this’ll cause a migration)

+1 -0

0 comment

1 changed file

bencochran

pr closed time in 2 months

issue closedsquare/workflow-swift

Deprecate context.render

It's redundant and causing confusion: https://github.com/square/workflow/issues/1212#issuecomment-669187004

https://workflow-community.slack.com/archives/GT9FD1XKL/p1596636911022400

closed time in 2 months

rjrjr

PR opened square/workflow-swift

Reviewers
Deprecate `RenderContext.render(workflow:)`

We accidentally forgot to deprecate this when moving to the rendered(in:) API. Fixes #52.

(Of note: there look to be a handful of uses of this across Square code, so this’ll cause a migration)

+1 -0

0 comment

1 changed file

pr created time in 2 months

push eventsquare/workflow-swift

Ben Cochran

commit sha dbb071a5bce41d6c7c90a17579ee4d986fe4ddfc

Deprecate `RenderContext.render(workflow:)`

view details

push time in 2 months

push eventsquare/workflow-swift

Ben Cochran

commit sha 307949b7b14eafffb74eca06af95cb5ecafe6294

Deprecate `RenderContext.render(workflow:)`

view details

push time in 2 months

create barnchsquare/workflow-swift

branch : bc/missing-deprecation

created branch time in 2 months

pull request commentsquare/Blueprint

Set a shadow path on Box

Did a quick cursory glance to make sure no one in POS was relying on the old behavior, and everyone that specifies a shadow style also has a background color, so we should be safe with this

kylebshr

comment created time in 2 months

issue commentsquare/workflow

Sinks not working for child workflows

It looks like your ViewController is missing the addChild(container) and container.didMove(toParent:), resulting in UI events not being correctly delivered to the text field and the text field delegate methods in HelloViewController never being called. Put up a PR that appears to fix the issue on my end.

AlexandruIstrate

comment created time in 2 months

PR opened AlexandruIstrate/SquareWorkflowDemo

Add view controller containment to ViewController

Without the view controller containment, UI events aren’t correctly delivered, resulting in the UITextField delegate methods in GraphViewController never being called.

+3 -1

0 comment

1 changed file

pr created time in 2 months

create barnchbencochran/SquareWorkflowDemo

branch : bc/containment

created branch time in 2 months

issue commentsquare/workflow

Sinks not working for child workflows

Yeah, you’ll need stable (and unique) keys between renders. I’d consider making some kind of identifier part of the items held in WorkflowData (like maybe var workflows: [(identifier: String, workflow: AnyWorkflow<…>], or a struct to wrap that up).

One other thing you’re going to need is to implement screenDidChange in your GraphViewController. When your workflow tree rerenders, the new root screen will be handed to that method to update itself and its children (calling update(screen:environment:) on each child DescribedViewController with its appropriate screen). Which also means you’ll need to keep those child view controllers around for use somewhere (another good use for the stable identifiers defined above).

AlexandruIstrate

comment created time in 3 months

push eventsquare/Blueprint

Christopher Bowns

commit sha 6e679a9def510ec7d01dfc6069f831e9a9ffe5b5

Update Tutorial2.md Argument order here has changed

view details

Christopher Bowns

commit sha 2e15cfbd733f4aa2b25bfa2b1aec7ea17a417780

Update Tutorial2.md these are const labels

view details

Christopher Bowns

commit sha 1863661ffdce43e5aba0c7ddfd245a19a5019dd6

Update Tutorial2.md Get the rest of the uniformOffset position changes

view details

Christopher Bowns

commit sha c297217d5c5b794788bc18dca6db48cf4529b3bc

Update Tutorial2.md these have flipped

view details

Ben Cochran

commit sha 7d0697af8020a9c4fe9e35a6796bab2b56b383cd

Merge pull request #130 from cbowns/patch-2 Update Tutorial2.md

view details

push time in 3 months

PR merged square/Blueprint

Update Tutorial2.md

Fixed up a few arguments which have changed order.

+14 -14

4 comments

1 changed file

cbowns

pr closed time in 3 months

pull request commentsquare/Blueprint

Update Tutorial2.md

Filed #131

cbowns

comment created time in 3 months

issue openedsquare/Blueprint

Use trailing modifier syntax in tutorials

Instead of

Inset(
    uniformInset: 24.0,
    wrapping: label)

we should make the tutorials use the trailing modifier syntax:

label.inset(uniform: 24)

(came up in #130)

created time in 3 months

pull request commentsquare/Blueprint

Update Tutorial2.md

Thanks!

Side-note: I wonder if we should be pushing people to use .inset(…) and .constrainedTo? (Thoughts, @kyleve?)

cbowns

comment created time in 3 months

push eventsquare/Blueprint

Christopher Bowns

commit sha fa00079480b387265dbe04aae05e100a7e635078

Update Element.md typo/weird grammar

view details

Ben Cochran

commit sha 759d5b8f92fb090ea62b760e3b844b477a43e248

Merge pull request #129 from cbowns/patch-1 Update Element.md

view details

push time in 3 months

PR merged square/Blueprint

Update Element.md

typo/weird grammar

+1 -1

1 comment

1 changed file

cbowns

pr closed time in 3 months

pull request commentsquare/Blueprint

Update Element.md

😅 thanks!

cbowns

comment created time in 3 months

more