Compare commits

...
4 changed files with 9 additions and 10 deletions
+4 -4
View File
@@ -75,7 +75,7 @@ public partial class LoginWindow : Window
msgHandler = (_, args) => msgHandler = (_, args) =>
{ {
Browser.CoreWebView2.WebMessageReceived -= msgHandler; Browser.CoreWebView2.WebMessageReceived -= msgHandler;
tcs.TrySetResult(args.WebMessageAsString); tcs.TrySetResult(args.WebMessageAsJson);
}; };
Browser.CoreWebView2.WebMessageReceived += msgHandler; Browser.CoreWebView2.WebMessageReceived += msgHandler;
@@ -95,12 +95,12 @@ public partial class LoginWindow : Window
if(!id){ if(!id){
let pu=null; let pu=null;
try{pu=await(await fetch('/api/usage',h)).json();}catch(e3){} try{pu=await(await fetch('/api/usage',h)).json();}catch(e3){}
window.chrome.webview.postMessage(JSON.stringify({email:e,orgId:null,usage:(pu&&!pu.error?pu:null),debug:'no-org|bkeys:'+bkeys+'|akeys:'+akeys})); window.chrome.webview.postMessage({email:e,orgId:null,usage:(pu&&!pu.error?pu:null),debug:'no-org|bkeys:'+bkeys+'|akeys:'+akeys});
return; return;
} }
const u=await(await fetch('/api/organizations/'+id+'/usage',h)).json(); const u=await(await fetch('/api/organizations/'+id+'/usage',h)).json();
window.chrome.webview.postMessage(JSON.stringify({email:e,orgId:id,usage:u,debug:'orgSrc:'+orgSrc+'|bkeys:'+bkeys+'|akeys:'+akeys})); window.chrome.webview.postMessage({email:e,orgId:id,usage:u,debug:'orgSrc:'+orgSrc+'|bkeys:'+bkeys+'|akeys:'+akeys});
}catch(ex){window.chrome.webview.postMessage(JSON.stringify({error:String(ex)}));}})()"; }catch(ex){window.chrome.webview.postMessage({error:String(ex)});}})()";
await Browser.CoreWebView2.ExecuteScriptAsync(script); await Browser.CoreWebView2.ExecuteScriptAsync(script);
+2 -3
View File
@@ -1,4 +1,3 @@
## What's new in beta.26 ## What's new in beta.27
- Fixed: script results now use window.chrome.webview.postMessage instead of async IIFE return value — older WebView2 runtimes don't await Promises from ExecuteScriptAsync, so data was never received - Fix build error: use WebMessageAsJson (not WebMessageAsString) and post plain JS objects via postMessage
- Debug text in Settings will now always show what happened during sign-in
+2 -2
View File
@@ -203,11 +203,11 @@ public class UsageViewModel : INotifyPropertyChanged
if(!id){ if(!id){
let pu=null; let pu=null;
try{pu=await(await fetch('/api/usage',h)).json();}catch(e3){} try{pu=await(await fetch('/api/usage',h)).json();}catch(e3){}
window.chrome.webview.postMessage(JSON.stringify({email:em,orgId:null,usage:(pu&&!pu.error?pu:null)})); window.chrome.webview.postMessage({email:em,orgId:null,usage:(pu&&!pu.error?pu:null)});
return; return;
} }
const u=await(await fetch('/api/organizations/'+id+'/usage',h)).json(); const u=await(await fetch('/api/organizations/'+id+'/usage',h)).json();
window.chrome.webview.postMessage(JSON.stringify({email:em,orgId:id,usage:u})); window.chrome.webview.postMessage({email:em,orgId:id,usage:u});
}catch(ex){window.chrome.webview.postMessage(null);}})();"; }catch(ex){window.chrome.webview.postMessage(null);}})();";
var resultJson = await Application.Current.Dispatcher.InvokeAsync(async () => var resultJson = await Application.Current.Dispatcher.InvokeAsync(async () =>
+1 -1
View File
@@ -42,7 +42,7 @@ internal sealed class WebViewFetchWindow : Window
msgHandler = (_, args) => msgHandler = (_, args) =>
{ {
_wv.CoreWebView2.WebMessageReceived -= msgHandler; _wv.CoreWebView2.WebMessageReceived -= msgHandler;
tcs.TrySetResult(args.WebMessageAsString); tcs.TrySetResult(args.WebMessageAsJson);
}; };
_wv.CoreWebView2.WebMessageReceived += msgHandler; _wv.CoreWebView2.WebMessageReceived += msgHandler;