mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
feat: Forward ElementCall logs to the native logs
This commit is contained in:
@@ -60,6 +60,8 @@ enum CallScreenJavaScriptMessageName: String, CaseIterable {
|
||||
case onOutputDeviceSelect
|
||||
/// Used to handle the webview back button
|
||||
case onBackButtonPressed
|
||||
/// Forward logs to the native side for debugging purposes.
|
||||
case forwardLogs
|
||||
|
||||
private var postMessageScript: String {
|
||||
switch self {
|
||||
@@ -97,6 +99,25 @@ enum CallScreenJavaScriptMessageName: String, CaseIterable {
|
||||
window.webkit.messageHandlers.\(rawValue).postMessage("");
|
||||
}
|
||||
"""
|
||||
case .forwardLogs:
|
||||
"""
|
||||
(function() {
|
||||
function forwardLog(level, args) {
|
||||
const message = Array.from(args).map(a => {
|
||||
try { return typeof a === 'object' ? JSON.stringify(a) : String(a); }
|
||||
catch(e) { return String(a); }
|
||||
}).join(' ');
|
||||
window.webkit.messageHandlers.\(rawValue).postMessage({ level: level, message: message });
|
||||
}
|
||||
['log', 'debug', 'info', 'warn', 'error'].forEach(function(level) {
|
||||
const original = console[level].bind(console);
|
||||
console[level] = function(...args) {
|
||||
original(...args);
|
||||
forwardLog(level, args);
|
||||
};
|
||||
});
|
||||
})();
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -194,6 +194,23 @@ private struct CallView: UIViewRepresentable {
|
||||
viewModelContext?.send(viewAction: .outputDeviceSelected(deviceID: deviceID))
|
||||
case .onBackButtonPressed:
|
||||
viewModelContext?.send(viewAction: .navigateBack)
|
||||
case .forwardLogs:
|
||||
guard let body = message.body as? [String: String],
|
||||
let level = body["level"],
|
||||
let logMessage = body["message"] else { return }
|
||||
|
||||
switch level {
|
||||
case "debug":
|
||||
MXLog.debug("[ElementCall]: \(logMessage)")
|
||||
case "info":
|
||||
MXLog.info("[ElementCall]: \(logMessage)")
|
||||
case "warn":
|
||||
MXLog.warning("[ElementCall]: \(logMessage)")
|
||||
case "error":
|
||||
MXLog.error("[ElementCall]: \(logMessage)")
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user