Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

split SR operations from data.operations #385

Merged
merged 2 commits into from
Nov 28, 2020

Conversation

leastbad
Copy link
Contributor

Type of PR (feature, enhancement, bug fix, etc.)

Bug fix

Description

Core conversation about whether to encourage broadcast or not in #382 led to me realizing that our fancy new operations handling scheme would fall over if someone tried to blend SR + non-SR operations in one payload.

Notable things:

  • I used Reflect.deleteProperty for the first time, because it turns out that you can't force an object to dereference a key. Lodash used to work with a shallow copy to address this, ECMA2015 fixed it. This might need to be Polyfilled for IE11 @marcoroth

  • I tried to act like I've been doing this a long time and counted down from the top of each operations array so that I could slice out individual elements and not create an index error like a noob

I've tested this with and without broadcast on the end of the chain and it works well so far as I can tell. My test case had two SR morphs + a CR console_log operation.

Why should this be added

SR client needs to be robust even when users don't follow best practices advice.

Checklist

  • My code follows the style guidelines of this project
  • Checks (StandardRB & Prettier-Standard) are passing
  • This is not a documentation update

marcoroth added a commit to marcoroth/stimulus_reflex that referenced this pull request Nov 27, 2020
@leastbad leastbad merged commit 687c098 into stimulusreflex:master Nov 28, 2020
@leastbad leastbad deleted the cr_robust branch November 28, 2020 02:05
julianrubisch added a commit to julianrubisch/stimulus_reflex that referenced this pull request Dec 25, 2020
* Exit with nonzero status code

* [nodoc] update changelog

* GitBook: [master] 3 pages modified

* [nodoc] update changelog

