Add ios native logs (#8555)

* Add ios native logs

* Use correct version

* Revert unneeded changes in package-lock
This commit is contained in:
Daniel Espino García 2025-02-24 11:50:39 +01:00 committed by GitHub
parent 99fa0598c1
commit a1ccdcb0da
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 123 additions and 33 deletions

View file

@ -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 = "<group>"; };
83ABFD102C1C90D90029685B /* calls_calm.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = calls_calm.mp3; path = ../assets/sounds/calls_calm.mp3; sourceTree = "<group>"; };
83ABFD112C1C90D90029685B /* calls_urgent.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = calls_urgent.mp3; path = ../assets/sounds/calls_urgent.mp3; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
C9A1070F2BBD7C8700753CDC /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
@ -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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
/* 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 = "<group>";
@ -561,6 +568,7 @@
7F43D6051F6BF9EB001FC614 /* libPods-Mattermost.a */,
81061F4CBB31484A94D5A8EE /* libz.tbd */,
7A83BBA09DE89A630126EA06 /* libPods-Mattermost.a */,
AEDDC97F55A1F6C056C6B1BC /* libPods-NotificationService.a */,
);
name = Frameworks;
sourceTree = "<group>";
@ -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;

View file

@ -7,6 +7,7 @@
#import <RNKeychain/RNKeychainManager.h>
#import <ReactNativeNavigation/ReactNativeNavigation.h>
#import <UserNotifications/UserNotifications.h>
#import <TurboLogIOSNative/TurboLog.h>
#import "Mattermost-Swift.h"
#import <os/log.h>
@ -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<NSString*> *servers = [keychain getAllServersForInternetPasswords];
NSLog(@"Servers %@", servers);
[TurboLog writeWithLogLevel:TurboLogLevelInfo message:@[@"Servers", servers]];
for (NSString *server in servers) {
[keychain deleteCredentialsForServer:server withOptions:nil];
}

View file

@ -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)
}
}

View file

@ -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

View file

@ -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

9
package-lock.json generated
View file

@ -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": "*"

View file

@ -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",