Skip to content

Safe require blur-view dependency in Card #1179

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

Merged
merged 5 commits into from
Feb 15, 2021
Merged

Conversation

ethanshar
Copy link
Collaborator

Description

Don't Merge, Just Review
I have recently came across this proposal (which was released last weekend)
react-native-community/discussions-and-proposals#120

This is an amazing feature we've been waiting for a long time.
It allows us to conditionally require dependencies and use them safely.
It looks something like this

let a;
try {
  a = require('optional-module');
} catch (e) {
  // Handle failure from loading the module
}

For instance, In our Card component we have a dependency on BlurView.
Today, if the user is missing this dependency the whole component will crash the app.
With this new feature, we can safely require BlurView and handle it accordingly (see PR code to understand it better).

This will allow us to use dependencies conditionally and have the users decide what and when to use specific features.
For instance, in the case of the whole haptic feedback effort.
We can add the haptic support directly in public code and condition it by checking if the dependency exists.

Changelog

Card's enableBlur is won't crash the app if missing @react-native-community/blur dependency

@ethanshar ethanshar changed the title safe require blur-view dependency in card and warn user if missing Safe require blur-view dependency in Card Feb 6, 2021
@M-i-k-e-l
Copy link
Collaborator

Sounds really nice, what's the next step? Should this be done in the V6 branch (to avoid conflicts)?

@ethanshar
Copy link
Collaborator Author

ethanshar commented Feb 7, 2021

Sounds really nice, what's the next step? Should this be done in the V6 branch (to avoid conflicts)?

Technically yes,
But I think we can also add this in v5, it's not a breaking change in any way.
I didn't want to merge yet, to avoid conflicts..
Let's have @Inbal-Tish review and see what she thinks.

@M-i-k-e-l
Copy link
Collaborator

This will need to be applied to the Modal as well

@Inbal-Tish
Copy link
Collaborator

@ethanshar @M-i-k-e-l Looks great! Very long-awaited feature!

@ethanshar
Copy link
Collaborator Author

This will need to be applied to the Modal as well

Done!

