refactor(AutoTrack): 更新配置管理方式并添加HTTP请求监听
此次重构将各个配置更新方法统一为通过 `AutoTrackConfig` 对象进行更新,并增加了对 HTTP 请求的监听功能。
Showing
3 changed files
with
66 additions
and
73 deletions
@@ -123,6 +123,31 @@ class AutoTrackConfig { | @@ -123,6 +123,31 @@ class AutoTrackConfig { | ||
123 | enableIgnoreNullKey: enableIgnoreNullKey ?? this.enableIgnoreNullKey, | 123 | enableIgnoreNullKey: enableIgnoreNullKey ?? this.enableIgnoreNullKey, |
124 | ); | 124 | ); |
125 | } | 125 | } |
126 | + | ||
127 | + merge(AutoTrackConfig config) { | ||
128 | + return copyWith( | ||
129 | + host: config.host, | ||
130 | + appKey: config.appKey, | ||
131 | + appSecret: config.appSecret, | ||
132 | + trackId: config.trackId, | ||
133 | + userId: config.userId, | ||
134 | + uniqueId: config.uniqueId, | ||
135 | + samplingRate: config.samplingRate, | ||
136 | + uploadInterval: config.uploadInterval, | ||
137 | + signature: config.signature, | ||
138 | + eventHandler: config.eventHandler, | ||
139 | + pageConfigs: config.pageConfigs, | ||
140 | + useCustomRoute: config.useCustomRoute, | ||
141 | + ignoreElementKeys: config.ignoreElementKeys, | ||
142 | + ignoreElementStringKeys: config.ignoreElementStringKeys, | ||
143 | + enablePageView: config.enablePageView, | ||
144 | + enablePageLeave: config.enablePageLeave, | ||
145 | + enableClick: config.enableClick, | ||
146 | + enableUpload: config.enableUpload, | ||
147 | + enableDrag: config.enableDrag, | ||
148 | + enableIgnoreNullKey: config.enableIgnoreNullKey, | ||
149 | + ); | ||
150 | + } | ||
126 | } | 151 | } |
127 | 152 | ||
128 | typedef PageWidgetFunc = bool Function(Widget); | 153 | typedef PageWidgetFunc = bool Function(Widget); |
@@ -36,9 +36,13 @@ class AutoTrackConfigManager { | @@ -36,9 +36,13 @@ class AutoTrackConfigManager { | ||
36 | bool _autoTrackEnable = false; | 36 | bool _autoTrackEnable = false; |
37 | bool get autoTrackEnable => _autoTrackEnable; | 37 | bool get autoTrackEnable => _autoTrackEnable; |
38 | 38 | ||
39 | - void updateConfig(AutoTrackConfig config) { | ||
40 | - _config = config; | 39 | + void setConfig(AutoTrackConfig config) { |
40 | + updateConfig(config); | ||
41 | _updateDeviceId(); | 41 | _updateDeviceId(); |
42 | + } | ||
43 | + | ||
44 | + void updateConfig(AutoTrackConfig config) { | ||
45 | + _config = _config.merge(config); | ||
42 | if (config.enableUpload) { | 46 | if (config.enableUpload) { |
43 | AutoTrackQueue.instance.start(); | 47 | AutoTrackQueue.instance.start(); |
44 | } else { | 48 | } else { |
@@ -58,59 +62,10 @@ class AutoTrackConfigManager { | @@ -58,59 +62,10 @@ class AutoTrackConfigManager { | ||
58 | } | 62 | } |
59 | } | 63 | } |
60 | 64 | ||
61 | - void updateUserId(String userId) { | ||
62 | - _config.userId = userId; | ||
63 | - } | ||
64 | - | ||
65 | - void updateSampleRate(double rate) { | ||
66 | - _config.samplingRate = rate; | ||
67 | - } | ||
68 | - | ||
69 | - void updatePageConfigs(List<AutoTrackPageConfig> pageConfigs) { | ||
70 | - _config.pageConfigs = pageConfigs; | ||
71 | - } | ||
72 | - | ||
73 | - void updateIgnoreElementKeys(List<Key> ignoreElementKeys) { | ||
74 | - _config.ignoreElementKeys = ignoreElementKeys; | ||
75 | - } | ||
76 | - | ||
77 | - void updateIgnoreElementStringKeys(List<String> ignoreElementStringKeys) { | ||
78 | - _config.ignoreElementStringKeys = ignoreElementStringKeys; | ||
79 | - } | ||
80 | - | ||
81 | - void enablePageView(bool enable) { | ||
82 | - _config.enablePageView = enable; | ||
83 | - } | ||
84 | - | ||
85 | - void enablePageLeave(bool enable) { | ||
86 | - _config.enablePageLeave = enable; | ||
87 | - } | ||
88 | - | ||
89 | - void enableClick(bool enable) { | ||
90 | - _config.enableClick = enable; | ||
91 | - } | ||
92 | - | ||
93 | - void enableDrag(bool enable) { | ||
94 | - _config.enableDrag = enable; | ||
95 | - } | ||
96 | - | ||
97 | void enableAutoTrack(bool enable) { | 65 | void enableAutoTrack(bool enable) { |
98 | _autoTrackEnable = enable; | 66 | _autoTrackEnable = enable; |
99 | } | 67 | } |
100 | 68 | ||
101 | - void enableUpload(bool enable) { | ||
102 | - _config.enableUpload = enable; | ||
103 | - if (enable) { | ||
104 | - AutoTrackQueue.instance.start(); | ||
105 | - } else { | ||
106 | - AutoTrackQueue.instance.stop(); | ||
107 | - } | ||
108 | - } | ||
109 | - | ||
110 | - void enableIgnoreNullKey(bool enable) { | ||
111 | - _config.enableIgnoreNullKey = enable; | ||
112 | - } | ||
113 | - | ||
114 | List<AutoTrackPageConfig> get pageConfigs => _config.pageConfigs; | 69 | List<AutoTrackPageConfig> get pageConfigs => _config.pageConfigs; |
115 | 70 | ||
116 | bool get useCustomRoute => _config.useCustomRoute; | 71 | bool get useCustomRoute => _config.useCustomRoute; |
1 | +import 'dart:io'; | ||
2 | + | ||
1 | import 'package:flutter/foundation.dart'; | 3 | import 'package:flutter/foundation.dart'; |
2 | 4 | ||
3 | -import 'listener/click/pointer_event_listener.dart'; | ||
4 | import 'config/config.dart'; | 5 | import 'config/config.dart'; |
5 | import 'config/manager.dart'; | 6 | import 'config/manager.dart'; |
7 | +import 'listener/click/pointer_event_listener.dart'; | ||
6 | import 'listener/drag/drag_pointer_event_listener.dart'; | 8 | import 'listener/drag/drag_pointer_event_listener.dart'; |
9 | +import 'listener/request/request_listener.dart'; | ||
7 | import 'log/logger.dart'; | 10 | import 'log/logger.dart'; |
8 | 11 | ||
9 | class AutoTrack { | 12 | class AutoTrack { |
@@ -16,98 +19,98 @@ class AutoTrack { | @@ -16,98 +19,98 @@ class AutoTrack { | ||
16 | } | 19 | } |
17 | 20 | ||
18 | void updateUserId(String id) { | 21 | void updateUserId(String id) { |
19 | - AutoTrackConfigManager.instance.updateUserId(id); | 22 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(userId: id)); |
20 | } | 23 | } |
21 | 24 | ||
22 | void updateSampleRate(double rate) { | 25 | void updateSampleRate(double rate) { |
23 | - AutoTrackConfigManager.instance.updateSampleRate(rate); | 26 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(samplingRate: rate)); |
24 | } | 27 | } |
25 | 28 | ||
26 | AutoTrack config(AutoTrackConfig? config) { | 29 | AutoTrack config(AutoTrackConfig? config) { |
27 | if (config != null) { | 30 | if (config != null) { |
28 | - AutoTrackConfigManager.instance.updateConfig(config); | 31 | + AutoTrackConfigManager.instance.setConfig(config); |
29 | } | 32 | } |
30 | return _instance; | 33 | return _instance; |
31 | } | 34 | } |
32 | 35 | ||
33 | AutoTrack pageConfigs(List<AutoTrackPageConfig>? pageConfigs) { | 36 | AutoTrack pageConfigs(List<AutoTrackPageConfig>? pageConfigs) { |
34 | if (pageConfigs != null) { | 37 | if (pageConfigs != null) { |
35 | - AutoTrackConfigManager.instance.updatePageConfigs(pageConfigs); | 38 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(pageConfigs: pageConfigs)); |
36 | } | 39 | } |
37 | return _instance; | 40 | return _instance; |
38 | } | 41 | } |
39 | 42 | ||
40 | AutoTrack ignoreElementKeys(List<Key>? ignoreElementKeys) { | 43 | AutoTrack ignoreElementKeys(List<Key>? ignoreElementKeys) { |
41 | if (ignoreElementKeys != null) { | 44 | if (ignoreElementKeys != null) { |
42 | - AutoTrackConfigManager.instance.updateIgnoreElementKeys(ignoreElementKeys); | 45 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(ignoreElementKeys: ignoreElementKeys)); |
43 | } | 46 | } |
44 | return _instance; | 47 | return _instance; |
45 | } | 48 | } |
46 | 49 | ||
47 | AutoTrack ignoreElementStringKeys(List<String>? ignoreElementStringKeys) { | 50 | AutoTrack ignoreElementStringKeys(List<String>? ignoreElementStringKeys) { |
48 | if (ignoreElementStringKeys != null) { | 51 | if (ignoreElementStringKeys != null) { |
49 | - AutoTrackConfigManager.instance.updateIgnoreElementStringKeys(ignoreElementStringKeys); | 52 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(ignoreElementStringKeys: ignoreElementStringKeys)); |
50 | } | 53 | } |
51 | return _instance; | 54 | return _instance; |
52 | } | 55 | } |
53 | 56 | ||
54 | AutoTrack enablePageView() { | 57 | AutoTrack enablePageView() { |
55 | - AutoTrackConfigManager.instance.enablePageView(true); | 58 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enablePageView: true)); |
56 | return _instance; | 59 | return _instance; |
57 | } | 60 | } |
58 | 61 | ||
59 | AutoTrack disablePageView() { | 62 | AutoTrack disablePageView() { |
60 | - AutoTrackConfigManager.instance.enablePageView(false); | 63 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enablePageView: false)); |
61 | return _instance; | 64 | return _instance; |
62 | } | 65 | } |
63 | 66 | ||
64 | AutoTrack enablePageLeave() { | 67 | AutoTrack enablePageLeave() { |
65 | - AutoTrackConfigManager.instance.enablePageLeave(true); | 68 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enablePageLeave: true)); |
66 | return _instance; | 69 | return _instance; |
67 | } | 70 | } |
68 | 71 | ||
69 | AutoTrack disablePageLeave() { | 72 | AutoTrack disablePageLeave() { |
70 | - AutoTrackConfigManager.instance.enablePageLeave(false); | 73 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enablePageLeave: false)); |
71 | return _instance; | 74 | return _instance; |
72 | } | 75 | } |
73 | 76 | ||
74 | AutoTrack enableIgnoreNullKey() { | 77 | AutoTrack enableIgnoreNullKey() { |
75 | - AutoTrackConfigManager.instance.enableIgnoreNullKey(true); | 78 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableIgnoreNullKey: true)); |
76 | return _instance; | 79 | return _instance; |
77 | } | 80 | } |
78 | 81 | ||
79 | AutoTrack disableIgnoreNullKey() { | 82 | AutoTrack disableIgnoreNullKey() { |
80 | - AutoTrackConfigManager.instance.enableIgnoreNullKey(false); | 83 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableIgnoreNullKey: false)); |
81 | return _instance; | 84 | return _instance; |
82 | } | 85 | } |
83 | 86 | ||
84 | AutoTrack enableUpload() { | 87 | AutoTrack enableUpload() { |
85 | - AutoTrackConfigManager.instance.enableUpload(true); | 88 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableUpload: true)); |
86 | return _instance; | 89 | return _instance; |
87 | } | 90 | } |
88 | 91 | ||
89 | AutoTrack disableUpload() { | 92 | AutoTrack disableUpload() { |
90 | - AutoTrackConfigManager.instance.enableUpload(false); | 93 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableUpload: false)); |
91 | return _instance; | 94 | return _instance; |
92 | } | 95 | } |
93 | 96 | ||
94 | AutoTrack enableClick() { | 97 | AutoTrack enableClick() { |
95 | - AutoTrackConfigManager.instance.enableClick(true); | 98 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableClick: true)); |
96 | return _instance; | 99 | return _instance; |
97 | } | 100 | } |
98 | 101 | ||
99 | - AutoTrack enableDrag() { | ||
100 | - AutoTrackConfigManager.instance.enableDrag(true); | 102 | + AutoTrack disableClick() { |
103 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableClick: false)); | ||
101 | return _instance; | 104 | return _instance; |
102 | } | 105 | } |
103 | 106 | ||
104 | - AutoTrack disableDrag() { | ||
105 | - AutoTrackConfigManager.instance.enableDrag(true); | 107 | + AutoTrack enableDrag() { |
108 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableDrag: true)); | ||
106 | return _instance; | 109 | return _instance; |
107 | } | 110 | } |
108 | 111 | ||
109 | - AutoTrack disableClick() { | ||
110 | - AutoTrackConfigManager.instance.enableClick(false); | 112 | + AutoTrack disableDrag() { |
113 | + AutoTrackConfigManager.instance.updateConfig(AutoTrackConfig(enableDrag: false)); | ||
111 | return _instance; | 114 | return _instance; |
112 | } | 115 | } |
113 | 116 | ||
@@ -136,4 +139,14 @@ class AutoTrack { | @@ -136,4 +139,14 @@ class AutoTrack { | ||
136 | } | 139 | } |
137 | return _instance; | 140 | return _instance; |
138 | } | 141 | } |
142 | + | ||
143 | + AutoTrack enableHttpRequest() { | ||
144 | + HttpOverrides.global = AutoTrackHttpOverrides(HttpOverrides.current); | ||
145 | + return _instance; | ||
146 | + } | ||
147 | + | ||
148 | + AutoTrack disableHttpRequest() { | ||
149 | + HttpOverrides.global = null; | ||
150 | + return _instance; | ||
151 | + } | ||
139 | } | 152 | } |
-
Please register or login to post a comment