From fe85291772c812cf7dcbfec9b390f8684be4248d Mon Sep 17 00:00:00 2001 From: Alejandro Celaya <alejandrocelaya@gmail.com> Date: Wed, 9 Nov 2022 18:19:07 +0100 Subject: [PATCH] Changed format on action types and reducer names for those already migrated to RTK --- src/app/reducers/appUpdates.ts | 2 +- src/common/reducers/sidebar.ts | 2 +- src/domains/reducers/domainsList.ts | 12 +++++------- src/index.scss | 2 +- src/mercure/reducers/mercureInfo.ts | 21 ++++++++++++--------- src/servers/reducers/servers.ts | 2 +- src/settings/reducers/settings.ts | 2 +- src/short-urls/reducers/shortUrlCreation.ts | 5 +++-- src/short-urls/reducers/shortUrlDeletion.ts | 5 +++-- src/short-urls/reducers/shortUrlDetail.ts | 6 +++--- src/short-urls/reducers/shortUrlEdition.ts | 5 +++-- src/tags/reducers/tagDelete.ts | 13 +++++-------- src/tags/reducers/tagEdit.ts | 9 ++++----- src/tags/reducers/tagsList.ts | 9 ++++----- src/{ => utils}/theme/theme.scss | 2 +- 15 files changed, 48 insertions(+), 49 deletions(-) rename src/{ => utils}/theme/theme.scss (98%) diff --git a/src/app/reducers/appUpdates.ts b/src/app/reducers/appUpdates.ts index 7a74d537..675b3959 100644 --- a/src/app/reducers/appUpdates.ts +++ b/src/app/reducers/appUpdates.ts @@ -1,7 +1,7 @@ import { createSlice } from '@reduxjs/toolkit'; const { actions, reducer } = createSlice({ - name: 'appUpdatesReducer', + name: 'shlink/appUpdates', initialState: false, reducers: { appUpdateAvailable: () => true, diff --git a/src/common/reducers/sidebar.ts b/src/common/reducers/sidebar.ts index c9f57a4c..2203ee43 100644 --- a/src/common/reducers/sidebar.ts +++ b/src/common/reducers/sidebar.ts @@ -9,7 +9,7 @@ const initialState: Sidebar = { }; const { actions, reducer } = createSlice({ - name: 'sidebarReducer', + name: 'shlink/sidebar', initialState, reducers: { sidebarPresent: () => ({ sidebarPresent: true }), diff --git a/src/domains/reducers/domainsList.ts b/src/domains/reducers/domainsList.ts index 77b8fe72..f1e622e0 100644 --- a/src/domains/reducers/domainsList.ts +++ b/src/domains/reducers/domainsList.ts @@ -9,9 +9,7 @@ import { ProblemDetailsError } from '../../api/types/errors'; import { parseApiError } from '../../api/utils'; import { EditDomainRedirects } from './domainRedirects'; -const LIST_DOMAINS = 'shlink/domainsList/LIST_DOMAINS'; -const FILTER_DOMAINS = 'shlink/domainsList/FILTER_DOMAINS'; -const VALIDATE_DOMAIN = 'shlink/domainsList/VALIDATE_DOMAIN'; +const REDUCER_PREFIX = 'shlink/domainsList'; export interface DomainsList { domains: Domain[]; @@ -49,7 +47,7 @@ export const domainsListReducerCreator = ( buildShlinkApiClient: ShlinkApiClientBuilder, editDomainRedirects: AsyncThunk<EditDomainRedirects, any, any>, ) => { - const listDomains = createAsyncThunk(LIST_DOMAINS, async (_: void, { getState }): Promise<ListDomains> => { + const listDomains = createAsyncThunk(`${REDUCER_PREFIX}/listDomains`, async (_: void, { getState }): Promise<ListDomains> => { const { listDomains: shlinkListDomains } = buildShlinkApiClient(getState); const { data, defaultRedirects } = await shlinkListDomains(); @@ -60,7 +58,7 @@ export const domainsListReducerCreator = ( }); const checkDomainHealth = createAsyncThunk( - VALIDATE_DOMAIN, + `${REDUCER_PREFIX}/checkDomainHealth`, async (domain: string, { getState }): Promise<ValidateDomain> => { const { selectedServer } = getState(); @@ -84,10 +82,10 @@ export const domainsListReducerCreator = ( }, ); - const filterDomains = createAction<string>(FILTER_DOMAINS); + const filterDomains = createAction<string>(`${REDUCER_PREFIX}/filterDomains`); const { reducer } = createSlice<DomainsList, SliceCaseReducers<DomainsList>>({ - name: 'domainsList', + name: REDUCER_PREFIX, initialState, reducers: {}, extraReducers: (builder) => { diff --git a/src/index.scss b/src/index.scss index f9cb0643..ee9a8abb 100644 --- a/src/index.scss +++ b/src/index.scss @@ -3,7 +3,7 @@ @import './utils/base'; @import 'node_modules/bootstrap/scss/bootstrap.scss'; @import './common/react-tag-autocomplete.scss'; -@import './theme/theme'; +@import 'utils/theme/theme'; @import './utils/table/ResponsiveTable'; @import './utils/StickyCardPaginator'; diff --git a/src/mercure/reducers/mercureInfo.ts b/src/mercure/reducers/mercureInfo.ts index 75806cde..d9ec7974 100644 --- a/src/mercure/reducers/mercureInfo.ts +++ b/src/mercure/reducers/mercureInfo.ts @@ -3,7 +3,7 @@ import { createAsyncThunk } from '../../utils/helpers/redux'; import { ShlinkMercureInfo } from '../../api/types'; import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; -const GET_MERCURE_INFO = 'shlink/mercure/GET_MERCURE_INFO'; +const REDUCER_PREFIX = 'shlink/mercure'; export interface MercureInfo extends Partial<ShlinkMercureInfo> { interval?: number; @@ -17,17 +17,20 @@ const initialState: MercureInfo = { }; export const mercureInfoReducerCreator = (buildShlinkApiClient: ShlinkApiClientBuilder) => { - const loadMercureInfo = createAsyncThunk(GET_MERCURE_INFO, (_: void, { getState }): Promise<ShlinkMercureInfo> => { - const { settings } = getState(); - if (!settings.realTimeUpdates.enabled) { - throw new Error('Real time updates not enabled'); - } + const loadMercureInfo = createAsyncThunk( + `${REDUCER_PREFIX}/loadMercureInfo`, + (_: void, { getState }): Promise<ShlinkMercureInfo> => { + const { settings } = getState(); + if (!settings.realTimeUpdates.enabled) { + throw new Error('Real time updates not enabled'); + } - return buildShlinkApiClient(getState).mercureInfo(); - }); + return buildShlinkApiClient(getState).mercureInfo(); + }, + ); const { reducer } = createSlice({ - name: 'mercureInfoReducer', + name: REDUCER_PREFIX, initialState, reducers: {}, extraReducers: (builder) => { diff --git a/src/servers/reducers/servers.ts b/src/servers/reducers/servers.ts index 0d5e7e0f..faa2c9c6 100644 --- a/src/servers/reducers/servers.ts +++ b/src/servers/reducers/servers.ts @@ -26,7 +26,7 @@ const serverWithId = (server: ServerWithId | ServerData): ServerWithId => { const serversListToMap = reduce<ServerWithId, ServersMap>((acc, server) => assoc(server.id, server, acc), {}); export const { actions, reducer } = createSlice({ - name: 'serversReducer', + name: 'shlink/servers', initialState, reducers: { editServer: { diff --git a/src/settings/reducers/settings.ts b/src/settings/reducers/settings.ts index bfc4e2aa..7f66a67c 100644 --- a/src/settings/reducers/settings.ts +++ b/src/settings/reducers/settings.ts @@ -82,7 +82,7 @@ const toReducer = (prepare: SettingsPrepareAction) => ({ reducer: commonReducer, const toPreparedAction: SettingsPrepareAction = (payload: Settings) => ({ payload }); const { reducer, actions } = createSlice({ - name: 'settingsReducer', + name: 'shlink/settings', initialState, reducers: { toggleRealTimeUpdates: toReducer((enabled: boolean) => toPreparedAction({ realTimeUpdates: { enabled } })), diff --git a/src/short-urls/reducers/shortUrlCreation.ts b/src/short-urls/reducers/shortUrlCreation.ts index faa76a6e..f1dbd725 100644 --- a/src/short-urls/reducers/shortUrlCreation.ts +++ b/src/short-urls/reducers/shortUrlCreation.ts @@ -5,7 +5,8 @@ import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilde import { parseApiError } from '../../api/utils'; import { ProblemDetailsError } from '../../api/types/errors'; -export const CREATE_SHORT_URL = 'shlink/createShortUrl/CREATE_SHORT_URL'; +const REDUCER_PREFIX = 'shlink/shortUrlCreation'; +export const CREATE_SHORT_URL = `${REDUCER_PREFIX}/createShortUrl`; export type ShortUrlCreation = { saving: false; @@ -45,7 +46,7 @@ export const createShortUrl = (buildShlinkApiClient: ShlinkApiClientBuilder) => export const shortUrlCreationReducerCreator = (createShortUrlThunk: ReturnType<typeof createShortUrl>) => { const { reducer, actions } = createSlice({ - name: 'shortUrlCreationReducer', + name: REDUCER_PREFIX, initialState: initialState as ShortUrlCreation, // Without this casting it infers type ShortUrlCreationWaiting reducers: { resetCreateShortUrl: () => initialState, diff --git a/src/short-urls/reducers/shortUrlDeletion.ts b/src/short-urls/reducers/shortUrlDeletion.ts index 9af657b8..bfa9406c 100644 --- a/src/short-urls/reducers/shortUrlDeletion.ts +++ b/src/short-urls/reducers/shortUrlDeletion.ts @@ -5,7 +5,8 @@ import { parseApiError } from '../../api/utils'; import { ProblemDetailsError } from '../../api/types/errors'; import { ShortUrlIdentifier } from '../data'; -export const SHORT_URL_DELETED = 'shlink/deleteShortUrl/SHORT_URL_DELETED'; +const REDUCER_PREFIX = 'shlink/shortUrlDeletion'; +export const SHORT_URL_DELETED = `${REDUCER_PREFIX}/deleteShortUrl`; export interface ShortUrlDeletion { shortCode: string; @@ -35,7 +36,7 @@ export const shortUrlDeletionReducerCreator = (buildShlinkApiClient: ShlinkApiCl ); const { actions, reducer } = createSlice({ - name: 'shortUrlDeletion', + name: REDUCER_PREFIX, initialState, reducers: { resetDeleteShortUrl: () => initialState, diff --git a/src/short-urls/reducers/shortUrlDetail.ts b/src/short-urls/reducers/shortUrlDetail.ts index b23591c6..4ad467f3 100644 --- a/src/short-urls/reducers/shortUrlDetail.ts +++ b/src/short-urls/reducers/shortUrlDetail.ts @@ -6,7 +6,7 @@ import { shortUrlMatches } from '../helpers'; import { parseApiError } from '../../api/utils'; import { ProblemDetailsError } from '../../api/types/errors'; -const GET_SHORT_URL_DETAIL = 'shlink/shortUrlDetail/GET_SHORT_URL_DETAIL'; +const REDUCER_PREFIX = 'shlink/shortUrlDetail'; export interface ShortUrlDetail { shortUrl?: ShortUrl; @@ -24,7 +24,7 @@ const initialState: ShortUrlDetail = { export const shortUrlDetailReducerCreator = (buildShlinkApiClient: ShlinkApiClientBuilder) => { const getShortUrlDetail = createAsyncThunk( - GET_SHORT_URL_DETAIL, + `${REDUCER_PREFIX}/getShortUrlDetail`, async ({ shortCode, domain }: ShortUrlIdentifier, { getState }): Promise<ShortUrl> => { const { shortUrlsList } = getState(); const alreadyLoaded = shortUrlsList?.shortUrls?.data.find((url) => shortUrlMatches(url, shortCode, domain)); @@ -34,7 +34,7 @@ export const shortUrlDetailReducerCreator = (buildShlinkApiClient: ShlinkApiClie ); const { reducer } = createSlice({ - name: 'shortUrlDetailReducer', + name: REDUCER_PREFIX, initialState, reducers: {}, extraReducers: (builder) => { diff --git a/src/short-urls/reducers/shortUrlEdition.ts b/src/short-urls/reducers/shortUrlEdition.ts index fbdfac13..28d1d992 100644 --- a/src/short-urls/reducers/shortUrlEdition.ts +++ b/src/short-urls/reducers/shortUrlEdition.ts @@ -5,7 +5,8 @@ import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilde import { parseApiError } from '../../api/utils'; import { ProblemDetailsError } from '../../api/types/errors'; -export const SHORT_URL_EDITED = 'shlink/shortUrlEdition/SHORT_URL_EDITED'; +const REDUCER_PREFIX = 'shlink/shortUrlEdition'; +export const SHORT_URL_EDITED = `${REDUCER_PREFIX}/editShortUrl`; export interface ShortUrlEdition { shortUrl?: ShortUrl; @@ -37,7 +38,7 @@ export const shortUrlEditionReducerCreator = (buildShlinkApiClient: ShlinkApiCli ); const { reducer } = createSlice({ - name: 'shortUrlEditionReducer', + name: REDUCER_PREFIX, initialState, reducers: {}, extraReducers: (builder) => { diff --git a/src/tags/reducers/tagDelete.ts b/src/tags/reducers/tagDelete.ts index bb7039bf..5bac50a8 100644 --- a/src/tags/reducers/tagDelete.ts +++ b/src/tags/reducers/tagDelete.ts @@ -1,11 +1,10 @@ -import { createAction, createSlice, PayloadAction } from '@reduxjs/toolkit'; +import { createAction, createSlice } from '@reduxjs/toolkit'; import { createAsyncThunk } from '../../utils/helpers/redux'; import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; import { parseApiError } from '../../api/utils'; import { ProblemDetailsError } from '../../api/types/errors'; -const DELETE_TAG = 'shlink/deleteTag/DELETE_TAG'; -const TAG_DELETED = 'shlink/deleteTag/TAG_DELETED'; +const REDUCER_PREFIX = 'shlink/tagDelete'; export interface TagDeletion { deleting: boolean; @@ -14,24 +13,22 @@ export interface TagDeletion { errorData?: ProblemDetailsError; } -export type DeleteTagAction = PayloadAction<string>; - const initialState: TagDeletion = { deleting: false, deleted: false, error: false, }; -export const tagDeleted = createAction<string>(TAG_DELETED); +export const tagDeleted = createAction<string>(`${REDUCER_PREFIX}/tagDeleted`); export const tagDeleteReducerCreator = (buildShlinkApiClient: ShlinkApiClientBuilder) => { - const deleteTag = createAsyncThunk(DELETE_TAG, async (tag: string, { getState }): Promise<void> => { + const deleteTag = createAsyncThunk(`${REDUCER_PREFIX}/deleteTag`, async (tag: string, { getState }): Promise<void> => { const { deleteTags } = buildShlinkApiClient(getState); await deleteTags([tag]); }); const { reducer } = createSlice({ - name: 'tagDeleteReducer', + name: REDUCER_PREFIX, initialState, reducers: {}, extraReducers: (builder) => { diff --git a/src/tags/reducers/tagEdit.ts b/src/tags/reducers/tagEdit.ts index 087a8497..7c32b3ee 100644 --- a/src/tags/reducers/tagEdit.ts +++ b/src/tags/reducers/tagEdit.ts @@ -6,8 +6,7 @@ import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilde import { parseApiError } from '../../api/utils'; import { ProblemDetailsError } from '../../api/types/errors'; -const EDIT_TAG = 'shlink/editTag/EDIT_TAG'; -const TAG_EDITED = 'shlink/editTag/TAG_EDITED'; +const REDUCER_PREFIX = 'shlink/tagEdit'; export interface TagEdition { oldName?: string; @@ -32,11 +31,11 @@ const initialState: TagEdition = { error: false, }; -export const tagEdited = createAction<EditTag>(TAG_EDITED); +export const tagEdited = createAction<EditTag>(`${REDUCER_PREFIX}/tagEdited`); export const tagEditReducerCreator = (buildShlinkApiClient: ShlinkApiClientBuilder, colorGenerator: ColorGenerator) => { const editTag = createAsyncThunk( - EDIT_TAG, + `${REDUCER_PREFIX}/editTag`, async ({ oldName, newName, color }: EditTag, { getState }): Promise<EditTag> => { await buildShlinkApiClient(getState).editTag(oldName, newName); colorGenerator.setColorForKey(newName, color); @@ -46,7 +45,7 @@ export const tagEditReducerCreator = (buildShlinkApiClient: ShlinkApiClientBuild ); const { reducer } = createSlice({ - name: 'tagEditReducer', + name: REDUCER_PREFIX, initialState, reducers: {}, extraReducers: (builder) => { diff --git a/src/tags/reducers/tagsList.ts b/src/tags/reducers/tagsList.ts index a6e684b6..4f3dc6d8 100644 --- a/src/tags/reducers/tagsList.ts +++ b/src/tags/reducers/tagsList.ts @@ -12,8 +12,7 @@ import { tagDeleted } from './tagDelete'; import { tagEdited } from './tagEdit'; import { ProblemDetailsError } from '../../api/types/errors'; -const LIST_TAGS = 'shlink/tagsList/LIST_TAGS'; -const FILTER_TAGS = 'shlink/tagsList/FILTER_TAGS'; +const REDUCER_PREFIX = 'shlink/tagsList'; type TagsStatsMap = Record<string, TagStats>; @@ -66,7 +65,7 @@ const calculateVisitsPerTag = (createdVisits: CreateVisit[]): TagIncrease[] => O ); export const listTags = (buildShlinkApiClient: ShlinkApiClientBuilder, force = true) => createAsyncThunk( - LIST_TAGS, + `${REDUCER_PREFIX}/listTags`, async (_: void, { getState }): Promise<ListTags> => { const { tagsList } = getState(); @@ -86,13 +85,13 @@ export const listTags = (buildShlinkApiClient: ShlinkApiClientBuilder, force = t }, ); -export const filterTags = createAction<string>(FILTER_TAGS); +export const filterTags = createAction<string>(`${REDUCER_PREFIX}/filterTags`); export const reducer = ( listTagsThunk: ReturnType<typeof listTags>, createShortUrlThunk: ReturnType<typeof createShortUrl>, ) => createSlice({ - name: 'shlink/tagsList', + name: REDUCER_PREFIX, initialState, reducers: {}, extraReducers: (builder) => { diff --git a/src/theme/theme.scss b/src/utils/theme/theme.scss similarity index 98% rename from src/theme/theme.scss rename to src/utils/theme/theme.scss index 7d797202..dd4c20d1 100644 --- a/src/theme/theme.scss +++ b/src/utils/theme/theme.scss @@ -1,4 +1,4 @@ -@import '../utils/base'; +@import '../base'; // Light theme colors $lightPrimaryColor: #ffffff;