globalMockDebugBridge.ts 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import { MockSimulatorDebugLogger, type MockSimulatorDebugLogLevel } from '../engine/debug/mockSimulatorDebugLogger'
  2. const DEBUG_MOCK_CHANNEL_ID_STORAGE_KEY = 'cmr.debug.mockChannelId.v1'
  3. const DEBUG_MOCK_AUTO_CONNECT_STORAGE_KEY = 'cmr.debug.autoConnectMockSources.v1'
  4. const DEBUG_MOCK_LOG_URL_STORAGE_KEY = 'cmr.debug.logBridgeUrl.v1'
  5. const DEFAULT_DEBUG_LOG_URL = 'wss://gs.gotomars.xyz/debug-log'
  6. let globalMockDebugLogger: MockSimulatorDebugLogger | null = null
  7. function ensureLogger(): MockSimulatorDebugLogger {
  8. if (!globalMockDebugLogger) {
  9. globalMockDebugLogger = new MockSimulatorDebugLogger()
  10. }
  11. return globalMockDebugLogger
  12. }
  13. export function loadStoredMockChannelIdForGlobalDebug(): string {
  14. try {
  15. const value = wx.getStorageSync(DEBUG_MOCK_CHANNEL_ID_STORAGE_KEY)
  16. if (typeof value === 'string' && value.trim().length > 0) {
  17. return value.trim()
  18. }
  19. } catch (_error) {
  20. // Ignore storage read failures and fall back to default.
  21. }
  22. return 'default'
  23. }
  24. export function loadMockAutoConnectEnabledForGlobalDebug(): boolean {
  25. try {
  26. return wx.getStorageSync(DEBUG_MOCK_AUTO_CONNECT_STORAGE_KEY) === true
  27. } catch (_error) {
  28. return false
  29. }
  30. }
  31. export function loadStoredMockDebugLogBridgeUrl(): string {
  32. try {
  33. const value = wx.getStorageSync(DEBUG_MOCK_LOG_URL_STORAGE_KEY)
  34. if (typeof value === 'string' && value.trim().length > 0) {
  35. return value.trim()
  36. }
  37. } catch (_error) {
  38. // Ignore storage read failures and fall back to default.
  39. }
  40. return DEFAULT_DEBUG_LOG_URL
  41. }
  42. export function persistStoredMockDebugLogBridgeUrl(url: string) {
  43. try {
  44. wx.setStorageSync(DEBUG_MOCK_LOG_URL_STORAGE_KEY, url)
  45. } catch (_error) {
  46. // Ignore storage write failures.
  47. }
  48. }
  49. export function syncGlobalMockDebugBridgeFromStorage(): void {
  50. const logger = ensureLogger()
  51. logger.setChannelId(loadStoredMockChannelIdForGlobalDebug())
  52. logger.setUrl(loadStoredMockDebugLogBridgeUrl())
  53. logger.setEnabled(loadMockAutoConnectEnabledForGlobalDebug())
  54. }
  55. export function setGlobalMockDebugBridgeChannelId(channelId: string): void {
  56. const logger = ensureLogger()
  57. logger.setChannelId(channelId)
  58. }
  59. export function setGlobalMockDebugBridgeEnabled(enabled: boolean): void {
  60. const logger = ensureLogger()
  61. logger.setEnabled(enabled)
  62. }
  63. export function setGlobalMockDebugBridgeUrl(url: string): void {
  64. const logger = ensureLogger()
  65. logger.setUrl(url)
  66. }
  67. export function emitGlobalMockDebugLog(
  68. scope: string,
  69. level: MockSimulatorDebugLogLevel,
  70. message: string,
  71. payload?: Record<string, unknown>,
  72. ): void {
  73. const logger = ensureLogger()
  74. logger.log(scope, level, message, payload)
  75. }