8000 refactor: re-write actions to typescript and implement new analytics API by shadowusr · Pull Request #626 · gemini-testing/html-reporter · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

refactor: re-write actions to typescript and implement new analytics API #626

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jan 4, 2025

Conversation

shadowusr
Copy link
Member
@shadowusr shadowusr commented Dec 27, 2024

Что сделано?

Новое API для работы с аналитикой

При работе с Redux Middleware

Зачем: избавляемся от лишних хелперов, неочевидных названий в пользу более явного и краткого API.

Было Стало
// Используются глобальные переменные
const ymConfig = get(pluginConfig, 'yandexMetrika', {});

if (!ymConfig.counterNumber) {
    return next(action);
}

metrika = metrikaClass.create(ymConfig);
// ...
case actionNames.GROUP_TESTS_BY_KEY: {
    execOnMetrikaEnabled(() => {
        sendCounterId(action.type);
    });
}
// Инстанс аналитики прилетает в аргументах
case actionNames.GROUP_TESTS_BY_KEY: {
    analytics.trackFeatureUsage({
        featureName: action.type
    });
}

В произвольных компонентах, когда не используются Redux Action'ы

Зачем: не все действия напрямую порождают какой-то redux action, нужно иметь возможность покрывать аналитикой компоненты, не связанные с redux.

Было Стало

NOT IMPLEMENTED

const analytics = useAnalytics();
analytics?.trackScreenshotsAccept();

Строго типизированные action'ы

Зачем: углубляет type-checking на уровень redux store; ускоряет разработка за счет подсказок, понятности структуры данных; пререквизит к заезду на rtk-toolkit и сокращению boilerplate кода.

Было Стало
Screenshot 2024-12-27 at 16 27 37 Screenshot 2024-12-27 at 16 28 47

Рефакторинг Redux Action'ов

Удаление не используемых Action'ов

Удалил не используемые Action'ы, или те, которые использовались только для аналитики, но ничего не делали. Вместо этого можно использовать хук useAnalytics, по которому явно понятна суть действия.

Зачем: фантомные action'ы путают тем, что ничего не меняют и плодят доп. логику в reducer'ах.

Ренейм и стандартизация Thunk'ов

Избавился от Thunk'ов, которые могут кидать произвольные Action'ы, произвел ренейм.

Screenshot 2024-12-27 at 16 37 42

Зачем: четкое разграничение Action'ов и асинхронных Thunk'ов, по Thunk сразу ясно, что он делает и какой Action порождает.

Схлопнул многие дублирующиеся Action'ы и Thunk'и

Screenshot 2024-12-27 at 16 41 30

Зачем: упрощение и сокращение кода.

@shadowusr shadowusr force-pushed the users/shadowusr/TESTPLANE-367 branch 2 times, most recently from 64e09eb to 8606396 Compare December 27, 2024 12:03
@shadowusr shadowusr force-pushed the users/shadowusr/TESTPLANE-367 branch from 8606396 to 8ae189a Compare December 27, 2024 13:45
@shadowusr shadowusr force-pushed the users/shadowusr/TESTPLANE-367 branch from 8ae189a to 3a07210 Compare December 27, 2024 13:50
Copy link
Member
@KuznetsovRoman KuznetsovRoman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔥

@shadowusr shadowusr merged commit 3d04404 into master Jan 4, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants
0