[READ-ONLY] Mirror of https://github.com/probablykasper/yt-email-notifier. macOS menubar app for YouTube upload notification emails
email menubar notifications tray youtube
0

Configure Feed

Select the types of activity you want to include in your feed.

Ability to edit email and refresh interval

Kasper (Aug 29, 2020, 3:16 AM +0200) 378f30a0 09a95585

+45
+6
src/server.js
··· 333 333 }) 334 334 storeUpdate() 335 335 336 + } else if (type === 'editEmail') { 337 + const instance = store.instances[data.instanceIndex] 338 + instance.email = data.email 339 + instance.minutesBetweenRefreshes = data.minutesBetweenRefreshes 340 + storeUpdate() 341 + 336 342 } else if (type === 'addChannel') { 337 343 const segments = data.channel.split('/') 338 344 const channelIdSegment = segments.indexOf('channel') + 1
+17
src/web/index.html
··· 70 70 </div> 71 71 </div> 72 72 73 + <div id='edit-email-modal' class="modal"> 74 + <div class="modal-background" onclick="$('#edit-email-modal').removeClass('is-active')"></div> 75 + <div class="modal-content box px-6 py-5"> 76 + <form id='edit-email-form'> 77 + <h1 class='title is-size-4'><b>Edit email</b></h1> 78 + <label class='label'>Email</label> 79 + <input id='edit-email-input' class="input mb-5" type="email" placeholder="Email" required> 80 + <label class='label'>Minutes between refreshes</label> 81 + <input id='edit-email-minutes-input' class="input mb-5" type="number" placeholder="60" required> 82 + <button type="submit" class="button is-success">Save</button> 83 + <div class="button" onclick="$('#edit-email-modal').removeClass('is-active')">Cancel</div> 84 + </form> 85 + </div> 86 + </div> 87 + 73 88 <div id='setup-modal' class="modal"> 74 89 <div class="modal-background" onclick="$('#setup-modal').removeClass('is-active')"></div> 75 90 <div class="modal-content box px-6 py-5"> ··· 101 116 <div class="buttons field"> 102 117 <button class='button' onclick="$('#setup-modal').addClass('is-active')">Setup</button> 103 118 <button class='button is-primary' onclick="$('#new-email-modal').addClass('is-active')">Add email</button> 119 + <button class='button is-dark' onclick="$('#edit-email-modal').addClass('is-active')">Edit email</button> 104 120 <button class='button is-link' onclick="$('#add-channel-modal').addClass('is-active')">Add channel</button> 105 121 </div> 106 122 </section> ··· 108 124 {{#each instances}} 109 125 <h2 class="title is-3">{{this.email}}</h2> 110 126 <p>Minutes between refreshes: {{this.minutesBetweenRefreshes}}</p> 127 + <p><a class='edit-email-button' data-instance='{{@index}}'>Edit</a></p> 111 128 <br> 112 129 <h5 class='title is-5'>Channels:</h5> 113 130 <table class="table is-fullwidth is-hoverable mb-3">
+22
src/web/index.js
··· 46 46 return false 47 47 }) 48 48 49 + let editInstanceIndex 50 + $('.edit-email-button').click((e) => { 51 + const instanceIndex = Number(e.target.dataset.instance) 52 + editInstanceIndex = instanceIndex 53 + const instance = data.instances[instanceIndex] 54 + $('#edit-email-input').val(instance.email) 55 + $('#edit-email-minutes-input').val(instance.minutesBetweenRefreshes) 56 + $('#edit-email-modal').addClass('is-active') 57 + }) 58 + $('#edit-email-form').submit((e) => { 59 + e.preventDefault() 60 + if (typeof editInstanceIndex === 'number') { 61 + window.a('editEmail', { 62 + instanceIndex: editInstanceIndex, 63 + email: $('#edit-email-input').val(), 64 + minutesBetweenRefreshes: $('#edit-email-minutes-input').val() || 60, 65 + }) 66 + } 67 + $('#edit-email-modal').removeClass('is-active') 68 + return false 69 + }) 70 + 49 71 const datetime = $('#add-channel-datetime') 50 72 datetime.val(new Date().toLocaleString()) 51 73 $('#add-channel-form').submit((e) => {