From de9b751ee0ba3255b68c1daf50dad417ef7eded4 Mon Sep 17 00:00:00 2001 From: Brian Ingles Date: Tue, 4 Apr 2023 12:19:37 -0500 Subject: [PATCH] fix: Fixed generic selector types (#1199) Updated redux selectors to properly derive return types from generic input types. fixes #1197 --- packages/redux/src/selectors.ts | 80 ++++++++++++++++----------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/packages/redux/src/selectors.ts b/packages/redux/src/selectors.ts index 1436d025b2..ea6ac17ada 100644 --- a/packages/redux/src/selectors.ts +++ b/packages/redux/src/selectors.ts @@ -1,113 +1,113 @@ -import type { RootState, Storage, WorkspaceSettings } from './store'; +import type { RootState } from './store'; const EMPTY_OBJECT = Object.freeze({}); const EMPTY_MAP: ReadonlyMap = new Map(); export type Selector = (store: State) => R; + +type Settings = State['workspace']['data']['settings']; + // User -export const getUser = ( - store: State -): State['user'] => store.user; +export const getUser = (store: State): State['user'] => + store.user; -export const getUserName = ( +export const getUserName = ( store: State ): State['user']['name'] => getUser(store).name; -export const getUserGroups = ( +export const getUserGroups = ( store: State ): State['user']['groups'] => getUser(store).groups; // Storage -export const getStorage = ( +export const getStorage = ( store: State ): State['storage'] => store.storage; -export const getCommandHistoryStorage = ( +export const getCommandHistoryStorage = ( store: State ): State['storage']['commandHistoryStorage'] => getStorage(store).commandHistoryStorage; -export const getFileStorage = ( +export const getFileStorage = ( store: State ): State['storage']['fileStorage'] => getStorage(store).fileStorage; -export const getWorkspaceStorage = ( +export const getWorkspaceStorage = ( store: State -): Storage['workspaceStorage'] => getStorage(store).workspaceStorage; +): State['storage']['workspaceStorage'] => getStorage(store).workspaceStorage; // Workspace -export const getWorkspace = ( +export const getWorkspace = ( store: State -): RootState['workspace'] => store.workspace; +): State['workspace'] => store.workspace; // Settings -export const getSettings = ( +export const getSettings = ( store: State -): RootState['workspace']['data']['settings'] => - getWorkspace(store).data.settings; +): Settings => getWorkspace(store).data.settings; -export const getDefaultDateTimeFormat = ( +export const getDefaultDateTimeFormat = ( store: State -): WorkspaceSettings['defaultDateTimeFormat'] => +): Settings['defaultDateTimeFormat'] => getSettings(store).defaultDateTimeFormat; export const getDefaultDecimalFormatOptions = < State extends RootState = RootState >( store: State -): WorkspaceSettings['defaultDecimalFormatOptions'] => +): Settings['defaultDecimalFormatOptions'] => getSettings(store).defaultDecimalFormatOptions ?? EMPTY_OBJECT; export const getDefaultIntegerFormatOptions = < State extends RootState = RootState >( store: State -): WorkspaceSettings['defaultIntegerFormatOptions'] => +): Settings['defaultIntegerFormatOptions'] => getSettings(store).defaultIntegerFormatOptions ?? EMPTY_OBJECT; -export const getFormatter = ( +export const getFormatter = ( store: State -): WorkspaceSettings['formatter'] => getSettings(store).formatter; +): Settings['formatter'] => getSettings(store).formatter; -export const getTimeZone = ( +export const getTimeZone = ( store: State -): WorkspaceSettings['timeZone'] => getSettings(store).timeZone; +): Settings['timeZone'] => getSettings(store).timeZone; -export const getShowTimeZone = ( +export const getShowTimeZone = ( store: State -): WorkspaceSettings['showTimeZone'] => getSettings(store).showTimeZone; +): Settings['showTimeZone'] => getSettings(store).showTimeZone; -export const getShowTSeparator = ( +export const getShowTSeparator = ( store: State -): WorkspaceSettings['showTSeparator'] => getSettings(store).showTSeparator; +): Settings['showTSeparator'] => getSettings(store).showTSeparator; export const getTruncateNumbersWithPound = < State extends RootState = RootState >( store: State -): WorkspaceSettings['truncateNumbersWithPound'] => +): Settings['truncateNumbersWithPound'] => getSettings(store).truncateNumbersWithPound; -export const getDisableMoveConfirmation = ( +export const getDisableMoveConfirmation = ( store: State -): WorkspaceSettings['disableMoveConfirmation'] => +): Settings['disableMoveConfirmation'] => getSettings(store).disableMoveConfirmation || false; -export const getShortcutOverrides = ( +export const getShortcutOverrides = ( store: State -): WorkspaceSettings['shortcutOverrides'] => - getSettings(store).shortcutOverrides; +): Settings['shortcutOverrides'] => getSettings(store).shortcutOverrides; -export const getDefaultNotebookSettings = ( +export const getDefaultNotebookSettings = ( store: State -): WorkspaceSettings['defaultNotebookSettings'] => +): Settings['defaultNotebookSettings'] => getSettings(store).defaultNotebookSettings ?? EMPTY_OBJECT; -export const getActiveTool = ( +export const getActiveTool = ( store: State -): RootState['activeTool'] => store.activeTool; +): State['activeTool'] => store.activeTool; -export const getPlugins = ( +export const getPlugins = ( store: State -): RootState['plugins'] => store.plugins ?? EMPTY_MAP; +): State['plugins'] => store.plugins ?? EMPTY_MAP;