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

wview.native.js 8.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. import React, { Component } from 'react';
  2. import { Container, TintedView , Text} from '../react/features/base/react';
  3. import { WebView } from 'react-native-webview';
  4. // import { Switch, TouchableWithoutFeedback, View ,Dimensions,KeyboardAvoidingView,Platform,Keyboard,KeyboardEvent } from 'react-native';
  5. // glob.r = {Keyboard,KeyboardEvent,KeyboardAvoidingView,rkav:1}
  6. import { Switch, TouchableWithoutFeedback, View } from 'react-native';
  7. glob.r = {rkav:0}
  8. class MyWeb0 extends Component {
  9. render() {
  10. // clog("MyWeb")
  11. // xlog("cx","MyWeb")
  12. // return (
  13. var ret = (
  14. <Container style = { glob.sto.wview.cstyle || { }}>
  15. <WebView
  16. source={{ uri: glob.sto.wview.uri || 'https://jinnace.com/' }}
  17. style={ glob.sto.wview.style || { marginTop: 20 }}/>
  18. </Container>
  19. );
  20. try {
  21. window?.rglob?.fno?.wview?.({ret,that:this})
  22. } catch (err){
  23. clog("webview err:",err)
  24. }
  25. return ret
  26. }
  27. }
  28. class MyWeb extends Component {
  29. constructor(props) {
  30. super(props);
  31. glob.sto.wview.mweb = this
  32. // glob.sto.mweb = this
  33. glob.elements.mweb = this
  34. }
  35. _onMessage(msg,a1,a2,a3) {
  36. try {
  37. clog("WebView ON MSG")
  38. window?.rglob?.fno?.wview_onmsg?.({that:this,args:arguments,msg,a1,a2,a3})
  39. // var xr = [height, width,nativeEvent,layout]
  40. } catch (err){
  41. clog("onMessage ERR:",err)
  42. }
  43. }
  44. _onLayout({ nativeEvent: { layout: { height, width } } }) {
  45. // const { onDimensionsChanged } = this.props;
  46. try {
  47. window?.rglob?.fno?.wview_layout?.({that:this,args:arguments,height, width,V:"_onLayout"})
  48. // var xr = [height, width,nativeEvent,layout]
  49. } catch (err){
  50. clog("TOGGLE Layout ERR:",err)
  51. }
  52. // onDimensionsChanged && onDimensionsChanged(width, height);
  53. }
  54. _onLayout2({ nativeEvent: { layout: { height, width } } }) {
  55. // const { onDimensionsChanged } = this.props;
  56. try {
  57. window?.rglob?.fno?.wview_layout?.({that:this,args:arguments,height, width,V:"_onLayout2"})
  58. // var xr = [height, width,nativeEvent,layout]
  59. } catch (err){
  60. clog("TOGGLE Layout ERR:",err)
  61. }
  62. // onDimensionsChanged && onDimensionsChanged(width, height);
  63. }
  64. render() {
  65. // clog("MyWeb")
  66. // xlog("cx","MyWeb")
  67. // originWhitelist={['*']}
  68. // return (
  69. var ret = (
  70. <WebView onLayout = { this._onLayout }
  71. source={{ uri: glob.sto.wview.uri + (ws7?.rnd_qs || "") || 'https://jinnace.com/' }}
  72. style={ glob.sto.wview.style || { marginTop: 20 }}
  73. onMessage= {this._onMessage}
  74. />
  75. );
  76. var r = {kav:1}
  77. try {
  78. window?.rglob?.fno?.wview?.({ret,r,that:this,"V":"WebView"})
  79. } catch (err){
  80. clog("webview err:",err)
  81. }
  82. // if (r.kav && 0) {
  83. if (r.kav && glob.r.rkav) {
  84. /*
  85. // onLayout = { this._onLayout2 }
  86. return (
  87. <KeyboardAvoidingView
  88. behavior={Platform.OS == "ios" ? "padding" : "height"}
  89. style = {{ ...glob.sto.wview.cstyle,top:glob.sto.wview.toolbar.height_adj}}
  90. >
  91. {[ret]}
  92. </KeyboardAvoidingView>
  93. )
  94. // */
  95. } else {
  96. return (
  97. <Container style = {{ ...glob.sto.wview.cstyle,top:glob.sto.wview.toolbar.height_adj}} onLayout = { this._onLayout2 }>
  98. {[ret]}
  99. </Container>
  100. )
  101. }
  102. //
  103. }
  104. }
  105. // class LobbySwitch extends Component<Props> {
  106. class LobbySwitch extends Component {
  107. /**
  108. * Initializes a new {@code VideoSwitch} instance.
  109. *
  110. * @inheritdoc
  111. */
  112. constructor(props) {
  113. super(props);
  114. // Bind event handlers so they are only bound once per instance.
  115. // this._onStartAudioOnlyChange_bnd = this._onStartAudioOnlyChange.bind(this);
  116. this._onStartAudioOnlyChange = this._onStartAudioOnlyChange.bind(this);
  117. // this.toggle = 1
  118. this.toggle = !!(glob.sto.wview.toggle || 0)
  119. this.toggle_u = 1
  120. this.time = Date.now()
  121. this._onStartAudioOnlyFalse = this._onStartAudioOnlyChangeFn(false);
  122. this._onStartAudioOnlyTrue = this._onStartAudioOnlyChangeFn(true);
  123. glob.elements.lobby_switch = this
  124. }
  125. /**
  126. * Implements React's {@link Component#render}.
  127. *
  128. * @inheritdoc
  129. */
  130. render() {
  131. // const { t, _headerStyles, _settings } = this.props;
  132. var styles = glob.sto.wview.switch_styles || {}
  133. if (this.toggle){
  134. glob.sto.wview.cstyle = glob.sto.wview.cstyle1
  135. } else {
  136. glob.sto.wview.cstyle = glob.sto.wview.cstyle0
  137. }
  138. if (glob.sto.wview.cstyle){
  139. // glob.sto.wview.cstyle.top = glob.sto.wview.toolbar.height_adj
  140. }
  141. var _headerStyles = {}
  142. var SWITCH_THUMB_COLOR = "#0ff"
  143. // clog("RND",this.toggle_u == this.toggle,"z",this.toggle_u,this.toggle)
  144. var SWITCH_UNDER_COLOR = "#0f0"
  145. this.time = Date.now()
  146. // this.toggle_u = this.toggle
  147. this.toggle_u = 0
  148. // onValueChange = { this._onStartAudioOnlyChange }
  149. // onPress = { this._onStartAudioOnlyFalse }>
  150. return (
  151. <View style = { styles.audioVideoSwitchContainer || {} } onLayout = { this._onLayout }>
  152. <TouchableWithoutFeedback
  153. onPress = { this._onStartAudioOnlyFalse }>
  154. <View style = { styles.switchLabel || {} }>
  155. <Text style = { styles.headerText || {} }>
  156. { styles.txt1 || '' }
  157. </Text>
  158. </View>
  159. </TouchableWithoutFeedback>
  160. <Switch
  161. onValueChange = { this._onStartAudioOnlyChange }
  162. style = { styles.audioVideoSwitch || {}}
  163. thumbColor = { styles.SWITCH_THUMB_COLOR }
  164. trackColor = { {true:styles.SWITCH_UNDER_COLOR,false: styles.SWITCH_UNDER_COLOR0} }
  165. value = { this.toggle }
  166. />
  167. <TouchableWithoutFeedback
  168. onPress = { this._onStartAudioOnlyTrue }>
  169. <View style = { styles.switchLabel || {} }>
  170. <Text style = { styles.headerText || {} }>
  171. { styles.txt2 || '' }
  172. </Text>
  173. </View>
  174. </TouchableWithoutFeedback>
  175. </View>
  176. );
  177. }
  178. _onLayout({ nativeEvent: { layout: { height, width } } }) {
  179. // const { onDimensionsChanged } = this.props;
  180. try {
  181. window?.rglob?.fno?.toggle_layout?.({that:this,args:arguments,height, width})
  182. // var xr = [height, width,nativeEvent,layout]
  183. } catch (err){
  184. clog("TOGGLE Layout ERR:",err)
  185. }
  186. // onDimensionsChanged && onDimensionsChanged(width, height);
  187. }
  188. // thumbColor = { styles.SWITCH_THUMB_COLOR || SWITCH_THUMB_COLOR }
  189. // trackColor = {{ true: styles.SWITCH_UNDER_COLOR || SWITCH_UNDER_COLOR }}
  190. _onStartAudioOnlyChange: boolean => void;
  191. /**
  192. * Handles the audio-video switch changes.
  193. *
  194. * @private
  195. * @param {boolean} startAudioOnly - The new startAudioOnly value.
  196. * @returns {void}
  197. */
  198. _onStartAudioOnlyChange(startAudioOnly) {
  199. try {
  200. window?.rglob?.fno?.toggle_?.({that:this,startAudioOnly})
  201. } catch (err){
  202. clog("TOGGLE ERR:",err)
  203. }
  204. // this.toggle = !this.toggle
  205. // const { dispatch } = this.props;
  206. // dispatch(updateSettings({
  207. // startAudioOnly
  208. // }
  209. // ));
  210. }
  211. /**
  212. * Creates a function that forwards the {@code startAudioOnly} changes to
  213. * the function that handles it.
  214. *
  215. * @private
  216. * @param {boolean} startAudioOnly - The new {@code startAudioOnly} value.
  217. * @returns {void}
  218. */
  219. _onStartAudioOnlyChangeFn(startAudioOnly) {
  220. try {
  221. window?.rglob?.fno?.toggle_fn?.({that:this,startAudioOnly})
  222. } catch (err){
  223. clog("TOGGLE ERR:",err)
  224. }
  225. return () => this._onStartAudioOnlyChange(startAudioOnly);
  226. }
  227. _onStartAudioOnlyFalse: () => void;
  228. _onStartAudioOnlyTrue: () => void;
  229. }
  230. /*
  231. export function _mapStateToProps(state: Object) {
  232. return {
  233. _headerStyles: ColorSchemeRegistry.get(state, 'Header'),
  234. _settings: state['features/base/settings']
  235. };
  236. }
  237. export {translate(connect(_mapStateToProps)(LobbySwitch))};
  238. var Psuedo_Thumbnail4 = connect(_mapStateToProps, _mapDispatchToProps)(Psuedo_Thumbnail4_fn);
  239. export {Psuedo_Thumbnail,Psuedo_Thumbnail_fn,
  240. */
  241. window.MyWeb_ =MyWeb
  242. window.MyWeb_0 =MyWeb0
  243. window.LobbySwitch_ =LobbySwitch
  244. function tlx(argument) {
  245. // body...
  246. clog("TLX!!!!!!!!!!!!!!!!!!!!!!!!!!!")
  247. }
  248. setTimeout(tlx,3000)
  249. export {MyWeb,LobbySwitch}