native.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. window["displayMenu"] = function() {
  2. document.getElementById(R.id.context).classList.add(R.klass.opened);
  3. };
  4. window["hideMenu"] = function() {
  5. document.getElementById(R.id.context).classList.remove(R.klass.opened);
  6. };
  7. window["toggleMenu"] = function() {
  8. _toggleMenu();
  9. };
  10. window["setChannelFavorite"] = function(chanId, val) {
  11. var channel = DATA.context.getChannel(chanId);
  12. if (channel) {
  13. if (val)
  14. starChannel(channel);
  15. else
  16. unstarChannel(channel);
  17. } else {
  18. console.error("Channel " +chanId +" not found");
  19. }
  20. };
  21. window["onApplicationPaused"] = function() {
  22. window.hasFocus = false;
  23. };
  24. window["onApplicationResumed"] = function() {
  25. window.hasFocus = true;
  26. };
  27. var CALLBACK = (function() {
  28. var
  29. /** @type {Object<string, Function>} */
  30. callbacks = {},
  31. /** @type {number} */
  32. currentCallbackId = 0;
  33. /** @type {function(Function, Object=):number} */
  34. function makeCallback(fnc, ctx) {
  35. var cbId = currentCallbackId++;
  36. if (ctx)
  37. fnc.ctx = ctx;
  38. callbacks['' +cbId] = fnc;
  39. return cbId;
  40. }
  41. function triggerCallback() {
  42. var id = '' +Array.prototype.shift.call(arguments);
  43. if (callbacks[id]) {
  44. callbacks[id].apply(callbacks[id].ctx, arguments);
  45. delete callbacks[id];
  46. }
  47. }
  48. return {
  49. /** @type {function(Function, Object=):number} */
  50. makeCallback: makeCallback,
  51. onCallbackResponse: triggerCallback
  52. };
  53. })();
  54. window["__CALLBACK"] = { "onResult": CALLBACK.onCallbackResponse };
  55. /** @return {boolean} */
  56. function isNative() {
  57. return !!("__native" in window);
  58. }