aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src
diff options
context:
space:
mode:
Diffstat (limited to 'FrontEnd/src')
-rw-r--r--FrontEnd/src/App.tsx4
-rw-r--r--FrontEnd/src/migrating/admin/Admin.tsx (renamed from FrontEnd/src/views/admin/Admin.tsx)0
-rw-r--r--FrontEnd/src/migrating/admin/AdminNav.tsx (renamed from FrontEnd/src/views/admin/AdminNav.tsx)0
-rw-r--r--FrontEnd/src/migrating/admin/MoreAdmin.tsx (renamed from FrontEnd/src/views/admin/MoreAdmin.tsx)0
-rw-r--r--FrontEnd/src/migrating/admin/UserAdmin.tsx (renamed from FrontEnd/src/views/admin/UserAdmin.tsx)39
-rw-r--r--FrontEnd/src/migrating/admin/index.css (renamed from FrontEnd/src/views/admin/index.css)0
-rw-r--r--FrontEnd/src/migrating/admin/index.tsx (renamed from FrontEnd/src/views/admin/index.tsx)0
-rw-r--r--FrontEnd/src/migrating/center/CenterBoards.tsx (renamed from FrontEnd/src/views/center/CenterBoards.tsx)0
-rw-r--r--FrontEnd/src/migrating/center/TimelineBoard.tsx (renamed from FrontEnd/src/views/center/TimelineBoard.tsx)0
-rw-r--r--FrontEnd/src/migrating/center/TimelineCreateDialog.tsx (renamed from FrontEnd/src/views/center/TimelineCreateDialog.tsx)0
-rw-r--r--FrontEnd/src/migrating/center/index.css (renamed from FrontEnd/src/views/center/index.css)0
-rw-r--r--FrontEnd/src/migrating/center/index.tsx (renamed from FrontEnd/src/views/center/index.tsx)0
-rw-r--r--FrontEnd/src/services/alert.ts4
-rw-r--r--FrontEnd/src/views/common/button/LoadingButton.css2
-rw-r--r--FrontEnd/src/views/search/index.css15
-rw-r--r--FrontEnd/src/views/search/index.tsx131
16 files changed, 21 insertions, 174 deletions
diff --git a/FrontEnd/src/App.tsx b/FrontEnd/src/App.tsx
index ca3e4d38..6029daac 100644
--- a/FrontEnd/src/App.tsx
+++ b/FrontEnd/src/App.tsx
@@ -10,8 +10,6 @@ import LoginPage from "./pages/login";
import RegisterPage from "./pages/register";
import TimelinePage from "./pages/timeline";
import LoadingPage from "./pages/loading";
-import Search from "./views/search";
-import Admin from "./views/admin";
import AlertHost from "./views/common/alert/AlertHost";
export default function App() {
@@ -25,8 +23,6 @@ export default function App() {
<Route path="register" element={<RegisterPage />} />
<Route path="settings" element={<SettingPage />} />
<Route path="about" element={<AboutPage />} />
- <Route path="search" element={<Search />} />
- <Route path="admin/*" element={<Admin />} />
<Route path=":owner" element={<TimelinePage />} />
<Route path=":owner/:timeline" element={<TimelinePage />} />
<Route path="" element={<HomePage />} />
diff --git a/FrontEnd/src/views/admin/Admin.tsx b/FrontEnd/src/migrating/admin/Admin.tsx
index 986c36b4..986c36b4 100644
--- a/FrontEnd/src/views/admin/Admin.tsx
+++ b/FrontEnd/src/migrating/admin/Admin.tsx
diff --git a/FrontEnd/src/views/admin/AdminNav.tsx b/FrontEnd/src/migrating/admin/AdminNav.tsx
index b7385e5c..b7385e5c 100644
--- a/FrontEnd/src/views/admin/AdminNav.tsx
+++ b/FrontEnd/src/migrating/admin/AdminNav.tsx
diff --git a/FrontEnd/src/views/admin/MoreAdmin.tsx b/FrontEnd/src/migrating/admin/MoreAdmin.tsx
index d49d211f..d49d211f 100644
--- a/FrontEnd/src/views/admin/MoreAdmin.tsx
+++ b/FrontEnd/src/migrating/admin/MoreAdmin.tsx
diff --git a/FrontEnd/src/views/admin/UserAdmin.tsx b/FrontEnd/src/migrating/admin/UserAdmin.tsx
index d5179bf5..08560c87 100644
--- a/FrontEnd/src/views/admin/UserAdmin.tsx
+++ b/FrontEnd/src/migrating/admin/UserAdmin.tsx
@@ -1,3 +1,6 @@
+// eslint-disable
+// @ts-nocheck
+
import { useState, useEffect } from "react";
import * as React from "react";
import { Trans, useTranslation } from "react-i18next";
@@ -5,9 +8,7 @@ import classnames from "classnames";
import { getHttpUserClient, HttpUser, kUserPermissionList } from "@/http/user";
-import OperationDialog, {
- OperationDialogBoolInput,
-} from "../common/dialog/OperationDialog";
+import OperationDialog from "../common/dialog/OperationDialog";
import Button from "../common/button/Button";
import Spinner from "../common/Spinner";
import FlatButton from "../common/button/FlatButton";
@@ -21,18 +22,15 @@ const CreateUserDialog: React.FC<{
return (
<OperationDialog
title="admin:user.dialog.create.title"
- themeColor="success"
inputPrompt="admin:user.dialog.create.prompt"
- inputScheme={
- [
- { type: "text", label: "admin:user.username" },
- { type: "text", label: "admin:user.password" },
- ] as const
- }
- onProcess={([username, password]) =>
+ inputs={[
+ { key: "username", type: "text", label: "admin:user.username" },
+ { key: "password", type: "text", label: "admin:user.password" },
+ ]}
+ onProcess={({ username, password }) =>
getHttpUserClient().post({
- username,
- password,
+ username: username as string,
+ password: password as string,
})
}
onClose={close}
@@ -80,13 +78,12 @@ const UserModifyDialog: React.FC<{
open={open}
onClose={close}
title="admin:user.dialog.modify.title"
- themeColor="danger"
- inputPrompt={() => (
+ inputPromptNode={
<Trans i18nKey="admin:user.dialog.modify.prompt">
0<UsernameLabel>{user.username}</UsernameLabel>2
</Trans>
- )}
- inputScheme={
+ }
+ inputs={
[
{
type: "text",
@@ -120,7 +117,7 @@ const UserPermissionModifyDialog: React.FC<{
onSuccess: () => void;
}> = ({ open, close, user, onSuccess }) => {
const oldPermissionBoolList: boolean[] = kUserPermissionList.map(
- (permission) => user.permissions.includes(permission)
+ (permission) => user.permissions.includes(permission),
);
return (
@@ -139,7 +136,7 @@ const UserPermissionModifyDialog: React.FC<{
type: "bool",
label: { type: "custom", value: permission },
initValue: oldPermissionBoolList[index],
- })
+ }),
)}
onProcess={async (newPermissionBoolList): Promise<boolean[]> => {
for (let index = 0; index < kUserPermissionList.length; index++) {
@@ -150,12 +147,12 @@ const UserPermissionModifyDialog: React.FC<{
if (newValue) {
await getHttpUserClient().putUserPermission(
user.username,
- permission
+ permission,
);
} else {
await getHttpUserClient().deleteUserPermission(
user.username,
- permission
+ permission,
);
}
}
diff --git a/FrontEnd/src/views/admin/index.css b/FrontEnd/src/migrating/admin/index.css
index 17e24586..17e24586 100644
--- a/FrontEnd/src/views/admin/index.css
+++ b/FrontEnd/src/migrating/admin/index.css
diff --git a/FrontEnd/src/views/admin/index.tsx b/FrontEnd/src/migrating/admin/index.tsx
index 0467711d..0467711d 100644
--- a/FrontEnd/src/views/admin/index.tsx
+++ b/FrontEnd/src/migrating/admin/index.tsx
diff --git a/FrontEnd/src/views/center/CenterBoards.tsx b/FrontEnd/src/migrating/center/CenterBoards.tsx
index a8be2c29..a8be2c29 100644
--- a/FrontEnd/src/views/center/CenterBoards.tsx
+++ b/FrontEnd/src/migrating/center/CenterBoards.tsx
diff --git a/FrontEnd/src/views/center/TimelineBoard.tsx b/FrontEnd/src/migrating/center/TimelineBoard.tsx
index b3ccdf8c..b3ccdf8c 100644
--- a/FrontEnd/src/views/center/TimelineBoard.tsx
+++ b/FrontEnd/src/migrating/center/TimelineBoard.tsx
diff --git a/FrontEnd/src/views/center/TimelineCreateDialog.tsx b/FrontEnd/src/migrating/center/TimelineCreateDialog.tsx
index 63742936..63742936 100644
--- a/FrontEnd/src/views/center/TimelineCreateDialog.tsx
+++ b/FrontEnd/src/migrating/center/TimelineCreateDialog.tsx
diff --git a/FrontEnd/src/views/center/index.css b/FrontEnd/src/migrating/center/index.css
index a779ff90..a779ff90 100644
--- a/FrontEnd/src/views/center/index.css
+++ b/FrontEnd/src/migrating/center/index.css
diff --git a/FrontEnd/src/views/center/index.tsx b/FrontEnd/src/migrating/center/index.tsx
index 77af2c20..77af2c20 100644
--- a/FrontEnd/src/views/center/index.tsx
+++ b/FrontEnd/src/migrating/center/index.tsx
diff --git a/FrontEnd/src/services/alert.ts b/FrontEnd/src/services/alert.ts
index 42b14451..2f66dccc 100644
--- a/FrontEnd/src/services/alert.ts
+++ b/FrontEnd/src/services/alert.ts
@@ -1,10 +1,10 @@
import pull from "lodash/pull";
import { I18nText } from "@/common";
-import { PaletteColorType } from "@/palette";
+import { ThemeColor } from "@/views/common/common";
export interface AlertInfo {
- type?: PaletteColorType;
+ type?: ThemeColor;
message?: I18nText;
customMessage?: React.ReactElement;
dismissTime?: number | "never";
diff --git a/FrontEnd/src/views/common/button/LoadingButton.css b/FrontEnd/src/views/common/button/LoadingButton.css
index 2f73116a..0a7e4a3a 100644
--- a/FrontEnd/src/views/common/button/LoadingButton.css
+++ b/FrontEnd/src/views/common/button/LoadingButton.css
@@ -11,4 +11,4 @@
.cru-loading-button-spinner {
margin-left: 0.5em;
-}
+} \ No newline at end of file
diff --git a/FrontEnd/src/views/search/index.css b/FrontEnd/src/views/search/index.css
deleted file mode 100644
index 6ff4d9fa..00000000
--- a/FrontEnd/src/views/search/index.css
+++ /dev/null
@@ -1,15 +0,0 @@
-.timeline-search-result-item {
- border: 1px solid;
- border-color: #e9ecef;
- background: #f8f9fa;
- transition: all 0.3s;
-}
-.timeline-search-result-item:hover {
- border-color: #0d6efd;
-}
-
-.timeline-search-result-item-avatar {
- width: 2em;
- height: 2em;
- border-radius: 50%;
-}
diff --git a/FrontEnd/src/views/search/index.tsx b/FrontEnd/src/views/search/index.tsx
deleted file mode 100644
index 58257465..00000000
--- a/FrontEnd/src/views/search/index.tsx
+++ /dev/null
@@ -1,131 +0,0 @@
-import * as React from "react";
-import { useTranslation } from "react-i18next";
-import { useNavigate, useLocation } from "react-router-dom";
-import { Link } from "react-router-dom";
-
-import { HttpNetworkError } from "@/http/common";
-import { getHttpSearchClient } from "@/http/search";
-import { HttpTimelineInfo } from "@/http/timeline";
-
-import SearchInput from "../common/SearchInput";
-import UserAvatar from "../common/user/UserAvatar";
-
-import "./index.css";
-
-const TimelineSearchResultItemView: React.FC<{
- timeline: HttpTimelineInfo;
-}> = ({ timeline }) => {
- return (
- <div className="timeline-search-result-item my-2 p-3">
- <h4>
- <Link
- to={`/${timeline.owner.username}/${timeline.nameV2}`}
- className="mb-2 text-primary"
- >
- {timeline.title}
- <small className="ms-3 text-secondary">{timeline.nameV2}</small>
- </Link>
- </h4>
- <div>
- <UserAvatar
- username={timeline.owner.username}
- className="timeline-search-result-item-avatar me-2"
- />
- {timeline.owner.nickname}
- <small className="ms-3 text-secondary">
- @{timeline.owner.username}
- </small>
- </div>
- </div>
- );
-};
-
-const SearchPage: React.FC = () => {
- const { t } = useTranslation();
-
- const navigate = useNavigate();
- const location = useLocation();
- const searchParams = new URLSearchParams(location.search);
- const queryParam = searchParams.get("q");
-
- const [searchText, setSearchText] = React.useState<string>("");
- const [state, setState] = React.useState<
- HttpTimelineInfo[] | "init" | "loading" | "network-error" | "error"
- >("init");
-
- const [forceResearchKey, setForceResearchKey] = React.useState<number>(0);
-
- React.useEffect(() => {
- setState("init");
- if (queryParam != null && queryParam.length > 0) {
- setSearchText(queryParam);
- setState("loading");
- void getHttpSearchClient()
- .searchTimelines(queryParam)
- .then(
- (ts) => {
- setState(ts);
- },
- (e) => {
- if (e instanceof HttpNetworkError) {
- setState("network-error");
- } else {
- setState("error");
- }
- }
- );
- }
- }, [queryParam, forceResearchKey]);
-
- return (
- <div className="container my-3">
- <div className="row justify-content-center">
- <SearchInput
- className="col-12 col-sm-9 col-md-6"
- value={searchText}
- onChange={setSearchText}
- loading={state === "loading"}
- onButtonClick={() => {
- if (queryParam === searchText) {
- setForceResearchKey((old) => old + 1);
- } else {
- navigate(`/search?q=${searchText}`);
- }
- }}
- />
- </div>
- {(() => {
- switch (state) {
- case "init": {
- if (queryParam == null || queryParam.length === 0) {
- return <div>{t("searchPage.input")}</div>;
- }
- break;
- }
- case "loading": {
- return <div>{t("searchPage.loading")}</div>;
- }
- case "network-error": {
- return <div className="text-danger">{t("error.network")}</div>;
- }
- case "error": {
- return <div className="text-danger">{t("error.unknown")}</div>;
- }
- default: {
- if (state.length === 0) {
- return <div>{t("searchPage.noResult")}</div>;
- }
- return state.map((t) => (
- <TimelineSearchResultItemView
- key={`${t.owner.username}/${t.nameV2}`}
- timeline={t}
- />
- ));
- }
- }
- })()}
- </div>
- );
-};
-
-export default SearchPage;