diff --git a/packages/client/public/locales/en/OAuth.json b/packages/client/public/locales/en/OAuth.json
index 1f61b2eb25..86df2099b8 100644
--- a/packages/client/public/locales/en/OAuth.json
+++ b/packages/client/public/locales/en/OAuth.json
@@ -7,6 +7,7 @@
"AppName": "App name",
"Apps": "Applications",
"AuthButton": "Auth button",
+ "AuthorizedApps": "Authorized apps",
"AuthorizeLink": "Authorize link",
"Client": "Client",
"Creator": "Creator",
@@ -21,6 +22,7 @@
"ID": "ID",
"LastModified": "Last modified",
"NewApp": "New application",
+ "NoAuthorizedApps": "No authorized apps",
"NoOAuthAppHeader": "No OAuth applications",
"OAuth": "OAuth",
"OAuthAppDescription": "OAuth applications are used to access the ONLYOFFICE DocSpace API for authorization and further actions such as accessing files, etc.",
diff --git a/packages/client/src/pages/Profile/Section/Body/index.js b/packages/client/src/pages/Profile/Section/Body/index.js
index 00a30fe424..5813c4fcce 100644
--- a/packages/client/src/pages/Profile/Section/Body/index.js
+++ b/packages/client/src/pages/Profile/Section/Body/index.js
@@ -51,7 +51,7 @@ const SectionBodyContent = (props) => {
},
{
id: "authorized-apps",
- name: "Authorized apps",
+ name: t("OAuth:AuthorizedApps"),
content: ,
},
];
@@ -119,6 +119,7 @@ export default inject(({ auth, peopleStore, clientLoadingStore }) => {
"DeleteSelfProfileDialog",
"Notifications",
"ConnectDialog",
+ "OAuth",
])(SectionBodyContent)
)
);
diff --git a/packages/client/src/pages/Profile/Section/Body/sub-components/authorized-apps/index.tsx b/packages/client/src/pages/Profile/Section/Body/sub-components/authorized-apps/index.tsx
index a6f2d4fe64..b3d6fcc8f0 100644
--- a/packages/client/src/pages/Profile/Section/Body/sub-components/authorized-apps/index.tsx
+++ b/packages/client/src/pages/Profile/Section/Body/sub-components/authorized-apps/index.tsx
@@ -22,6 +22,7 @@ import { StyledContainer } from "./styled-authorized-apps";
import TableView from "./sub-components/TableView";
import RowView from "./sub-components/RowView";
import RevokeDialog from "./sub-components/RevokeDialog";
+import EmptyScreen from "./sub-components/EmptyScreen";
interface AuthorizedAppsProps {
consents?: IClientProps[];
@@ -77,28 +78,33 @@ const AuthorizedApps = ({
return (
- {/* @ts-ignore */}
-
- {t("ProfileDescription")}
-
- {consents && consents?.length > 0 && (
-
- {(context: { sectionWidth: number; sectionHeight: number }) => (
- <>
- {viewAs === "table" ? (
-
- ) : (
-
- )}
- >
- )}
-
+ {consents && consents?.length > 0 ? (
+ <>
+ {/* @ts-ignore */}
+
+ {t("ProfileDescription")}
+
+
+
+ {(context: { sectionWidth: number; sectionHeight: number }) => (
+ <>
+ {viewAs === "table" ? (
+
+ ) : (
+
+ )}
+ >
+ )}
+
+ >
+ ) : (
+
)}
{infoDialogVisible && (
diff --git a/packages/client/src/pages/Profile/Section/Body/sub-components/authorized-apps/sub-components/EmptyScreen.tsx b/packages/client/src/pages/Profile/Section/Body/sub-components/authorized-apps/sub-components/EmptyScreen.tsx
new file mode 100644
index 0000000000..56920716ef
--- /dev/null
+++ b/packages/client/src/pages/Profile/Section/Body/sub-components/authorized-apps/sub-components/EmptyScreen.tsx
@@ -0,0 +1,17 @@
+// @ts-ignore
+import EmptyScreenContainer from "@docspace/components/empty-screen-container";
+
+import EmptyScreenPersonsSvgUrl from "PUBLIC_DIR/images/empty_screen_userfields.svg?url";
+
+const EmptyScreen = ({ t }: { t: any }) => {
+ return (
+
+ );
+};
+
+export default EmptyScreen;
diff --git a/public/images/empty_screen_userfields.svg b/public/images/empty_screen_userfields.svg
new file mode 100644
index 0000000000..2f385f3220
--- /dev/null
+++ b/public/images/empty_screen_userfields.svg
@@ -0,0 +1,35 @@
+