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.

Settings.js 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import { jitsiLocalStorage } from '@jitsi/js-utils';
  2. import { getLogger } from 'jitsi-meet-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. _machineId = this._storage.getItem('jitsiMeetId');
  45. if (!_machineId) {
  46. _machineId = generateJitsiMeetId();
  47. this._storage.setItem('jitsiMeetId', _machineId);
  48. }
  49. }
  50. return _machineId;
  51. },
  52. /**
  53. * Returns current session id.
  54. * @returns {string} current session id
  55. */
  56. get sessionId() {
  57. // We may update sessionId in localStorage from another JitsiConference
  58. // instance and that's why we should always re-read it.
  59. return this._storage.getItem('sessionId');
  60. },
  61. /**
  62. * Save current session id.
  63. * @param {string} sessionId session id
  64. */
  65. set sessionId(sessionId) {
  66. if (sessionId) {
  67. this._storage.setItem('sessionId', sessionId);
  68. } else {
  69. this._storage.removeItem('sessionId');
  70. }
  71. }
  72. };
  73. /**
  74. * Generate fake username for callstats.
  75. * @returns {string} fake random username
  76. */
  77. function generateCallStatsUserName() {
  78. const username = UsernameGenerator.generateUsername();
  79. logger.log('generated callstats uid', username);
  80. return username;
  81. }
  82. /**
  83. * Generate unique id.
  84. * @returns {string} random unique id
  85. */
  86. function generateJitsiMeetId() {
  87. const jitsiMeetId = generateUniqueId();
  88. logger.log('generated id', jitsiMeetId);
  89. return jitsiMeetId;
  90. }
  91. /**
  92. *
  93. */
  94. function generateUniqueId() {
  95. return _p8() + _p8() + _p8() + _p8();
  96. }
  97. /**
  98. *
  99. */
  100. function _p8() {
  101. return `${Math.random().toString(16)}000000000`.substr(2, 8);
  102. }