From f488718b51a5c1cb1d0d0d3cb158ab3a22d1a165 Mon Sep 17 00:00:00 2001 From: Mattermost Build Date: Mon, 24 Feb 2025 18:49:37 +0200 Subject: [PATCH] Add ios native logs (#8555) (#8631) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add ios native logs * Use correct version * Revert unneeded changes in package-lock (cherry picked from commit a1ccdcb0da5711801427972619d9a40dbac17f3a) Co-authored-by: Daniel Espino GarcĂ­a --- ios/Mattermost.xcodeproj/project.pbxproj | 52 +++++++++++++++++++ ios/Mattermost/AppDelegate.mm | 12 ++++- .../NotificationService.swift | 42 +++++++++------ ios/Podfile | 7 +++ ios/Podfile.lock | 32 ++++++++---- package-lock.json | 9 ++-- package.json | 2 +- 7 files changed, 123 insertions(+), 33 deletions(-) diff --git a/ios/Mattermost.xcodeproj/project.pbxproj b/ios/Mattermost.xcodeproj/project.pbxproj index a30cf08ea..183f9981a 100644 --- a/ios/Mattermost.xcodeproj/project.pbxproj +++ b/ios/Mattermost.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ 27C667A529523F0A00E590D5 /* Sentry in Frameworks */ = {isa = PBXBuildFile; productRef = 27C667A429523F0A00E590D5 /* Sentry */; }; 27C667A9295241B600E590D5 /* Sentry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27C667A8295241B600E590D5 /* Sentry.swift */; }; 27C667AA295241B600E590D5 /* Sentry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27C667A8295241B600E590D5 /* Sentry.swift */; }; + 413A0FD06EA0DB2B3F30403F /* libPods-NotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDDC97F55A1F6C056C6B1BC /* libPods-NotificationService.a */; }; 49AE370126D4455D00EF4E52 /* Gekidou in Frameworks */ = {isa = PBXBuildFile; productRef = 49AE370026D4455D00EF4E52 /* Gekidou */; }; 536CC6C323E79287002C478C /* RNNotificationEventHandler+HandleReplyAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 536CC6C123E79287002C478C /* RNNotificationEventHandler+HandleReplyAction.m */; }; 58495E36BF1A4EAB93609E57 /* Metropolis-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 54956DEFEBB74EF78C3A6AE5 /* Metropolis-SemiBold.ttf */; }; @@ -379,6 +380,8 @@ 83ABFD0F2C1C90D90029685B /* calls_cheerful.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = calls_cheerful.mp3; path = ../assets/sounds/calls_cheerful.mp3; sourceTree = ""; }; 83ABFD102C1C90D90029685B /* calls_calm.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = calls_calm.mp3; path = ../assets/sounds/calls_calm.mp3; sourceTree = ""; }; 83ABFD112C1C90D90029685B /* calls_urgent.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = calls_urgent.mp3; path = ../assets/sounds/calls_urgent.mp3; sourceTree = ""; }; + A10297DBBE728B2BF1BC045E /* Pods-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-NotificationService/Pods-NotificationService.debug.xcconfig"; sourceTree = ""; }; + AEDDC97F55A1F6C056C6B1BC /* libPods-NotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; }; BC977883E2624E05975CA65B /* OpenSans-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-Regular.ttf"; path = "../assets/fonts/OpenSans-Regular.ttf"; sourceTree = ""; }; BE17F630DB5D41FD93F32D22 /* OpenSans-LightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-LightItalic.ttf"; path = "../assets/fonts/OpenSans-LightItalic.ttf"; sourceTree = ""; }; C9A1070F2BBD7C8700753CDC /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; @@ -388,6 +391,7 @@ E5C16B14E1CE4868886A1A00 /* OpenSans-SemiBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-SemiBold.ttf"; path = "../assets/fonts/OpenSans-SemiBold.ttf"; sourceTree = ""; }; E7BEDFCF1660521CCB3EADEF /* Pods-Mattermost.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mattermost.release.xcconfig"; path = "Target Support Files/Pods-Mattermost/Pods-Mattermost.release.xcconfig"; sourceTree = ""; }; FBBEC29EE2D3418D9AC33BD5 /* OpenSans-ExtraBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-ExtraBoldItalic.ttf"; path = "../assets/fonts/OpenSans-ExtraBoldItalic.ttf"; sourceTree = ""; }; + FF7D3AE3E5E892576497A111 /* Pods-NotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationService.release.xcconfig"; path = "Target Support Files/Pods-NotificationService/Pods-NotificationService.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -406,6 +410,7 @@ files = ( 49AE370126D4455D00EF4E52 /* Gekidou in Frameworks */, 27C667A329523ECA00E590D5 /* Sentry in Frameworks */, + 413A0FD06EA0DB2B3F30403F /* libPods-NotificationService.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -527,6 +532,8 @@ children = ( 2E17B88EAD6181B9E9A24084 /* Pods-Mattermost.debug.xcconfig */, E7BEDFCF1660521CCB3EADEF /* Pods-Mattermost.release.xcconfig */, + A10297DBBE728B2BF1BC045E /* Pods-NotificationService.debug.xcconfig */, + FF7D3AE3E5E892576497A111 /* Pods-NotificationService.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -561,6 +568,7 @@ 7F43D6051F6BF9EB001FC614 /* libPods-Mattermost.a */, 81061F4CBB31484A94D5A8EE /* libz.tbd */, 7A83BBA09DE89A630126EA06 /* libPods-Mattermost.a */, + AEDDC97F55A1F6C056C6B1BC /* libPods-NotificationService.a */, ); name = Frameworks; sourceTree = ""; @@ -1080,9 +1088,11 @@ isa = PBXNativeTarget; buildConfigurationList = 7F581D82221ED5C60099E66B /* Build configuration list for PBXNativeTarget "NotificationService" */; buildPhases = ( + 656D4CFDAC0EC1C1E94D9329 /* [CP] Check Pods Manifest.lock */, 7F581D2E221ED5C60099E66B /* Sources */, 7F581D2F221ED5C60099E66B /* Frameworks */, 7F581D30221ED5C60099E66B /* Resources */, + FABCD84BD2A468FFB374B89C /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -1473,6 +1483,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Mattermost/Pods-Mattermost-resources.sh\"\n"; showEnvVarsInLog = 0; }; + 656D4CFDAC0EC1C1E94D9329 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-NotificationService-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; A40F47AC8A062DFCF1B2A23E /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1529,6 +1561,24 @@ shellPath = /bin/sh; shellScript = "./uploadDebugSymbols.sh\n"; }; + FABCD84BD2A468FFB374B89C /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-NotificationService/Pods-NotificationService-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjackPrivacy.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/CocoaLumberjackPrivacy.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NotificationService/Pods-NotificationService-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -2070,6 +2120,7 @@ }; 7F581D3A221ED5C60099E66B /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = A10297DBBE728B2BF1BC045E /* Pods-NotificationService.debug.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -2118,6 +2169,7 @@ }; 7F581D3B221ED5C60099E66B /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = FF7D3AE3E5E892576497A111 /* Pods-NotificationService.release.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; diff --git a/ios/Mattermost/AppDelegate.mm b/ios/Mattermost/AppDelegate.mm index 0af598c37..16aefed9f 100644 --- a/ios/Mattermost/AppDelegate.mm +++ b/ios/Mattermost/AppDelegate.mm @@ -7,6 +7,7 @@ #import #import #import +#import #import "Mattermost-Swift.h" #import @@ -28,6 +29,15 @@ NSString* const NOTIFICATION_TEST_ACTION = @"test"; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + NSString *appGroupId = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"AppGroupIdentifier"]; + NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:appGroupId]; + containerURL = [containerURL URLByAppendingPathComponent:@"Logs"]; + NSError *error = nil; + [TurboLog configureWithDailyRolling:FALSE maximumFileSize:1024*1024 maximumNumberOfFiles:2 logsDirectory:containerURL.path logsFilename:@"MMLogs" error:&error]; + if (error) { + NSLog(@"Failed to configure TurboLog: %@", error.localizedDescription); + } + [TurboLog writeWithLogLevel:TurboLogLevelInfo message:@[@"Configured turbolog"]]; OrientationManager.shared.delegate = self; // Clear keychain on first run in case of reinstallation @@ -35,7 +45,7 @@ NSString* const NOTIFICATION_TEST_ACTION = @"test"; RNKeychainManager *keychain = [[RNKeychainManager alloc] init]; NSArray *servers = [keychain getAllServersForInternetPasswords]; - NSLog(@"Servers %@", servers); + [TurboLog writeWithLogLevel:TurboLogLevelInfo message:@[@"Servers", servers]]; for (NSString *server in servers) { [keychain deleteCredentialsForServer:server withOptions:nil]; } diff --git a/ios/NotificationService/NotificationService.swift b/ios/NotificationService/NotificationService.swift index adb78e616..2ecedef18 100644 --- a/ios/NotificationService/NotificationService.swift +++ b/ios/NotificationService/NotificationService.swift @@ -2,6 +2,7 @@ import Gekidou import UserNotifications import Intents import os.log +import TurboLogIOSNative class NotificationService: UNNotificationServiceExtension { var contentHandler: ((UNNotificationContent) -> Void)? @@ -10,38 +11,47 @@ class NotificationService: UNNotificationServiceExtension { override init() { super.init() initSentryAppExt() + do { + let appGroupId = Bundle.main.object(forInfoDictionaryKey: "AppGroupIdentifier") as! String + let containerUrl = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroupId) + try TurboLogIOSNative.TurboLogger.configure(dailyRolling: false, maximumFileSize: 1024*1024, maximumNumberOfFiles: 2, logsDirectory: containerUrl!.appendingPathComponent("Logs").path, logsFilename: "MMLogs") + } catch { + os_log(OSLogType.default, "Failed to configure TurboLogger: %{public}@", String(describing: error)) + } } override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { self.contentHandler = contentHandler + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: received notification") bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent) if let bestAttemptContent = bestAttemptContent { PushNotification.default.postNotificationReceipt(bestAttemptContent, completionHandler: {[weak self] notification in if let notification = notification { self?.bestAttemptContent = notification if (!PushNotification.default.verifySignatureFromNotification(notification)) { + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: signature not verified. Will call sendInvalidNotificationIntent") self?.sendInvalidNotificationIntent() return } if (Gekidou.Preferences.default.object(forKey: "ApplicationIsRunning") as? String != "true") { PushNotification.default.fetchAndStoreDataForPushNotification(bestAttemptContent, withContentHandler: {notification in - os_log(OSLogType.default, "Mattermost Notifications: processed data for db. Will call sendMessageIntent") + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: processed data for db. Will call sendMessageIntent") self?.sendMessageIntent() }) } else { bestAttemptContent.badge = nil - os_log(OSLogType.default, "Mattermost Notifications: app in use, no data processed. Will call sendMessageIntent") + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: app in use, no data processed. Will call sendMessageIntent") self?.sendMessageIntent() } return } - os_log(OSLogType.default, "Mattermost Notifications: notification receipt seems to be empty, will call sendMessageIntent") + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: notification receipt seems to be empty, will call sendMessageIntent") self?.sendMessageIntent() }) } else { - os_log(OSLogType.default, "Mattermost Notifications: bestAttemptContent seems to be empty, will call sendMessageIntent") + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: bestAttemptContent seems to be empty, will call sendMessageIntent") sendMessageIntent() } } @@ -49,8 +59,8 @@ class NotificationService: UNNotificationServiceExtension { override func serviceExtensionTimeWillExpire() { // Called just before the extension will be terminated by the system. // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used. - os_log(OSLogType.default, "Mattermost Notifications: service extension time expired") - os_log(OSLogType.default, "Mattermost Notifications: calling sendMessageIntent before expiration") + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: service extension time expired") + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: calling sendMessageIntent before expiration") sendMessageIntent() } @@ -62,13 +72,13 @@ class NotificationService: UNNotificationServiceExtension { guard let serverUrl = notification.userInfo["server_url"] as? String else { - os_log(OSLogType.default, "Mattermost Notifications: No intent created. will call contentHandler to present notification") + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: No intent created. will call contentHandler to present notification") self.contentHandler?(notification) return } let overrideIconUrl = notification.userInfo["override_icon_url"] as? String - os_log(OSLogType.default, "Mattermost Notifications: Fetching profile Image in server %{public}@ for sender %{public}@", serverUrl, senderId ?? overrideUsername ?? "no sender is set") + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: Fetching profile Image in server", serverUrl, "for sender", senderId ?? overrideUsername ?? "no sender is set") if senderId != nil || overrideIconUrl != nil { PushNotification.default.fetchProfileImageSync(serverUrl, senderId: senderId ?? "", overrideIconUrl: overrideIconUrl) {[weak self] data in self?.sendMessageIntentCompletion(data) @@ -81,7 +91,7 @@ class NotificationService: UNNotificationServiceExtension { private func sendInvalidNotificationIntent() { guard let notification = bestAttemptContent else { return } - os_log(OSLogType.default, "Mattermost Notifications: creating invalid intent") + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: creating invalid intent") bestAttemptContent?.body = NSLocalizedString( "native.ios.notifications.not_verified", value: "We could not verify this notification with the server", @@ -103,15 +113,15 @@ class NotificationService: UNNotificationServiceExtension { interaction.donate { error in if error != nil { self.contentHandler?(notification) - os_log(OSLogType.default, "Mattermost Notifications: sendMessageIntent intent error %{public}@", error! as CVarArg) + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: sendMessageIntent intent error", error! as CVarArg) } do { let updatedContent = try notification.updating(from: intent) - os_log(OSLogType.default, "Mattermost Notifications: present updated notification") + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: present updated notification") self.contentHandler?(updatedContent) } catch { - os_log(OSLogType.default, "Mattermost Notifications: something failed updating the notification %{public}@", error as CVarArg) + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: something failed updating the notification", error as CVarArg) self.contentHandler?(notification) } } @@ -125,7 +135,7 @@ class NotificationService: UNNotificationServiceExtension { if #available(iOSApplicationExtension 15.0, *), let imgData = avatarData, let channelId = notification.userInfo["channel_id"] as? String { - os_log(OSLogType.default, "Mattermost Notifications: creating intent") + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: creating intent") let isCRTEnabled = notification.userInfo["is_crt_enabled"] as? Bool ?? false let rootId = notification.userInfo["root_id"] as? String ?? "" @@ -171,15 +181,15 @@ class NotificationService: UNNotificationServiceExtension { interaction.donate { error in if error != nil { self.contentHandler?(notification) - os_log(OSLogType.default, "Mattermost Notifications: sendMessageIntent intent error %{public}@", error! as CVarArg) + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: sendMessageIntent intent error", error! as CVarArg) } do { let updatedContent = try notification.updating(from: intent) - os_log(OSLogType.default, "Mattermost Notifications: present updated notification") + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: present updated notification") self.contentHandler?(updatedContent) } catch { - os_log(OSLogType.default, "Mattermost Notifications: something failed updating the notification %{public}@", error as CVarArg) + TurboLogIOSNative.TurboLogger.write(level: .info, message: "Mattermost Notifications: something failed updating the notification", error as CVarArg) self.contentHandler?(notification) } } diff --git a/ios/Podfile b/ios/Podfile index 520e24f47..b2c98c1d1 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -43,6 +43,8 @@ target 'Mattermost' do pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi', :modular_headers => true pod 'React-jsc', :path => '../node_modules/react-native/ReactCommon/jsc', :modular_headers => true pod 'simdjson', path: '../node_modules/@nozbe/simdjson', :modular_headers => true + pod 'CocoaLumberjack', :modular_headers => true + pod 'TurboLogIOSNative', :git => 'https://github.com/larkox/react-native-turbo-log-ios-native.git', :modular_headers => true post_install do |installer| # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 @@ -59,3 +61,8 @@ target 'Mattermost' do # end end end + +target 'NotificationService' do + pod 'TurboLogIOSNative', :git => 'https://github.com/larkox/react-native-turbo-log-ios-native.git', :modular_headers => true +end + diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 68724ed52..d4ccb7c0e 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -7,7 +7,7 @@ PODS: - DoubleConversion (1.1.6) - EXApplication (6.0.1): - ExpoModulesCore - - EXConstants (17.0.3): + - EXConstants (17.0.5): - ExpoModulesCore - Expo (52.0.19): - ExpoModulesCore @@ -15,7 +15,7 @@ PODS: - ExpoModulesCore - ExpoDevice (7.0.1): - ExpoModulesCore - - ExpoFileSystem (18.0.6): + - ExpoFileSystem (18.0.7): - ExpoModulesCore - ExpoImage (2.0.4): - ExpoModulesCore @@ -59,7 +59,7 @@ PODS: - hermes-engine/Pre-built (= 0.76.5) - hermes-engine/Pre-built (0.76.5) - HMSegmentedControl (1.5.6) - - JitsiWebRTC (124.0.1) + - JitsiWebRTC (124.0.2) - mattermost-hardware-keyboard (0.0.0): - DoubleConversion - glog @@ -81,8 +81,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - mattermost-react-native-turbo-log (0.5.0): - - CocoaLumberjack (~> 3.8.5) + - mattermost-react-native-turbo-log (0.6.0): - DoubleConversion - glog - hermes-engine @@ -102,6 +101,7 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - TurboLogIOSNative - Yoga - mattermost-rnutils (0.0.0): - DoubleConversion @@ -2094,6 +2094,8 @@ PODS: - SocketRocket (0.7.1) - Starscream (4.0.8) - SwiftyJSON (5.0.2) + - TurboLogIOSNative (0.1.0): + - CocoaLumberjack (~> 3.8.5) - WatermelonDB (0.28.0-1): - React - simdjson @@ -2101,6 +2103,7 @@ PODS: DEPENDENCIES: - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) + - CocoaLumberjack - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - EXApplication (from `../node_modules/expo-application/ios`) - EXConstants (from `../node_modules/expo-constants/ios`) @@ -2212,6 +2215,7 @@ DEPENDENCIES: - RNSVG (from `../node_modules/react-native-svg`) - RNVectorIcons (from `../node_modules/react-native-vector-icons`) - "simdjson (from `../node_modules/@nozbe/simdjson`)" + - TurboLogIOSNative (from `https://github.com/larkox/react-native-turbo-log-ios-native.git`) - "WatermelonDB (from `../node_modules/@nozbe/watermelondb`)" - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) @@ -2450,22 +2454,29 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-vector-icons" simdjson: :path: "../node_modules/@nozbe/simdjson" + TurboLogIOSNative: + :git: https://github.com/larkox/react-native-turbo-log-ios-native.git WatermelonDB: :path: "../node_modules/@nozbe/watermelondb" Yoga: :path: "../node_modules/react-native/ReactCommon/yoga" +CHECKOUT OPTIONS: + TurboLogIOSNative: + :commit: 44fa9abe32a74ce6206d6237c639e6382495d210 + :git: https://github.com/larkox/react-native-turbo-log-ios-native.git + SPEC CHECKSUMS: Alamofire: 7193b3b92c74a07f85569e1a6c4f4237291e7496 boost: 1dca942403ed9342f98334bf4c3621f011aa7946 CocoaLumberjack: 6a459bc897d6d80bd1b8c78482ec7ad05dffc3f0 DoubleConversion: f16ae600a246532c4020132d54af21d0ddb2a385 EXApplication: 88ebf1a95f85faa5d2df160016d61f2d060e9438 - EXConstants: 277129d9a42ba2cf1fad375e7eaa9939005c60be + EXConstants: e25c3f3ef5d1cf7a6ef911ebf7a3ab94d8d06d82 Expo: 848501c300b37b3fa7330c58a5353e07e03d5c3d ExpoCrypto: 483fc758365923f89ddaab4327c21cae9534841d ExpoDevice: 449822f2c45660c1ce83283dd51c67fe5404996c - ExpoFileSystem: a38e1bb58d77f41717293a7b73ebd4014d8cb8dd + ExpoFileSystem: 818e82dbb71175414d1ca310e926c48ff0d07348 ExpoImage: 18ec1a3e5cd96ee6162d988be3085e18113e143f ExpoLinearGradient: 18148bd38f98fa0229c1f9df23393b32ab6d2d32 ExpoModulesCore: c9cb309323aee3c048099bb40ad0226e3fcf0c56 @@ -2477,9 +2488,9 @@ SPEC CHECKSUMS: glog: 08b301085f15bcbb6ff8632a8ebaf239aae04e6a hermes-engine: 06a9c6900587420b90accc394199527c64259db4 HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352 - JitsiWebRTC: d0ae5fd6a81e771bfd82c2ee6c6bb542ebd65ee8 + JitsiWebRTC: b47805ab5668be38e7ee60e2258f49badfe8e1d0 mattermost-hardware-keyboard: 510850877516c61f71f06c95377b96263af1b80d - mattermost-react-native-turbo-log: 4eff5879e0d263f8146666a6124d66f8e8fcc0ae + mattermost-react-native-turbo-log: 9e2c4f2e2b278a1541e5c2eb99ed9cd2af601fe2 mattermost-rnutils: 88291c01fc351a93c553b6a3bce44b17f8d38233 RCT-Folly: 84578c8756030547307e4572ab1947de1685c599 RCTDeprecation: fb7d408617e25d7f537940000d766d60149c5fea @@ -2576,9 +2587,10 @@ SPEC CHECKSUMS: SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Starscream: 19b5533ddb925208db698f0ac508a100b884a1b9 SwiftyJSON: f5b1bf1cd8dd53cd25887ac0eabcfd92301c6a5a + TurboLogIOSNative: 45f6d20ba17ee39f8106e718e93baf43b2d76b7b WatermelonDB: 438a8dd16910dfe622095c44b5d1dbe11cbba6ba Yoga: fcc198acd4a55599b3468cfb6ebc526baff5f06e -PODFILE CHECKSUM: f61c6130110ff18ebe025edfebd33129a0601fec +PODFILE CHECKSUM: 0e437947a8e6696940c2efdfd7205ab54d67b7b8 COCOAPODS: 1.16.1 diff --git a/package-lock.json b/package-lock.json index befe0c422..1b1a9f579 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "@mattermost/react-native-emm": "1.5.1", "@mattermost/react-native-network-client": "1.8.2", "@mattermost/react-native-paste-input": "0.8.1", - "@mattermost/react-native-turbo-log": "0.5.0", + "@mattermost/react-native-turbo-log": "0.6.0", "@mattermost/rnshare": "file:./libraries/@mattermost/rnshare", "@mattermost/rnutils": "file:./libraries/@mattermost/rnutils", "@msgpack/msgpack": "2.8.0", @@ -4658,10 +4658,9 @@ } }, "node_modules/@mattermost/react-native-turbo-log": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@mattermost/react-native-turbo-log/-/react-native-turbo-log-0.5.0.tgz", - "integrity": "sha512-8X7GbEKr7QDdSTckpxGGogQ2+IDJ8xcUOmLylo1NhmvCPvdqAsBvVLNZngx0zjoLl28IP3H24bR9fpXGsnGiag==", - "license": "MIT", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@mattermost/react-native-turbo-log/-/react-native-turbo-log-0.6.0.tgz", + "integrity": "sha512-yV0GWLXivvGwEjhMKR0meMsP5VWA7Br/fz70UC4/IZd9gPmBvfNpznMHzddwekvhYZ6Hqg0jbqK1SNitkvJwFg==", "peerDependencies": { "react": "*", "react-native": "*" diff --git a/package.json b/package.json index 405710db3..7c018d88d 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "@mattermost/react-native-emm": "1.5.1", "@mattermost/react-native-network-client": "1.8.2", "@mattermost/react-native-paste-input": "0.8.1", - "@mattermost/react-native-turbo-log": "0.5.0", + "@mattermost/react-native-turbo-log": "0.6.0", "@mattermost/rnshare": "file:./libraries/@mattermost/rnshare", "@mattermost/rnutils": "file:./libraries/@mattermost/rnutils", "@msgpack/msgpack": "2.8.0",