From d173fcdfa3ad6f6aee721c8553f25f4db38fa302 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Thu, 5 Oct 2023 16:06:19 +0200 Subject: [chore] Convert some settings / admin panel JS to TypeScript (#2247) * initial conversion of STUFF to typescript * more stuff * update babel deps, include commonjs transform * update bundler & eslint configuration * eslint --fix * upgrade deps * update docs, build stuff, peripheral stuff --------- Co-authored-by: f0x --- .../settings/components/authorization/index.jsx | 76 --------------------- .../settings/components/authorization/index.tsx | 78 ++++++++++++++++++++++ .../settings/components/authorization/login.jsx | 69 ------------------- .../settings/components/authorization/login.tsx | 74 ++++++++++++++++++++ 4 files changed, 152 insertions(+), 145 deletions(-) delete mode 100644 web/source/settings/components/authorization/index.jsx create mode 100644 web/source/settings/components/authorization/index.tsx delete mode 100644 web/source/settings/components/authorization/login.jsx create mode 100644 web/source/settings/components/authorization/login.tsx (limited to 'web/source/settings/components/authorization') diff --git a/web/source/settings/components/authorization/index.jsx b/web/source/settings/components/authorization/index.jsx deleted file mode 100644 index d38e160da..000000000 --- a/web/source/settings/components/authorization/index.jsx +++ /dev/null @@ -1,76 +0,0 @@ -/* - GoToSocial - Copyright (C) GoToSocial Authors admin@gotosocial.org - SPDX-License-Identifier: AGPL-3.0-or-later - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - -"use strict"; - -const React = require("react"); -const Redux = require("react-redux"); - -const query = require("../../lib/query"); - -const Login = require("./login"); -const Loading = require("../loading"); -const { Error } = require("../error"); - -module.exports = function Authorization({ App }) { - const { loginState, expectingRedirect } = Redux.useSelector((state) => state.oauth); - - const { isLoading, isSuccess, data: account, error } = query.useVerifyCredentialsQuery(undefined, { - skip: loginState == "none" || loginState == "logout" || expectingRedirect - }); - - let showLogin = true; - let content = null; - - if (isLoading) { - showLogin = false; - - let loadingInfo; - if (loginState == "callback") { - loadingInfo = "Processing OAUTH callback."; - } else if (loginState == "login") { - loadingInfo = "Verifying stored login."; - } - - content = ( -
- {loadingInfo} -
- ); - } else if (error != undefined) { - content = ( -
- - You can attempt logging in again below: -
- ); - } - - if (loginState == "login" && isSuccess) { - return ; - } else { - return ( -
-

GoToSocial Settings

- {content} - {showLogin && } -
- ); - } -}; \ No newline at end of file diff --git a/web/source/settings/components/authorization/index.tsx b/web/source/settings/components/authorization/index.tsx new file mode 100644 index 000000000..321bb03eb --- /dev/null +++ b/web/source/settings/components/authorization/index.tsx @@ -0,0 +1,78 @@ +/* + GoToSocial + Copyright (C) GoToSocial Authors admin@gotosocial.org + SPDX-License-Identifier: AGPL-3.0-or-later + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +import { useVerifyCredentialsQuery } from "../../lib/query/oauth"; +import { store } from "../../redux/store"; + +import React from "react"; + +import Login from "./login"; +import Loading from "../loading"; +import { Error } from "../error"; + +export function Authorization({ App }) { + const { loginState, expectingRedirect } = store.getState().oauth; + const skip = (loginState == "none" || loginState == "logout" || expectingRedirect); + + const { + isLoading, + isSuccess, + data: account, + error, + } = useVerifyCredentialsQuery(null, { skip: skip }); + + let showLogin = true; + let content = null; + + if (isLoading) { + showLogin = false; + + let loadingInfo; + if (loginState == "callback") { + loadingInfo = "Processing OAUTH callback."; + } else if (loginState == "login") { + loadingInfo = "Verifying stored login."; + } + + content = ( +
+ {loadingInfo} +
+ ); + } else if (error != undefined) { + content = ( +
+ + You can attempt logging in again below: +
+ ); + } + + if (loginState == "login" && isSuccess) { + return ; + } else { + return ( +
+

GoToSocial Settings

+ {content} + {showLogin && } +
+ ); + } +} diff --git a/web/source/settings/components/authorization/login.jsx b/web/source/settings/components/authorization/login.jsx deleted file mode 100644 index dbeb6c047..000000000 --- a/web/source/settings/components/authorization/login.jsx +++ /dev/null @@ -1,69 +0,0 @@ -/* - GoToSocial - Copyright (C) GoToSocial Authors admin@gotosocial.org - SPDX-License-Identifier: AGPL-3.0-or-later - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - -"use strict"; - -const React = require("react"); - -const query = require("../../lib/query"); -const { useTextInput, useValue } = require("../../lib/form"); -const useFormSubmit = require("../../lib/form/submit"); -const { TextInput } = require("../form/inputs"); -const MutationButton = require("../form/mutation-button"); -const Loading = require("../loading"); - -module.exports = function Login({ }) { - const form = { - instance: useTextInput("instance", { - defaultValue: window.location.origin - }), - scopes: useValue("scopes", "user admin") - }; - - const [formSubmit, result] = useFormSubmit( - form, - query.useAuthorizeFlowMutation(), - { changedOnly: false } - ); - - if (result.isLoading) { - return ( -
- Checking instance. -
- ); - } else if (result.isSuccess) { - return ( -
- Redirecting to instance authorization page. -
- ); - } - - return ( -
- - - - ); -}; \ No newline at end of file diff --git a/web/source/settings/components/authorization/login.tsx b/web/source/settings/components/authorization/login.tsx new file mode 100644 index 000000000..76bfccf43 --- /dev/null +++ b/web/source/settings/components/authorization/login.tsx @@ -0,0 +1,74 @@ +/* + GoToSocial + Copyright (C) GoToSocial Authors admin@gotosocial.org + SPDX-License-Identifier: AGPL-3.0-or-later + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +import React from "react"; + +import { useAuthorizeFlowMutation } from "../../lib/query/oauth"; +import { useTextInput, useValue } from "../../lib/form"; +import useFormSubmit from "../../lib/form/submit"; +import { TextInput } from "../form/inputs"; +import MutationButton from "../form/mutation-button"; +import Loading from "../loading"; + +export default function Login({ }) { + const form = { + instance: useTextInput("instance", { + defaultValue: window.location.origin + }), + scopes: useValue("scopes", "user admin") + }; + + const [formSubmit, result] = useFormSubmit( + form, + useAuthorizeFlowMutation(), + { + changedOnly: false, + onFinish: undefined, + } + ); + + if (result.isLoading) { + return ( +
+ Checking instance. +
+ ); + } else if (result.isSuccess) { + return ( +
+ Redirecting to instance authorization page. +
+ ); + } + + return ( +
+ + + + ); +} \ No newline at end of file -- cgit v1.2.3