Define UiSettings which are no longer part of shlink-web-component

This commit is contained in:
Alejandro Celaya 2023-08-19 17:21:34 +02:00
parent de0b735eab
commit b2e6e7db61
5 changed files with 23 additions and 11 deletions

View file

@ -8,6 +8,10 @@ updates:
time: '09:00'
timezone: 'Europe/Madrid'
open-pull-requests-limit: 10
ignore:
# Bootstrap can introduce visual breaking changes on styles
# Ignore it, since the plan is to remove it anyway
- dependency-name: 'bootstrap'
- package-ecosystem: docker
directory: '/'
schedule:

View file

@ -1,5 +1,4 @@
import { changeThemeInMarkup } from '@shlinkio/shlink-frontend-kit';
import type { Settings } from '@shlinkio/shlink-web-component';
import classNames from 'classnames';
import type { FC } from 'react';
import { useEffect } from 'react';
@ -7,13 +6,14 @@ import { Route, Routes, useLocation } from 'react-router-dom';
import { AppUpdateBanner } from '../common/AppUpdateBanner';
import { NotFound } from '../common/NotFound';
import type { ServersMap } from '../servers/data';
import type { AppSettings } from '../settings/reducers/settings';
import { forceUpdate } from '../utils/helpers/sw';
import './App.scss';
interface AppProps {
fetchServers: () => void;
servers: ServersMap;
settings: Settings;
settings: AppSettings;
resetAppUpdate: () => void;
appUpdated: boolean;
}

View file

@ -2,12 +2,12 @@ import { faMoon, faSun } from '@fortawesome/free-solid-svg-icons';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import type { Theme } from '@shlinkio/shlink-frontend-kit';
import { changeThemeInMarkup, SimpleCard, ToggleSwitch } from '@shlinkio/shlink-frontend-kit';
import type { Settings, UiSettings } from '@shlinkio/shlink-web-component';
import type { FC } from 'react';
import type { AppSettings, UiSettings } from './reducers/settings';
import './UserInterfaceSettings.scss';
interface UserInterfaceProps {
settings: Settings;
settings: AppSettings;
setUiSettings: (settings: UiSettings) => void;
}

View file

@ -1,11 +1,11 @@
import type { PayloadAction, PrepareAction } from '@reduxjs/toolkit';
import { createSlice } from '@reduxjs/toolkit';
import type { Theme } from '@shlinkio/shlink-frontend-kit';
import type {
Settings,
ShortUrlCreationSettings,
ShortUrlsListSettings,
TagsSettings,
UiSettings,
VisitsSettings,
} from '@shlinkio/shlink-web-component';
import { mergeDeepRight } from 'ramda';
@ -18,7 +18,15 @@ export const DEFAULT_SHORT_URLS_ORDERING: ShortUrlsOrder = {
dir: 'DESC',
};
const initialState: Settings = {
export type UiSettings = {
theme: Theme;
};
export type AppSettings = Settings & {
ui?: UiSettings;
};
const initialState: AppSettings = {
realTimeUpdates: {
enabled: true,
},
@ -36,12 +44,12 @@ const initialState: Settings = {
},
};
type SettingsAction = PayloadAction<Settings>;
type SettingsPrepareAction = PrepareAction<Settings>;
type SettingsAction = PayloadAction<AppSettings>;
type SettingsPrepareAction = PrepareAction<AppSettings>;
const commonReducer = (state: Settings, { payload }: SettingsAction) => mergeDeepRight(state, payload);
const commonReducer = (state: AppSettings, { payload }: SettingsAction) => mergeDeepRight(state, payload);
const toReducer = (prepare: SettingsPrepareAction) => ({ reducer: commonReducer, prepare });
const toPreparedAction: SettingsPrepareAction = (payload: Settings) => ({ payload });
const toPreparedAction: SettingsPrepareAction = (payload: AppSettings) => ({ payload });
const { reducer, actions } = createSlice({
name: 'shlink/settings',

View file

@ -1,7 +1,7 @@
import type { Theme } from '@shlinkio/shlink-frontend-kit';
import type { UiSettings } from '@shlinkio/shlink-web-component';
import { screen } from '@testing-library/react';
import { fromPartial } from '@total-typescript/shoehorn';
import type { UiSettings } from '../../src/settings/reducers/settings';
import { UserInterfaceSettings } from '../../src/settings/UserInterfaceSettings';
import { renderWithEvents } from '../__helpers__/setUpTest';