epoll-j

refactor(AutoTrack): 更新配置管理方式并添加HTTP请求监听

此次重构将各个配置更新方法统一为通过 `AutoTrackConfig` 对象进行更新,并增加了对 HTTP 请求的监听功能。
... ... @@ -123,6 +123,31 @@ class AutoTrackConfig {
enableIgnoreNullKey: enableIgnoreNullKey ?? this.enableIgnoreNullKey,
);
}
merge(AutoTrackConfig config) {
return copyWith(
host: config.host,
appKey: config.appKey,
appSecret: config.appSecret,
trackId: config.trackId,
userId: config.userId,
uniqueId: config.uniqueId,
samplingRate: config.samplingRate,
uploadInterval: config.uploadInterval,
signature: config.signature,
eventHandler: config.eventHandler,
pageConfigs: config.pageConfigs,
useCustomRoute: config.useCustomRoute,
ignoreElementKeys: config.ignoreElementKeys,
ignoreElementStringKeys: config.ignoreElementStringKeys,
enablePageView: config.enablePageView,
enablePageLeave: config.enablePageLeave,
enableClick: config.enableClick,
enableUpload: config.enableUpload,
enableDrag: config.enableDrag,
enableIgnoreNullKey: config.enableIgnoreNullKey,
);
}
}
typedef PageWidgetFunc = bool Function(Widget);
... ...
... ... @@ -36,9 +36,13 @@ class AutoTrackConfigManager {
bool _autoTrackEnable = false;
bool get autoTrackEnable => _autoTrackEnable;
void updateConfig(AutoTrackConfig config) {
_config = config;
void setConfig(AutoTrackConfig config) {
updateConfig(config);
_updateDeviceId();
}
void updateConfig(AutoTrackConfig config) {
_config = _config.merge(config);
if (config.enableUpload) {
AutoTrackQueue.instance.start();
} else {
... ... @@ -58,59 +62,10 @@ class AutoTrackConfigManager {
}
}
void updateUserId(String userId) {
_config.userId = userId;
}
void updateSampleRate(double rate) {
_config.samplingRate = rate;
}
void updatePageConfigs(List<AutoTrackPageConfig> pageConfigs) {
_config.pageConfigs = pageConfigs;
}
void updateIgnoreElementKeys(List<Key> ignoreElementKeys) {
_config.ignoreElementKeys = ignoreElementKeys;
}
void updateIgnoreElementStringKeys(List<String> ignoreElementStringKeys) {
_config.ignoreElementStringKeys = ignoreElementStringKeys;
}
void enablePageView(bool enable) {
_config.enablePageView = enable;
}
void enablePageLeave(bool enable) {
_config.enablePageLeave = enable;
}
void enableClick(bool enable) {
_config.enableClick = enable;
}
void enableDrag(bool enable) {
_config.enableDrag = enable;
}
void enableAutoTrack(bool enable) {
_autoTrackEnable = enable;
}
void enableUpload(bool enable) {
_config.enableUpload = enable;
if (enable) {
AutoTrackQueue.instance.start();
} else {
AutoTrackQueue.instance.stop();
}
}
void enableIgnoreNullKey(bool enable) {
_config.enableIgnoreNullKey = enable;
}
List<AutoTrackPageConfig> get pageConfigs => _config.pageConfigs;
bool get useCustomRoute => _config.useCustomRoute;
... ...
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'listener/click/pointer_event_listener.dart';
import 'config/config.dart';
import 'config/manager.dart';
import 'listener/click/pointer_event_listener.dart';
import 'listener/drag/drag_pointer_event_listener.dart';
import 'listener/request/request_listener.dart';
import 'log/logger.dart';
class AutoTrack {
... ... @@ -16,98 +19,98 @@ class AutoTrack {
}
void updateUserId(String id) {
AutoTrackConfigManager.instance.updateUserId(id);
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(userId: id));
}
void updateSampleRate(double rate) {
AutoTrackConfigManager.instance.updateSampleRate(rate);
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(samplingRate: rate));
}
AutoTrack config(AutoTrackConfig? config) {
if (config != null) {
AutoTrackConfigManager.instance.updateConfig(config);
AutoTrackConfigManager.instance.setConfig(config);
}
return _instance;
}
AutoTrack pageConfigs(List<AutoTrackPageConfig>? pageConfigs) {
if (pageConfigs != null) {
AutoTrackConfigManager.instance.updatePageConfigs(pageConfigs);
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(pageConfigs: pageConfigs));
}
return _instance;
}
AutoTrack ignoreElementKeys(List<Key>? ignoreElementKeys) {
if (ignoreElementKeys != null) {
AutoTrackConfigManager.instance.updateIgnoreElementKeys(ignoreElementKeys);
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(ignoreElementKeys: ignoreElementKeys));
}
return _instance;
}
AutoTrack ignoreElementStringKeys(List<String>? ignoreElementStringKeys) {
if (ignoreElementStringKeys != null) {
AutoTrackConfigManager.instance.updateIgnoreElementStringKeys(ignoreElementStringKeys);
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(ignoreElementStringKeys: ignoreElementStringKeys));
}
return _instance;
}
AutoTrack enablePageView() {
AutoTrackConfigManager.instance.enablePageView(true);
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enablePageView: true));
return _instance;
}
AutoTrack disablePageView() {
AutoTrackConfigManager.instance.enablePageView(false);
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enablePageView: false));
return _instance;
}
AutoTrack enablePageLeave() {
AutoTrackConfigManager.instance.enablePageLeave(true);
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enablePageLeave: true));
return _instance;
}
AutoTrack disablePageLeave() {
AutoTrackConfigManager.instance.enablePageLeave(false);
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enablePageLeave: false));
return _instance;
}
AutoTrack enableIgnoreNullKey() {
AutoTrackConfigManager.instance.enableIgnoreNullKey(true);
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableIgnoreNullKey: true));
return _instance;
}
AutoTrack disableIgnoreNullKey() {
AutoTrackConfigManager.instance.enableIgnoreNullKey(false);
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableIgnoreNullKey: false));
return _instance;
}
AutoTrack enableUpload() {
AutoTrackConfigManager.instance.enableUpload(true);
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableUpload: true));
return _instance;
}
AutoTrack disableUpload() {
AutoTrackConfigManager.instance.enableUpload(false);
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableUpload: false));
return _instance;
}
AutoTrack enableClick() {
AutoTrackConfigManager.instance.enableClick(true);
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableClick: true));
return _instance;
}
AutoTrack enableDrag() {
AutoTrackConfigManager.instance.enableDrag(true);
AutoTrack disableClick() {
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableClick: false));
return _instance;
}
AutoTrack disableDrag() {
AutoTrackConfigManager.instance.enableDrag(true);
AutoTrack enableDrag() {
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableDrag: true));
return _instance;
}
AutoTrack disableClick() {
AutoTrackConfigManager.instance.enableClick(false);
AutoTrack disableDrag() {
AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableDrag: false));
return _instance;
}
... ... @@ -136,4 +139,14 @@ class AutoTrack {
}
return _instance;
}
AutoTrack enableHttpRequest() {
HttpOverrides.global = AutoTrackHttpOverrides(HttpOverrides.current);
return _instance;
}
AutoTrack disableHttpRequest() {
HttpOverrides.global = null;
return _instance;
}
}
\ No newline at end of file
... ...