1
0
Fork 0
mirror of https://github.com/FrankerFaceZ/FrankerFaceZ.git synced 2025-09-17 10:16:57 +00:00

4.0.0-rc14.2

* Added: Social media buttons to the FFZ Control Center.
* Fixed: Check boxes in settings UI.
* Fixed: Use word wrap for usernames in grouped mass gift sub messages.
* Fixed: Bug with tab completion breaking chat if Twitch's tab completion handler returns null.
This commit is contained in:
SirStendec 2019-02-12 17:39:54 -05:00
parent e9d99f0e1c
commit d1cd145b8a
19 changed files with 197 additions and 47 deletions

View file

@ -149,7 +149,7 @@ ${typeof x[1] === 'string' ? x[1] : JSON.stringify(x[1], null, 4)}`
FrankerFaceZ.Logger = Logger;
const VER = FrankerFaceZ.version_info = {
major: 4, minor: 0, revision: 0, extra: '-rc14.1',
major: 4, minor: 0, revision: 0, extra: '-rc14.2',
commit: __git_commit__,
build: __webpack_hash__,
toString: () =>

View file

@ -70,7 +70,36 @@ const FFZ_ICONS = [
'clock',
'eye',
'eye-off',
'trash'
'trash',
'discord',
'star',
'star-empty',
'twitch',
'twitter',
'download',
'upload',
'download-cloud',
'upload-cloud',
'tag',
'tags',
'retweet',
'thumbs-up',
'thumbs-down',
'bell',
'bell-off',
'pencil',
'info',
'help',
'calendar',
'lock',
'lock-open',
'arrows-cw',
'pin',
'pin-outline',
'gift',
'eyedropper',
'github',
'user-secret'
];
const FFZ_ALIASES = {

View file

@ -35,7 +35,7 @@
v-for="i in sort(sec.badges)"
:key="i.id"
:class="{default: badgeDefault(i.id)}"
class="ffz--badge-info tw-pd-y-1 tw-pd-r-1 tw-flex"
class="ffz--badge-info tw-pd-y-1 tw-pd-r-1 tw-flex tw-checkbox"
>
<input
:checked="badgeChecked(i.id)"

View file

@ -12,7 +12,7 @@
<div class="tw-flex tw-align-items-center ffz--inline">
{{ t('setting.actions.preview', 'Preview:') }}
<div class="tw-pd-x-1">
<div class="tw-pd-x-1 tw-checkbox">
<input
id="as_mod"
ref="as_mod"
@ -27,7 +27,7 @@
</label>
</div>
<div v-if="item.inline" class="tw-pd-x-1">
<div v-if="item.inline" class="tw-pd-x-1 tw-checkbox">
<input
id="is_deleted"
ref="is_deleted"
@ -42,7 +42,7 @@
</label>
</div>
<div v-if="item.inline" class="tw-pd-x-1">
<div v-if="item.inline" class="tw-pd-x-1 tw-checkbox">
<input
id="with_mod_icons"
ref="with_mod_icons"
@ -57,7 +57,7 @@
</label>
</div>
<div class="tw-pd-x-1">
<div class="tw-pd-x-1 tw-checkbox">
<input
id="show_all"
ref="show_all"

View file

@ -53,6 +53,42 @@
</div>
<div class="tw-mg-l-1 tw-flex-shrink-0 tweet-column">
<div class="tw-flex tw-mg-b-1">
<a
:data-title="t('home.website', 'FrankerFaceZ Website')"
class="tw-flex-grow-1 tw-button ffz-tooltip ffz--ffz-button tw-mg-r-1"
href="https://www.frankerfacez.com/"
target="_blank"
rel="noopener"
>
<span class="tw-button__icon tw-pd-05">
<figure class="ffz-i-zreknarf tw-font-size-3" />
</span>
</a>
<a
:data-title="t('home.discord', 'Discord')"
class="tw-flex-grow-1 tw-button ffz-tooltip ffz--discord-button tw-mg-r-1"
href="https://discord.gg/UrAkGhT"
target="_blank"
rel="noopener noreferrer"
>
<span class="tw-button__icon tw-pd-05-1">
<figure class="ffz-i-discord tw-font-size-3" />
</span>
</a>
<a
:data-title="t('home.twitter', 'Twitter')"
class="tw-flex-grow-1 tw-button ffz-tooltip ffz--twitter-button"
href="https://twitter.com/frankerfacez"
target="_blank"
rel="noopener noreferrer"
>
<span class="tw-button__icon tw-pd-05">
<figure class="ffz-i-twitter tw-font-size-3" />
</span>
</a>
</div>
<a class="twitter-timeline" data-width="300" data-theme="dark" href="https://twitter.com/FrankerFaceZ?ref_src=twsrc%5Etfw">
Tweets by FrankerFaceZ
</a>

View file

@ -3,7 +3,7 @@
:class="{inherits: isInherited, default: isDefault}"
class="ffz--widget ffz--checkbox"
>
<div class="tw-flex tw-align-items-center">
<div class="tw-flex tw-align-items-center tw-checkbox">
<input
ref="control"
:id="item.full_key"
@ -27,12 +27,14 @@
</span>
</button>
<button v-if="has_value" class="tw-mg-l-05 tw-button tw-button--text tw-tooltip-wrapper" @click="clear">
<span class="tw-button__text ffz-i-cancel" />
<div class="tw-tooltip tw-tooltip--down tw-tooltip--align-right">
{{ t('setting.reset', 'Reset to Default') }}
</div>
</button>
<div class="ffz--reset-button">
<button v-if="has_value" class="tw-mg-l-05 tw-button tw-button--text tw-tooltip-wrapper" @click="clear">
<span class="tw-button__text ffz-i-cancel" />
<div class="tw-tooltip tw-tooltip--down tw-tooltip--align-right">
{{ t('setting.reset', 'Reset to Default') }}
</div>
</button>
</div>
</div>
<section
v-if="item.description"

View file

@ -425,7 +425,7 @@ export default class ChatLine extends Module {
the_list.push(e('span', {
role: 'button',
className: 'chatter-name',
className: 'ffz--giftee-name',
onClick: this.ffz_user_click_handler,
'data-user': JSON.stringify(x)
}, e('span', {
@ -453,7 +453,7 @@ export default class ChatLine extends Module {
sub_msg
]),
mystery ? e('div', {
className: 'tw-mg-l-05 tw-border-l tw-pd-l-05 ffz--sub-expando'
className: 'tw-pd-l-05 tw-font-size-4'
}, e('figure', {
className: `ffz-i-${this.state.ffz_expanded ? 'down' : 'right'}-dir tw-pd-y-1`
})) : null

View file

@ -115,31 +115,38 @@ export default class TabCompletion extends Module {
inst.getMatchedEmotes = function(input) {
let results = old_get_matched.call(this, input);
if ( t.chat.context.get('chat.tab-complete.ffz-emotes') )
results = results.concat(t.getEmoteSuggestions(input, this));
if ( t.chat.context.get('chat.tab-complete.ffz-emotes') ) {
const ffz_emotes = t.getEmoteSuggestions(input, this);
if ( Array.isArray(ffz_emotes) && ffz_emotes.length )
results = Array.isArray(results) ? results.concat(ffz_emotes) : ffz_emotes;
}
if ( ! t.chat.context.get('chat.tab-complete.emoji') )
return results;
return results.concat(t.getEmojiSuggestions(input, this));
const emoji = t.getEmojiSuggestions(input, this);
if ( Array.isArray(emoji) && emoji.length )
results = Array.isArray(results) ? results.concat(emoji) : emoji;
return results;
}
const React = this.web_munch.getModule('react'),
createElement = React && React.createElement;
inst.renderFFZEmojiSuggestion = function(data) {
return [
return (<React.Fragment>
<div class="tw-pd-r-05">
<img
class="emote-autocomplete-provider__image ffz-emoji"
src={data.src}
srcSet={data.srcset}
/>
</div>,
</div>
<div>
{data.token}
</div>
]
</React.Fragment>);
}
}

View file

@ -66,7 +66,7 @@
<div class="simplebar-content">
<div class="tw-pd-1">
<div class="ffz--widget ffz--checkbox">
<div class="tw-flex tw-align-items-center">
<div class="tw-flex tw-align-items-center tw-checkbox">
<input
id="autoHostSettings:enabled"
:checked="autoHostSettings.enabled"
@ -85,7 +85,7 @@
</section>
</div>
<div class="ffz--widget ffz--checkbox">
<div class="tw-flex tw-align-items-center">
<div class="tw-flex tw-align-items-center tw-checkbox">
<input
id="autoHostSettings:team_host"
:checked="autoHostSettings.team_host"
@ -105,7 +105,7 @@
</section>
</div>
<div class="ffz--widget ffz--checkbox">
<div class="tw-flex tw-align-items-center">
<div class="tw-flex tw-align-items-center tw-checkbox">
<input
id="autoHostSettings:vodcast_hosting"
:checked="!autoHostSettings.deprioritize_vodcast"
@ -124,7 +124,7 @@
</section>
</div>
<div class="ffz--widget ffz--checkbox">
<div class="tw-flex tw-align-items-center">
<div class="tw-flex tw-align-items-center tw-checkbox">
<input
id="autoHostSettings:recommended_host"
:checked="autoHostSettings.recommended_host"
@ -142,7 +142,7 @@
</section>
</div>
<div class="ffz--widget ffz--checkbox">
<div class="tw-flex tw-align-items-center">
<div class="tw-flex tw-align-items-center tw-checkbox">
<input
id="autoHostSettings:strategy"
:checked="autoHostSettings.strategy === 'random'"

View file

@ -12,11 +12,6 @@
pointer-events: none;
}
.ffz--sub-expando {
font-size: 150%;
margin-right: -.5rem;
}
.chat-list__lines .simplebar-scrollbar {
will-change: opacity;
}
@ -128,7 +123,17 @@
}
.chat-line__username:hover {
.ffz--giftee-name {
cursor: pointer;
outline: none;
&:hover {
text-decoration: underline;
}
}
.chat-line__username:hover,
.chatter-name:hover {
text-decoration: underline;
}