2017-11-13 01:23:39 -05:00
< template lang = "html" >
2018-03-30 17:58:56 -04:00
< div class = "ffz--home tw-flex tw-flex-nowrap" >
< div class = "tw-flex-grow-1" >
< div class = "tw-align-center" >
2019-09-26 16:38:55 -04:00
< h2 class = "ffz-i-zreknarf ffz-i-pd-1" >
2019-06-20 15:15:54 -04:00
FrankerFaceZ
2019-09-26 16:38:55 -04:00
< / h2 >
2018-03-30 17:58:56 -04:00
< span class = "tw-c-text-alt" >
{ { t ( 'home.tag-line' , 'The Twitch Enhancement Suite' ) } }
< / span >
< / div >
< section class = "tw-pd-t-1 tw-border-t tw-mg-t-1" >
2019-05-03 19:30:46 -04:00
< markdown : source = "t('home.about', md)" / >
2018-03-30 17:58:56 -04:00
< / section >
2021-03-12 20:16:39 -05:00
< div
v - if = "unseen"
class = "tw-pd-t-1 tw-border-t tw-mg-t-1"
>
< h3 class = "tw-pd-b-05" >
{ { t ( 'home.new-settings' , 'New Settings' ) } }
< / h3 >
< div class = "tw-pd-b-1" >
{ { t ( 'home.new-settings.desc' , 'These are settings that you haven\'t looked at yet.' ) } }
< / div >
< div
v - for = "cat of unseen"
: key = "cat.key"
class = "tw-mg-b-05"
>
< a
class = "tw-strong"
href = "#"
@ click . prevent = "item.requestPage(cat.key)"
>
< span
v - for = "(tk,idx) of cat.tokens"
: key = "idx"
>
{ { tk . i18n ? t ( tk . i18n , tk . title ) : tk . title } }
< / span >
< / a >
< div
v - for = "entry of cat.entries"
: key = "entry.key"
class = "tw-mg-l-2"
>
{ { entry . i18n ? t ( entry . i18n , entry . title ) : entry . title } }
< / div >
< / div >
< / div >
< div
v - if = "addons"
class = "tw-pd-t-1 tw-border-t tw-mg-t-1"
>
< h3 class = "tw-pd-b-05" >
{ { t ( 'home.addon-updates' , 'Updated Add-Ons' ) } }
< / h3 >
< div class = "tw-pd-b-1" >
< markdown : source = "t('home.addon-updates.desc', 'These add-ons have updated within the past seven days. Check the [changelog](~add_ons.changelog) to see what\'s changed.')" / >
< / div >
< div
v - for = "addon of addons"
: key = "addon.key"
class = "tw-mg-b-05 tw-flex tw-align-items-center"
>
2021-04-01 12:05:29 -04:00
< div class = "ffz-card-img--size-4 tw-overflow-hidden tw-mg-r-1" >
2021-03-12 20:16:39 -05:00
< img :src = "addon.icon" class = "tw-image" >
< / div >
< div >
< a
v - if = "addon.enabled && addon.settings"
href = "#"
2021-04-01 12:05:29 -04:00
class = "tw-strong ffz-link--inherit"
2021-03-12 20:16:39 -05:00
@ click . prevent = "item.requestPage(addon.settings)"
>
{ { addon . name _i18n ? t ( addon . name _i18n , addon . name ) : addon . name } }
< / a >
< div v -else class = "tw-strong" >
{ { addon . name _i18n ? t ( addon . name _i18n , addon . name ) : addon . name } }
< / div >
< div class = "tw-c-text-alt" >
< span class = "tw-mg-r-1" >
{ { t ( 'addon.version' , 'Version {version}' , addon ) } }
< / span >
< span >
{ { t ( 'addon.updated' , 'Updated: {when,humantime}' , { when : addon . updated } ) } }
< / span >
< / div >
< / div >
< / div >
< / div >
< div
v - if = "new_addons"
class = "tw-pd-t-1 tw-border-t tw-mg-t-1"
>
< h3 class = "tw-pd-b-05" >
{ { t ( 'home.addon-new' , 'New Add-Ons' ) } }
< / h3 >
< div class = "tw-pd-b-1" >
< markdown : source = "t('home.addon-new.desc', 'These add-ons were published within the past seven days. Check them out in [Add-Ons](~add_ons).')" / >
< / div >
< div
v - for = "addon of new_addons"
: key = "addon.key"
class = "tw-mg-b-05 tw-flex tw-align-items-center"
>
2021-04-01 12:05:29 -04:00
< div class = "ffz-card-img--size-4 tw-overflow-hidden tw-mg-r-1" >
2021-03-12 20:16:39 -05:00
< img :src = "addon.icon" class = "tw-image" >
< / div >
< div >
< a
v - if = "addon.enabled && addon.settings"
href = "#"
2021-04-01 12:05:29 -04:00
class = "tw-strong ffz-link--inherit"
2021-03-12 20:16:39 -05:00
@ click . prevent = "item.requestPage(addon.settings)"
>
{ { addon . name _i18n ? t ( addon . name _i18n , addon . name ) : addon . name } }
< / a >
< div v -else class = "tw-strong" >
{ { addon . name _i18n ? t ( addon . name _i18n , addon . name ) : addon . name } }
< / div >
< div class = "tw-c-text-alt" >
< span class = "tw-mg-r-1" >
{ { t ( 'addon.version' , 'Version {version}' , addon ) } }
< / span >
< span >
{ { t ( 'addon.updated' , 'Updated: {when,humantime}' , { when : addon . updated } ) } }
< / span >
< / div >
< / div >
< / div >
< / div >
2018-03-30 17:58:56 -04:00
< / div >
< div class = "tw-mg-l-1 tw-flex-shrink-0 tweet-column" >
2019-02-12 17:39:54 -05:00
< 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')"
2021-03-12 20:16:39 -05:00
class = "tw-flex-grow-1 tw-button ffz-tooltip ffz--twitter-button tw-mg-r-1"
2019-02-12 17:39:54 -05:00
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 >
2021-03-12 20:16:39 -05:00
< a
: data - title = "t('home.github', 'GitHub')"
class = "tw-flex-grow-1 tw-button ffz-tooltip ffz--github-button"
href = "https://github.com/FrankerFaceZ/FrankerFaceZ"
target = "_blank"
rel = "noopener noreferrer"
>
< span class = "tw-button__icon tw-pd-05" >
< figure class = "ffz-i-github tw-font-size-3" / >
< / span >
< / a >
2019-02-12 17:39:54 -05:00
< / div >
2021-03-12 20:16:39 -05:00
< a
: data - theme = "theme"
class = "twitter-timeline"
data - width = "300"
href = "https://twitter.com/FrankerFaceZ?ref_src=twsrc%5Etfw"
>
2019-05-03 19:30:46 -04:00
{ { t ( 'home.tweets' , 'Tweets by FrankerFaceZ' ) } }
2018-03-30 17:58:56 -04:00
< / a >
< / div >
2017-11-13 01:23:39 -05:00
< / div >
< / template >
< script >
2019-05-03 19:30:46 -04:00
import HOME _MD from '../home.md' ;
2017-11-13 01:23:39 -05:00
import { createElement as e } from 'utilities/dom' ;
export default {
props : [ 'item' , 'context' ] ,
2019-05-03 19:30:46 -04:00
data ( ) {
return {
2021-03-12 20:16:39 -05:00
md : HOME _MD ,
theme : '' ,
addons : null ,
new _addons : null ,
unseen : this . item . getUnseen ( )
2019-05-03 19:30:46 -04:00
}
} ,
2021-03-12 20:16:39 -05:00
created ( ) {
this . updateAddons ( ) ;
this . updateTheme ( ) ;
this . context . context . on ( 'changed:theme.is-dark' , this . updateTheme , this ) ;
const ffz = this . context . getFFZ ( ) ;
ffz . on ( 'main_menu:update-unseen' , this . updateUnseen , this ) ;
ffz . on ( 'addons:data-loaded' , this . updateAddons , this ) ;
} ,
beforeDestroy ( ) {
this . context . context . off ( 'changed:theme.is-dark' , this . updateTheme , this ) ;
const ffz = this . context . getFFZ ( ) ;
ffz . off ( 'main_menu:update-unseen' , this . updateUnseen , this ) ;
ffz . off ( 'addons:data-loaded' , this . updateAddons , this ) ;
} ,
2017-11-13 01:23:39 -05:00
mounted ( ) {
let el ;
document . head . appendChild ( el = e ( 'script' , {
id : 'ffz--twitter-widget-script' ,
async : true ,
charset : 'utf-8' ,
src : 'https://platform.twitter.com/widgets.js' ,
2017-12-01 15:36:18 -05:00
onLoad : ( ) => el . remove ( )
2017-11-13 01:23:39 -05:00
} ) ) ;
2021-03-12 20:16:39 -05:00
} ,
2017-11-13 01:23:39 -05:00
2021-03-12 20:16:39 -05:00
methods : {
updateUnseen ( ) {
this . unseen = this . item . getUnseen ( ) ;
} ,
updateAddons ( ) {
const ffz = this . context . getFFZ ( ) ,
addon _module = ffz . resolve ( 'addons' ) ,
addons = addon _module ? . addons ;
const out = [ ] ,
new _out = [ ] ,
week _ago = Date . now ( ) - ( 86400 * 7 * 1000 ) ;
if ( addons )
for ( const [ key , addon ] of Object . entries ( addons ) ) {
const enabled = addon _module . isAddonEnabled ( key ) ,
2021-05-07 18:22:55 -04:00
is _new = addon . created && addon . created >= week _ago ,
is _updated = enabled && addon . updated && addon . updated >= week _ago ;
if ( ! is _updated && ! ( is _new && ! enabled && ! addon . unlisted ) )
continue ;
const copy = {
key ,
enabled ,
icon : addon . icon ,
name : addon . name ,
name _i18n : addon . name _i18n ,
updated : addon . updated ,
settings : addon . settings ,
version : addon . version
} ;
if ( is _new )
2021-03-12 20:16:39 -05:00
new _out . push ( copy ) ;
2021-05-07 18:22:55 -04:00
if ( is _updated )
2021-03-12 20:16:39 -05:00
out . push ( copy ) ;
}
out . sort ( ( a , b ) => b . updated - a . updated ) ;
new _out . sort ( ( a , b ) => b . created - a . created ) ;
this . addons = out . length ? out : null ;
this . new _addons = new _out . length ? new _out : null ;
} ,
updateTheme ( ) {
this . theme = this . context . context . get ( 'theme.is-dark' ) ? 'dark' : 'light'
}
2017-11-13 01:23:39 -05:00
}
}
< / script >