您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

jsync_init.js 5.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  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~")
  95. trc_sto("init_db",{})
  96. glob_u.prom.init_db_resolve.resolved=1
  97. var glob_mx = glob_u.data
  98. var obj
  99. // clog("init_dbx",objx,{arguments,that:this})
  100. if (objx.participants){
  101. obj = objx
  102. } else {
  103. obj = objx.pl
  104. }
  105. // clog("INIT DB...",objx,obj,jc({obj,objx}))
  106. pf = new Proxy_Permissions({},"pf")
  107. msto_prx = new Proxy(obj,pf)
  108. window.msto_prx=msto_prx
  109. // window.msto_prx0 =msto_prx
  110. pf.init(msto_prx)
  111. msto_prx.walker_start(msto_prx)
  112. glob_mx.init_db=true
  113. // TODO:JFI make msto a class instance maybe
  114. /*
  115. window.msto = {
  116. ...pf.root,
  117. // participants:pf.root.participants,
  118. // conference:pf.root.conference,
  119. // my_data:pf.root.participants[glob_mx.local_id],
  120. get my_channel(){
  121. return msto.ws_channels[get_ws_channel_name()]
  122. // my_data("pfx get k1")
  123. },
  124. set my_channel(val){
  125. clog("pfx set my_channel")
  126. msto.ws_channels[get_ws_channel_name()] = val
  127. },
  128. get my_data(){
  129. return msto.participants[get_local_sto_id()]
  130. },
  131. set my_data(val){
  132. clog("pfx set my_data")
  133. msto.participants[get_local_sto_id()] = val
  134. },
  135. private_local:{},
  136. }
  137. // */
  138. // window.msto
  139. var dbl_proxy_obj = {
  140. // _wrapped_proxy:pf.root,
  141. // _wrapped_proxy2:pf.root,
  142. get my_channel(){
  143. return msto.ws_channels[get_ws_channel_name()]
  144. // my_data("pfx get k1")
  145. },
  146. set my_channel(val){
  147. clog("pfx set my_channel")
  148. msto.ws_channels[get_ws_channel_name()] = val
  149. },
  150. get my_data(){
  151. return msto.participants[get_local_sto_id()]
  152. },
  153. set my_data(val){
  154. clog("pfx set my_data")
  155. msto.participants[get_local_sto_id()] = val
  156. },
  157. private_local:{},
  158. }
  159. pf.dbl_proxy_obj=dbl_proxy_obj
  160. // window.dbl_proxy=new Proxy(dbl_proxy_obj, DBL_Proxy)
  161. // window.msto=new Proxy(dbl_proxy_obj, DBL_Proxy)
  162. window.msto=new Proxy(msto_prx, DBL_Proxy)
  163. }
  164. function handle_pre_init_msgs(){
  165. // clog("handle_pre_init_msgs")
  166. var k,v,i
  167. var _o
  168. glob_u.prom.init_db_resolve.resolved_inited = 1
  169. for (v of glob_u.ws.sockets.ws1.pre_init_msgs){
  170. if (v.data.sto_event_type == "set_msg"){
  171. msto.my_data.rehandle=1
  172. _o={...v,data:jc(v.data)}
  173. mhndlr_rld_2(_o,{type:"rehandle"})
  174. }
  175. }
  176. glob_u.prom.init_db_resolve.resolved_inited = 2
  177. }
  178. function ws_sto_connected(a,b){
  179. glob_u.cb.ws.run_cbs("WS_MSTO_INITED")
  180. handle_pre_init_msgs()
  181. // clog("ws_sto_connected",a,b,this)
  182. }
  183. function init_mu(){
  184. var k,v
  185. var rr = {}
  186. var prom1 = new Promise(pfnf(rr));
  187. prom1.then(init_db).then(ws_sto_connected)
  188. glob_u.prom.init_db_resolve_timeout_arg = {aaa:"timedout",pl:msto_z}
  189. setTimeout(rr.resolve,5000,glob_u.prom.init_db_resolve_timeout_arg)
  190. var rn = ((Math.random()+"").replace("0.","") - 0).toString(16)
  191. tmsgx4({sto_event_type:"db_sync_request","CLIENT_KEY":"ws_sto",request_rn:rn})
  192. glob_u.prom.init_db_resolve = rr.resolve
  193. glob_u.prom.init_db_resolve.rn = rn
  194. }
  195. function ord_init_once(o,scope,info){
  196. // clog("ord_init_once:",{o,scope,info})
  197. init_mu()
  198. // info.cbs[info.k].remove_after_exe = 1
  199. }
  200. glob_u.cb.ws.reg_cb(ord_init_once,"WS_OPEN:","ord_init_once")
  201. function ds_test(){
  202. glob_u.cb.ws.reg_cb(ord_init_once,"WS_OPEN:","ord_init_once")
  203. ws_reload()
  204. }
  205. glob_u.fns.ds_test=ds_test