From b2e6e7db616a2da816b4a7dc11e7cbf8682bb877 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 19 Aug 2023 17:21:34 +0200 Subject: [PATCH] Define UiSettings which are no longer part of shlink-web-component --- .github/dependabot.yml | 4 ++++ src/app/App.tsx | 4 ++-- src/settings/UserInterfaceSettings.tsx | 4 ++-- src/settings/reducers/settings.ts | 20 ++++++++++++++------ test/settings/UserInterfaceSettings.test.tsx | 2 +- 5 files changed, 23 insertions(+), 11 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 4afd4fd3..2af9e347 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -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: diff --git a/src/app/App.tsx b/src/app/App.tsx index 87cbb156..b27811a7 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -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; } diff --git a/src/settings/UserInterfaceSettings.tsx b/src/settings/UserInterfaceSettings.tsx index e34ad0f1..58f2a086 100644 --- a/src/settings/UserInterfaceSettings.tsx +++ b/src/settings/UserInterfaceSettings.tsx @@ -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; } diff --git a/src/settings/reducers/settings.ts b/src/settings/reducers/settings.ts index 5962b9b7..64da272c 100644 --- a/src/settings/reducers/settings.ts +++ b/src/settings/reducers/settings.ts @@ -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; -type SettingsPrepareAction = PrepareAction; +type SettingsAction = PayloadAction; +type SettingsPrepareAction = PrepareAction; -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', diff --git a/test/settings/UserInterfaceSettings.test.tsx b/test/settings/UserInterfaceSettings.test.tsx index 3a99a05f..b0ef7aae 100644 --- a/test/settings/UserInterfaceSettings.test.tsx +++ b/test/settings/UserInterfaceSettings.test.tsx @@ -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';