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.

jsync_init.js 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. function pfnf(o){
  2. return function(resolve, reject){
  3. o.resolve=resolve
  4. o.reject=reject
  5. }
  6. }
  7. msto_z = {
  8. conference:{
  9. events:{},
  10. },
  11. participants:{},
  12. ws_channels:{},
  13. }
  14. var DBL_Proxy0 = {
  15. set(obj, prop, val,receiver){
  16. clog({obj, prop, val,receiver})
  17. // return Reflect.set(...arguments)
  18. if (Object.getOwnPropertyNames(obj).includes(prop)){
  19. return Reflect.set(...arguments)
  20. } else {
  21. return obj._wrapped_proxy[prop]=val
  22. // return Reflect.set(...arguments)
  23. }
  24. },
  25. get(obj, prop,receiver){
  26. clog({obj, prop,receiver},Object.getOwnPropertyNames(obj))
  27. if (Object.getOwnPropertyNames(obj).includes(prop)){
  28. return Reflect.get(...arguments)
  29. } else {
  30. return obj._wrapped_proxy[prop]
  31. // return Reflect.get(...arguments)
  32. }
  33. },
  34. }
  35. var DBL_Proxy1 = {
  36. set(obj, prop, val,receiver){
  37. // clog({obj, prop, val,receiver})
  38. // return Reflect.set(...arguments)
  39. if (Object.getOwnPropertyNames(pf.dbl_proxy_obj).includes(prop)){
  40. // if (Object.getOwnPropertyNames(obj).includes(prop)){
  41. return pf.dbl_proxy_obj[prop]=val
  42. } else {
  43. return Reflect.set(...arguments)
  44. // return Reflect.set(...arguments)
  45. }
  46. },
  47. get(obj, prop,receiver){
  48. // clog({obj, prop,receiver},Object.getOwnPropertyNames(obj))
  49. if (Object.getOwnPropertyNames(pf.dbl_proxy_obj).includes(prop)){
  50. return pf.dbl_proxy_obj[prop]
  51. } else {
  52. return Reflect.get(...arguments)
  53. // return Reflect.get(...arguments)
  54. }
  55. },
  56. }
  57. var DBL_Proxy = {
  58. set(obj, prop, val,receiver){
  59. // clog({obj, prop, val,receiver})
  60. // return Reflect.set(...arguments)
  61. if (Object.getOwnPropertyNames(pf.dbl_proxy_obj).includes(prop)){
  62. // if (Object.getOwnPropertyNames(obj).includes(prop)){
  63. return pf.dbl_proxy_obj[prop]=val
  64. } else {
  65. return obj[prop] = val
  66. // TODO: make sure this proxy doesn't cause other similar bugs
  67. // return Reflect.set(...arguments)
  68. }
  69. },
  70. getOwnPropertyDescriptor(obj, prop){
  71. if (Object.getOwnPropertyNames(pf.dbl_proxy_obj).includes(prop)){
  72. return Reflect.getOwnPropertyDescriptor(pf.dbl_proxy_obj, prop)
  73. } else {
  74. return Reflect.getOwnPropertyDescriptor(obj, prop)
  75. }
  76. },
  77. get(obj, prop,receiver){
  78. // clog({obj, prop,receiver},Object.getOwnPropertyNames(obj))
  79. if (Object.getOwnPropertyNames(pf.dbl_proxy_obj).includes(prop)){
  80. return pf.dbl_proxy_obj[prop]
  81. } else {
  82. return Reflect.get(...arguments)
  83. // return Reflect.get(...arguments)
  84. }
  85. },
  86. ownKeys(target) {
  87. var target_keys = Reflect.ownKeys(target);
  88. var extra_keys = Reflect.ownKeys(pf.dbl_proxy_obj);
  89. // clog("ownKeys",{target_keys,extra_keys})
  90. return [...target_keys,...extra_keys]
  91. },
  92. }
  93. function init_db(objx){
  94. clog("init_db~",arguments,this)
  95. console.trace("init_db")
  96. trc_sto("init_db",{})
  97. glob_u.prom.init_db_resolve.resolved=1
  98. var glob_mx = glob_u.data
  99. var obj
  100. // clog("init_dbx",objx,{arguments,that:this})
  101. if (objx.participants){
  102. obj = objx
  103. } else {
  104. obj = objx.pl
  105. }
  106. // clog("INIT DB...",objx,obj,jc({obj,objx}))
  107. pf = new Proxy_Permissions({},"pf")
  108. msto_prx = new Proxy(obj,pf)
  109. window.msto_prx=msto_prx
  110. // window.msto_prx0 =msto_prx
  111. pf.init(msto_prx)
  112. msto_prx.walker_start(msto_prx)
  113. glob_mx.init_db=true
  114. // TODO:JFI make msto a class instance maybe
  115. /*
  116. window.msto = {
  117. ...pf.root,
  118. // participants:pf.root.participants,
  119. // conference:pf.root.conference,
  120. // my_data:pf.root.participants[glob_mx.local_id],
  121. get my_channel(){
  122. return msto.ws_channels[get_ws_channel_name()]
  123. // my_data("pfx get k1")
  124. },
  125. set my_channel(val){
  126. clog("pfx set my_channel")
  127. msto.ws_channels[get_ws_channel_name()] = val
  128. },
  129. get my_data(){
  130. return msto.participants[get_local_sto_id()]
  131. },
  132. set my_data(val){
  133. clog("pfx set my_data")
  134. msto.participants[get_local_sto_id()] = val
  135. },
  136. private_local:{},
  137. }
  138. // */
  139. // window.msto
  140. var dbl_proxy_obj = {
  141. // _wrapped_proxy:pf.root,
  142. // _wrapped_proxy2:pf.root,
  143. get my_channel(){
  144. return msto.ws_channels[get_ws_channel_name()]
  145. // my_data("pfx get k1")
  146. },
  147. set my_channel(val){
  148. clog("pfx set my_channel")
  149. msto.ws_channels[get_ws_channel_name()] = val
  150. },
  151. get my_data(){
  152. return msto.participants[get_local_sto_id()]
  153. },
  154. set my_data(val){
  155. clog("pfx set my_data")
  156. msto.participants[get_local_sto_id()] = val
  157. },
  158. private_local:{},
  159. }
  160. pf.dbl_proxy_obj=dbl_proxy_obj
  161. // window.dbl_proxy=new Proxy(dbl_proxy_obj, DBL_Proxy)
  162. // window.msto=new Proxy(dbl_proxy_obj, DBL_Proxy)
  163. window.msto=new Proxy(msto_prx, DBL_Proxy)
  164. }
  165. function handle_pre_init_msgs(){
  166. // clog("handle_pre_init_msgs")
  167. var k,v,i
  168. var _o
  169. glob_u.prom.init_db_resolve.resolved_inited = 1
  170. // TODOL FIX HARDCODEING
  171. for (v of glob_u.ws.sockets.ws1?.pre_init_msgs || []){
  172. if (v.data.sto_event_type == "set_msg"){
  173. msto.my_data.rehandle=1
  174. _o={...v,data:jc(v.data)}
  175. mhndlr_rld_2(_o,{type:"rehandle"})
  176. }
  177. }
  178. glob_u.prom.init_db_resolve.resolved_inited = 2
  179. }
  180. function ws_sto_connected(a,b){
  181. glob_u.cb.ws.run_cbs("WS_MSTO_INITED")
  182. handle_pre_init_msgs()
  183. // clog("ws_sto_connected",a,b,this)
  184. }
  185. function init_mu(){
  186. var k,v
  187. var rr = {}
  188. console.trace("init_mu")
  189. var prom1 = new Promise(pfnf(rr));
  190. prom1.then(init_db).then(ws_sto_connected)
  191. glob_u.prom.init_db_resolve_timeout_arg = {aaa:"timedout",pl:msto_z}
  192. setTimeout(rr.resolve,5000,glob_u.prom.init_db_resolve_timeout_arg)
  193. var rn = ((Math.random()+"").replace("0.","") - 0).toString(16)
  194. tmsgx4({sto_event_type:"db_sync_request","CLIENT_KEY":"ws_sto",request_rn:rn})
  195. glob_u.prom.init_db_resolve = rr.resolve
  196. glob_u.prom.init_db_resolve.rn = rn
  197. }
  198. function ord_init_once(o,scope,info){
  199. // clog("ord_init_once:",{o,scope,info})
  200. init_mu()
  201. // info.cbs[info.k].remove_after_exe = 1
  202. }
  203. glob_u.cb.ws.reg_cb(ord_init_once,"WS_OPEN:","ord_init_once")
  204. function ds_test(){
  205. glob_u.cb.ws.reg_cb(ord_init_once,"WS_OPEN:","ord_init_once")
  206. ws_reload()
  207. }
  208. glob_u.fns.ds_test=ds_test