优化好友列表,不要每次都请求

This commit is contained in:
JohnathanLin 2023-10-29 11:13:49 +08:00
parent f984ac7436
commit 5aa817175e

View File

@ -1,27 +1,84 @@
<script> <script>
$( document ).ready(function() { $( document ).ready(function() {
$.get("https://getgithubfriend.azurewebsites.net/api/getGithubFriend", { name: '{{ .Get "githubLoginList" }}' }, function(data) { var cacheFriendsData = getItem("windypath-friend");
var dataObj = JSON.parse(data) if (cacheFriendsData !== null) {
Object.keys(dataObj['data']).forEach(element => { console.log("from cache")
console.log(element, dataObj['data'][element]) showFriends(cacheFriendsData)
$("div.post-content").append(' \ } else {
<div class="friend-link"> \ console.log("not cache")
<a href="' + dataObj['data'][element]['websiteUrl'] +'" target="_blank"> \ $.get("https://getgithubfriend.azurewebsites.net/api/getGithubFriend", { name: '{{ .Get "githubLoginList" }}' }, function(data) {
<div class="friend-link-avatar"> \ showFriends(data)
<img src="' + dataObj['data'][element]['avatarUrl'] + '"/> \ setItem("windypath-friend", data)
</div> \
<div> \
<div class="friend-link-name">' + dataObj['data'][element]['name'] + '</div> \
<div class="friend-link-bio">' + dataObj['data'][element]['bioHTML'] + '</div> \
</div>\
</a>\
</div>'
)
}); });
}); }
}); });
// add an entry
// default expiry is 30 days in milliseconds
function setItem(key, value, maxAge = 30 * 60 * 60 * 1000) {
// store the value as the object
// along with the expiry date
let result = {
data : value
}
if(maxAge){
// set the expiry
// from the current date
result.expireTime = Date.now() + maxAge;
}
// stringify the result
// and the data in original storage
window.localStorage.setItem(key, JSON.stringify(result));
}
function getItem(key) {
// get the parsed value of the given key
let result = JSON.parse(window.localStorage.getItem(key));
// if the key has value
if(result){
// if the entry is expired
// remove the entry and return null
if(result.expireTime <= Date.now()){
window.localStorage.removeItem(key);
return null;
}
// else return the value
return result.data;
}
// if the key does not have value
return null;
}
function showFriends(data) {
var dataObj = JSON.parse(data)
Object.keys(dataObj['data']).forEach(element => {
// console.log(element, dataObj['data'][element])
$("div.post-content").append(' \
<div class="friend-link"> \
<a href="' + dataObj['data'][element]['websiteUrl'] +'" target="_blank"> \
<div class="friend-link-avatar"> \
<img src="' + dataObj['data'][element]['avatarUrl'] + '"/> \
</div> \
<div> \
<div class="friend-link-name">' + dataObj['data'][element]['name'] + '</div> \
<div class="friend-link-bio">' + dataObj['data'][element]['bioHTML'] + '</div> \
</div>\
</a>\
</div>'
)
});
}
</script> </script>