From 484eea92e4ccf12c3c5451ff64f092b77b3ea574 Mon Sep 17 00:00:00 2001 From: Peter Harpending Date: Thu, 12 Feb 2026 20:54:58 -0800 Subject: [PATCH] have call box --- priv/static/js/dist/webrtc.d.ts | 1 + priv/static/js/dist/webrtc.js | 16 +++++++++++++--- priv/static/js/dist/webrtc.js.map | 2 +- priv/static/js/ts/webrtc.ts | 25 ++++++++++++++++++++++--- src/fd_httpd_client.erl | 7 +++++-- 5 files changed, 42 insertions(+), 9 deletions(-) diff --git a/priv/static/js/dist/webrtc.d.ts b/priv/static/js/dist/webrtc.d.ts index 70abbff..317e6cc 100644 --- a/priv/static/js/dist/webrtc.d.ts +++ b/priv/static/js/dist/webrtc.d.ts @@ -19,3 +19,4 @@ type ws_msg = ["whoami", string] | ["roster", Array]; declare function handle_ws_msg(message: ws_msg): void; declare function ws_send_json(ws: WebSocket, x: any): void; declare function render_state(): void; +declare function nickkk(nick: string): HTMLElement; diff --git a/priv/static/js/dist/webrtc.js b/priv/static/js/dist/webrtc.js index eb5605d..a5eb94c 100644 --- a/priv/static/js/dist/webrtc.js +++ b/priv/static/js/dist/webrtc.js @@ -61,10 +61,20 @@ function render_state() { let roster_ul = document.getElementById('roster-ul'); let newChildren = []; for (let nick of st.roster) { - let li = document.createElement('li'); - li.innerText = nick; - newChildren.push(li); + if (!(nick === st.whoami)) { + let li = nickkk(nick); + newChildren.push(li); + } } roster_ul.replaceChildren(...newChildren); } +function nickkk(nick) { + let li = document.createElement('li'); + li.innerText += nick; + li.innerText += ' '; + let call_a = document.createElement('button'); + call_a.innerText = 'call'; + li.appendChild(call_a); + return li; +} //# sourceMappingURL=webrtc.js.map \ No newline at end of file diff --git a/priv/static/js/dist/webrtc.js.map b/priv/static/js/dist/webrtc.js.map index 0633c06..824ced9 100644 --- a/priv/static/js/dist/webrtc.js.map +++ b/priv/static/js/dist/webrtc.js.map @@ -1 +1 @@ -{"version":3,"file":"webrtc.js","sourceRoot":"","sources":["../ts/webrtc.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;AAMH,IAAI,EAAE,GACF,EAAC,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE,EAAC,CAAC;AAEjB,IAAI,EAAE,CAAC;AAEP,KAAK,UACL,IAAI;IAIA,8BAA8B;IAC9B,IAAI,EAAa,CAAC;IAClB,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAmB,CAAC;IAC7D,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAsB,CAAC;IAE1E,sBAAsB;IACtB,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAC9B;QACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAE,CAAC,MAAM,GAAG,KAAK,CAAC;QAC/C,EAAE,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC;QACjC,EAAE,CAAC,MAAM,GAAM,UAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,EAAE,CAAC,OAAO,GAAK,UAAS,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,EAAE,CAAC,OAAO,GAAK,UAAS,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,EAAE,CAAC,SAAS;YACR,UAAS,CAAC;gBACN,sCAAsC;gBACtC,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAW,CAAC;gBAC3C,aAAa,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC,CAAC;IACV,CAAC,CACJ,CAAC;AACN,CAAC;AAKD,SACA,aAAa,CACR,OAAe;IAGhB,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;IAC7C,QAAO,OAAO,CAAC,CAAC,CAAC,EAAE;QACf,KAAK,QAAQ;YACT,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM;QACV,KAAK,QAAQ;YACT,EAAE,CAAC,MAAM,GAAI,OAAO,CAAC,CAAC,CAAmB,CAAC;YAC1C,MAAM;QACV;YACI,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;KAChD;IAED,YAAY,EAAE,CAAC;AACnB,CAAC;AAID,SACA,YAAY,CACP,EAAc,EACd,CAAQ;IAGT,IAAI,CAAC,GAAW,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAE7B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,CAAC;AAID,SACA,YAAY;IAIR,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtB,SAAS;IACT,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAE,CAAC,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC;IACzD,EAAE;IACF,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAqB,CAAC;IACzE,IAAI,WAAW,GAAwB,EAAE,CAAC;IAC1C,KAAK,IAAI,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE;QACxB,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACtC,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;QACpB,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACxB;IACD,SAAS,CAAC,eAAe,CAAC,GAAG,WAAW,CAAC,CAAC;AAC9C,CAAC"} \ No newline at end of file +{"version":3,"file":"webrtc.js","sourceRoot":"","sources":["../ts/webrtc.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/priv/static/js/ts/webrtc.ts b/priv/static/js/ts/webrtc.ts index eb8cbc2..3c5bf59 100644 --- a/priv/static/js/ts/webrtc.ts +++ b/priv/static/js/ts/webrtc.ts @@ -100,9 +100,28 @@ render_state let roster_ul = document.getElementById('roster-ul') as HTMLUListElement; let newChildren : Array = []; for (let nick of st.roster) { - let li = document.createElement('li'); - li.innerText = nick; - newChildren.push(li); + if (!(nick === st.whoami)) { + let li = nickkk(nick); + newChildren.push(li); + } } roster_ul.replaceChildren(...newChildren); } + +function +nickkk + (nick: string) + : HTMLElement +{ + let li = document.createElement('li'); + + li.innerText += nick; + li.innerText += ' '; + + let call_a = document.createElement('button'); + call_a.innerText = 'call'; + + li.appendChild(call_a); + + return li; +} diff --git a/src/fd_httpd_client.erl b/src/fd_httpd_client.erl index 4ce4365..1ebb2c8 100644 --- a/src/fd_httpd_client.erl +++ b/src/fd_httpd_client.erl @@ -311,8 +311,11 @@ ws_webrtc(Request, State = #s{socket = Sock}) -> exit(bad_request) end catch - X:Y:Z -> - tell(error, "CRASH ws_webrtc: ~tp:~tp:~tp", [X, Y, Z]), + exit:Y:Z -> + tell("~tp ws_webrtc: dying peacefully: ~tp:~tp", [self(), Y, Z]), + gen_tcp:close(Sock); + error:Y:Z -> + tell(error, "~tp ws_webrtc: ERROR ~tp:~tp", [self(), Y, Z]), fd_httpd_utils:http_err(Sock, 500), error(internal_server_error) end.