Commit Graph

101 Commits

Author SHA1 Message Date
Stephen Celis
799aa18f86 Cleanup: Global/Local -> Parent/Child (#1269)
* Make openSettings async.

* global/local -> parent/child

* error cleanup

* Clean up action scoping

* cleanup

* wip

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2022-08-16 12:25:31 -04:00
Brandon Williams
108e3a536f Concurrency Beta (#1189)
* more main actor audit

* wip

* wip

* fix

* better task result ==

* task result tests

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* fix merge conflicts

* wip

* wip

* lots of doc fixes and modernizations

* lots more docs and better hashable conformance for TaskResult

* more docs

* clean up

* more tests and docs

* clean up

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* small clean up

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* explicit

* wip

* fix bug in TestStore.receive

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* fixes

* wip

* tools for non-deterministic TestStore.receive

* fix

* wip

* wip

* remove inAnyOrder stuff

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* convert download case study to use async/await

* animations

* fix tests

* remove executor experiment

* wip

* wip

* wip

* wip

* wip

* speech simplification

* wip

* wip

* wip

* wip

* wip

* wip

* add a few todos

* wrote some tests

* simplify speech recognizer

* fix tests

* update some docs about error throwing behavior

* wip

* wip

* fix

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* Swift 5.5.2 fixes

* wip

* Bump timeout

* wip

* wip

* Finesse

* proper way to detect main queue

* extra guard

* revert main queue check

* move stuff around

* docs

* fixed a bunch of warnings

* Fix references

* clean up

* clean up

* fix a bunch of warnings

* clean up

* un-soft deprecate concatenate

* async teststore.send

* fix uikit tests

* drop sendable

* wip

* wip

* wip

* wip

* wip

* clean up

* clean up

* reorganize, remove extra task cancellation handler

* wip

* wip

* wip

* wip

* wip

* wip

* Make TestStore.send async (#1190)

* async teststore.send

* fix uikit tests

* Converted all tests to async

* clean up

* added docs

* Update Sources/ComposableArchitecture/TestStore.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* Update Sources/ComposableArchitecture/TestStore.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* docs and readme update

* Update README.md

* Update Tests/ComposableArchitectureTests/StoreTests.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* fix

* Update Sources/ComposableArchitecture/TestStore.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* Update Sources/ComposableArchitecture/TestStore.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* Update Sources/ComposableArchitecture/TestStore.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* clean up

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* wip

* wip

* wip

* make fetchNumber throwing and fix tests

* effect basics clean up

* use local state for isLoading in refreshable case study

* clean up

* fix test

* wip

* wip

* wip

* wip

* wip

* wip

* fixes

* clean up

* clean up

* Simplify

* wip

* clean up

* wip

* AsyncStream.finished()

* give Send a public initializer

* make send public

* temporarily make box public

* remove concurrency flag

* wip

* wip

* wip

* wip

* wip

* docs

* speech

* simplify

* clean up;

* unchecked sendable

* clean up

* clean up

* wip

* docs

* docs

* more docs

* lots of docs

* wip

* wip

* wip

* more docs for streamWithContinuation

* wip

* wip

* wip

* Make internal, too

* wip

* Remove sendability detection

It breaks things, like:

    let request = UncheckedSendable(
      SKProductsRequest(productIdentifiers: []
    )
    // UncheckedSendable<NSObject> // *not* _<SKProductsRequest>

* wip

* doc clean up;

* fixed some todos

* docs

* wip

* remove thread safety FAQ from readme

* fix test

* wip

* docs clean up

* docs clean up

* added a testing article and fixed some docs

* rearrange

* docs clean up

* wip

* Update Sources/ComposableArchitecture/Documentation.docc/Articles/Testing.md

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* Update Sources/ComposableArchitecture/Effects/ConcurrencySupport.swift

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* Update Sources/ComposableArchitecture/Effects/ConcurrencySupport.swift

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* Update Sources/ComposableArchitecture/Effects/ConcurrencySupport.swift

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* Update Sources/ComposableArchitecture/Effects/ConcurrencySupport.swift

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* Update Sources/ComposableArchitecture/Documentation.docc/Articles/Testing.md

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* Update Sources/ComposableArchitecture/Documentation.docc/Articles/Testing.md

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* Update Sources/ComposableArchitecture/Documentation.docc/Articles/Testing.md

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* Update Sources/ComposableArchitecture/Documentation.docc/Articles/Testing.md

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* Update Sources/ComposableArchitecture/Documentation.docc/Articles/Testing.md

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* Update Sources/ComposableArchitecture/Documentation.docc/Articles/Testing.md

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* Update Sources/ComposableArchitecture/Documentation.docc/Articles/Testing.md

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* wip

* wip

* wip

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>
2022-08-08 01:04:16 -04:00
Brandon Williams
0fb73c2bf3 Deprecate unchecked store (#1206)
* Deprecate unchecked stores.

* warning tests

* rearrange

* Update Deprecations.swift

* wip

* test for binding warning

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2022-07-12 12:39:32 -04:00
Stephen Celis
dc9dd315ee Cleanup (#1107) 2022-05-24 15:15:57 -04:00
Stephen Celis
1d6f65c692 Fix docs 2022-05-03 08:55:13 -04:00
mbrandonw
96f47fbe85 Run swift-format 2022-04-08 16:57:56 +00:00
Brandon Williams
c8482eb61b Move DEBUG check to runtimeWarning function. (#1056)
* Move DEBUG check to runtimeWarning function.

* wip
2022-04-08 09:48:35 -07:00
Stephen Celis
2828dc44f6 Runtime Warning Finesse (#1023) 2022-03-15 16:21:13 -04:00
Omar Albeik
620ec5c6d9 Fix a typo in Store docs (#998) 2022-02-07 09:32:02 -05:00
Stephen Celis
313dd217dc Improving developer experience with runtime warnings (#943)
* Perform thread check only when store is created on main thread.

* clean up

* Update Sources/ComposableArchitecture/Store.swift

* clean up

* Update Sources/ComposableArchitecture/Store.swift

* clean up

* execute setSpecific only once.

* logic fix

* added a test

* typo

* wip

* wip

* wip

* clean up

* language

* wip

* note

* wip

* wip

* wip

* wip

* wip

* fix closing quote

* wip

* fix merge

* Deprecations

* Fix docs

* wip

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2022-01-03 10:55:13 -06:00
Stephen Celis
599a2398ad Check main thread via Thread.isMainThread (#823)
* Check main thread via Thread.isMainThread

* wip

* wip
2021-09-23 10:25:08 -04:00
mbrandonw
0a39f4c7a3 Run swift-format 2021-09-20 15:19:03 +00:00
Brandon Williams
1c0dfbc98b Perform thread check only when store is created on main queue. (#811)
* Perform thread check only when store is created on main thread.

* clean up

* Update Sources/ComposableArchitecture/Store.swift

* clean up

* Update Sources/ComposableArchitecture/Store.swift

* clean up

* execute setSpecific only once.

* logic fix

* added a test

* typo

* wip

* docs

* fix test

* Update Sources/ComposableArchitecture/Store.swift

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* Run swift-format

* Clean up speech recognition case study. (#812)

* Clean up speech recognition case study.

* fix tests

* clean up;

* Alternative to `CurrentValueSubject` in `ViewStore` (#755)

* Replaced CurrentValueSubject with CurrentValueRelay

* Added final to DemandBuffer

Co-authored-by: Brandon Williams <mbrandonw@hey.com>

* Run swift-format

* Fix bindable deprecations (#815)

* Fix Bindable Deprecations

* More CI

* wip

* wip

* wip

* wip

* Run swift-format

* beef up test

* expectation

* fix

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>
Co-authored-by: stephencelis <stephencelis@users.noreply.github.com>
Co-authored-by: iampatbrown <mrpatbrown@gmail.com>
Co-authored-by: mbrandonw <mbrandonw@users.noreply.github.com>
2021-09-20 11:09:00 -04:00
Stephen Celis
4bdcaafcd0 Deprecate Store.publisherScope (#758)
* Deprecate Store.publisherScope

* wip

* fix

* wip
2021-09-17 13:12:52 -04:00
Stephen Celis
d715300cd4 Thread messaging (#803)
* Use thread dictionary for check instead

* Improve thread check messaging for Store.scope

* typo fix

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2021-09-16 11:11:13 -04:00
Stephen Celis
a554b00ff4 Remove old deprecations (#795)
* Remove old deprecations

* wip
2021-09-14 22:30:38 -04:00
Brandon Williams
d15101d7b6 Update threading messaging. (#789) 2021-09-13 21:54:23 -04:00
stephencelis
cb5150f57e Run swift-format 2021-09-07 16:50:30 +00:00
Brandon Williams
90e97411c8 Change initialThread to a let. (#778) 2021-09-07 12:06:52 -04:00
Brandon Williams
33279f4c38 Update to thread warnings. (#773)
* Update to thread warnings.

* fix tests

* clean up

* rename variable
2021-09-07 11:56:46 -04:00
stephencelis
7d15362de9 Run swift-format 2021-09-07 14:53:32 +00:00
Ian Keen
c77c6054c8 Add threading warning to Store.send (#772)
* Add threading warning to Store.send

Any async Effect (including fireAndForget) could result in a runtime crash when updating internal state like `effectCancellables`
This adds a debug warning to let users know

* Remove comment
2021-09-07 10:20:15 -04:00
Ken Grigsby
682e2902c2 Correct Store documentation (#746) 2021-08-25 08:58:28 -04:00
Jason Clark
a2319ff82b Buffered Actions Failing Test (#662)
* Adds a failing test demonstrating #661

* Don't write to state till `isSending` is false

* Update StoreTests.swift

* Update StoreTests.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
Co-authored-by: Stephen Celis <stephen.celis@gmail.com>
2021-07-16 15:20:11 -04:00
Stephen Celis
adb1f25ab4 Store publisher should retain its view store (#652)
* Make the StorePublisher own the ViewStore.

* cleanup

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2021-07-12 13:25:27 -04:00
iampatbrown
5ca2b43bc7 Added multicast to ViewStore publisher to reduce equality checks (#624)
* Added multicast to ViewStore publisher to reduce equality checks

* Replaced multicast with ViewStore CurrentValueSubject

* Added guard check to weak self

* Clean up and add test.

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2021-07-08 12:53:30 -04:00
Stephen Celis
3ca8249bd3 Coalesce synchronous effectful mutations to state (#619) 2021-06-28 07:49:37 -04:00
Stephen Celis
e7e222f1ff Store.scope/StorePublisher Performance Improvements (#616)
* Scope fix

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* revert

* wip

* wip

* wip

* fix

* wip

* wip

* wip

* wip

* wip

* wip

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2021-06-27 21:30:43 -04:00
Stephen Celis
d30336ca13 Clean-up pass for DocC (#599) 2021-06-16 08:48:14 -05:00
Brandon Williams
9716a3247a Improve some docs. (#597)
* Improve some docs.

* wip

* Update Sources/ComposableArchitecture/Store.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* Update Sources/ComposableArchitecture/Store.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* Update Sources/ComposableArchitecture/Store.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* Update Sources/ComposableArchitecture/Store.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* Update Sources/ComposableArchitecture/Store.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* Update Sources/ComposableArchitecture/Store.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* Update Sources/ComposableArchitecture/ViewStore.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* 110 column

* update link

* add docc to switchstore

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2021-06-15 10:33:52 -04:00
Wendy Liga
1a8bccc62e Support DocC Xcode 13 (#591)
* wip

* finish

* revert back code snippet identation to 5

* Update Sources/ComposableArchitecture/Effect.swift

Co-authored-by: Brandon Williams <135203+mbrandonw@users.noreply.github.com>

Co-authored-by: Brandon Williams <135203+mbrandonw@users.noreply.github.com>
2021-06-14 14:10:08 -04:00
Stephen Celis
6eb7ca5d48 Remove convenience initializer on Store (#572) 2021-05-26 13:33:34 -07:00
Stephen Celis
636f3facdc Document scope a bit more deeply (#360) 2021-02-01 14:46:35 -05:00
stephencelis
0190f032c1 Run swift-format 2020-10-29 21:43:17 +00:00
Stephen Celis
5ddbcdd21a Rename publisher-transforming scope (#314)
* Rename publisher-transforming scope

* feedback
2020-10-29 17:29:52 -04:00
mbrandonw
43a122a34b Run swift-format 2020-09-14 23:02:48 +00:00
Brandon Williams
7e526ba503 Buffer actions when sent recursively (#287)
* wip

* wip

* explicit test store

* test

* test

* clean up

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2020-09-14 18:58:56 -04:00
Stephen Celis
13cb3c3165 Update CI to include Xcode 12 (#266)
* Update CI to include Xcode 12

* Use CurrentValueSubject
2020-08-27 12:23:12 -04:00
Stephen Celis
e75904c180 Store can use @Published again (#239)
* Store can use @Published again

As of the third beta, assign(to:) takes an `inout Publisher.Publisher`,
so it no longer surfaces an escape hatch through which one could mutate
a store's state.

Fixes #238.

* Fix tests.

* Update ci.yml
2020-07-29 13:48:57 -04:00
Stephen Celis
a8a7c40029 Xcode 11.6/12 CI (#206)
* Run CI against Xcode 12

* Also run against 11.6

* CurrentValueSubject

* Fix

* Update ci.yml
2020-07-07 11:09:51 -04:00
Olli Tapaninen
1677b2d500 Print offending action on Store.send assertion (#188)
* Print offending action on Store.send assertion

* Reword Store.send assert

Co-authored-by: Brandon Williams <mbw234@gmail.com>

Co-authored-by: Brandon Williams <mbw234@gmail.com>
2020-06-16 07:59:12 -05:00
Stephen Celis
3d89482da6 Add assertion to Reducer.optional (#157)
* Add assertion to Reducer.optional

* Another bug

* Another potential bug

* best practice?

* WIP

* Clean up language and add more language to index-based forEach

* Re-wrap

* Update Sources/ComposableArchitecture/Reducer.swift

Co-authored-by: Brandon Williams <mbw234@gmail.com>

* Update Sources/ComposableArchitecture/Reducer.swift

Co-authored-by: Brandon Williams <mbw234@gmail.com>

* wording

Co-authored-by: Brandon Williams <mbw234@gmail.com>
2020-06-04 13:57:25 -04:00
stephencelis
c4d4201284 Run swift-format 2020-06-01 19:33:34 +00:00
klop
3475b18db6 Replace recursive call in Store.send with a while loop to process synchronous effects (#163)
* While loop instead of recursive send for synchronous effects in store

* Created StoreTests.testLotsOfSynchronousActions
2020-06-01 15:30:46 -04:00
Anton Siliuk
ef465884f9 Replace 'receive(subscriber:)' with 'subscribe()' (#158) 2020-05-30 12:19:08 -04:00
mbrandonw
500300871d Run swift-format 2020-05-29 16:33:18 +00:00
Brandon Williams
f25878c01f Clarify assertion failure for incorrect send usage (#151)
* Clarify assertion failure for incorrect send usage

* Update ViewStore.swift

* Update Sources/ComposableArchitecture/Store.swift

Co-authored-by: Dante Broggi <34220985+Dante-Broggi@users.noreply.github.com>

* Update Sources/ComposableArchitecture/Store.swift

Co-authored-by: Stephen Celis <stephen@stephencelis.com>

Co-authored-by: Dante Broggi <34220985+Dante-Broggi@users.noreply.github.com>
Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2020-05-29 09:30:56 -07:00
Stephen Celis
9c339bf4ae Add "run" function to Reducer (#91)
* Add "run" function to Reducer

* Doc fixes
2020-05-13 13:09:17 -04:00
Stephen Celis
0442bfba68 Document Store.{state,action}less (#72) 2020-05-11 18:48:41 -04:00
Stephen Celis
b4779b36b1 Helpers for making stores stateless/actionless (#45) 2020-05-11 18:40:09 -04:00