You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491
  1. mod_templates_ui_msg = window.mod_templates_ui_msg || $("")
  2. // html_js_handler_ui_msg
  3. function html_js_handler_ui_msg(rsp) {
  4. clog("html_js_handler_ui_msg",[...arguments])
  5. mod_templates_ui_msg = $(`<span>${rsp}</span>`)[0].outerHTML
  6. clog("html_js_handler_lobby2")
  7. // init_lobby()
  8. // init_ui_msg()
  9. if (window.refresh_overflow_menu){
  10. // refresh_overflow_menu()
  11. }
  12. // clog("html_js_handler_lobby3")
  13. // init_api6()
  14. }
  15. glob_mx.svg = window.glob_mx.svg || {}
  16. // function load_svg(url,name){
  17. // plugin_top_v3
  18. // plugin_top_v3 popup_root
  19. // plugin_top_cls plugin_icon_template_v2
  20. function init_ui_msg(req_dev = "av_on"){
  21. // </span>
  22. // if (!glob_mx.svg["close.svg"] || !(mod_templates_ui_msg.find("#tmplt").length) ){
  23. if (!glob_mx.svg["close.svg"] || !(mod_templates_ui_msg.length) ){
  24. return
  25. }
  26. var n,svg,icon_template
  27. saftly_remove(".plugin_top_v3.popup_root")
  28. saftly_remove(".plugin_icon_template_v2")
  29. saftly_remove(".plugin_icon_template_v3")
  30. // return
  31. var mic_status = $(`.toolbox-content [aria-label="Toggle mute audio"] .toolbox-icon:not(.toggled) .jitsi-icon `).length
  32. var vid_status = $(`.toolbox-content [aria-label="Toggle mute video"] .toolbox-icon:not(".toggled") .jitsi-icon `).length
  33. var txt_msg
  34. txt_msg = "DFLT"
  35. clog("rjs zzz",!mic_status && !vid_status,mic_status,vid_status)
  36. if (req_dev == "av_on"){
  37. if (mic_status && vid_status){return}
  38. mic_status ? req_dev="vid_on" : 0
  39. vid_status ? req_dev="mic_on" : 0
  40. txt_msg = "microphone and camera"
  41. }
  42. if (req_dev == "mic_on"){
  43. if (mic_status){return}
  44. txt_msg = "microphone"
  45. }
  46. if (req_dev == "vid_on"){
  47. if (vid_status){return}
  48. txt_msg = "camera"
  49. }
  50. // svg = $(glob_mx.svg["close.svg"]).find("svg")
  51. svg = $(`<span>${glob_mx.svg["close.svg"]}</span>`).find("svg")
  52. svg.addClass("close_button")
  53. svg.click(close_popup)
  54. // close_popup
  55. // svg = $(`<span>$(glob_mx.svg["close.svg"])</span>`).filter("svg")
  56. var jmod_templates_ui_msg = $(mod_templates_ui_msg)
  57. n = jmod_templates_ui_msg.find(".plugin_top_v3.popup_root")
  58. n.find(".popup_body").prepend(svg)
  59. // n.find(".popup_icons").append(svg)
  60. if (req_dev == "av_on"){
  61. svg = $(`<span>${glob_mx.svg["mic-camera-combined.svg"]}</span>`).find("svg").addClass("icon_svg")
  62. icon_template = $(jmod_templates_ui_msg.find(".settings-button-container")[0].outerHTML)
  63. icon_template.find(".jitsi-icon").append(svg)
  64. n.find(".popup_icons").append(icon_template)
  65. n.find(".popup_icons").append("<br>")
  66. icon_template.click(set_av_on)
  67. icon_template.addClass("av_on_btn av_btn")
  68. }
  69. if (req_dev == "mic_on" || req_dev == "av_on2"){
  70. svg = $(`<span>${glob_mx.svg["mic-disabled.svg"]}</span>`).find("svg").addClass("icon_svg")
  71. icon_template = $(jmod_templates_ui_msg.find(".settings-button-container")[0].outerHTML)
  72. icon_template.find(".jitsi-icon").append(svg)
  73. n.find(".popup_icons").append(icon_template)
  74. icon_template.click(set_mic_on)
  75. icon_template.addClass("mic_on_btn av_btn")
  76. }
  77. if (req_dev == "vid_on" || req_dev == "av_on2"){
  78. svg = $(`<span>${glob_mx.svg["camera-disabled.svg"]}</span>`).find("svg").addClass("icon_svg")
  79. icon_template = $(jmod_templates_ui_msg.find(".settings-button-container")[0].outerHTML)
  80. icon_template.find(".jitsi-icon").append(svg)
  81. n.find(".popup_icons").append(icon_template)
  82. icon_template.click(set_vid_on)
  83. icon_template.addClass("vid_on_btn av_btn")
  84. }
  85. /*
  86. svg = $(`<span>${glob_mx.svg["camera.svg"]}</span>`).find("svg").addClass("icon_svg")
  87. icon_template = $(jmod_templates_ui_msg.find(".settings-button-container")[0].outerHTML)
  88. icon_template.find(".jitsi-icon").append(svg)
  89. n.find(".popup_icons").append(icon_template)
  90. svg = $(`<span>${glob_mx.svg["microphone.svg"]}</span>`).find("svg").addClass("icon_svg")
  91. icon_template = $(jmod_templates_ui_msg.find(".settings-button-container")[0].outerHTML)
  92. icon_template.find(".jitsi-icon").append(svg)
  93. n.find(".popup_icons").append(icon_template)
  94. svg = $(`<span>${glob_mx.svg["camera-disabled.svg"]}</span>`).find("svg").addClass("icon_svg")
  95. icon_template = $(jmod_templates_ui_msg.find(".settings-button-container")[0].outerHTML)
  96. icon_template.find(".jitsi-icon").append(svg)
  97. n.find(".popup_icons").append(icon_template)
  98. svg = $(`<span>${glob_mx.svg["mic-disabled.svg"]}</span>`).find("svg").addClass("icon_svg")
  99. icon_template = $(jmod_templates_ui_msg.find(".settings-button-container")[0].outerHTML)
  100. icon_template.find(".jitsi-icon").append(svg)
  101. n.find(".popup_icons").append(icon_template)
  102. svg = $(`<span>${glob_mx.svg["mic-camera-combined.svg"]}</span>`).find("svg").addClass("icon_svg")
  103. icon_template = $(jmod_templates_ui_msg.find(".settings-button-container")[0].outerHTML)
  104. icon_template.find(".jitsi-icon").append(svg)
  105. n.find(".popup_icons").append(icon_template)
  106. n.find(".popup_icons .settings-button-container:even").addClass("ieven")
  107. // */
  108. // $(`.toolbox-content [aria-label="Toggle mute video"] .toolbox-icon:not(".toggled") .jitsi-icon `).length
  109. // clog("RJS",n.find(".popup_txt").text("z"))
  110. // clog("RJS",n.find(".popup_txt").text(txt_msg))
  111. clog("RJS",n.find(".popup_txt").text(`moderator requests you turn your ${txt_msg} on.`))
  112. // mic-camera-combined
  113. // add_node(svg,n.find(".popup_body"),"append")
  114. clog("**",icon_template)
  115. window.nq_test = n
  116. add_node(n,".dev_hook.vspace","append")
  117. clog("::",svg,n,n.find(".popup_body"))
  118. // n = jmod_templates_ui_msg.find(".plugin_icon_template_v2")
  119. }
  120. function load_svg_handler(url,name){
  121. }
  122. function add_svg_mod(){
  123. var mod_path ="ign/rf/ui_msg/"
  124. var mtx ={
  125. // js:["ign/m/timer/m.js","ign/m/timer/m0.js"],
  126. // js:[`${mod_path}m0.js`,`${mod_path}m.js`,],
  127. // css:[`${mod_path}m.css`],
  128. html:[
  129. {
  130. url:`/react/features/base/icons/svg/close.svg`,diffH:get_cui_html,success:svg_rld_cb,success_js:"html_js_handler","name":"close.svg"},
  131. // url:`${mod_path}m.html`,diffH:get_cui_html,success:svg_rld_cb,success_js:"html_js_handler"}]
  132. {url:`/react/features/base/icons/svg/camera-disabled.svg`,diffH:get_cui_html,success:svg_rld_cb,success_js:"html_js_handler"},
  133. {url:`/react/features/base/icons/svg/camera.svg`,diffH:get_cui_html,success:svg_rld_cb,success_js:"html_js_handler"},
  134. {url:`/react/features/base/icons/svg/mic-disabled.svg`,diffH:get_cui_html,success:svg_rld_cb,success_js:"html_js_handler"},
  135. {url:`/react/features/base/icons/svg/microphone.svg`,diffH:get_cui_html,success:svg_rld_cb,success_js:"html_js_handler"},
  136. {url:`/react/features/base/icons/svg/mic-camera-combined.svg`,diffH:get_cui_html,success:svg_rld_cb,success_js:"html_js_handler"},
  137. ]
  138. // url:`/react/features/base/icons/svg/close.svg`,diffH:get_cui_html,success:svg_rld_cb,success_js:"html_js_handler","name":"close.svg"}]
  139. // url:`${mod_path}r.html`,diffH:get_cui_html,success:svg_rld_cb,success_js:"html_js_handler"}]
  140. // mod_path
  141. }
  142. mtx.name = "svg_mod"
  143. add_module(mtx )
  144. // init_ui_msg()
  145. }
  146. function svg_rld_cb(rsp,status,xhr){
  147. // clog("svg_rld_cb!",this,[...arguments])
  148. clog("svg_rld_cb!",{that:this,rsp,status,xhr})
  149. glob_mx.svg.test = {that:this,rsp,status,xhr}
  150. // glob_mx.svg[this.name] = {that:this,rsp,status,xhr}
  151. // glob_mx.svg[xhr.file.name] = {that:this,rsp,status,xhr}
  152. // react/features/base/icons/svg/camera-disabled.svg
  153. if (!xhr.file.name){
  154. glob_mx.svg[xhr.file.url.split("/").pop()] = rsp
  155. } else {
  156. glob_mx.svg[xhr.file.name] = rsp
  157. }
  158. // init_ui_msg()
  159. // window[this.success_js](rsp,status,xhr)
  160. // window[xhr.file.success_js](rsp,status,xhr)
  161. }
  162. add_svg_mod()
  163. function vid_toggle(){
  164. var v
  165. var v2
  166. if (navigator.platform != "Win32"){
  167. return
  168. }
  169. // for (v of $(".remote-video-menu-trigger")){
  170. // onmouseenter
  171. // var e = new MouseEvent("onmouseenter",{bubbles: true})
  172. // var e = new MouseEvent("onmouseover",{bubbles: true})
  173. // /*
  174. v=$(`[aria-label="Toggle mute video"] .toolbox-icon:not(.toggled) .jitsi-icon `)[0]
  175. // v2=$(`[aria-label="Toggle mute audio"] .toolbox-icon:not(.toggled) .jitsi-icon `)[0]
  176. // */
  177. // /*
  178. // v=$(`[aria-label="Toggle mute video"] .toolbox-icon.toggled .jitsi-icon `)[0]
  179. // v2=$(`[aria-label="Toggle mute audio"] .toolbox-icon.toggled .jitsi-icon `)[0]
  180. // */
  181. // v=$(`[aria-label="Toggle mute video"] .toolbox-icon.toggled .jitsi-icon `)[0]
  182. // v=$(`[aria-label="Toggle mute video"] .toolbox-icon .jitsi-icon `)[0]
  183. var e = new MouseEvent("click",{bubbles: true})
  184. v.dispatchEvent(e)
  185. // v=$(`[aria-label="Toggle mute video"] .toolbox-icon.toggled .jitsi-icon `)[0]
  186. // v=$(`[aria-label="Toggle mute video"] .toolbox-icon .jitsi-icon `)[0]
  187. if (!v2 ){
  188. return
  189. }
  190. var e2 = new MouseEvent("click",{bubbles: true})
  191. v2.dispatchEvent(e2)
  192. }
  193. function set_av_on(){
  194. close_popup({that:this})
  195. set_vid_on()
  196. set_mic_on()
  197. }
  198. function set_av_off(){
  199. set_vid_off()
  200. set_mic_off()
  201. }
  202. function close_popup(e,o){
  203. var that,j,z
  204. z = "DFLT"
  205. if (e.that){
  206. that = e.that
  207. z = "e.that"
  208. } else {
  209. z = "else"
  210. that = this
  211. }
  212. if (that == window || !that) {
  213. z = "!win e.that"
  214. return
  215. }
  216. j = $(that)
  217. j.parents(".plugin_top_v3").remove()
  218. clog("close_popup",z,"~~~~~~~",e,o,j)
  219. // av_btn
  220. }
  221. function set_vid_on(){
  222. var v
  223. close_popup({that:this})
  224. v = $(`.toolbox-content [aria-label="Toggle mute video"] .toolbox-icon.toggled .jitsi-icon `)[0]
  225. clog("...v",v)
  226. if (v) {
  227. v.dispatchEvent(new MouseEvent("click",{bubbles: true}))
  228. }
  229. }
  230. function set_vid_off(){
  231. var v
  232. v = $(`.toolbox-content [aria-label="Toggle mute video"] .toolbox-icon:not(.toggled) .jitsi-icon `)[0]
  233. clog("...v",v)
  234. if (v) {
  235. v.dispatchEvent(new MouseEvent("click",{bubbles: true}))
  236. }
  237. }
  238. function set_mic_off(){
  239. var v
  240. v = $(`.toolbox-content [aria-label="Toggle mute audio"] .toolbox-icon:not(.toggled) .jitsi-icon `)[0]
  241. clog("...v",v)
  242. if (v) {
  243. v.dispatchEvent(new MouseEvent("click",{bubbles: true}))
  244. }
  245. }
  246. function set_mic_on(){
  247. close_popup({that:this})
  248. var v
  249. v = $(`.toolbox-content [aria-label="Toggle mute audio"] .toolbox-icon.toggled .jitsi-icon `)[0]
  250. clog("...v",v)
  251. if (v) {
  252. v.dispatchEvent(new MouseEvent("click",{bubbles: true}))
  253. }
  254. }
  255. function toggle_mic(){
  256. var v
  257. v = $(`.toolbox-content [aria-label="Toggle mute audio"] .toolbox-icon .jitsi-icon `)[0]
  258. clog("...v",v)
  259. if (v) {
  260. v.dispatchEvent(new MouseEvent("click",{bubbles: true}))
  261. }
  262. }
  263. function toggle_vid(){
  264. var v
  265. v = $(`.toolbox-content [aria-label="Toggle mute video"] .toolbox-icon .jitsi-icon `)[0]
  266. clog("...v",v)
  267. if (v) {
  268. v.dispatchEvent(new MouseEvent("click",{bubbles: true}))
  269. }
  270. }
  271. function toggle_overflow_menu(){
  272. var v
  273. v = $(".button-group-right > .toolbox-button-wth-dialog:last .toolbox-button")[0]
  274. clog("...v",v)
  275. if (v) {
  276. v.dispatchEvent(new MouseEvent("click",{bubbles: true}))
  277. }
  278. }
  279. function is_msg_to_me(to){
  280. var local = get_local()
  281. if (to == "all" || local.id == to){
  282. return true
  283. }
  284. }
  285. async function isbrave12(){
  286. /*
  287. var ret
  288. var r1
  289. var r2
  290. r1 = navigator.brave && await navigator.brave.isBrave() || false
  291. r2 = navigator.hardwareConcurrency == 12
  292. ret = r1 && r2
  293. */
  294. // clog(r1,r2,ret)
  295. // return {r1,r2,ret}
  296. // return ret
  297. return ((navigator.brave && await navigator.brave.isBrave() || false) && (navigator.hardwareConcurrency == 12))
  298. // return ((navigator.brave && await navigator.brave.isBrave() || false) && (navigator.hardwareConcurrency == 12))
  299. }
  300. function isbrave12_then(ib12){
  301. window.ib12 = ib12
  302. clog("isbrave12_then",{that:this,args:[...arguments]})
  303. }
  304. isbrave12().then(isbrave12_then)
  305. // ib12 = isbrave12()
  306. // navigator.hardwareConcurrency
  307. // (navigator.brave && await navigator.brave.isBrave() || false)
  308. function req_av_io(o){
  309. var payload = o.parsed.payload
  310. clog("....>",o)
  311. if (payload && !is_msg_to_me(payload.to)){
  312. // clog("Not for me")
  313. return
  314. }
  315. switch(payload.act){
  316. // switch(payload.action){
  317. case "force_vid_on":
  318. if (window.ib12){
  319. break;
  320. }
  321. set_vid_on()
  322. break;
  323. case "vid_on":
  324. // set_vid_on()
  325. init_ui_msg("vid_on")
  326. clog("~~","vid_on",o)
  327. break;
  328. case "vid_off":
  329. set_vid_off()
  330. clog("~~","vid_off",o)
  331. break;
  332. case "force_mic_on":
  333. set_mic_on()
  334. break;
  335. case "mic_on":
  336. init_ui_msg("mic_on")
  337. // set_mic_on()
  338. clog("~~","mic_on",o)
  339. break;
  340. case "mic_off":
  341. set_mic_off()
  342. clog("~~","mic_off",o)
  343. break;
  344. case "force_av_on":
  345. set_vid_on()
  346. set_mic_on()
  347. break;
  348. case "av_on":
  349. // set_vid_on()
  350. // set_mic_on()
  351. init_ui_msg("av_on")
  352. clog("~~","av_on",o)
  353. break;
  354. case "av_off":
  355. set_vid_off()
  356. set_mic_off()
  357. clog("~~","av_off",o)
  358. break;
  359. default:
  360. clog("~~","DFLT",o)
  361. // break;
  362. }
  363. clog("req_av_io",{that:this,args:[...arguments]})
  364. }
  365. function req_av_send(o){
  366. tmsgx({
  367. "type":"event",
  368. "payload":o,
  369. etype:"req_av_io"
  370. },"code")
  371. }
  372. // req_av_send({act:"av_off","to":"all"})
  373. // req_av_send({to:"all",act:"force_vid_on"})
  374. //
  375. glob_mx.event_handlers.av2 = {
  376. fn:req_av_io,
  377. // fn:nop,
  378. // m:{etype:"timer_start"},
  379. m:{etype:"req_av_io"},
  380. }
  381. // $(".button-group-right > .toolbox-button-wth-dialog:last")
  382. // plugin_top_cls plugin_icon_template_v2