mirror of
https://github.com/shlinkio/shlink-web-client.git
synced 2026-03-16 12:33:48 +00:00
Removed dependency on redux-actions for all reducers already migrated to typescript
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
import PropTypes from 'prop-types';
|
||||
import { createAction, handleActions } from 'redux-actions';
|
||||
import { Action, Dispatch } from 'redux';
|
||||
import { ShlinkApiClientBuilder } from '../../utils/services/types';
|
||||
import { GetState } from '../../container/types';
|
||||
import { ShortUrl, ShortUrlData } from '../data';
|
||||
import { buildReducer, buildActionCreator } from '../../utils/helpers/redux';
|
||||
|
||||
/* eslint-disable padding-line-between-statements */
|
||||
export const CREATE_SHORT_URL_START = 'shlink/createShortUrl/CREATE_SHORT_URL_START';
|
||||
@@ -27,16 +27,20 @@ export interface ShortUrlCreation {
|
||||
error: boolean;
|
||||
}
|
||||
|
||||
export interface CreateShortUrlAction extends Action<string> {
|
||||
result: ShortUrl;
|
||||
}
|
||||
|
||||
const initialState: ShortUrlCreation = {
|
||||
result: null,
|
||||
saving: false,
|
||||
error: false,
|
||||
};
|
||||
|
||||
export default handleActions<ShortUrlCreation, any>({
|
||||
export default buildReducer<ShortUrlCreation, CreateShortUrlAction>({
|
||||
[CREATE_SHORT_URL_START]: (state) => ({ ...state, saving: true, error: false }),
|
||||
[CREATE_SHORT_URL_ERROR]: (state) => ({ ...state, saving: false, error: true }),
|
||||
[CREATE_SHORT_URL]: (_, { result }: any) => ({ result, saving: false, error: false }),
|
||||
[CREATE_SHORT_URL]: (_, { result }) => ({ result, saving: false, error: false }),
|
||||
[RESET_CREATE_SHORT_URL]: () => initialState,
|
||||
}, initialState);
|
||||
|
||||
@@ -50,7 +54,7 @@ export const createShortUrl = (buildShlinkApiClient: ShlinkApiClientBuilder) =>
|
||||
try {
|
||||
const result = await createShortUrl(data);
|
||||
|
||||
dispatch<Action & { result: ShortUrl }>({ type: CREATE_SHORT_URL, result });
|
||||
dispatch<CreateShortUrlAction>({ type: CREATE_SHORT_URL, result });
|
||||
} catch (e) {
|
||||
dispatch({ type: CREATE_SHORT_URL_ERROR });
|
||||
|
||||
@@ -58,4 +62,4 @@ export const createShortUrl = (buildShlinkApiClient: ShlinkApiClientBuilder) =>
|
||||
}
|
||||
};
|
||||
|
||||
export const resetCreateShortUrl = createAction(RESET_CREATE_SHORT_URL);
|
||||
export const resetCreateShortUrl = buildActionCreator(RESET_CREATE_SHORT_URL);
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { createAction, handleActions, Action } from 'redux-actions';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Dispatch } from 'redux';
|
||||
import { Dispatch, Action } from 'redux';
|
||||
import { ShortUrlMeta } from '../data';
|
||||
import { ShlinkApiClientBuilder } from '../../utils/services/types';
|
||||
import { GetState } from '../../container/types';
|
||||
import { buildActionCreator, buildReducer } from '../../utils/helpers/redux';
|
||||
|
||||
/* eslint-disable padding-line-between-statements */
|
||||
export const EDIT_SHORT_URL_META_START = 'shlink/shortUrlMeta/EDIT_SHORT_URL_META_START';
|
||||
@@ -34,7 +34,7 @@ export interface ShortUrlMetaEdition {
|
||||
error: boolean;
|
||||
}
|
||||
|
||||
interface ShortUrlMetaEditedAction {
|
||||
interface ShortUrlMetaEditedAction extends Action<string> {
|
||||
shortCode: string;
|
||||
domain?: string | null;
|
||||
meta: ShortUrlMeta;
|
||||
@@ -47,10 +47,10 @@ const initialState: ShortUrlMetaEdition = {
|
||||
error: false,
|
||||
};
|
||||
|
||||
export default handleActions<ShortUrlMetaEdition, ShortUrlMetaEditedAction>({
|
||||
export default buildReducer<ShortUrlMetaEdition, ShortUrlMetaEditedAction>({
|
||||
[EDIT_SHORT_URL_META_START]: (state) => ({ ...state, saving: true, error: false }),
|
||||
[EDIT_SHORT_URL_META_ERROR]: (state) => ({ ...state, saving: false, error: true }),
|
||||
[SHORT_URL_META_EDITED]: (_, { payload }) => ({ ...payload, saving: false, error: false }),
|
||||
[SHORT_URL_META_EDITED]: (_, { shortCode, meta }) => ({ shortCode, meta, saving: false, error: false }),
|
||||
[RESET_EDIT_SHORT_URL_META]: () => initialState,
|
||||
}, initialState);
|
||||
|
||||
@@ -64,10 +64,7 @@ export const editShortUrlMeta = (buildShlinkApiClient: ShlinkApiClientBuilder) =
|
||||
|
||||
try {
|
||||
await updateShortUrlMeta(shortCode, domain, meta);
|
||||
dispatch<Action<ShortUrlMetaEditedAction>>({
|
||||
type: SHORT_URL_META_EDITED,
|
||||
payload: { shortCode, meta, domain },
|
||||
});
|
||||
dispatch<ShortUrlMetaEditedAction>({ shortCode, meta, domain, type: SHORT_URL_META_EDITED });
|
||||
} catch (e) {
|
||||
dispatch({ type: EDIT_SHORT_URL_META_ERROR });
|
||||
|
||||
@@ -75,4 +72,4 @@ export const editShortUrlMeta = (buildShlinkApiClient: ShlinkApiClientBuilder) =
|
||||
}
|
||||
};
|
||||
|
||||
export const resetShortUrlMeta = createAction(RESET_EDIT_SHORT_URL_META);
|
||||
export const resetShortUrlMeta = buildActionCreator(RESET_EDIT_SHORT_URL_META);
|
||||
|
||||
@@ -49,13 +49,7 @@ export default handleActions({
|
||||
state,
|
||||
),
|
||||
[SHORT_URL_TAGS_EDITED]: setPropFromActionOnMatchingShortUrl('tags'),
|
||||
[SHORT_URL_META_EDITED]: (state, { payload: { shortCode, domain, meta } }) => assocPath(
|
||||
[ 'shortUrls', 'data' ],
|
||||
state.shortUrls.data.map(
|
||||
(shortUrl) => shortUrlMatches(shortUrl, shortCode, domain) ? assoc('meta', meta, shortUrl) : shortUrl,
|
||||
),
|
||||
state,
|
||||
),
|
||||
[SHORT_URL_META_EDITED]: setPropFromActionOnMatchingShortUrl('meta'),
|
||||
[SHORT_URL_EDITED]: setPropFromActionOnMatchingShortUrl('longUrl'),
|
||||
[CREATE_VISIT]: (state, { shortUrl: { shortCode, domain, visitsCount } }) => assocPath(
|
||||
[ 'shortUrls', 'data' ],
|
||||
|
||||
Reference in New Issue
Block a user