chore: fixs,updates,refactors etc

This commit is contained in:
zerosoul
2022-05-05 16:49:24 +08:00
parent 4d1c463792
commit 11e5581774
10 changed files with 1425 additions and 1298 deletions
+91 -101
View File
@@ -1,110 +1,100 @@
import { useEffect } from "react";
import { Route, Routes, HashRouter } from "react-router-dom";
import { Provider, useSelector } from "react-redux";
import { useEffect } from 'react';
import { Route, Routes, HashRouter } from 'react-router-dom';
import { Provider, useSelector } from 'react-redux';
// import Welcome from './Welcome'
import NotFoundPage from "./404";
import OAuthPage from "./oauth";
import LoginPage from "./login";
import HomePage from "./home";
import ChatPage from "./chat";
import FavoritesPage from "./favs";
import ContactsPage from "./contacts";
import RequireAuth from "../common/component/RequireAuth";
import RequireNoAuth from "../common/component/RequireNoAuth";
import Meta from "../common/component/Meta";
import NotFoundPage from './404';
import OAuthPage from './oauth';
import LoginPage from './login';
import HomePage from './home';
import ChatPage from './chat';
import FavoritesPage from './favs';
import ContactsPage from './contacts';
import RequireAuth from '../common/component/RequireAuth';
import RequireNoAuth from '../common/component/RequireNoAuth';
import Meta from '../common/component/Meta';
import store from "../app/store";
import InvitePage from "./invite";
import SettingPage from "./setting";
import SettingChannelPage from "./settingChannel";
import toast from "react-hot-toast";
import ResourceManagement from "./resources";
import store from '../app/store';
import InvitePage from './invite';
import SettingPage from './setting';
import SettingChannelPage from './settingChannel';
import toast from 'react-hot-toast';
import ResourceManagement from './resources';
const PageRoutes = () => {
const {
ui: { online },
fileMessages,
} = useSelector((store) => {
return { ui: store.ui, fileMessages: store.fileMessage };
});
// 掉线检测
useEffect(() => {
let toastId = 0;
if (!online) {
toast.error("Network Offline!", { duration: Infinity });
} else {
toast.dismiss(toastId);
}
}, [online]);
const {
ui: { online },
fileMessages
} = useSelector((store) => {
return { ui: store.ui, fileMessages: store.fileMessage };
});
// 掉线检测
useEffect(() => {
let toastId = 0;
if (!online) {
toast.error('Network Offline!', { duration: Infinity });
} else {
toast.dismiss(toastId);
}
}, [online]);
return (
<HashRouter>
<Routes>
<Route
path="/oauth/:token"
element={
<RequireNoAuth>
<OAuthPage />
</RequireNoAuth>
}
/>
<Route
path="/login"
element={
<RequireNoAuth>
<LoginPage />
</RequireNoAuth>
}
/>
<Route path="/invite" element={<InvitePage />} />
<Route
path="/"
element={
<RequireAuth>
<HomePage />
</RequireAuth>
}
>
<Route path="setting">
<Route index element={<SettingPage />} />
<Route path="channel/:cid" element={<SettingChannelPage />} />
</Route>
<Route index element={<ChatPage />} />
<Route path="chat">
<Route index element={<ChatPage />} />
<Route path="channel/:channel_id" element={<ChatPage />} />
<Route path="dm/:user_id" element={<ChatPage />} />
</Route>
<Route path="contacts">
<Route index element={<ContactsPage />} />
<Route path=":user_id" element={<ContactsPage />} />
</Route>
<Route path="favs" element={<FavoritesPage />}></Route>
<Route
path="files"
element={<ResourceManagement fileMessages={fileMessages} />}
></Route>
</Route>
<Route path="*" element={<NotFoundPage />} />
</Routes>
</HashRouter>
);
return (
<HashRouter>
<Routes>
<Route path="/oauth/:token" element={<OAuthPage />} />
<Route
path="/login"
element={
<RequireNoAuth>
<LoginPage />
</RequireNoAuth>
}
/>
<Route path="/invite" element={<InvitePage />} />
<Route
path="/"
element={
<RequireAuth>
<HomePage />
</RequireAuth>
}
>
<Route path="setting">
<Route index element={<SettingPage />} />
<Route path="channel/:cid" element={<SettingChannelPage />} />
</Route>
<Route index element={<ChatPage />} />
<Route path="chat">
<Route index element={<ChatPage />} />
<Route path="channel/:channel_id" element={<ChatPage />} />
<Route path="dm/:user_id" element={<ChatPage />} />
</Route>
<Route path="contacts">
<Route index element={<ContactsPage />} />
<Route path=":user_id" element={<ContactsPage />} />
</Route>
<Route path="favs" element={<FavoritesPage />}></Route>
<Route path="files" element={<ResourceManagement fileMessages={fileMessages} />}></Route>
</Route>
<Route path="*" element={<NotFoundPage />} />
</Routes>
</HashRouter>
);
};
// const local_key = "AUTH_DATA";
export default function ReduxRoutes() {
// const [authData, setAuthData] = useState(
// JSON.parse(localStorage.getItem(local_key))
// );
// const updateAuthData = (data) => {
// localStorage.setItem(local_key, JSON.stringify(data));
// setAuthData(data);
// };
return (
<Provider store={store}>
{/* <PersistGate loading={null} persistor={persistStore(store)}> */}
<Meta />
<PageRoutes />
{/* </PersistGate> */}
</Provider>
);
// const [authData, setAuthData] = useState(
// JSON.parse(localStorage.getItem(local_key))
// );
// const updateAuthData = (data) => {
// localStorage.setItem(local_key, JSON.stringify(data));
// setAuthData(data);
// };
return (
<Provider store={store}>
{/* <PersistGate loading={null} persistor={persistStore(store)}> */}
<Meta />
<PageRoutes />
{/* </PersistGate> */}
</Provider>
);
}
+96 -43
View File
@@ -1,54 +1,107 @@
// import React from "react";
import styled from "styled-components";
import { useEffect } from 'react';
import styled from 'styled-components';
import { hideAll } from 'tippy.js';
const StyledConfirm = styled.div`
padding: 12px;
border-radius: 10px;
border: 1px solid orange;
background-color: #fff;
display: flex;
flex-direction: column;
gap: 10px;
width: 250px;
.tip {
/* word-break: break-all; */
color: orange;
font-size: 12px;
line-height: 1.5;
}
.btns {
display: flex;
width: 100%;
justify-content: flex-end;
gap: 14px;
}
`;
const Styled = styled.div`
max-width: 500px;
max-width: 500px;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: flex-start;
gap: 15px;
> .input {
width: 100%;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: flex-start;
gap: 15px;
.input {
width: 100%;
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 8px;
label {
white-space: nowrap;
font-size: 14px;
color: #555;
}
}
.tip {
font-size: 12px;
color: #999;
line-height: 1.5;
gap: 8px;
label {
white-space: nowrap;
font-size: 14px;
color: #555;
}
}
> .tip {
font-size: 12px;
color: #999;
line-height: 1.5;
}
`;
import Input from "../../common/component/styled/Input";
import Button from "../../common/component/styled/Button";
import Input from '../../common/component/styled/Input';
import Button from '../../common/component/styled/Button';
import {
useGetThirdPartySecretQuery,
useUpdateThirdPartySecretMutation,
} from "../../app/services/server";
useGetThirdPartySecretQuery,
useUpdateThirdPartySecretMutation
} from '../../app/services/server';
import Tippy from '@tippyjs/react';
import toast from 'react-hot-toast';
export default function APIConfig() {
const { data } = useGetThirdPartySecretQuery();
const [
updateSecret,
{ data: updatedSecret },
] = useUpdateThirdPartySecretMutation();
console.log("secret", data);
return (
<Styled>
<div className="input">
<label htmlFor="secret">API Secure Key:</label>
<Input type="password" id="secret" value={updatedSecret || data} />
</div>
<Button onClick={updateSecret}>Update Secret</Button>
const { data } = useGetThirdPartySecretQuery();
const [updateSecret, { data: updatedSecret, isSuccess, isLoading }] =
useUpdateThirdPartySecretMutation();
console.log('secret', data);
useEffect(() => {
if (isSuccess) {
hideAll();
toast.success('Update API Secret Successfully!');
}
}, [isSuccess]);
return (
<Styled>
<div className="input">
<label htmlFor="secret">API Secure Key:</label>
<Input type="password" id="secret" value={updatedSecret || data} />
</div>
<Tippy
delay={[0, 0]}
duration={0}
interactive
placement="right-start"
trigger="click"
content={
<StyledConfirm>
<div className="tip">
Tip: The security key agreed between the rustchat server and the
third-party app is used to encrypt the communication data.{" "}
Are you sure to update API secret? Previous secret will be invalided
</div>
</Styled>
);
<div className="btns">
<Button onClick={hideAll} className="cancel small">
Cancel
</Button>
<Button disabled={isLoading} className="small danger" onClick={updateSecret}>
Yes
</Button>
</div>
</StyledConfirm>
}
>
<Button>Update Secret</Button>
</Tippy>
<div className="tip">
Tip: The security key agreed between the rustchat server and the third-party app is used to
encrypt the communication data.{' '}
</div>
</Styled>
);
}