mirror of
https://github.com/shlinkio/shlink-web-client.git
synced 2024-12-23 01:20:24 +03:00
Define UiSettings which are no longer part of shlink-web-component
This commit is contained in:
parent
de0b735eab
commit
b2e6e7db61
5 changed files with 23 additions and 11 deletions
4
.github/dependabot.yml
vendored
4
.github/dependabot.yml
vendored
|
@ -8,6 +8,10 @@ updates:
|
||||||
time: '09:00'
|
time: '09:00'
|
||||||
timezone: 'Europe/Madrid'
|
timezone: 'Europe/Madrid'
|
||||||
open-pull-requests-limit: 10
|
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
|
- package-ecosystem: docker
|
||||||
directory: '/'
|
directory: '/'
|
||||||
schedule:
|
schedule:
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import { changeThemeInMarkup } from '@shlinkio/shlink-frontend-kit';
|
import { changeThemeInMarkup } from '@shlinkio/shlink-frontend-kit';
|
||||||
import type { Settings } from '@shlinkio/shlink-web-component';
|
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import type { FC } from 'react';
|
import type { FC } from 'react';
|
||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
|
@ -7,13 +6,14 @@ import { Route, Routes, useLocation } from 'react-router-dom';
|
||||||
import { AppUpdateBanner } from '../common/AppUpdateBanner';
|
import { AppUpdateBanner } from '../common/AppUpdateBanner';
|
||||||
import { NotFound } from '../common/NotFound';
|
import { NotFound } from '../common/NotFound';
|
||||||
import type { ServersMap } from '../servers/data';
|
import type { ServersMap } from '../servers/data';
|
||||||
|
import type { AppSettings } from '../settings/reducers/settings';
|
||||||
import { forceUpdate } from '../utils/helpers/sw';
|
import { forceUpdate } from '../utils/helpers/sw';
|
||||||
import './App.scss';
|
import './App.scss';
|
||||||
|
|
||||||
interface AppProps {
|
interface AppProps {
|
||||||
fetchServers: () => void;
|
fetchServers: () => void;
|
||||||
servers: ServersMap;
|
servers: ServersMap;
|
||||||
settings: Settings;
|
settings: AppSettings;
|
||||||
resetAppUpdate: () => void;
|
resetAppUpdate: () => void;
|
||||||
appUpdated: boolean;
|
appUpdated: boolean;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,12 +2,12 @@ import { faMoon, faSun } from '@fortawesome/free-solid-svg-icons';
|
||||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||||
import type { Theme } from '@shlinkio/shlink-frontend-kit';
|
import type { Theme } from '@shlinkio/shlink-frontend-kit';
|
||||||
import { changeThemeInMarkup, SimpleCard, ToggleSwitch } 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 { FC } from 'react';
|
||||||
|
import type { AppSettings, UiSettings } from './reducers/settings';
|
||||||
import './UserInterfaceSettings.scss';
|
import './UserInterfaceSettings.scss';
|
||||||
|
|
||||||
interface UserInterfaceProps {
|
interface UserInterfaceProps {
|
||||||
settings: Settings;
|
settings: AppSettings;
|
||||||
setUiSettings: (settings: UiSettings) => void;
|
setUiSettings: (settings: UiSettings) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import type { PayloadAction, PrepareAction } from '@reduxjs/toolkit';
|
import type { PayloadAction, PrepareAction } from '@reduxjs/toolkit';
|
||||||
import { createSlice } from '@reduxjs/toolkit';
|
import { createSlice } from '@reduxjs/toolkit';
|
||||||
|
import type { Theme } from '@shlinkio/shlink-frontend-kit';
|
||||||
import type {
|
import type {
|
||||||
Settings,
|
Settings,
|
||||||
ShortUrlCreationSettings,
|
ShortUrlCreationSettings,
|
||||||
ShortUrlsListSettings,
|
ShortUrlsListSettings,
|
||||||
TagsSettings,
|
TagsSettings,
|
||||||
UiSettings,
|
|
||||||
VisitsSettings,
|
VisitsSettings,
|
||||||
} from '@shlinkio/shlink-web-component';
|
} from '@shlinkio/shlink-web-component';
|
||||||
import { mergeDeepRight } from 'ramda';
|
import { mergeDeepRight } from 'ramda';
|
||||||
|
@ -18,7 +18,15 @@ export const DEFAULT_SHORT_URLS_ORDERING: ShortUrlsOrder = {
|
||||||
dir: 'DESC',
|
dir: 'DESC',
|
||||||
};
|
};
|
||||||
|
|
||||||
const initialState: Settings = {
|
export type UiSettings = {
|
||||||
|
theme: Theme;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type AppSettings = Settings & {
|
||||||
|
ui?: UiSettings;
|
||||||
|
};
|
||||||
|
|
||||||
|
const initialState: AppSettings = {
|
||||||
realTimeUpdates: {
|
realTimeUpdates: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
},
|
},
|
||||||
|
@ -36,12 +44,12 @@ const initialState: Settings = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
type SettingsAction = PayloadAction<Settings>;
|
type SettingsAction = PayloadAction<AppSettings>;
|
||||||
type SettingsPrepareAction = PrepareAction<Settings>;
|
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 toReducer = (prepare: SettingsPrepareAction) => ({ reducer: commonReducer, prepare });
|
||||||
const toPreparedAction: SettingsPrepareAction = (payload: Settings) => ({ payload });
|
const toPreparedAction: SettingsPrepareAction = (payload: AppSettings) => ({ payload });
|
||||||
|
|
||||||
const { reducer, actions } = createSlice({
|
const { reducer, actions } = createSlice({
|
||||||
name: 'shlink/settings',
|
name: 'shlink/settings',
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import type { Theme } from '@shlinkio/shlink-frontend-kit';
|
import type { Theme } from '@shlinkio/shlink-frontend-kit';
|
||||||
import type { UiSettings } from '@shlinkio/shlink-web-component';
|
|
||||||
import { screen } from '@testing-library/react';
|
import { screen } from '@testing-library/react';
|
||||||
import { fromPartial } from '@total-typescript/shoehorn';
|
import { fromPartial } from '@total-typescript/shoehorn';
|
||||||
|
import type { UiSettings } from '../../src/settings/reducers/settings';
|
||||||
import { UserInterfaceSettings } from '../../src/settings/UserInterfaceSettings';
|
import { UserInterfaceSettings } from '../../src/settings/UserInterfaceSettings';
|
||||||
import { renderWithEvents } from '../__helpers__/setUpTest';
|
import { renderWithEvents } from '../__helpers__/setUpTest';
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue