|
1 | 1 | const REQUIRE_BASE = "."; |
2 | 2 |
|
| 3 | +const path = require("path"); |
| 4 | + |
| 5 | +const AIKARI_ROOT_DIR = path.join("C:\\ProgramData", "HugoAura", "Aikari"); |
| 6 | + |
3 | 7 | const { |
4 | 8 | updateAikariConfigToRemote, |
| 9 | + updateAikariTelemetryConfigToRemote, |
5 | 10 | } = require(`${REQUIRE_BASE}/../../../../composables/aikariConfigManager`); |
6 | 11 |
|
7 | 12 | const basicSettings = [ |
@@ -80,6 +85,133 @@ const basicSettings = [ |
80 | 85 | }, |
81 | 86 | ], |
82 | 87 | }, |
| 88 | + { |
| 89 | + id: 1, |
| 90 | + categoryName: "分析", |
| 91 | + child: [ |
| 92 | + { |
| 93 | + index: 0, |
| 94 | + id: "aikariTelemetryCtrl", |
| 95 | + type: "switch", |
| 96 | + name: "启用错误收集与分析", |
| 97 | + description: "启用后, Aikari 将在发生错误时上报自托管 Sentry", |
| 98 | + reactive: true, |
| 99 | + reactiveVal: ["root.settings"], |
| 100 | + restart: false, |
| 101 | + reload: false, |
| 102 | + aikariRequired: false, |
| 103 | + restartAikari: false, |
| 104 | + warning: true, |
| 105 | + warningContent: |
| 106 | + "我们不会收集您的设备用户名、管家内的学校名等信息, 也不会保存您的 IP 地址, 所有上传的数据仅供调试使用, 不会与任何第三方共享", |
| 107 | + associateVal: null, |
| 108 | + auraIf: () => true, |
| 109 | + defaultValue: false, |
| 110 | + valueGetter: () => { |
| 111 | + if ( |
| 112 | + !global.__HUGO_AURA__.aikariSettings || |
| 113 | + !global.__HUGO_AURA__.aikariStats.connected |
| 114 | + ) { |
| 115 | + const fs = require("fs"); |
| 116 | + return fs.existsSync( |
| 117 | + path.join(AIKARI_ROOT_DIR, ".telemetryEnabled") |
| 118 | + ); |
| 119 | + } else { |
| 120 | + return global.__HUGO_AURA__.aikariSettings.telemetryEnabled; |
| 121 | + } |
| 122 | + }, |
| 123 | + callbackFn: (newVal) => { |
| 124 | + if ( |
| 125 | + !global.__HUGO_AURA__.aikariSettings || |
| 126 | + !global.__HUGO_AURA__.aikariStats.connected |
| 127 | + ) { |
| 128 | + if (newVal) { |
| 129 | + const fs = require("fs"); |
| 130 | + fs.appendFile( |
| 131 | + path.join(AIKARI_ROOT_DIR, ".telemetryEnabled"), |
| 132 | + "", |
| 133 | + (err) => { |
| 134 | + if (err) console.warn(err); |
| 135 | + } |
| 136 | + ); |
| 137 | + return true; |
| 138 | + } else { |
| 139 | + const fs = require("fs"); |
| 140 | + try { |
| 141 | + fs.unlinkSync(path.join(AIKARI_ROOT_DIR, ".telemetryEnabled")); |
| 142 | + return true; |
| 143 | + } catch (err) { |
| 144 | + console.error("Error removing telemetry flag: ", err); |
| 145 | + } |
| 146 | + } |
| 147 | + } else { |
| 148 | + global.__HUGO_AURA__.aikariSettings.telemetryEnabled = newVal; |
| 149 | + updateAikariTelemetryConfigToRemote(newVal); |
| 150 | + return true; |
| 151 | + } |
| 152 | + }, |
| 153 | + }, |
| 154 | + { |
| 155 | + index: 1, |
| 156 | + id: "aikariTelemetryId", |
| 157 | + type: "button", |
| 158 | + style: "outline", |
| 159 | + name: "Aikari Telemetry ID", |
| 160 | + reactive: true, |
| 161 | + reactiveVal: ["telemetry"], |
| 162 | + restart: false, |
| 163 | + reload: false, |
| 164 | + aikariRequired: true, |
| 165 | + restartAikari: false, |
| 166 | + warning: true, |
| 167 | + warningContent: "此标识符完全在初始化时随机生成, 与设备特征无关", |
| 168 | + associateVal: ["telemetry"], |
| 169 | + auraIf: () => true, |
| 170 | + alwaysEnable: true, |
| 171 | + buttonContent: "复制", |
| 172 | + valueGetter: async () => { |
| 173 | + if (!global.__HUGO_AURA_UI_REACTIVES__.subConfig.behaviourCtrl) |
| 174 | + global.__HUGO_AURA_UI_REACTIVES__.subConfig.behaviourCtrl = {}; |
| 175 | + const getIdPromise = new Promise((resolve) => { |
| 176 | + setTimeout(() => { |
| 177 | + const fs = require("fs"); |
| 178 | + const telemetryIdPath = path.join( |
| 179 | + AIKARI_ROOT_DIR, |
| 180 | + ".telemetryId" |
| 181 | + ); |
| 182 | + if (fs.existsSync(telemetryIdPath)) { |
| 183 | + const fileContent = fs |
| 184 | + .readFileSync(telemetryIdPath, { encoding: "utf-8" }) |
| 185 | + .trim(); |
| 186 | + |
| 187 | + global.__HUGO_AURA_UI_REACTIVES__.subConfig.behaviourCtrl.telemetryId = |
| 188 | + fileContent; |
| 189 | + resolve("标识符: " + fileContent); |
| 190 | + } |
| 191 | + global.__HUGO_AURA_UI_REACTIVES__.subConfig.behaviourCtrl.telemetryId = |
| 192 | + null; |
| 193 | + resolve("未能获取标识符, Aikari 未安装或未初始化"); |
| 194 | + }, 1000); |
| 195 | + }); |
| 196 | + return await getIdPromise; |
| 197 | + }, |
| 198 | + callbackFn: async (event) => { |
| 199 | + if ( |
| 200 | + global.__HUGO_AURA_UI_REACTIVES__.subConfig.behaviourCtrl |
| 201 | + .telemetryId |
| 202 | + ) { |
| 203 | + await navigator.clipboard.writeText( |
| 204 | + global.__HUGO_AURA_UI_REACTIVES__.subConfig.behaviourCtrl |
| 205 | + .telemetryId |
| 206 | + ); |
| 207 | + event.target.textContent = "已复制"; |
| 208 | + } else { |
| 209 | + event.target.textContent = "复制失败"; |
| 210 | + } |
| 211 | + }, |
| 212 | + }, |
| 213 | + ], |
| 214 | + }, |
83 | 215 | ]; |
84 | 216 |
|
85 | 217 | module.exports = { basicSettings }; |
0 commit comments