diff --git a/src/common/watchedOverrides.js b/src/common/watchedOverrides.js new file mode 100644 index 000000000..c6b10b4a1 --- /dev/null +++ b/src/common/watchedOverrides.js @@ -0,0 +1,27 @@ +const EventEmitter = require('eventemitter3'); + +const events = new EventEmitter(); +const overrides = new Map(); + +module.exports = { + set: (metaId, watched) => { + if (typeof metaId !== 'string') return; + if (watched === null || typeof watched === 'undefined') { + overrides.delete(metaId); + } else { + overrides.set(metaId, !!watched); + } + events.emit('change', metaId, watched); + }, + get: (metaId) => { + return overrides.has(metaId) ? overrides.get(metaId) : null; + }, + clear: (metaId) => { + overrides.delete(metaId); + events.emit('change', metaId, null); + }, + onChange: (cb) => { + events.on('change', cb); + return () => events.off('change', cb); + } +}; diff --git a/src/components/MetaPreview/ActionButton/ActionButton.js b/src/components/MetaPreview/ActionButton/ActionButton.js index 520c0483b..48fd55ff6 100644 --- a/src/components/MetaPreview/ActionButton/ActionButton.js +++ b/src/components/MetaPreview/ActionButton/ActionButton.js @@ -9,8 +9,12 @@ const styles = require('./styles'); const { Tooltip } = require('stremio/common/Tooltips'); const ActionButton = ({ className, icon, label, tooltip, ...props }) => { + const labelText = typeof label === 'string' ? label : ''; + const hasLabel = !tooltip && label != null; + const wide = !tooltip && (typeof label === 'string' || React.isValidElement(label)); + return ( -