Skip to content

Instantly share code, notes, and snippets.

View rtymchyk's full-sized avatar
👋

Roman Tymchyk rtymchyk

👋
  • Toronto, Canada
View GitHub Profile
const addAlert = useCallback((content) => setAlerts((alerts) => [content, ...alerts]), [])
const value = useMemo(() => ({ addAlert }), [addAlert])
const { addAlert } = useSnackBars()
...
addAlert('Your profile is updated!')
export const SnackBarContext = createContext()

const AUTO_DISMISS = 5000

export function SnackBarProvider({ children }) {
  const [alerts, setAlerts] = useState([])
  
  const activeAlertIds = alerts.join(',')
 useEffect(() => {
export const SnackBarContext = createContext()

export function SnackBarProvider({ children }) {
  const [alerts, setAlerts] = useState([])

  return (
    <SnackBarContext.Provider value={{ setAlerts }}>
      {children}
 {alerts.map((alert) =&gt; {alert})}
import { useContext } from 'react'

import { SnackBarContext } from 'components/snack-bar-provider'

const useSnackBars = () => useContext(SnackBarContext)

export default useSnackBars
import { useContext } from 'react'

import { SnackBarContext } from 'client/snack-bar-provider'

const useSnackBars = () => useContext(SnackBarContext)

export default useSnackBars
@rtymchyk
rtymchyk / omit-props-connector.js
Last active July 17, 2019 16:19
omit-props-connector
// HOC
import React from 'react'
import PropTypes from 'prop-types'
import omit from 'lodash/omit'
export default function omitProps(Component, propsToOmit) {
function WithoutOmittedProps({ children, ...rest }) {
return <Component {...omit(rest, propsToOmit)}>{children}</Component>
}
@rtymchyk
rtymchyk / delegator.MD
Created November 14, 2017 02:07
Delegator
class BasePresenter < SimpleDelegator
  def initialize(model)
    super(model)
  end
end
@rtymchyk
rtymchyk / type-with-presenter.MD
Created November 14, 2017 02:04
Type With Presenter
ArticleType = GraphQL::ObjectType.define do
  presenter ArticlePresenter

  field :body, !types.String
end