@ethanshar ethanshar removed the pending label Feb 14, 2021
@ethanshar ethanshar enabled auto-merge (squash) February 15, 2021 06:31
@ethanshar ethanshar disabled auto-merge February 15, 2021 06:34
@ethanshar ethanshar enabled auto-merge (squash) February 15, 2021 06:34
@ethanshar ethanshar merged commit af976f0 into master Feb 15, 2021
M-i-k-e-l added a commit that referenced this pull request Feb 17, 2021
* master: (30 commits)
  Button - refactor into smaller files (#1168)
  replace @react-native-community/picker with @react-native-picker/picker (#1063)
  Update generate types
  fix: catch undefined StatusBarManager (#1189)
  prop value shape deprecation lint rule (#1094)
  Infra/expo app fixes (#1166)
  Safe require blur-view dependency in Card (#1179)
  Update our stars count
  Update expo snack link with only supported platforms
  Export TabBarProps and fix BadgeScreen typescript errors
  Disable flipper
  Avoid passing overlayContent in CardSecion (#1187)
  Fix Carousel typings
  updating published version
  no-direct-import eslint rule - adding `applyAutofix` flag (#1183)
  Feat/image demo broken (#1173)
  Remove addItems from screen with fewItems
  Add vertical scroll to Carousel component (#1175)
  Fix Carousel gif
  Update Carousel gifs
  ...

# Conflicts:
#	demo/src/screens/componentScreens/BadgesScreen.tsx
#	generatedTypes/components/button/index.d.ts
#	markdowns/getting-started/setup.md
#	src/components/button/index.tsx
#	src/components/card/CardSection.tsx
#	src/components/card/index.tsx
#	src/components/loaderScreen/index.js
#	src/components/modal/index.tsx
#	typings/components/Toast.d.ts
#	uilib-docs/src/templates/markdown.scss
M-i-k-e-l added a commit that referenced this pull request Feb 18, 2021
* Add customLoader and remove animatable (#1152)

* Add customLoader and remove animatable

* remove redundent view

Co-authored-by: Ethan Sharabi <[email protected]>

* Fix/responsive docs pages (#1174)

* Support showing navbar in mobile

* More minor responsive fixes

* Fix margin top in navbar on mobile

* Fix/tab controller center android with rtl (#1178)

* Update generate types

* Update uilib-docs version to 1.0.11

* Fix order of markdown pages in docs site

* Fix issue with duplicate props appearing in docs site

* Fix issue with Carousel props not being included in docs

* Update PageControl docs with a gif

* Fix and improve search using fuzzysearch

* Update Carousel gifs

* Fix Carousel gif

* Add vertical scroll to Carousel component (#1175)

* Add vertical scroll to Carousel component

* cr fixes

Co-authored-by: Ethan Sharabi <[email protected]>

* Remove addItems from screen with fewItems

* Feat/image demo broken (#1173)

* no-direct-import eslint rule - adding `applyAutofix` flag (#1183)

* no-direct-import eslint rule - adding `applyAutofix` flag to control autofix option

* bumping version to 1.1.00

* version number fix

* Update eslint-rules/package.json

Co-authored-by: Ethan Sharabi <[email protected]>

Co-authored-by: Ethan Sharabi <[email protected]>

* updating published version

* Fix Carousel typings

* Avoid passing overlayContent in CardSecion (#1187)

* Disable flipper

* Export TabBarProps and fix BadgeScreen typescript errors

* Update expo snack link with only supported platforms

* Update our stars count

* Safe require blur-view dependency in Card (#1179)

* safe require blur-view dependency in card and warn user if missing

* Add optional require for blur-view package in Modal component

* Update generate types

* Infra/expo app fixes (#1166)

* Load assets for demo app

* expo settings stuff

* Update UI for main screen

* use useCallback for renderItem and renderSectionHeader

* register ChipScreen so it will be accessible in expo demo app

* Update README

* remove .expo files from git

* Update .gitignore to exclude .expo files

* Use Incubator.TextField

* Update our expo demo icon with the new one

* Update expoDemo/.gitignore

Co-authored-by: Mendy Edri <[email protected]>

* code review fixes and search improvements

* refactor item onPress and use useCallback

Co-authored-by: Mendy Edri <[email protected]>

* prop value shape deprecation lint rule (#1094)

* set new lint rule for prop value

* fix schema

* add cases to prop-value-shape lint rule

* refactor propShapeValueDeprecation

* Adding two (failing) tests

* Fix test and add two more big tests

* More tests

* add getComponentName to utils

* Renaming

* update message when there's no fix

* fix deprecation message

* update version

Co-authored-by: Miki Leib <[email protected]>

* fix: catch undefined StatusBarManager (#1189)

* Update generate types

* replace @react-native-community/picker with @react-native-picker/picker (#1063)

* replace @react-native-community/picker with @react-native-picker/picker

* Safely require Picker package

* Use optional require only for iOS

* Update expo dependncy to use @react-native-picker/picker

* Button - refactor into smaller files (#1168)

* Button - refactor into smaller files (reanimated 2 part 1)

* Oops

Co-authored-by: Ethan Sharabi <[email protected]>

Co-authored-by: Lidor Dafna <[email protected]>
Co-authored-by: Ethan Sharabi <[email protected]>
Co-authored-by: Daniel Kochavi <[email protected]>
Co-authored-by: Inbal Tish <[email protected]>
Co-authored-by: Inbal Tish <[email protected]>
Co-authored-by: Mendy Edri <[email protected]>
Co-authored-by: Julian Hundeloh <[email protected]>
M-i-k-e-l added a commit that referenced this pull request Feb 18, 2021
* master: (77 commits)
  Button - refactor into smaller files (#1168)
  replace @react-native-community/picker with @react-native-picker/picker (#1063)
  Update generate types
  fix: catch undefined StatusBarManager (#1189)
  prop value shape deprecation lint rule (#1094)
  Infra/expo app fixes (#1166)
  Safe require blur-view dependency in Card (#1179)
  Update our stars count
  Update expo snack link with only supported platforms
  Export TabBarProps and fix BadgeScreen typescript errors
  Disable flipper
  Avoid passing overlayContent in CardSecion (#1187)
  Fix Carousel typings
  updating published version
  no-direct-import eslint rule - adding `applyAutofix` flag (#1183)
  Feat/image demo broken (#1173)
  Remove addItems from screen with fewItems
  Add vertical scroll to Carousel component (#1175)
  Fix Carousel gif
  Update Carousel gifs
  ...

# Conflicts:
#	eslint-rules/lib/rules/typography-deprecation.js
#	eslint-rules/package.json
#	eslint-rules/tests/lib/rules/typography-deprecation.js
#	eslint-rules/tests/typography_deprecation.json
@ethanshar ethanshar deleted the feat/safeRequire_BlurView branch July 26, 2021 09:08
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.

3 participants