mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-08-06 06:10:54 +00:00
4.7.2
* Fixed: Option to hide `LIVE` indicators on live channel pages. * Fixed: Option to hide Recommended Channels from the Following page. * Fixed: Error when attempting to import a single profile from a full data backup. * Fixed: Incorrect profile names and descriptions being displayed in the profile selector of the FFZ Control Center. * Fixed: Incorrect styling being applied in the profile selector of the FFZ Control Center, making it impossible to determine which profile is currently selected. * Fixed: Enable the babel object rest spread transformation for continued support of certain older web browsers. * Fixed: Tool-tips of certain in-line chat actions not displaying information such as the target user's name or the duration of a timeout.
This commit is contained in:
parent
9fcd7cb90a
commit
9ab57897ef
10 changed files with 51 additions and 16 deletions
3
.babelrc
3
.babelrc
|
@ -2,6 +2,7 @@
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"@babel/plugin-syntax-dynamic-import",
|
"@babel/plugin-syntax-dynamic-import",
|
||||||
"@babel/plugin-proposal-optional-chaining",
|
"@babel/plugin-proposal-optional-chaining",
|
||||||
"@babel/plugin-proposal-nullish-coalescing-operator"
|
"@babel/plugin-proposal-nullish-coalescing-operator",
|
||||||
|
["@babel/plugin-proposal-object-rest-spread", {"loose": true, "useBuiltIns": true}]
|
||||||
]
|
]
|
||||||
}
|
}
|
21
package-lock.json
generated
21
package-lock.json
generated
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "frankerfacez",
|
"name": "frankerfacez",
|
||||||
"version": "4.6.1",
|
"version": "4.7.1",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -304,6 +304,16 @@
|
||||||
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.2.0"
|
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@babel/plugin-proposal-object-rest-spread": {
|
||||||
|
"version": "7.5.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz",
|
||||||
|
"integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@babel/helper-plugin-utils": "^7.0.0",
|
||||||
|
"@babel/plugin-syntax-object-rest-spread": "^7.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@babel/plugin-proposal-optional-chaining": {
|
"@babel/plugin-proposal-optional-chaining": {
|
||||||
"version": "7.2.0",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.2.0.tgz",
|
||||||
|
@ -341,6 +351,15 @@
|
||||||
"@babel/helper-plugin-utils": "^7.0.0"
|
"@babel/helper-plugin-utils": "^7.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@babel/plugin-syntax-object-rest-spread": {
|
||||||
|
"version": "7.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz",
|
||||||
|
"integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@babel/helper-plugin-utils": "^7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@babel/plugin-syntax-optional-chaining": {
|
"@babel/plugin-syntax-optional-chaining": {
|
||||||
"version": "7.2.0",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.2.0.tgz",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "frankerfacez",
|
"name": "frankerfacez",
|
||||||
"author": "Dan Salvato LLC",
|
"author": "Dan Salvato LLC",
|
||||||
"version": "4.7.1",
|
"version": "4.7.2",
|
||||||
"description": "FrankerFaceZ is a Twitch enhancement suite.",
|
"description": "FrankerFaceZ is a Twitch enhancement suite.",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -22,6 +22,7 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.5.5",
|
"@babel/core": "^7.5.5",
|
||||||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.4.4",
|
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.4.4",
|
||||||
|
"@babel/plugin-proposal-object-rest-spread": "^7.5.5",
|
||||||
"@babel/plugin-proposal-optional-chaining": "^7.2.0",
|
"@babel/plugin-proposal-optional-chaining": "^7.2.0",
|
||||||
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
|
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
|
||||||
"@babel/plugin-transform-react-jsx": "^7.3.0",
|
"@babel/plugin-transform-react-jsx": "^7.3.0",
|
||||||
|
|
|
@ -118,7 +118,7 @@ export const msg_delete = {
|
||||||
title: 'Delete Message',
|
title: 'Delete Message',
|
||||||
|
|
||||||
tooltip(data) {
|
tooltip(data) {
|
||||||
return this.i18n.t('chat.actions.delete', "Delete {user.login}'s message", {user: data.user});
|
return this.i18n.t('chat.actions.delete.tooltip', "Delete {user.login}'s message", {user: data.user});
|
||||||
},
|
},
|
||||||
|
|
||||||
click(event, data) {
|
click(event, data) {
|
||||||
|
@ -155,7 +155,7 @@ export const ban = {
|
||||||
},
|
},
|
||||||
|
|
||||||
tooltip(data) {
|
tooltip(data) {
|
||||||
return this.i18n.t('chat.actions.ban', 'Ban {user.login}', {user: data.user});
|
return this.i18n.t('chat.actions.ban.tooltip', 'Ban {user.login}', {user: data.user});
|
||||||
},
|
},
|
||||||
|
|
||||||
click(event, data) {
|
click(event, data) {
|
||||||
|
@ -201,7 +201,7 @@ export const timeout = {
|
||||||
|
|
||||||
tooltip(data) {
|
tooltip(data) {
|
||||||
return this.i18n.t(
|
return this.i18n.t(
|
||||||
'chat.actions.timeout',
|
'chat.actions.timeout.tooltip',
|
||||||
'Timeout {user.login} for {duration,number} second{duration,en_plural}',
|
'Timeout {user.login} for {duration,number} second{duration,en_plural}',
|
||||||
{
|
{
|
||||||
user: data.user,
|
user: data.user,
|
||||||
|
@ -261,7 +261,7 @@ export const untimeout = {
|
||||||
title: 'Untimeout User',
|
title: 'Untimeout User',
|
||||||
|
|
||||||
tooltip(data) {
|
tooltip(data) {
|
||||||
return this.i18n.t('chat.actions.untimeout', 'Untimeout {user.login}', {user: data.user});
|
return this.i18n.t('chat.actions.untimeout.tooltip', 'Untimeout {user.login}', {user: data.user});
|
||||||
},
|
},
|
||||||
|
|
||||||
click(event, data) {
|
click(event, data) {
|
||||||
|
@ -287,7 +287,7 @@ export const whisper = {
|
||||||
title: 'Whisper User',
|
title: 'Whisper User',
|
||||||
|
|
||||||
tooltip(data) {
|
tooltip(data) {
|
||||||
return this.i18n.t('chat.actions.whisper', 'Whisper {user.login}', data);
|
return this.i18n.t('chat.actions.whisper.tooltip', 'Whisper {user.login}', data);
|
||||||
},
|
},
|
||||||
|
|
||||||
click(event, data) {
|
click(event, data) {
|
||||||
|
|
|
@ -307,8 +307,9 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
importProfile(profile_data, data) {
|
importProfile(profile_data, data) {
|
||||||
if ( profile_data.url ) {
|
|
||||||
this.import_profile = profile_data;
|
this.import_profile = profile_data;
|
||||||
|
|
||||||
|
if ( profile_data.url ) {
|
||||||
this.import_profile_data = data;
|
this.import_profile_data = data;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -327,6 +328,12 @@ export default {
|
||||||
|
|
||||||
const prof = this.context.createProfile(profile_data);
|
const prof = this.context.createProfile(profile_data);
|
||||||
|
|
||||||
|
prof.update({
|
||||||
|
i18n_key: undefined,
|
||||||
|
desc_i18n_key: undefined,
|
||||||
|
description: `${prof.description ? prof.description + '\n' : ''}${this.t('setting.backup-restore.imported-at', 'Imported at {now,datetime}.', {now: new Date})}`
|
||||||
|
});
|
||||||
|
|
||||||
let i = 0;
|
let i = 0;
|
||||||
|
|
||||||
if ( ! data ) {
|
if ( ! data ) {
|
||||||
|
|
|
@ -61,9 +61,9 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<h4>{{ t(p.i18n_key, p.title, p) }}</h4>
|
<h4>{{ p.i18n_key ? t(p.i18n_key, p.title, p) : p.title }}</h4>
|
||||||
<div v-if="p.description" class="description">
|
<div v-if="p.description" class="description">
|
||||||
{{ t(p.desc_i18n_key, p.description, p) }}
|
{{ p.desc_i18n_key ? t(p.desc_i18n_key, p.description, p) : p.description }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -63,12 +63,12 @@ export default class MainMenu extends Module {
|
||||||
});
|
});
|
||||||
|
|
||||||
this.settings.addUI('faq', {
|
this.settings.addUI('faq', {
|
||||||
path: 'Home > FAQ',
|
path: 'Home > FAQ @{"profile_warning": false}',
|
||||||
component: 'faq-page'
|
component: 'faq-page'
|
||||||
});
|
});
|
||||||
|
|
||||||
this.settings.addUI('feedback', {
|
this.settings.addUI('feedback', {
|
||||||
path: 'Home > Feedback',
|
path: 'Home > Feedback @{"profile_warning": false}',
|
||||||
component: 'feedback-page'
|
component: 'feedback-page'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ export default class MainMenu extends Module {
|
||||||
})
|
})
|
||||||
|
|
||||||
this.settings.addUI('changelog', {
|
this.settings.addUI('changelog', {
|
||||||
path: 'Home > Changelog',
|
path: 'Home > Changelog @{"profile_warning": false}',
|
||||||
component: 'changelog'
|
component: 'changelog'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ const CLASSES = {
|
||||||
'dir-live-ind': '.live-channel-card:not([data-a-target*="host"]) .stream-type-indicator.stream-type-indicator--live,.stream-thumbnail__card .stream-type-indicator.stream-type-indicator--live,.preview-card .stream-type-indicator.stream-type-indicator--live,.preview-card .preview-card-stat.preview-card-stat--live',
|
'dir-live-ind': '.live-channel-card:not([data-a-target*="host"]) .stream-type-indicator.stream-type-indicator--live,.stream-thumbnail__card .stream-type-indicator.stream-type-indicator--live,.preview-card .stream-type-indicator.stream-type-indicator--live,.preview-card .preview-card-stat.preview-card-stat--live',
|
||||||
'profile-hover': '.preview-card .tw-relative:hover .ffz-channel-avatar',
|
'profile-hover': '.preview-card .tw-relative:hover .ffz-channel-avatar',
|
||||||
'not-live-bar': 'div[data-test-selector="non-live-video-banner-layout"]',
|
'not-live-bar': 'div[data-test-selector="non-live-video-banner-layout"]',
|
||||||
'channel-live-ind': 'div[data-target="channel-header__live-indicator"]'
|
'channel-live-ind': '.channel-header__user .tw-channel-status-text-indicator'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ export default class Directory extends SiteModule {
|
||||||
|
|
||||||
this.DirectoryShelf = this.fine.define(
|
this.DirectoryShelf = this.fine.define(
|
||||||
'directory-shelf',
|
'directory-shelf',
|
||||||
n => n.getShelfTitle && n.props && n.props.shelf,
|
n => n.shouldRenderNode && n.props && n.props.shelf,
|
||||||
DIR_ROUTES
|
DIR_ROUTES
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,9 @@
|
||||||
outline: none;
|
outline: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
|
border-left: 4px solid;
|
||||||
|
border-left-color: transparent;
|
||||||
|
|
||||||
&.live .ffz--profile-row__icon {
|
&.live .ffz--profile-row__icon {
|
||||||
color: green;
|
color: green;
|
||||||
}
|
}
|
||||||
|
@ -28,6 +31,10 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.current {
|
||||||
|
border-left-color: #6441a4;
|
||||||
|
}
|
||||||
|
|
||||||
.description {
|
.description {
|
||||||
opacity: .7;
|
opacity: .7;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue