mirror of
https://github.com/xh321/LiteLoaderQQNT-Anti-Recall.git
synced 2026-10-16 21:01:19 +08:00
e0ca337e16
修复预览图无法显示(原因:在downloadPic使用了forEach,因为是异步的,所以导致thumbPath在没有被修改之前就发送到了前端)
55 lines
1.2 KiB
JavaScript
55 lines
1.2 KiB
JavaScript
//摘自LLOneBot
|
|
class RkeyManager {
|
|
serverUrl = "";
|
|
rkeyData = {
|
|
group_rkey: "",
|
|
private_rkey: "",
|
|
expired_time: 0,
|
|
};
|
|
|
|
constructor(serverUrl) {
|
|
this.serverUrl = serverUrl;
|
|
}
|
|
|
|
async getRkey() {
|
|
if (this.isExpired()) {
|
|
try {
|
|
await this.refreshRkey();
|
|
} catch (e) {
|
|
console.log("获取rkey失败", e);
|
|
}
|
|
}
|
|
return this.rkeyData;
|
|
}
|
|
|
|
isExpired() {
|
|
const now = new Date().getTime() / 1000;
|
|
// console.log(`now: ${now}, expired_time: ${this.rkeyData.expired_time}`)
|
|
return now > this.rkeyData.expired_time;
|
|
}
|
|
|
|
async refreshRkey() {
|
|
//刷新rkey
|
|
this.rkeyData = await this.fetchServerRkey();
|
|
}
|
|
|
|
async fetchServerRkey() {
|
|
return new Promise((resolve, reject) => {
|
|
fetch(this.serverUrl)
|
|
.then((response) => {
|
|
if (!response.ok) {
|
|
return reject(response.statusText); // 请求失败,返回错误信息
|
|
}
|
|
return response.json(); // 解析 JSON 格式的响应体
|
|
})
|
|
.then((data) => {
|
|
resolve(data);
|
|
})
|
|
.catch((error) => {
|
|
reject(error);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
module.exports.RkeyManager = RkeyManager; |