All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ducks.global.selectors.ts Maven / Gradle / Ivy

The newest version!
import get from 'lodash/get'
import { createSelector } from '@reduxjs/toolkit'

import { State } from '../State'

import { initialState } from './store'

/**
 * Селектор глоабльных настроек
 */
export const globalSelector = (state: State) => get(state, 'global', initialState)

/**
 * Селектор текущей локализации
 */
export const localeSelector = createSelector(
    globalSelector,
    global => global.locale,
)

/**
 * Селектор состояния загрузки приложения
 */
export const appLoadingSelector = createSelector(
    globalSelector,
    global => global.loading,
)

/**
 * Селектор конфига сообщений для локализации
 */
export const localizationSelector = createSelector(
    globalSelector,
    global => global.messages,
)

/**
 * Селектор данных для навигационого меню (header, sidebar)
 */
export const menuSelector = createSelector(
    globalSelector,
    global => global.menu,
)

/**
 * Селектор данных пользователя из конфига
 */
export const userSelector = createSelector(
    globalSelector,
    global => global.menu,
)

/**
 * Селектор данных пользователя из конфига
 */
export const userConfigSelector = createSelector(
    globalSelector,
    global => global.user,
)

/**
 * Селектор глобальной ошибки приложения
 */
export const errorSelector = createSelector(
    globalSelector,
    global => global.error,
)

/**
 * Селектор текущей страницы
 */
export const rootPageSelector = createSelector(
    globalSelector,
    global => global.rootPageId,
)

/**
 * Селектор текущей страницы
 */
export const readySelector = createSelector(
    globalSelector,
    global => global.ready,
)

export const breadcrumbsSelector = createSelector(
    globalSelector,
    global => global.breadcrumbs || {},
)

/**
 * Селектор роутинга
 */
export const routerSelector = (state: State) => state.router || {}

/**
 * Селектор location объекта
 */
export const getLocation = createSelector(
    routerSelector,
    router => router.location,
)

/**
 * Селектор locales объекта
 */
export const getLocales = createSelector(
    globalSelector,
    global => global.locales || {},
)

/**
 * Селектор url для редиректа по 401
 */
export const getAuthUrl = createSelector(
    globalSelector,
    global => global.redirectPath,
)




© 2015 - 2024 Weber Informatics LLC | Privacy Policy