Skip to content

Commit ad06ff7

Browse files
committed
refactor: unify custom elements
1 parent 3f8a2de commit ad06ff7

File tree

5 files changed

+19
-57
lines changed

5 files changed

+19
-57
lines changed

client/components/add-channel-form.js

+2-6
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,12 @@ class AddChannelForm extends HTMLElement {
99
this.unregisterEvents()
1010
}
1111
registerEvents () {
12-
if (this.querySelector('form'))
13-
this.querySelector('form').addEventListener('submit', this.addChannelHandler.bind(this))
12+
this.querySelector('form').addEventListener('submit', this.addChannelHandler.bind(this))
1413
}
1514
unregisterEvents () {
16-
if (this.querySelector('form'))
17-
this.querySelector('form').removeEventListener('submit', this.addChannelHandler.bind(this))
15+
this.querySelector('form').removeEventListener('submit', this.addChannelHandler.bind(this))
1816
}
1917
render () {
20-
this.unregisterEvents()
21-
2218
this.innerHTML = /*html*/`
2319
<form id="add-channel-form">
2420
<div class="flex space-between">

client/components/channels-list.js

+4-21
Original file line numberDiff line numberDiff line change
@@ -9,29 +9,11 @@ class ChannelsList extends HTMLElement {
99
disconnectedCallback () {
1010
this.unregisterEvents()
1111
}
12-
13-
static get observedAttributes() {
14-
return ['data-list'];
15-
}
16-
17-
attributeChangedCallback(name, _, newValue) {
18-
if (name === 'data-list') {
19-
const channels = JSON.parse(newValue).filter(Boolean)
20-
channels.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()))
21-
this.channels = channels
22-
this.render()
23-
}
24-
}
12+
2513
render () {
26-
this.unregisterEvents()
27-
28-
if (this.channels.length === 0) {
29-
this.classList.add('hide')
30-
return this.innerHTML = ``
31-
}
32-
this.classList.remove('hide')
14+
if (this.channels.length === 0) this.classList.add('hide')
15+
else this.classList.remove('hide')
3316

34-
3517
this.innerHTML = /*html*/`
3618
<details class="channels-container">
3719
<summary>Channels</summary>
@@ -42,6 +24,7 @@ class ChannelsList extends HTMLElement {
4224
this.registerEvents()
4325
}
4426
registerEvents() {
27+
4528
const channels = this.querySelectorAll('.channel')
4629
channels.forEach(channel => window.utils.addClickListener(channel, this.channelClick.bind(this)))
4730
}

client/components/search-videos.js

+1-4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ class SearchVideos extends HTMLElement {
55
}
66
connectedCallback () {
77
this.render()
8+
this.registerEvents()
89
}
910
disconnectedCallback () {
1011
this.unregisterEvents()
@@ -18,11 +19,7 @@ class SearchVideos extends HTMLElement {
1819
this.querySelector('input').removeEventListener('keyup', this.searchHandler.bind(this))
1920
}
2021
render () {
21-
this.unregisterEvents()
22-
2322
this.innerHTML = /*html*/`<input type="search" incremental="incremental" id="search" placeholder="Search videos or paste video url" autofocus>`
24-
25-
this.registerEvents()
2623
}
2724
searchHandler (event) {
2825
event.preventDefault()

client/components/video-filters.js

+9-18
Original file line numberDiff line numberDiff line change
@@ -4,38 +4,29 @@ class VideoFilters extends HTMLElement {
44
}
55
connectedCallback () {
66
this.render()
7+
this.registerEvents()
78
}
89
disconnectedCallback () {
910
this.unregisterEvents()
1011
}
1112
registerEvents () {
12-
if (this.querySelector('#show-downloaded-videos'))
13-
this.querySelector('#show-downloaded-videos').addEventListener('click', this.handleDownloadedVideos.bind(this))
14-
if (this.querySelector('#show-summarized-videos'))
15-
this.querySelector('#show-summarized-videos').addEventListener('click', this.handleSummarizedVideos.bind(this))
16-
if (this.querySelector('#show-ignored-videos'))
17-
this.querySelector('#show-ignored-videos').addEventListener('click', this.handleIgnoredVideos.bind(this))
13+
this.querySelector('#show-downloaded-videos').addEventListener('click', this.handleDownloadedVideos.bind(this))
14+
this.querySelector('#show-summarized-videos').addEventListener('click', this.handleSummarizedVideos.bind(this))
15+
this.querySelector('#show-ignored-videos').addEventListener('click', this.handleIgnoredVideos.bind(this))
1816
}
1917
unregisterEvents () {
20-
if (this.querySelector('#show-downloaded-videos'))
21-
this.querySelector('#show-downloaded-videos').removeEventListener('click', this.handleDownloadedVideos.bind(this))
22-
if (this.querySelector('#show-summarized-videos'))
23-
this.querySelector('#show-summarized-videos').removeEventListener('click', this.handleSummarizedVideos.bind(this))
24-
if (this.querySelector('#show-ignored-videos'))
25-
this.querySelector('#show-ignored-videos').removeEventListener('click', this.handleIgnoredVideos.bind(this))
26-
}
27-
render () {
28-
this.unregisterEvents()
29-
18+
this.querySelector('#show-downloaded-videos').removeEventListener('click', this.handleDownloadedVideos.bind(this))
19+
this.querySelector('#show-summarized-videos').removeEventListener('click', this.handleSummarizedVideos.bind(this))
20+
this.querySelector('#show-ignored-videos').removeEventListener('click', this.handleIgnoredVideos.bind(this))
21+
}
22+
render () {
3023
this.innerHTML = /*html*/`
3124
<div id="filters-container" class="flex space-around p-1">
3225
<button id="show-downloaded-videos">Downloaded videos</button>
3326
<button id="show-summarized-videos">Summarized videos</button>
3427
<button id="show-ignored-videos">Ignored videos</button>
3528
</div>
3629
`
37-
38-
this.registerEvents()
3930
}
4031
handleDownloadedVideos(event) {
4132
event.target.classList.toggle('active')

client/components/video-quality-form.js

+3-8
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ class VideoQualityForm extends HTMLElement {
44
}
55
connectedCallback () {
66
this.render()
7+
this.registerEvents()
78

89
window.fetch('/api/video-quality', {
910
method: 'GET'
@@ -18,16 +19,12 @@ class VideoQualityForm extends HTMLElement {
1819
this.unregisterEvents()
1920
}
2021
registerEvents () {
21-
if (this.querySelector('#video-quality'))
22-
this.querySelector('#video-quality').addEventListener('change', this.setVideoQualityHandler.bind(this))
22+
this.querySelector('#video-quality').addEventListener('change', this.setVideoQualityHandler.bind(this))
2323
}
2424
unregisterEvents () {
25-
if (this.querySelector('#video-quality'))
26-
this.querySelector('#video-quality').removeEventListener('change', this.setVideoQualityHandler.bind(this))
25+
this.querySelector('#video-quality').removeEventListener('change', this.setVideoQualityHandler.bind(this))
2726
}
2827
render () {
29-
this.unregisterEvents()
30-
3128
this.innerHTML = /*html*/`
3229
<form>
3330
<div class="flex space-between">
@@ -45,8 +42,6 @@ class VideoQualityForm extends HTMLElement {
4542
</div>
4643
</form>
4744
`
48-
49-
this.registerEvents()
5045
}
5146

5247
setVideoQualityHandler (event) {

0 commit comments

Comments
 (0)