fear: webui quick login

This commit is contained in:
手瓜一十雪 2024-05-07 20:50:25 +08:00
parent 13ecaa0ad4
commit 34d881426f
4 changed files with 85 additions and 16 deletions

@ -1 +1 @@
Subproject commit 852cad57c43ecc6113516db1abc591fb22e913fd
Subproject commit 8cf3b85ffb49d9cc223d850a2a955b799b841bd7

View File

@ -63,6 +63,32 @@ const quickLoginQQ = cmdOptions.qq;
// console.error('登录失败', result);
// napCatCore.qrLogin().then().catch(console.error);
// });
napCatCore.getQuickLoginList().then((res) => {
// 遍历 res.LocalLoginInfoList[x].isQuickLogin是否可以可以 res.LocalLoginInfoList[x].uin 转为string 加入string[] 最后遍历完成调用DataRuntime.setQQQuickLoginList
DataRuntime.setQQQuickLoginList(res.LocalLoginInfoList.filter((item) => item.isQuickLogin).map((item) => item.uin.toString()));
});
DataRuntime.setQQQuickLogin(async (uin: string) => {
let QuickLogin: Promise<{ result: boolean, message: string }> = new Promise((resolve, reject) => {
if (quickLoginQQ) {
log('正在快速登录 ', quickLoginQQ);
napCatCore.quickLogin(quickLoginQQ).then(res => {
if (res.loginErrorInfo.errMsg) {
resolve({ result: false, message: res.loginErrorInfo.errMsg });
}
resolve({ result: true, message: '' });
}).catch((e) => {
console.error(e);
resolve({ result: false, message: '快速登录发生错误' });
});
} else {
resolve({ result: false, message: '快速登录失败' });
}
});
let result = await QuickLogin;
return result;
});
if (quickLoginQQ) {
log('正在快速登录 ', quickLoginQQ);
napCatCore.quickLogin(quickLoginQQ).then(res => {

View File

@ -1,5 +1,6 @@
import { RequestHandler } from "express";
import { DataRuntime } from "../helper/Data";
import { sleep } from "@/common/utils/helper";
const isEmpty = (data: any) => data === undefined || data === null || data === '';
export const QQGetQRcodeHandler: RequestHandler = async (req, res) => {
if (await DataRuntime.getQQLoginStatus()) {
@ -36,26 +37,41 @@ export const QQCheckLoginStatusHandler: RequestHandler = (req, res) => {
});
};
export const QQSetQuickLoginHandler: RequestHandler = async (req, res) => {
// 未完成
const { token } = req.body;
if (token) {
const isLogin = await DataRuntime.getQQLoginStatus();
let { uin } = req.body;
let isLogin = await DataRuntime.getQQLoginStatus();
if (isLogin) {
res.send({
code: -1,
message: 'QQ Is Logined'
});
return;
}
// 未实现
if (isEmpty(uin)) {
res.send({
code: -1,
message: 'uin is empty'
});
return;
}
let ret = await DataRuntime.getQQQuickLogin(uin);
if (!ret.result) {
res.send({
code: -1,
message: ret.message
});
return;
}
//本来应该验证 但是http不宜这么搞 建议前端验证
//isLogin = await DataRuntime.getQQLoginStatus();
res.send({
code: 0,
message: 'success'
});
}
export const QQGetQuickLoginListHandler: RequestHandler = async (req, res) => {
// 未完成
const { token } = req.body;
if (token) {
const isLogin = await DataRuntime.getQQLoginStatus();
}
// 未实现
const quickLoginList = await DataRuntime.getQQQuickLoginList();
res.send({
code: 0,
message: 'success'
data: quickLoginList
});
}

View File

@ -1,9 +1,24 @@
let LoginRuntime = {
interface LoginRuntimeType {
LoginCurrentTime: number;
LoginCurrentRate: number;
QQLoginStatus: boolean;
QQQRCodeURL: string;
QQLoginUin: number;
NapCatHelper: {
CoreQuickLogin: (uin: string) => Promise<{ result: boolean, message: string }>;
QQLoginList: string[]
}
}
let LoginRuntime: LoginRuntimeType = {
LoginCurrentTime: Date.now(),
LoginCurrentRate: 0,
QQLoginStatus: false, //得去那边注册个回调刷新
QQLoginStatus: false, //已实现 但太傻了 得去那边注册个回调刷新
QQQRCodeURL: "",
QQLoginUin: 0
QQLoginUin: 0,
NapCatHelper: {
CoreQuickLogin: async (uin: string) => { return { result: false, message: '' }; },
QQLoginList: []
}
}
export const DataRuntime = {
checkLoginRate: async function (RateLimit: number): Promise<boolean> {
@ -40,5 +55,17 @@ export const DataRuntime = {
,
getQQLoginUin: async function (): Promise<number> {
return LoginRuntime.QQLoginUin;
},
getQQQuickLoginList: async function (): Promise<any[]> {
return LoginRuntime.NapCatHelper.QQLoginList;
},
setQQQuickLoginList: async function (list: string[]): Promise<void> {
LoginRuntime.NapCatHelper.QQLoginList = list;
},
setQQQuickLogin(func: (uin: string) => Promise<{ result: boolean, message: string }>): void {
LoginRuntime.NapCatHelper.CoreQuickLogin = func;
},
getQQQuickLogin: async function (uin: string): Promise<{ result: boolean, message: string }> {
return await LoginRuntime.NapCatHelper.CoreQuickLogin(uin);
}
}