feat: implement useClient from client controller

This commit is contained in:
Paul Makles
2022-06-28 19:59:58 +01:00
parent fb466c44ed
commit c142c2e74d
72 changed files with 330 additions and 457 deletions

View File

@@ -4,9 +4,9 @@ import { Route, Switch, useHistory, useParams } from "react-router-dom";
import { Text } from "preact-i18n";
import { useClient } from "../../context/revoltjs/RevoltClient";
import { getChannelName } from "../../context/revoltjs/util";
import { useClient } from "../../controllers/client/ClientController";
import { GenericSettings } from "./GenericSettings";
import Overview from "./channel/Overview";
import Permissions from "./channel/Permissions";

View File

@@ -17,9 +17,9 @@ import { LineDivider } from "@revoltchat/ui";
import { useIntermediate } from "../../context/intermediate/Intermediate";
import RequiresOnline from "../../context/revoltjs/RequiresOnline";
import { useClient } from "../../context/revoltjs/RevoltClient";
import ButtonItem from "../../components/navigation/items/ButtonItem";
import { useClient } from "../../controllers/client/ClientController";
import { GenericSettings } from "./GenericSettings";
import { Bans } from "./server/Bans";
import { Categories } from "./server/Categories";

View File

@@ -28,7 +28,6 @@ import styled from "styled-components/macro";
import styles from "./Settings.module.scss";
import { openContextMenu } from "preact-context-menu";
import { Text } from "preact-i18n";
import { useContext } from "preact/hooks";
import { LineDivider } from "@revoltchat/ui";
@@ -36,12 +35,15 @@ import { useApplicationState } from "../../mobx/State";
import { useIntermediate } from "../../context/intermediate/Intermediate";
import RequiresOnline from "../../context/revoltjs/RequiresOnline";
import { AppContext, LogOutContext } from "../../context/revoltjs/RevoltClient";
import UserIcon from "../../components/common/user/UserIcon";
import { Username } from "../../components/common/user/UserShort";
import UserStatus from "../../components/common/user/UserStatus";
import ButtonItem from "../../components/navigation/items/ButtonItem";
import {
useClient,
clientController,
} from "../../controllers/client/ClientController";
import { modalController } from "../../controllers/modals/ModalController";
import { GIT_BRANCH, GIT_REVISION, REPO_URL } from "../../revision";
import { APP_VERSION } from "../../version";
@@ -118,8 +120,7 @@ const AccountHeader = styled.div`
export default observer(() => {
const history = useHistory();
const client = useContext(AppContext);
const logout = useContext(LogOutContext);
const client = useClient();
const { openScreen } = useIntermediate();
const experiments = useApplicationState().experiments;
@@ -288,7 +289,7 @@ export default observer(() => {
</a>
<LineDivider compact />
<ButtonItem
onClick={() => logout()}
onClick={clientController.logoutCurrent}
className={styles.logOut}
compact>
<LogOut size={20} />

View File

@@ -3,8 +3,7 @@ import { Key, Clipboard, Globe, Plus } from "@styled-icons/boxicons-regular";
import { LockAlt, HelpCircle } from "@styled-icons/boxicons-solid";
import type { AxiosError } from "axios";
import { observer } from "mobx-react-lite";
import { API } from "revolt.js";
import { User } from "revolt.js";
import { API, User } from "revolt.js";
import styled from "styled-components/macro";
import styles from "./Panes.module.scss";
@@ -26,7 +25,6 @@ import { stopPropagation } from "../../../lib/stopPropagation";
import { useIntermediate } from "../../../context/intermediate/Intermediate";
import { FileUploader } from "../../../context/revoltjs/FileUploads";
import { useClient } from "../../../context/revoltjs/RevoltClient";
import AutoComplete, {
useAutoComplete,
@@ -34,6 +32,7 @@ import AutoComplete, {
import CollapsibleSection from "../../../components/common/CollapsibleSection";
import Tooltip from "../../../components/common/Tooltip";
import UserIcon from "../../../components/common/user/UserIcon";
import { useClient } from "../../../controllers/client/ClientController";
import { modalController } from "../../../controllers/modals/ModalController";
interface Data {

View File

@@ -2,7 +2,7 @@ import { observer } from "mobx-react-lite";
import styles from "./Panes.module.scss";
import { Text } from "preact-i18n";
import { useContext, useEffect, useState } from "preact/hooks";
import { useEffect, useState } from "preact/hooks";
import { Checkbox, Column } from "@revoltchat/ui";
@@ -10,12 +10,11 @@ import { urlBase64ToUint8Array } from "../../../lib/conversion";
import { useApplicationState } from "../../../mobx/State";
import { AppContext } from "../../../context/revoltjs/RevoltClient";
import { useClient } from "../../../controllers/client/ClientController";
import { modalController } from "../../../controllers/modals/ModalController";
export const Notifications = observer(() => {
const client = useContext(AppContext);
const client = useClient();
const settings = useApplicationState().settings;
const [pushEnabled, setPushEnabled] = useState<undefined | boolean>(
undefined,

View File

@@ -14,20 +14,16 @@ import { useTranslation } from "../../../lib/i18n";
import { UserProfile } from "../../../context/intermediate/popovers/UserProfile";
import { FileUploader } from "../../../context/revoltjs/FileUploads";
import {
ClientStatus,
StatusContext,
useClient,
} from "../../../context/revoltjs/RevoltClient";
import AutoComplete, {
useAutoComplete,
} from "../../../components/common/AutoComplete";
import { useSession } from "../../../controllers/client/ClientController";
export const Profile = observer(() => {
const status = useContext(StatusContext);
const translate = useTranslation();
const client = useClient();
const session = useSession()!;
const client = session.client!;
const history = useHistory();
const [profile, setProfile] = useState<undefined | API.UserProfile>(
@@ -43,10 +39,10 @@ export const Profile = observer(() => {
}, [client.user, setProfile]);
useEffect(() => {
if (profile === undefined && status === ClientStatus.ONLINE) {
if (profile === undefined && session.state === "Online") {
refreshProfile();
}
}, [profile, status, refreshProfile]);
}, [profile, session.state, refreshProfile]);
const [changed, setChanged] = useState(false);
function setContent(content?: string) {

View File

@@ -16,7 +16,7 @@ import { decodeTime } from "ulid";
import styles from "./Panes.module.scss";
import { Text } from "preact-i18n";
import { useContext, useEffect, useState } from "preact/hooks";
import { useEffect, useState } from "preact/hooks";
import {
Button,
@@ -27,14 +27,14 @@ import {
} from "@revoltchat/ui";
import { dayjs } from "../../../context/Locale";
import { AppContext } from "../../../context/revoltjs/RevoltClient";
import { useClient } from "../../../controllers/client/ClientController";
import { modalController } from "../../../controllers/modals/ModalController";
dayjs.extend(relativeTime);
export function Sessions() {
const client = useContext(AppContext);
const client = useClient();
const deviceId =
typeof client.session === "object" ? client.session._id : undefined;