UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

94 lines 2.71 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.VideoPlayerPool = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _streamChat = require("stream-chat"); var _videoPlayer = require("./video-player"); var VideoPlayerPool = exports.VideoPlayerPool = function () { function VideoPlayerPool() { (0, _classCallCheck2.default)(this, VideoPlayerPool); this.state = new _streamChat.StateStore({ activeVideoPlayer: null }); this.pool = new Map(); } return (0, _createClass2.default)(VideoPlayerPool, [{ key: "players", get: function () { return Array.from(this.pool.values()); } }, { key: "getOrAddPlayer", value: function getOrAddPlayer(params) { var player = this.pool.get(params.id); if (player) { return player; } var newPlayer = new _videoPlayer.VideoPlayer(params); newPlayer.pool = this; this.pool.set(params.id, newPlayer); return newPlayer; } }, { key: "setActivePlayer", value: function setActivePlayer(activeVideoPlayer) { this.state.partialNext({ activeVideoPlayer }); } }, { key: "getActivePlayer", value: function getActivePlayer() { return this.state.getLatestValue().activeVideoPlayer; } }, { key: "removePlayer", value: function removePlayer(id) { var player = this.pool.get(id); if (!player) return; player.onRemove(); this.pool.delete(id); if (this.getActivePlayer()?.id === id) { this.setActivePlayer(null); } } }, { key: "deregister", value: function deregister(id) { if (this.pool.has(id)) { this.pool.delete(id); } } }, { key: "clear", value: function clear() { for (var player of this.pool.values()) { this.removePlayer(player.id); } this.setActivePlayer(null); } }, { key: "requestPlay", value: function requestPlay(id) { if (this.getActivePlayer()?.id !== id) { var currentPlayer = this.getActivePlayer(); if (currentPlayer && currentPlayer.isPlaying) { currentPlayer.pause(); } } var activePlayer = this.pool.get(id); if (activePlayer) { this.setActivePlayer(activePlayer); } } }, { key: "notifyPaused", value: function notifyPaused() { this.setActivePlayer(null); } }]); }(); //# sourceMappingURL=video-player-pool.js.map