Skip to content

Instantly share code, notes, and snippets.

🖕
:feelsgood:

Andrey Starkov andreystarkov

🖕
:feelsgood:
Block or report user

Report or block andreystarkov

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View stores.md

Short story about stores

This is how redux store folder struture should look like:

Core principles:

  • One file - one entity
  • Upcoming imports
View cloudSettings
{"lastUpload":"2019-11-12T12:21:20.801Z","extensionVersion":"v3.4.3"}
View 1
did:muport:QmV5PXgTWxVYQZcFcMkM4BEYBHWM8ssiDfMKk3hgT2zRkq
View HowToFix.md

Боли и беды DGaming Store :feelsgood:

1. Стейт-менеджмент: Сторы и саги

Сторы - в них описывается и хранится стейт той или иной сущности, экшены, с которыми связаны саги, и редьюсеры, меняющие стейт приложения.

Саги - функции-генераторы, связанные с редакс-экшенами, в которых происходят API-запросы, работа с любыми асинхронными событиями и обработка возникающих в их следствии сайд-эффектов. В первую очередь они удобны мощным набором инструментов, который предоставляет библиотка. Внутри такой функции можно получить стейт, вызвать экшены, контролировать последовательность процессов, и другие сверхспособности.

🔪 Проблемы

@andreystarkov
andreystarkov / ApolloClient.js
Created Jun 4, 2019
cache options for apollo client
View ApolloClient.js
import { ApolloClient } from 'apollo-client'
import { ApolloLink, concat } from 'apollo-link'
import { HttpLink } from 'apollo-link-http'
import { InMemoryCache } from 'apollo-cache-inmemory'
const defaultOptions = {
watchQuery: {
fetchPolicy: 'network-only',
errorPolicy: 'ignore'
},
View LayoutStore.js
import { createReducer, createActions } from 'reduxsauce'
import Immutable from 'seamless-immutable'
import { sizes } from 'Themes/Media'
const { Types, Creators } = createActions({
layoutSetWidth: ['width']
})
export const LayoutTypes = Types
@andreystarkov
andreystarkov / callApiSaga.js
Created May 22, 2019
Universal Saga: Magic helper for handling api-calls with its side effects
View callApiSaga.js
import { call, put, takeEvery, select } from 'redux-saga/effects'
// все экшены названы по паттерну _REQUEST, _SUCCESS, _FAILED
// like AUTH_SUCCESS, AUTH_FAILED, AUTH_REQUEST
function * callAPI (action) {
const { payload, data: { method, params } } = action
const user = yield select(state => state.user)
try {
const authHeaders = user.headers
@andreystarkov
andreystarkov / callApiSagaExaple.js
Last active Oct 30, 2019
API Call Saga Example Usage
View callApiSagaExaple.js
import { call, put, select } from 'redux-saga/effects'
import camel from 'to-camel-case'
export function * callAPI (api, action) {
let method = action.type.split('_')
method.pop()
method = camel(method.join('_'))
const apiCall = api[method]
const payload = { ...action }
View badooMassFuck.js
// Открываешь чат в badoo.com, слеевад должен быть список баб с именами
// Справа должен быть чат
// Прокручиваешь до самого низу диалоги (что бы были прогружены все)
// В таком состоянии открываешь инспектор (правой кнопкой по пустому месту)
// Открываешь вкладку Console и туда вставляешь весь код ниже
// Жмешь Enter
const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms))
function getMessage () {
You can’t perform that action at this time.