diff --git a/CHANGELOG.md b/CHANGELOG.md index 09564f71..b92eb19a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,23 +9,15 @@ The format is based on [*Keep a Changelog*](https://keepachangelog.com/en/1.0.0/ - - -## [v0.107.58] - 2025-03-13 - -See also the [v0.107.58 GitHub milestone][ms-v0.107.58]. - ### Security - Go version has been updated to prevent the possibility of exploiting the Go vulnerabilities fixed in [1.24.1][go-1.24.1]. @@ -46,7 +38,10 @@ See also the [v0.107.58 GitHub milestone][ms-v0.107.58]. [#7583]: https://github.com/AdguardTeam/AdGuardHome/issues/7583 [go-1.24.1]: https://groups.google.com/g/golang-announce/c/4t3lzH3I0eI -[ms-v0.107.58]: https://github.com/AdguardTeam/AdGuardHome/milestone/93?closed=1 + + ## [v0.107.57] - 2025-02-20 @@ -3044,12 +3039,11 @@ See also the [v0.104.2 GitHub milestone][ms-v0.104.2]. [ms-v0.104.2]: https://github.com/AdguardTeam/AdGuardHome/milestone/28?closed=1 - [Unreleased]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.58...HEAD [v0.107.58]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.57...v0.107.58 +--> + +[Unreleased]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.57...HEAD [v0.107.57]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.56...v0.107.57 [v0.107.56]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.55...v0.107.56 [v0.107.55]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.54...v0.107.55 diff --git a/client/jest.config.mjs b/client/jest.config.mjs deleted file mode 100644 index edb422aa..00000000 --- a/client/jest.config.mjs +++ /dev/null @@ -1,6 +0,0 @@ -export default { - testEnvironment: 'jsdom', - transform: { - '^.+\\.tsx?$': 'babel-jest', - }, -}; diff --git a/client/src/components/Settings/Clients/Form.tsx b/client/src/components/Settings/Clients/Form.tsx deleted file mode 100644 index 1252bf16..00000000 --- a/client/src/components/Settings/Clients/Form.tsx +++ /dev/null @@ -1,514 +0,0 @@ -import React, { useState } from 'react'; -import { connect, useSelector } from 'react-redux'; -import { Field, FieldArray, reduxForm, formValueSelector, FormErrors } from 'redux-form'; -import { Trans, withTranslation } from 'react-i18next'; -import flow from 'lodash/flow'; - -import Select from 'react-select'; - -import i18n from '../../../i18n'; - -import Tabs from '../../ui/Tabs'; - -import Examples from '../Dns/Upstream/Examples'; - -import { ScheduleForm } from '../../Filters/Services/ScheduleForm'; -import { toggleAllServices, trimLinesAndRemoveEmpty, captitalizeWords } from '../../../helpers/helpers'; -import { - toNumber, - renderInputField, - renderGroupField, - CheckboxField, - renderServiceField, - renderTextareaField, -} from '../../../helpers/form'; -import { validateClientId, validateRequiredValue } from '../../../helpers/validators'; -import { CLIENT_ID_LINK, FORM_NAME, UINT32_RANGE } from '../../../helpers/constants'; -import './Service.css'; -import { RootState } from '../../../initialState'; - -const settingsCheckboxes = [ - { - name: 'use_global_settings', - placeholder: 'client_global_settings', - }, - { - name: 'filtering_enabled', - placeholder: 'block_domain_use_filters_and_hosts', - }, - { - name: 'safebrowsing_enabled', - placeholder: 'use_adguard_browsing_sec', - }, - { - name: 'parental_enabled', - placeholder: 'use_adguard_parental', - }, -]; - -const logAndStatsCheckboxes = [ - { - name: 'ignore_querylog', - placeholder: 'ignore_query_log', - }, - { - name: 'ignore_statistics', - placeholder: 'ignore_statistics', - }, -]; -const validate = (values: any): FormErrors => { - const errors: { - name?: string; - ids?: string[]; - } = {}; - const { name, ids } = values; - - errors.name = validateRequiredValue(name); - - if (ids && ids.length) { - const idArrayErrors: any = []; - ids.forEach((id: any, idx: any) => { - idArrayErrors[idx] = validateRequiredValue(id) || validateClientId(id); - }); - - if (idArrayErrors.length) { - errors.ids = idArrayErrors; - } - } - // @ts-expect-error FIXME: ts migration - return errors; -}; - -const renderFieldsWrapper = (placeholder: any, buttonTitle: any) => - function cell(row: any) { - const { fields } = row; - return ( -
- {fields.map((ip: any, index: any) => ( -
- fields.remove(index)} - normalizeOnBlur={(data: any) => data.trim()} - /> -
- ))} - - -
- ); - }; - -// Should create function outside of component to prevent component re-renders -const renderFields = renderFieldsWrapper(i18n.t('form_enter_id'), i18n.t('form_add_id')); - -interface renderMultiselectProps { - input: { - name: string; - value: string; - checked: boolean; - onChange: (...args: unknown[]) => unknown; - onBlur: (...args: unknown[]) => unknown; - }; - placeholder?: string; - options?: unknown[]; -} - -const renderMultiselect = (props: renderMultiselectProps) => { - const { input, placeholder, options } = props; - - return ( - - - - - {t(title)} - - - - - - - ); - } -} - -export default withTranslation()(Checkbox);