// // GekidouWrapper.swift // Mattermost // // Created by Elias Nahum on 06-04-22. // Copyright © 2022 Facebook. All rights reserved. // import Foundation import Gekidou import react_native_emm import TurboLogIOSNative @objc class GekidouWrapper: NSObject { @objc public static let `default` = GekidouWrapper() override init() { ScreenCaptureManager.startTrackingScreens() } @objc func configureTurboLogForGekidou() { GekidouLogger.shared.setLogHandler { level, message in let turboLevel: TurboLogIOSNative.TurboLogLevel switch level { case .debug: turboLevel = .debug case .info: turboLevel = .info case .warning: turboLevel = .warning case .error: turboLevel = .error } TurboLogIOSNative.TurboLogger.write(level: turboLevel, message: message) } } @objc func postNotificationReceipt(_ userInfo: [AnyHashable:Any]) { PushNotification.default.postNotificationReceipt(userInfo) } @objc func fetchDataForPushNotification(_ notification: [AnyHashable:Any], withContentHandler contentHander: @escaping ((_ data: Data?) -> Void)) { PushNotification.default.fetchDataForPushNotification(notification, withContentHandler: { data in let jsonData = try? JSONEncoder().encode(data) contentHander(jsonData) }) } @objc func verifySignature(_ notification: [AnyHashable:Any]) -> Bool { return PushNotification.default.verifySignature(notification) } @objc func attachSession(_ id: String, completionHandler: @escaping () -> Void) { let shareExtension = ShareExtension() shareExtension.attachSession( id: id, completionHandler: completionHandler ) } @objc func setPreference(_ value: Any?, forKey name: String) { Preferences.default.set(value, forKey: name) } @objc func getToken(for url: String) -> String? { if let credentials = try? Keychain.default.getCredentials(for: url) { return credentials.token } return nil } }