WebApp to follow people on 9gag, sorted via last visited
https://luna-development.net/9follow/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
3.4 KiB
99 lines
3.4 KiB
let app = new Vue({ |
|
el: '#app', |
|
data: { |
|
userNameToAdd: '', |
|
nameForList: '', |
|
followedAccounts: [] |
|
}, |
|
methods: { |
|
followAccount() { |
|
let userName = this.userNameToAdd; |
|
|
|
if (userName.length <= 0) { |
|
this.showToast('Username is needed.', 'red'); |
|
return false; |
|
} |
|
|
|
this.followedAccounts.push({ |
|
name: (this.nameForList.length > 0) ? this.nameForList : this.userNameToAdd, |
|
url: 'https://9gag.com/u/' + userName + '/', |
|
lastVisited: null |
|
}); |
|
|
|
this.showToast( |
|
"You're now following " + this.getDisplayName(), |
|
'darkgreen' |
|
); |
|
|
|
this.userNameToAdd = ''; |
|
this.nameForList = ''; |
|
this.updateStorage(); |
|
}, |
|
visitAccount(account) { |
|
account.lastVisited = moment().format(); |
|
window.open(account.url,'_blank'); |
|
|
|
this.updateStorage(); |
|
return true; |
|
}, |
|
showToast(message, color = '') { |
|
iziToast.show({ |
|
theme: 'dark', |
|
color: color, |
|
message: message, |
|
position: 'topCenter', |
|
}); |
|
}, |
|
getDiffForView(time) { |
|
return time ? 'last visited ' + moment(time).fromNow() : 'not yet visited'; |
|
}, |
|
updateStorage() { |
|
localStorage.setItem('followedAccounts', JSON.stringify(this.followedAccounts)); |
|
}, |
|
loadStorage() { |
|
let savedFollowedAccounts = JSON.parse(localStorage.getItem('followedAccounts')); |
|
this.followedAccounts = savedFollowedAccounts ? savedFollowedAccounts : []; |
|
}, |
|
getDisplayName(nameForToast = this.nameForList, userNameToAdd = this.userNameToAdd) { |
|
return nameForToast = nameForList ? userNameToAdd + ' (' + userNameToAdd + ')' : userNameToAdd; |
|
}, |
|
refreshAccountsAndOrder() { |
|
this.loadStorage(); |
|
|
|
this.followedAccounts = this.followedAccounts.sort(function (a, b) { |
|
return new Date(b.lastVisited) - new Date(a.lastVisited) |
|
}); |
|
}, |
|
getRandomAvatarFrom9GAG() { |
|
let random = Math.floor(Math.random() * Math.floor(182)); |
|
return 'https://accounts-cdn.9gag.com/avatar/default_' + random + '_100_v0.jpg'; |
|
}, |
|
unfollowAccount(account) { |
|
let app = this; |
|
|
|
iziToast.show({ |
|
theme: 'dark', |
|
color: '#303030', |
|
message: 'Do you really want to unfollow ' + account.name + '?', |
|
position: 'center', |
|
buttons: [ |
|
['<button>Yes</button>', function (instance, toast) { |
|
account.deleted = true; |
|
app.updateStorage(); |
|
instance.hide({ |
|
transitionOut: 'fadeOutUp', |
|
}, toast, 'confirmUnfollow'); |
|
}, true], // true to focus |
|
['<button>Cancel</button>', function (instance, toast) { |
|
instance.hide({ |
|
transitionOut: 'fadeOutUp', |
|
}, toast, 'buttonName'); |
|
}] |
|
] |
|
}); |
|
} |
|
}, |
|
mounted() { |
|
this.refreshAccountsAndOrder() |
|
} |
|
}) |