mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 10:33:45 +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
|
case onOutputDeviceSelect
|
||||||
/// Used to handle the webview back button
|
/// Used to handle the webview back button
|
||||||
case onBackButtonPressed
|
case onBackButtonPressed
|
||||||
|
/// Forward logs to the native side for debugging purposes.
|
||||||
|
case forwardLogs
|
||||||
|
|
||||||
private var postMessageScript: String {
|
private var postMessageScript: String {
|
||||||
switch self {
|
switch self {
|
||||||
@@ -97,6 +99,25 @@ enum CallScreenJavaScriptMessageName: String, CaseIterable {
|
|||||||
window.webkit.messageHandlers.\(rawValue).postMessage("");
|
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))
|
viewModelContext?.send(viewAction: .outputDeviceSelected(deviceID: deviceID))
|
||||||
case .onBackButtonPressed:
|
case .onBackButtonPressed:
|
||||||
viewModelContext?.send(viewAction: .navigateBack)
|
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