1- import { Mode , Account } from "porto" ;
2- import { connectRp } from "../client/connectRp " ;
1+ import { Mode , Account , Dialog } from "porto" ;
2+ import { openRp } from "../client/openRp " ;
33import { createTimeout } from "../createTimeout" ;
44import { syncPort } from "../sync/syncPort" ;
55import { sharedState } from "../sync/sharedState" ;
6+ import { connectUrl } from "../rp/common" ;
67
7- const rp = connectRp ( ) ;
8- rp . port . then ( ( port ) => syncPort ( "rp" , port ) ) ;
8+ // const rp = connectRp();
9+ // rp.port.then((port) => syncPort("rp", port));
910
10- async function createAccount ( ) {
11- const port = await rp . port ;
12- return await new Promise < Account . Account > ( ( resolve , reject ) => {
13- function onPortMessage ( event : MessageEvent ) {
14- if ( event . data === "createResult" ) {
15- console . log ( "got create result" ) ;
16- resolve ( { } as never ) ;
17- }
18- }
19- port . addEventListener ( "message" , onPortMessage ) ;
11+ // async function createAccount() {
12+ // const port = await rp.port;
13+ // return await new Promise<Account.Account>((resolve, reject) => {
14+ // function onPortMessage(event: MessageEvent) {
15+ // if (event.data === "createResult") {
16+ // console.log("got create result");
17+ // resolve({} as never);
18+ // }
19+ // }
20+ // port.addEventListener("message", onPortMessage);
21+
22+ // const timeout = createTimeout(60_000);
23+ // timeout.promise.finally(() => port.removeEventListener("message", onPortMessage));
24+ // timeout.promise.catch(reject);
2025
21- const timeout = createTimeout ( 60_000 ) ;
22- timeout . promise . finally ( ( ) => port . removeEventListener ( "message" , onPortMessage ) ) ;
23- timeout . promise . catch ( reject ) ;
26+ // console.log("asking port to create account");
27+ // port.postMessage("create");
28+ // });
29+ // }
2430
25- console . log ( "asking port to create account" ) ;
26- port . postMessage ( "create" ) ;
27- } ) ;
28- }
31+ const renderer = Dialog . popup ( ) ;
2932
3033export const mode = Mode . from ( {
3134 name : "rp" ,
35+ setup ( params ) {
36+ console . log ( "mode.setup()" ) ;
37+ const dialog = renderer . setup ( {
38+ host : connectUrl ,
39+ internal : params . internal ,
40+ } ) ;
41+
42+ const unsub = params . internal . store . subscribe (
43+ ( x ) => x . requestQueue ,
44+ ( requestQueue ) => {
45+ for ( const listener of listeners ) listener ( requestQueue ) ;
46+
47+ const requests = requestQueue
48+ . map ( ( x ) => ( x . status === "pending" ? x : undefined ) )
49+ . filter ( Boolean ) as readonly QueuedRequest [ ] ;
50+ dialog . syncRequests ( requests ) ;
51+ if ( requests . length === 0 ) dialog . close ( ) ;
52+ } ,
53+ ) ;
54+
55+ return ( ) => {
56+ dialog . destroy ( ) ;
57+ } ;
58+ } ,
3259 actions : {
3360 async createAccount ( ) {
3461 console . log ( "mode.actions.createAccount()" ) ;
35- const account = await createAccount ( ) ;
36- return { account } ;
62+ throw new Error ( "not implemented" ) ;
63+ // const account = await createAccount();
64+ // return { account: Account.from({}) };
3765 } ,
3866
3967 async loadAccounts ( ) {
@@ -43,7 +71,10 @@ export const mode = Mode.from({
4371
4472 if ( ! accounts . length ) {
4573 console . log ( "create account" ) ;
46- await createAccount ( ) ;
74+ const rp = openRp ( ) ;
75+ await rp . port ;
76+
77+ // await createAccount();
4778 throw new Error ( "failed" ) ;
4879 } else {
4980 console . log ( "TODO sign in" ) ;
0 commit comments