* Handles to mitigate race conditions when running reflexes in quick succession on the same element (stimulusreflex#377)

* element.reflexData becomes a dictionary

Co-authored-by: leastbad <[email protected]>

* [nodoc] update changelog

* fixed bug preventing callbacks for multiple morphs

* [nodoc] update changelog

* GitBook: [master] 5 pages modified

* GitBook: [master] one page modified

* GitBook: [master] one page modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* make element.reflexController a dictionary (stimulusreflex#379)

make element.reflexController a dictionary

* [nodoc] update changelog

* Move package.json to root of project (stimulusreflex#380)

* Move package.json to root of project
* Update readme instructions for publish

* [nodoc] update changelog

* Prep for v3.4.0.pre5 release

* Update to use gitcdn for logo on readme

* Bump js package version

* Return from received if isolationMode: true

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* non-SR cable_ready operation pass-through (stimulusreflex#381)

* works like a charm

* a superior solution

* [nodoc] update changelog

* Set reflexController to empty object

* 800

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* don't show findElement warnings unless debugging (stimulusreflex#384)

* dont exit in sanity checker on stimulus_reflex:install

* split SR operations from data.operations (stimulusreflex#385)

* [nodoc] update changelog

* [nodoc] update changelog

* add jQuery support to SR events (stimulusreflex#388)

* Update templates for new stage etc (stimulusreflex#390)

* updated templates for new lifecycle stages

* added accessors to Reflex class

* [nodoc] update changelog

* reflexError and received refactor (stimulusreflex#389)

* reflexError and received refactor

* strict equality checks + simpler existential checks

* Setup a proxy object that wraps CableReady::Channels (stimulusreflex#382)

Setup a proxy object that wraps CableReady::Channels

This improves developer ergonimics for emitting CR broadcasts on the SR
channel within a reflex.

* Remove codeclimate

* [nodoc] update changelog

* Add codacy config file

* [nodoc] update changelog

* Have codacy ignore markdown files

* Allow `success` and `after` lifecycle methods on replaced elements (stimulusreflex#386)

* Allow `success` and `after` lifecycle methods on replaced elements

* use destruction syntax

* Extract current debug setting into debug.js to sync the value between files

* Log warnings if users morphs the element which triggered the reflex.

* Log extra warning if the element is not present anymore to state, that the lifecycle methods were not executed

* standardize

* Tweaked wording slightly

* added reflexError handling to dispatchLifecycleEvent

Co-authored-by: leastbad <[email protected]>
Co-authored-by: leastbad <[email protected]>

* [nodoc] update changelog

* Prep for 3.4.0.pre6 release

* [nodoc] update changelog

* Update js package version

* [nodoc] update changelog

* Update %file_name%_reflex.rb.tt

* Update stimulus_reflex.js

* [nodoc] update changelog

* Update lifecycle.js

* tweaked life-cycle messages

* Add check to return early if element is undefined in invokeLifecycleMethod

* don't warn folks twice (stimulusreflex#392)

* [nodoc] update changelog

* [nodoc] update changelog

* Update stimulus_reflex.rb

* [nodoc] update changelog

* GitBook: [master] 12 pages and 11 assets modified

* Trigger piggy back operations after SR operations (stimulusreflex#395)

* Trigger piggy back operations after SR operations
* Refactor proxy object to be explicit about what is delegated.
* Update to latest CableReady

* [nodoc] update changelog

* Prep for 3.4.0.pre7

* [nodoc] update js package version to 3.4.0-pre7

* GitBook: [master] 3 pages modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* Delegate render to controller (stimulusreflex#397)

* Delegate render to controller

* Stand up basic testing for reflex rendering

* Delegate render to the controller class rather than instance

* Also, refactor some internals to match Rails internals.

* [nodoc] update changelog

* [nodoc] prepare for pre8

* [nodoc] update js package to pre8

* GitBook: [master] 14 pages modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* GitBook: [master] 14 pages modified

* [nodoc] update changelog

* GitBook: [master] 14 pages modified

* [nodoc] update changelog

* loosen stimulus dev dependency

* GitBook: [master] 4 pages modified

* [nodoc] update changelog

* GitBook: [master] 11 pages modified

* [nodoc] update changelog

* GitBook: [master] 2 pages modified

* [nodoc] update changelog

* GitBook: [master] 14 pages modified

* GitBook: [master] 2 pages modified

* GitBook: [master] one page modified

* an install that actually works on a fresh Rails new

* GitBook: [master] one page modified

* [nodoc] update changelog

* Don't memoize the singleton (stimulusreflex#400)

* [nodoc] update changelog

* GitBook: [master] 2 pages modified

* [nodoc] update changelog

* Add dom_id to the reflex (stimulusreflex#405)

* [nodoc] update changelog

* Check package version from yarn.lock if node_modules folder is not available. Fixex stimulusreflex#402 (stimulusreflex#403)

* [nodoc] update changelog

* Don't run sanity checker in production (stimulusreflex#404)

* Allow StimulusReflex to process Rack middlewares (stimulusreflex#399)

* Allow StimulusReflex to process Rack middleswares

* Possibly fixes stimulusreflex#289

* process the whole Rails middleware stack

* just call the Rails middleware stack if it reponds to `build`

* pass routes to middleware build method

* make middleware processing configurable

* use ActionDispatch::MiddlewareStack to register middlewares

* update comment in initializer

* add note so people know what to do if they encounter the 'No route matches' error

* Update channel.rb

* Update stimulus_reflex.rb

Co-authored-by: leastbad <[email protected]>

* [nodoc] prep for v3.4.0.pre9

* [nodoc] update js package version

* GitBook: [master] one page modified

* [nodoc] update changelog

* GitBook: [master] 2 pages modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* GitBook: [master] one page modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* Update README.md

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* GitBook: [master] 2 pages modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* [nodoc] prep for v3.4.0

* [nodoc] update npm package version

* GitBook: [master] one page modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* [nodoc] update changelog

* GitBook: [master] one page modified

* GitBook: [master] one page modified

* [nodoc] update changelog

* fix 'operartion' typo

* [nodoc] update changelog

* Update README.md

Co-authored-by: leastbad <[email protected]>
Co-authored-by: GitHub Actions <[email protected]>
Co-authored-by: leastbad <[email protected]>
Co-authored-by: Rafe Rosen <[email protected]>
Co-authored-by: Nate Hopkins <[email protected]>
Co-authored-by: Marco Roth <[email protected]>
Co-authored-by: Roland Studer <[email protected]>
Co-authored-by: Josh LeBlanc <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants