refactor: SEE
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
"plugins": ["import", "react", "react-hooks", "@typescript-eslint"],
|
||||
"rules": {
|
||||
"@typescript-eslint/no-unused-vars": ["error", { "ignoreRestSiblings": true }],
|
||||
"@typescript-eslint/no-floating-promises": "off",
|
||||
"react/jsx-uses-react": "off",
|
||||
"react/react-in-jsx-scope": "off",
|
||||
"semi": 2,
|
||||
|
||||
@@ -316,8 +316,7 @@ module.exports = function (webpackEnv) {
|
||||
require.resolve("babel-preset-react-app"),
|
||||
{
|
||||
runtime: "automatic",
|
||||
development: process.env.NODE_ENV === "development",
|
||||
importSource: "@welldone-software/why-did-you-render"
|
||||
development: process.env.NODE_ENV === "development"
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
+55
-56
@@ -1,46 +1,46 @@
|
||||
{
|
||||
"name": "vocechat-web",
|
||||
"version": "0.6.11",
|
||||
"version": "0.6.12",
|
||||
"homepage": "https://voce.chat",
|
||||
"dependencies": {
|
||||
"@metamask/onboarding": "^1.0.1",
|
||||
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
|
||||
"@radix-ui/react-popover": "^1.0.7",
|
||||
"@react-oauth/google": "^0.12.1",
|
||||
"@reduxjs/toolkit": "^2.0.1",
|
||||
"@reduxjs/toolkit": "^2.2.1",
|
||||
"@svgr/webpack": "^8.1.0",
|
||||
"@tippyjs/react": "^4.2.6",
|
||||
"@toast-ui/editor": "^3.2.2",
|
||||
"@toast-ui/editor-plugin-code-syntax-highlight": "^3.1.0",
|
||||
"@toast-ui/react-editor": "^3.2.3",
|
||||
"@udecode/plate-break": "^25.0.1",
|
||||
"@udecode/plate-combobox": "^25.0.1",
|
||||
"@udecode/plate-common": "^25.0.1",
|
||||
"@udecode/plate-emoji": "^25.0.1",
|
||||
"@udecode/plate-floating": "^26.0.4",
|
||||
"@udecode/plate-font": "^25.0.1",
|
||||
"@udecode/plate-mention": "^25.0.1",
|
||||
"@udecode/plate-node-id": "^25.0.1",
|
||||
"@udecode/plate-paragraph": "^25.0.1",
|
||||
"@udecode/plate-trailing-block": "^25.0.1",
|
||||
"@udecode/plate-break": "^30.5.3",
|
||||
"@udecode/plate-combobox": "^30.5.3",
|
||||
"@udecode/plate-common": "^30.4.5",
|
||||
"@udecode/plate-emoji": "^30.7.0",
|
||||
"@udecode/plate-floating": "^30.5.3",
|
||||
"@udecode/plate-font": "^30.5.3",
|
||||
"@udecode/plate-mention": "^30.5.3",
|
||||
"@udecode/plate-node-id": "^30.5.3",
|
||||
"@udecode/plate-paragraph": "^30.5.3",
|
||||
"@udecode/plate-trailing-block": "^30.5.3",
|
||||
"@uiball/loaders": "^1.3.0",
|
||||
"agora-rtc-sdk-ng": "^4.20.0",
|
||||
"agora-rtc-sdk-ng": "^4.20.1",
|
||||
"broadcast-channel": "^7.0.0",
|
||||
"browserslist": "^4.22.2",
|
||||
"clsx": "^2.0.0",
|
||||
"browserslist": "^4.23.0",
|
||||
"clsx": "^2.1.0",
|
||||
"copy-image-clipboard": "^2.1.2",
|
||||
"css-loader": "^6.8.1",
|
||||
"css-minimizer-webpack-plugin": "^5.0.1",
|
||||
"css-loader": "^6.10.0",
|
||||
"css-minimizer-webpack-plugin": "^6.0.0",
|
||||
"dayjs": "^1.11.10",
|
||||
"eslint": "^8.55.0",
|
||||
"firebase": "^10.5.2",
|
||||
"framer-motion": "^10.16.15",
|
||||
"eslint": "^8.57.0",
|
||||
"firebase": "^10.9.0",
|
||||
"framer-motion": "^11.0.13",
|
||||
"fs-extra": "^11.2.0",
|
||||
"heic2any": "^0.0.4",
|
||||
"html-webpack-plugin": "^5.5.4",
|
||||
"i18next": "^23.7.8",
|
||||
"html-webpack-plugin": "^5.6.0",
|
||||
"i18next": "^23.10.1",
|
||||
"i18next-browser-languagedetector": "^7.2.0",
|
||||
"i18next-http-backend": "^2.4.2",
|
||||
"i18next-http-backend": "^2.5.0",
|
||||
"linkify-plugin-mention": "^4.1.3",
|
||||
"linkify-react": "^4.1.3",
|
||||
"linkifyjs": "^4.1.3",
|
||||
@@ -48,7 +48,7 @@
|
||||
"localforage-setitems": "^1.4.0",
|
||||
"lodash": "^4.17.21",
|
||||
"masonry-layout": "^4.2.2",
|
||||
"mini-css-extract-plugin": "^2.7.6",
|
||||
"mini-css-extract-plugin": "^2.8.1",
|
||||
"prismjs": "^1.29.0",
|
||||
"qrcode.react": "^3.1.0",
|
||||
"react": "^18.2.0",
|
||||
@@ -56,31 +56,31 @@
|
||||
"react-dnd": "16.0.1",
|
||||
"react-dnd-html5-backend": "16.0.1",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-error-boundary": "^4.0.11",
|
||||
"react-error-boundary": "^4.0.13",
|
||||
"react-helmet": "^6.1.0",
|
||||
"react-hot-toast": "^2.4.1",
|
||||
"react-i18next": "^13.5.0",
|
||||
"react-redux": "^9.0.2",
|
||||
"react-i18next": "^14.1.0",
|
||||
"react-redux": "^9.1.0",
|
||||
"react-refresh": "0.14.0",
|
||||
"react-router-dom": "^6.20.1",
|
||||
"react-router-dom": "^6.22.3",
|
||||
"react-syntax-highlighter": "^15.5.0",
|
||||
"react-textarea-autosize": "^8.5.3",
|
||||
"react-use-wizard": "^2.2.4",
|
||||
"react-use-wizard": "^2.3.0",
|
||||
"react-viewport-list": "^7.1.2",
|
||||
"react-virtuoso": "^4.6.2",
|
||||
"react-virtuoso": "^4.7.2",
|
||||
"rooks": "^7.14.1",
|
||||
"slate": "^0.101.1",
|
||||
"slate": "^0.102.0",
|
||||
"slate-history": "^0.100.0",
|
||||
"slate-hyperscript": "^0.100.0",
|
||||
"slate-react": "0.101.3",
|
||||
"source-map-loader": "^4.0.1",
|
||||
"style-loader": "^3.3.3",
|
||||
"tailwind-merge": "2.1.0",
|
||||
"terser-webpack-plugin": "^5.3.9",
|
||||
"slate-react": "0.102.0",
|
||||
"source-map-loader": "^5.0.0",
|
||||
"style-loader": "^3.3.4",
|
||||
"tailwind-merge": "2.2.1",
|
||||
"terser-webpack-plugin": "^5.3.10",
|
||||
"tippy.js": "^6.3.7",
|
||||
"typescript": "^5.3.3",
|
||||
"wavesurfer.js": "^7.5.0",
|
||||
"webpack": "^5.89.0",
|
||||
"typescript": "^5.4.2",
|
||||
"wavesurfer.js": "^7.7.5",
|
||||
"webpack": "^5.90.3",
|
||||
"webpack-dev-server": "^4.15.1",
|
||||
"webpack-manifest-plugin": "^5.0.0",
|
||||
"workbox-core": "^7.0.0",
|
||||
@@ -115,34 +115,33 @@
|
||||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.23.0",
|
||||
"@ianvs/prettier-plugin-sort-imports": "^4.1.1",
|
||||
"@babel/core": "^7.24.0",
|
||||
"@ianvs/prettier-plugin-sort-imports": "^4.2.0",
|
||||
"@types/masonry-layout": "^4.2.7",
|
||||
"@types/node": "^20.10.4",
|
||||
"@types/react": "18.2.42",
|
||||
"@types/react-dom": "^18.2.17",
|
||||
"@types/node": "^20.11.28",
|
||||
"@types/react": "18.2.66",
|
||||
"@types/react-dom": "^18.2.22",
|
||||
"@types/react-helmet": "^6.1.11",
|
||||
"@types/react-syntax-highlighter": "^15.5.11",
|
||||
"@typescript-eslint/eslint-plugin": "^6.13.2",
|
||||
"@typescript-eslint/parser": "^6.13.2",
|
||||
"@welldone-software/why-did-you-render": "^7.0.1",
|
||||
"autoprefixer": "^10.4.16",
|
||||
"@typescript-eslint/eslint-plugin": "^7.2.0",
|
||||
"@typescript-eslint/parser": "^7.2.0",
|
||||
"autoprefixer": "^10.4.18",
|
||||
"babel-loader": "^9.1.3",
|
||||
"babel-plugin-named-asset-import": "^0.3.8",
|
||||
"babel-preset-react-app": "^10.0.1",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-import": "^2.29.0",
|
||||
"eslint-plugin-prettier": "^5.0.1",
|
||||
"eslint-plugin-react": "^7.33.2",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"eslint-plugin-react": "^7.34.0",
|
||||
"eslint-plugin-react-hooks": "^4.6.0",
|
||||
"gh-pages": "^6.1.0",
|
||||
"gh-pages": "^6.1.1",
|
||||
"md5-file": "^5.0.0",
|
||||
"patch-package": "^8.0.0",
|
||||
"postcss": "^8.4.32",
|
||||
"postcss-loader": "^7.3.3",
|
||||
"postcss": "^8.4.35",
|
||||
"postcss-loader": "^8.1.1",
|
||||
"postinstall-postinstall": "^2.1.0",
|
||||
"prettier": "^3.1.0",
|
||||
"tailwindcss": "^3.3.6",
|
||||
"prettier": "^3.2.5",
|
||||
"tailwindcss": "^3.4.1",
|
||||
"webpack-bundle-analyzer": "^4.10.1"
|
||||
}
|
||||
}
|
||||
|
||||
Generated
+1867
-1584
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -1,7 +1,7 @@
|
||||
import i18n from "../i18n";
|
||||
import { Price } from "../types/common";
|
||||
|
||||
let prices: Price[] = [
|
||||
const prices: Price[] = [
|
||||
{
|
||||
type: "payment",
|
||||
limit: 999999,
|
||||
@@ -13,7 +13,7 @@ let prices: Price[] = [
|
||||
];
|
||||
const official_dev = `https://dev.voce.chat`;
|
||||
const local_dev = `https://dev.voce.chat`;
|
||||
// const local_dev = `http://localhost:3000`;
|
||||
// const local_dev = `https://cqvoce.com`;
|
||||
const dev_origin = process.env.REACT_APP_OFFICIAL_DEMO ? official_dev : local_dev;
|
||||
|
||||
// const local_dev = `https://im.ttt.td`;
|
||||
|
||||
@@ -6,12 +6,13 @@ function useChatScroll<T extends HTMLElement>() {
|
||||
if (ref.current) {
|
||||
const ele = ref.current;
|
||||
const resizeObserver = new ResizeObserver((entries) => {
|
||||
for (let entry of entries) {
|
||||
for (const entry of entries) {
|
||||
entry.target.scrollTop = entry.target.scrollHeight;
|
||||
}
|
||||
});
|
||||
|
||||
resizeObserver.observe(ele);
|
||||
// window.addEventListener("error", (e) => console.log(e.message));
|
||||
}
|
||||
}, []);
|
||||
return ref;
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
// just for debug performance problem
|
||||
// import "./wdyr";
|
||||
import { Suspense } from "react";
|
||||
import { DndProvider } from "react-dnd";
|
||||
import { HTML5Backend } from "react-dnd-html5-backend";
|
||||
|
||||
@@ -10,7 +10,7 @@ export interface ChatSession {
|
||||
id: number;
|
||||
mid?: number;
|
||||
}
|
||||
type Props = {};
|
||||
type Props = Record<string, never>;
|
||||
const SessionList: FC<Props> = () => {
|
||||
const [sessions, setSessions] = useState<ChatSession[]>([]);
|
||||
const readChannels = useAppSelector((store) => store.footprint.readChannels, shallowEqual);
|
||||
@@ -26,7 +26,7 @@ const SessionList: FC<Props> = () => {
|
||||
if (!mids || mids.length == 0) {
|
||||
return { key: `channel_${id}`, unreads: 0, id, type: "channel" };
|
||||
}
|
||||
const mid = [...mids].sort().pop();
|
||||
const mid = [...mids].sort((a, b) => +a - +b).pop();
|
||||
return { key: `channel_${id}`, id, mid, type: "channel" };
|
||||
});
|
||||
const tmps = [...(cSessions as ChatSession[])].sort((a, b) => {
|
||||
|
||||
@@ -17,6 +17,7 @@ import MagicLinkLogin from "./MagicLinkLogin";
|
||||
import SignUpLink from "./SignUpLink";
|
||||
import SocialLoginButtons from "./SocialLoginButtons";
|
||||
import { shallowEqual } from "react-redux";
|
||||
import useStreaming from "@/hooks/useStreaming";
|
||||
|
||||
const defaultInput = {
|
||||
email: "",
|
||||
@@ -26,6 +27,7 @@ export default function LoginPage() {
|
||||
const { name: serverName, logo } = useAppSelector((store) => store.server, shallowEqual);
|
||||
const { t } = useTranslation("auth");
|
||||
const { t: ct } = useTranslation();
|
||||
const { stopStreaming } = useStreaming();
|
||||
const { data: enableSMTP, isLoading: loadingSMTPStatus } = useGetSMTPStatusQuery();
|
||||
const [login, { isSuccess, isLoading, error }] = useLoginMutation();
|
||||
const { data: loginConfig, isSuccess: loginConfigSuccess } = useGetLoginConfigQuery();
|
||||
@@ -76,7 +78,7 @@ export default function LoginPage() {
|
||||
"No associated account found, please contact user admin for an invitation link to join."
|
||||
);
|
||||
break;
|
||||
// 451有解析错误,暂时先客户端处理
|
||||
// 451 有解析错误,暂时先客户端处理
|
||||
case "PARSING_ERROR":
|
||||
break;
|
||||
default:
|
||||
@@ -88,6 +90,9 @@ export default function LoginPage() {
|
||||
}, [error]);
|
||||
useEffect(() => {
|
||||
if (isSuccess) {
|
||||
// 登录页不需要连 SSE(在这里处理可能不是最好的方式,但是能解决当前问题,暂时没找到更好的处理方式)
|
||||
// 断开已有的 SSE
|
||||
stopStreaming();
|
||||
toast.success(ct("tip.login"));
|
||||
// navigateTo("/");
|
||||
}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
/// <reference types="@welldone-software/why-did-you-render" />
|
||||
import React from "react";
|
||||
|
||||
if (process.env.NODE_ENV === "development") {
|
||||
const whyDidYouRender = require("@welldone-software/why-did-you-render");
|
||||
whyDidYouRender(React, {
|
||||
trackAllPureComponents: true
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user