chore: remove log

This commit is contained in:
hdsuperman
2022-12-22 22:21:06 +08:00
parent f4fbc7adbd
commit a9ac199ac5
3 changed files with 188 additions and 240 deletions
-1
View File
@@ -30,7 +30,6 @@ const whiteList = [
const baseQuery = fetchBaseQuery({ const baseQuery = fetchBaseQuery({
baseUrl: BASE_URL, baseUrl: BASE_URL,
prepareHeaders: (headers, { getState, endpoint }) => { prepareHeaders: (headers, { getState, endpoint }) => {
console.info("req", endpoint);
const { token } = (getState() as RootState).authData; const { token } = (getState() as RootState).authData;
if (token && !whiteList.includes(endpoint)) { if (token && !whiteList.includes(endpoint)) {
headers.set(tokenHeader, token); headers.set(tokenHeader, token);
-3
View File
@@ -100,7 +100,6 @@ export default function useMessageFeed({ context = "channel", id }: Props) {
mids: serverMids, mids: serverMids,
isLast: true isLast: true
}); });
console.log("pull up first", pageInfo, serverMids);
pageRef.current = pageInfo; pageRef.current = pageInfo;
listRef.current = pageInfo.ids; listRef.current = pageInfo.ids;
setItems(listRef.current); setItems(listRef.current);
@@ -112,7 +111,6 @@ export default function useMessageFeed({ context = "channel", id }: Props) {
return Number(a) - Number(b); return Number(a) - Number(b);
}); });
const appends = sorteds.filter((s: number) => s > lastMid); const appends = sorteds.filter((s: number) => s > lastMid);
console.log("pull up appends", appends, sorteds, lastMid, mids);
if (appends.length) { if (appends.length) {
setAppends(appends); setAppends(appends);
const [newestMsgId] = appends.slice(-1); const [newestMsgId] = appends.slice(-1);
@@ -136,7 +134,6 @@ export default function useMessageFeed({ context = "channel", id }: Props) {
}, [mids, messageData, loginUid]); }, [mids, messageData, loginUid]);
const pullUp = async () => { const pullUp = async () => {
const currPageInfo = pageRef.current; const currPageInfo = pageRef.current;
console.log("pull up", currPageInfo);
// 第一页 // 第一页
if (currPageInfo && currPageInfo.isFirst) { if (currPageInfo && currPageInfo.isFirst) {
const [firstMid] = currPageInfo.ids; const [firstMid] = currPageInfo.ids;
+188 -236
View File
@@ -62,250 +62,204 @@ export default function useStreaming() {
} }
}, timeout ?? 20000); }, timeout ?? 20000);
}; };
const startStreaming = useCallback( const startStreaming = useCallback(async () => {
async () => { if (connectionIsOpen) return;
console.log("start streaming", SSE, SSE?.readyState); window.clearTimeout(aliveInter);
if (connectionIsOpen) return; if (SSE && (SSE.readyState === EventSource.OPEN || SSE.readyState === EventSource.CONNECTING))
window.clearTimeout(aliveInter); return;
if (SSE && (SSE.readyState === EventSource.OPEN || SSE.readyState === EventSource.CONNECTING)) return; const { token, refreshToken, expireTime } = getLocalAuthData();
const { token, refreshToken, expireTime } = getLocalAuthData(); // token 非空
// token 非空 if (!token) {
if (!token) { return;
console.info("sse start streaming no token", token); }
let _token = token;
// 如果token快要过期,先renew
if (dayjs().isAfter(new Date(expireTime - 20 * 1000))) {
const resp = await renewToken({ token, refresh_token: refreshToken });
if ("error" in resp) {
return;
} else {
_token = resp.data.token;
}
// return;
}
// 开始初始化
const params: {
"api-key": string;
after_mid?: string;
users_version?: string;
} = {
"api-key": _token
};
// 如果afterMid是0,则不传该参数
if (afterMid !== 0) {
params.after_mid = `${afterMid}`;
}
// 如果usersVersion是0,则不传该参数
if (usersVersion !== 0) {
params.users_version = `${usersVersion}`;
}
// 开始初始化推送
SSE = new EventSource(`${BASE_URL}/user/events?${getQueryString(params)}`);
SSE.onopen = () => {
//todo
opened.current = true;
connectionIsOpen = true;
};
SSE.onerror = (err) => {
const { readyState } = err.target as EventSource;
console.error("sse error", readyState, err);
// 连接还处于开启状态
if (readyState === EventSource.OPEN || readyState === EventSource.CONNECTING) {
return; return;
} }
let _token = token; // 重连
// 如果token快要过期,先renew // connectionIsOpen = false;
if (dayjs().isAfter(new Date(expireTime - 20 * 1000))) { keepAlive(2000);
const resp = await renewToken({ token, refresh_token: refreshToken }); };
if ("error" in resp) { SSE.onmessage = (evt) => {
return; const data: ServerEvent = JSON.parse(evt.data);
} else { const { type } = data;
_token = resp.data.token; switch (type) {
case "heartbeat":
keepAlive();
break;
case "ready":
// 有时候,heartbeat不会发?
keepAlive();
dispatch(setReady());
break;
case "users_snapshot": {
const { version } = data;
dispatch(updateUsersVersion(version));
break;
} }
// return; case "users_log": {
} const { logs } = data;
// 开始初始化 dispatch(updateUsersByLogs(logs));
const params: { // 特殊处理当前登录用户的更新
"api-key": string; logs.forEach((log) => {
after_mid?: string; const { uid, action, log_id, ...rest } = log;
users_version?: string; if (uid === loginUid && action === "update") {
} = { dispatch(updateLoginUser(omitBy(rest, isNull)));
"api-key": _token, }
}; });
// 如果afterMid是0,则不传该参数 break;
if (afterMid !== 0) { }
params.after_mid = `${afterMid}`; case "user_settings":
} case "user_settings_changed": {
// 如果usersVersion是0,则不传该参数 Object.keys(data).forEach((key) => {
if (usersVersion !== 0) { switch (key) {
params.users_version = `${usersVersion}`; case "read_index_groups":
} dispatch(updateReadChannels(data[key]));
// 开始初始化推送 break;
SSE = new EventSource(`${BASE_URL}/user/events?${getQueryString(params)}`); case "read_index_users":
dispatch(updateReadUsers(data[key]));
break;
case "add_mute_users":
case "mute_users":
case "add_mute_groups":
case "mute_groups":
{
const arr = data[key];
if (arr && arr.length) {
const _key = key.endsWith("users") ? "add_users" : "add_groups";
dispatch(updateMute({ [_key]: arr }));
}
}
break;
case "remove_mute_users":
case "remove_mute_groups":
{
const arr = data[key];
if (arr && arr.length) {
const _key = key.endsWith("users") ? "remove_users" : "remove_groups";
dispatch(updateMute({ [_key]: arr }));
}
}
break;
SSE.onopen = () => { default:
//todo break;
opened.current = true; }
connectionIsOpen = true; });
}; break;
SSE.onerror = (err) => {
const { readyState } = err.target as EventSource;
console.error("sse error", readyState, err);
// 连接还处于开启状态
if (readyState === EventSource.OPEN || readyState === EventSource.CONNECTING) {
return;
} }
// 重连 case "users_state":
// connectionIsOpen = false; case "users_state_changed":
keepAlive(2000); {
}; let { type, ...rest } = data;
SSE.onmessage = (evt) => { const onlines =
console.info("sse message", evt.data); type == "users_state_changed" ? [rest] : (rest as UsersStateEvent).users;
const data: ServerEvent = JSON.parse(evt.data); dispatch(updateUsersStatus(onlines));
const { type } = data;
switch (type) {
case "heartbeat": {
keepAlive();
console.info("sse heartbeat", loginUid);
} }
break; break;
case "ready": case "kick":
console.info("sse streaming ready"); {
// 有时候,heartbeat不会发? switch (data.reason) {
keepAlive(); case "login_from_other_device":
dispatch(setReady()); dispatch(resetAuthData());
break; toast("kicked from the other device");
case "users_snapshot": break;
{ case "delete_user":
console.info("sse users snapshot"); dispatch(resetAuthData());
const { version } = data; toast("Your account has been deleted");
dispatch(updateUsersVersion(version)); break;
default:
break;
} }
break; }
case "users_log": break;
{ case "related_groups":
const { logs } = data; dispatch(fillChannels(data.groups));
console.info("sse users change logs", logs); break;
dispatch(updateUsersByLogs(logs)); case "joined_group":
// 特殊处理当前登录用户的更新 dispatch(addChannel(data.group));
logs.forEach((log) => { break;
const { uid, action, log_id, ...rest } = log; case "group_changed":
if (uid === loginUid && action === 'update') { {
dispatch(updateLoginUser(omitBy(rest, isNull))); const { gid, ...rest } = data;
} dispatch(updateChannel({ gid, ...rest }));
}); }
} break;
break; case "user_joined_group": {
case "user_settings": const { gid, uid: uids } = data;
case "user_settings_changed": // 去重
{ dispatch(updateChannel({ operation: "add_member", gid, members: uids }));
console.info("sse users settings"); break;
Object.keys(data).forEach((key) => {
switch (key) {
case "read_index_groups":
dispatch(updateReadChannels(data[key]));
break;
case "read_index_users":
dispatch(updateReadUsers(data[key]));
break;
case "add_mute_users":
case "mute_users":
case "add_mute_groups":
case "mute_groups":
{
const arr = data[key];
if (arr && arr.length) {
const _key = key.endsWith("users") ? "add_users" : "add_groups";
dispatch(updateMute({ [_key]: arr }));
}
}
break;
case "remove_mute_users":
case "remove_mute_groups":
{
const arr = data[key];
if (arr && arr.length) {
const _key = key.endsWith("users") ? "remove_users" : "remove_groups";
dispatch(updateMute({ [_key]: arr }));
}
}
break;
default:
break;
}
});
}
break;
case "users_state":
case "users_state_changed":
{
let { type, ...rest } = data;
const onlines =
type == "users_state_changed" ? [rest] : (rest as UsersStateEvent).users;
dispatch(updateUsersStatus(onlines));
}
break;
case "kick":
{
console.info("sse kicked");
switch (data.reason) {
case "login_from_other_device":
dispatch(resetAuthData());
toast("kicked from the other device");
break;
case "delete_user":
dispatch(resetAuthData());
toast("Your account has been deleted");
break;
default:
break;
}
}
break;
case "related_groups":
console.info("sse fill channels from streaming", data);
dispatch(fillChannels(data.groups));
break;
case "joined_group":
console.info("sse joined group", data.group);
dispatch(addChannel(data.group));
break;
case "group_changed":
{
const { gid, ...rest } = data;
dispatch(
updateChannel({
gid,
...rest
})
);
}
break;
case "user_joined_group":
{
console.info("sse new user joined group", data.gid);
const { gid, uid: uids } = data;
// 去重
dispatch(
updateChannel({
operation: "add_member",
gid,
members: uids
})
);
}
break;
case "user_leaved_group":
{
const { gid, uid: uids } = data;
if (uids.findIndex((uid) => uid == loginUid) > -1) {
dispatch(removeChannel(gid));
} else {
dispatch(
updateChannel({
operation: "remove_member",
gid,
members: uids
})
);
}
}
break;
case "kick_from_group":
console.info("sse kicked from group", data.gid);
dispatch(removeChannel(data.gid));
break;
case "pinned_message_updated":
{
// const {gid,mid,msg}=data;
dispatch(updatePinMessage(data));
}
break;
case "chat":
{
chatMessageHandler(data, dispatch, {
ready,
loginUid,
readUsers,
readChannels
});
}
break;
default:
console.info("sse event data", data);
break;
} }
}; case "user_leaved_group": {
}, const { gid, uid: uids } = data;
[afterMid, usersVersion], if (uids.findIndex((uid) => uid == loginUid) > -1) {
); dispatch(removeChannel(gid));
} else {
dispatch(updateChannel({ operation: "remove_member", gid, members: uids }));
}
break;
}
case "kick_from_group":
dispatch(removeChannel(data.gid));
break;
case "pinned_message_updated":
dispatch(updatePinMessage(data));
break;
case "chat": {
chatMessageHandler(data, dispatch, {
ready,
loginUid,
readUsers,
readChannels
});
break;
}
default:
break;
}
};
}, [afterMid, usersVersion]);
const stopStreaming = () => { const stopStreaming = () => {
console.info("sse stop streaming");
if (SSE) { if (SSE) {
SSE.close(); SSE.close();
SSE = undefined; SSE = undefined;
@@ -321,13 +275,11 @@ export default function useStreaming() {
} }
return () => { return () => {
if (streamingReady && !hasOpened) { if (streamingReady && !hasOpened) {
console.log("stop from streamingReady");
stopStreaming(); stopStreaming();
} }
}; };
}, [streamingReady]); }, [streamingReady]);
return { return {
setStreamingReady, setStreamingReady,
startStreaming, startStreaming,