Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

Settings.js 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import { jitsiLocalStorage } from '@jitsi/js-utils';
  2. import { getLogger } from '@jitsi/logger';
  3. const logger = getLogger(__filename);
  4. import UsernameGenerator from '../util/UsernameGenerator';
  5. let _callStatsUserName;
  6. let _machineId;
  7. /**
  8. *
  9. */
  10. export default {
  11. /**
  12. * The storage used to store the settings.
  13. */
  14. _storage: jitsiLocalStorage,
  15. /**
  16. * Initializes the Settings class.
  17. *
  18. * @param {Storage|undefined} externalStorage - Object that implements the Storage interface. This object will be
  19. * used for storing data instead of jitsiLocalStorage if specified.
  20. */
  21. init(externalStorage) {
  22. this._storage = externalStorage || jitsiLocalStorage;
  23. },
  24. /**
  25. * Returns fake username for callstats
  26. * @returns {string} fake username for callstats
  27. */
  28. get callStatsUserName() {
  29. if (!_callStatsUserName) {
  30. _callStatsUserName = this._storage.getItem('callStatsUserName');
  31. if (!_callStatsUserName) {
  32. _callStatsUserName = generateCallStatsUserName();
  33. this._storage.setItem('callStatsUserName', _callStatsUserName);
  34. }
  35. }
  36. return _callStatsUserName;
  37. },
  38. /**
  39. * Returns current machine id.
  40. * @returns {string} machine id
  41. */
  42. get machineId() {
  43. if (!_machineId) {
  44. const amDid = this._storage.getItem('billingId');
  45. _machineId = amDid || this._storage.getItem('jitsiMeetId');
  46. if (amDid) {
  47. this._storage.setItem('jitsiMeetId', amDid);
  48. } else if (!_machineId) {
  49. _machineId = generateJitsiMeetId();
  50. this._storage.setItem('jitsiMeetId', _machineId);
  51. }
  52. }
  53. return _machineId;
  54. },
  55. /**
  56. * Returns current session id.
  57. * @returns {string} current session id
  58. */
  59. get sessionId() {
  60. // We may update sessionId in localStorage from another JitsiConference
  61. // instance and that's why we should always re-read it.
  62. return this._storage.getItem('sessionId');
  63. },
  64. /**
  65. * Save current session id.
  66. * @param {string} sessionId session id
  67. */
  68. set sessionId(sessionId) {
  69. if (sessionId) {
  70. this._storage.setItem('sessionId', sessionId);
  71. } else {
  72. this._storage.removeItem('sessionId');
  73. }
  74. }
  75. };
  76. /**
  77. * Generate fake username for callstats.
  78. * @returns {string} fake random username
  79. */
  80. function generateCallStatsUserName() {
  81. const username = UsernameGenerator.generateUsername();
  82. logger.log('generated callstats uid', username);
  83. return username;
  84. }
  85. /**
  86. * Generate unique id.
  87. * @returns {string} random unique id
  88. */
  89. function generateJitsiMeetId() {
  90. const jitsiMeetId = generateUniqueId();
  91. logger.log('generated id', jitsiMeetId);
  92. return jitsiMeetId;
  93. }
  94. /**
  95. *
  96. */
  97. function generateUniqueId() {
  98. return _p8() + _p8() + _p8() + _p8();
  99. }
  100. /**
  101. *
  102. */
  103. function _p8() {
  104. return `${Math.random().toString(16)}000000000`.substr(2, 8);
  105. }