mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-06-27 21:05:53 +00:00
4.21.3
* Fixed: When built-in volume control is being replaced with gain control, automatically unmute the player when adjusting the gain control. * Fixed: Issue with the webpack compatibility module not correctly flagging modules as available.
This commit is contained in:
parent
b685ed3ce7
commit
7d040066c4
3 changed files with 42 additions and 8 deletions
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "frankerfacez",
|
||||
"author": "Dan Salvato LLC",
|
||||
"version": "4.21.2",
|
||||
"version": "4.21.3",
|
||||
"description": "FrankerFaceZ is a Twitch enhancement suite.",
|
||||
"private": true,
|
||||
"license": "Apache-2.0",
|
||||
|
|
|
@ -875,6 +875,7 @@ export default class PlayerBase extends Module {
|
|||
cls.prototype.ffzScrollHandler = function(event) {
|
||||
const vol_scroll = t.settings.get('player.volume-scroll'),
|
||||
gain_scroll = t.settings.get('player.gain.scroll'),
|
||||
no_vol = t.settings.get('player.gain.no-volume'),
|
||||
|
||||
matches_gain = gain_scroll && matchesEvent(gain_scroll, event, this.ffz_rmb),
|
||||
matches_vol = vol_scroll && matchesEvent(vol_scroll, event, this.ffz_rmb);
|
||||
|
@ -915,9 +916,15 @@ export default class PlayerBase extends Module {
|
|||
value = max;
|
||||
|
||||
video._ffz_gain_value = value;
|
||||
|
||||
if ( no_vol && value !== 0 ) {
|
||||
player.setMuted(false);
|
||||
localStorage.setItem('video-muted', JSON.stringify({default: false}));
|
||||
}
|
||||
|
||||
t.updateGain(this);
|
||||
|
||||
} else if ( matches_vol && ! (video._ffz_compressed && t.settings.get('player.gain.no-volume')) ) {
|
||||
} else if ( matches_vol && ! (video._ffz_compressed && no_vol) ) {
|
||||
const old_volume = video?.volume ?? player.getVolume(),
|
||||
volume = Math.max(0, Math.min(1, old_volume + (delta > 0 ? amount : -amount)));
|
||||
|
||||
|
@ -1135,7 +1142,7 @@ export default class PlayerBase extends Module {
|
|||
if ( min >= max || max <= min )
|
||||
gain = null;
|
||||
|
||||
let tip, input, extra, fill, cont = container.querySelector('.ffz--player-gain');
|
||||
let tip, tipcont, input, extra, fill, cont = container.querySelector('.ffz--player-gain');
|
||||
if ( ! gain ) {
|
||||
if ( cont )
|
||||
cont.remove();
|
||||
|
@ -1154,6 +1161,17 @@ export default class PlayerBase extends Module {
|
|||
if ( value > max )
|
||||
value = max;
|
||||
|
||||
if ( value == video._ffz_gain_value )
|
||||
return;
|
||||
|
||||
const player = inst.props.mediaPlayerInstance,
|
||||
core = player.core || player;
|
||||
|
||||
if ( value > 0 && this.settings.get('player.gain.no-volume') && core?.isMuted?.() ) {
|
||||
core.setMuted(false);
|
||||
localStorage.setItem('video-muted', JSON.stringify({default: false}));
|
||||
}
|
||||
|
||||
video._ffz_gain_value = value;
|
||||
gain.gain.value = value;
|
||||
|
||||
|
@ -1187,12 +1205,12 @@ export default class PlayerBase extends Module {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tw-tooltip tw-tooltip--align-center tw-tooltip--up" role="tooltip">
|
||||
{tipcont = (<div class="tw-tooltip tw-tooltip--align-center tw-tooltip--up" role="tooltip">
|
||||
<div>
|
||||
{tip = (<div class="ffz--p-tip" />)}
|
||||
{extra = (<div class="tw-regular ffz--p-value" />)}
|
||||
</div>
|
||||
</div>
|
||||
</div>)}
|
||||
</div>);
|
||||
|
||||
/*input.addEventListener('contextmenu', e => {
|
||||
|
@ -1208,6 +1226,7 @@ export default class PlayerBase extends Module {
|
|||
else {
|
||||
input = cont.querySelector('input');
|
||||
fill = cont.querySelector('.ffz--gain-value');
|
||||
tipcont = cont.querySelector('.tw-tooltip');
|
||||
tip = cont.querySelector('.tw-tooltip .ffz--p-tip');
|
||||
extra = cont.querySelector('.tw-tooltip .ffz--p-value');
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ const regex_cache = {};
|
|||
|
||||
function getRequireRegex(name) {
|
||||
if ( ! regex_cache[name] )
|
||||
regex_cache[name] = new RegExp(`\\b${name}\\(([0-9a-zA-Z_+]+)\\)`, 'g');
|
||||
regex_cache[name] = new RegExp(`\\b${name}\\(([0-9e_+]+)\\)`, 'g');
|
||||
|
||||
return regex_cache[name];
|
||||
}
|
||||
|
@ -511,12 +511,27 @@ export default class WebMunch extends Module {
|
|||
regex.lastIndex = 0;
|
||||
let match;
|
||||
|
||||
// Here, we check all the modules this module depends on
|
||||
// so that we don't require a module with missing requirements
|
||||
// because webpack sucks.
|
||||
while((match = regex.exec(str))) {
|
||||
const mod_id = match[1];
|
||||
let mod_id = match[1];
|
||||
if ( mod_id === 'e' )
|
||||
continue;
|
||||
|
||||
// Modules are all numbers, but some are written in e notation.
|
||||
// We need to correct that for string comparison.
|
||||
if ( /^\d+e\d+$/.test(mod_id) ) {
|
||||
const bits = mod_id.split('e');
|
||||
mod_id = `${parseInt(bits[0], 10) * (10 ** parseInt(bits[1], 10))}`;
|
||||
}
|
||||
|
||||
reqs.add(mod_id);
|
||||
|
||||
if ( ! this._require.m[mod_id] )
|
||||
if ( ! banned && ! this._require.m[mod_id] ) {
|
||||
this.log.verbose(`Unable to load module ${id} due to missing dependency ${mod_id}`);
|
||||
banned = true;
|
||||
}
|
||||
}
|
||||
|
||||
} else
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue