mirror of
https://github.com/selfxyz/self.git
synced 2026-02-19 02:24:25 -05:00
* Update dependency versions * Fix gesture handler Android dependency (#1611) * Patch screens codegen type (#1609) * Downgrade Sentry React Native (#1612) * fix patches and packages * downgrade versions for gesture handler and screens * agent feedback * fix ios building * allow ios tets to pass * formatting * make cache more resilient * Address CodeRabbitAI review comments This commit addresses all 7 unresolved CodeRabbitAI comments on PR #1606: Patch-package error handling (comments #1, #2, #3): - stderr capture already implemented in both root and workspace patch runs - Add CI warning when patches fail silently instead of exiting with 0 - Log completion status in CI mode for visibility Critical Mixpanel dependency fix (comment #5): - Add explicit Mixpanel-swift pod declaration to fix E2E build failures - Ensures Mixpanel is available even when NFCPassportReader is skipped during E2E testing React-native-web validation (comment #4): - Verified no usage of deprecated findNodeHandle, pointerEvents: 'box-none', or createPortal - Safe to upgrade from 0.19 to 0.21.2 CI workflow improvements (comments #6, #7): - Create cache-sdk-build composite action for consistent SDK build artifact caching - Replace all direct actions/cache@v4 usage with cache-yarn composite action - Replace all direct actions/cache/restore@v4 and save@v4 with cache-sdk-build - Add nested require() validation step before tests to fail fast on problematic patterns All changes follow repository coding guidelines for CI caching and test memory optimization. * Extend cache composite actions to all SDK workflows This commit extends the caching standardization from PR #1606 to include mobile-sdk-ci.yml and core-sdk-ci.yml workflows. New composite actions created: - cache-mobile-sdk-build: For mobile SDK build artifacts - cache-core-sdk-build: For core SDK build artifacts Workflow updates: - mobile-sdk-ci.yml: Replaced 5 instances of direct actions/cache with cache-mobile-sdk-build - core-sdk-ci.yml: Replaced 4 instances of direct actions/cache with cache-core-sdk-build All SDK CI workflows now use consistent caching patterns via composite actions, following the AGENTS.md guideline: "Use shared composite actions from .github/actions for CI caching instead of calling actions/cache directly." Benefits: - Consistent caching across all SDK workflows (qrcode, mobile, core) - Centralized cache configuration - easier to maintain - Follows established patterns from qrcode-sdk-ci.yml * downgrade react-native-svg * update pod lock file * sort
82 lines
3.0 KiB
Swift
82 lines
3.0 KiB
Swift
// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11
|
|
|
|
import Foundation
|
|
|
|
#if !E2E_TESTING
|
|
import Mixpanel
|
|
import NFCPassportReader
|
|
|
|
public class SelfAnalytics: Analytics {
|
|
private let enableDebugLogs: Bool
|
|
|
|
public override init(token: String, enableDebugLogs: Bool = false, trackAutomaticEvents: Bool = false) {
|
|
self.enableDebugLogs = enableDebugLogs
|
|
super.init(token: token, enableDebugLogs: enableDebugLogs, trackAutomaticEvents: trackAutomaticEvents)
|
|
}
|
|
|
|
public override func trackEvent(_ name: String, properties: Properties? = nil) {
|
|
super.trackEvent(name, properties: properties)
|
|
|
|
print("[NFC Analytics] Event: \(name), Properties: \(properties ?? [:])")
|
|
|
|
if let logger = NativeLoggerBridge.shared {
|
|
logger.sendEvent(withName: "logEvent", body: [
|
|
"level": "info",
|
|
"category": "NFC",
|
|
"message": "Analytics Event: \(name)",
|
|
"data": properties ?? [:]
|
|
])
|
|
}
|
|
}
|
|
|
|
public override func trackDebugEvent(_ name: String, properties: Properties? = nil) {
|
|
super.trackDebugEvent(name, properties: properties)
|
|
|
|
if enableDebugLogs {
|
|
print("[NFC Analytics Debug] Event: \(name), Properties: \(properties ?? [:])")
|
|
|
|
if let logger = NativeLoggerBridge.shared {
|
|
logger.sendEvent(withName: "logEvent", body: [
|
|
"level": "debug",
|
|
"category": "NFC",
|
|
"message": "Analytics Debug Event: \(name)",
|
|
"data": properties ?? [:]
|
|
])
|
|
}
|
|
}
|
|
}
|
|
|
|
public override func trackError(_ error: Error, context: String) {
|
|
super.trackError(error, context: context)
|
|
|
|
print("[NFC Analytics Error] Context: \(context), Error: \(error.localizedDescription)")
|
|
|
|
if let logger = NativeLoggerBridge.shared {
|
|
logger.sendEvent(withName: "logEvent", body: [
|
|
"level": "error",
|
|
"category": "NFC",
|
|
"message": "Analytics Error: \(error.localizedDescription)",
|
|
"data": [
|
|
"error_type": String(describing: type(of: error)),
|
|
"error_description": error.localizedDescription,
|
|
"context": context
|
|
]
|
|
])
|
|
}
|
|
}
|
|
|
|
public func flush() {
|
|
Mixpanel.mainInstance().flush()
|
|
}
|
|
}
|
|
#else
|
|
// E2E Testing stub - SelfAnalytics is not used when NFCPassportReader is excluded
|
|
public class SelfAnalytics {
|
|
public init(token: String, enableDebugLogs: Bool = false, trackAutomaticEvents: Bool = false) {}
|
|
public func trackEvent(_ name: String, properties: [String: Any]? = nil) {}
|
|
public func trackDebugEvent(_ name: String, properties: [String: Any]? = nil) {}
|
|
public func trackError(_ error: Error, context: String) {}
|
|
public func flush() {}
|
|
}
|
|
#endif
|