Merge pull request #573 from ONLYOFFICE/bugfix/66037

Bugfix/66037
This commit is contained in:
Alexey Safronov 2024-08-06 18:09:02 +04:00 committed by GitHub
commit b95e388d9d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 54 additions and 3 deletions

View File

@ -43,6 +43,7 @@ import { DeviceType, IndexedDBStores } from "@docspace/shared/enums";
import indexedDbHelper from "@docspace/shared/utils/indexedDBHelper";
import { useThemeDetector } from "@docspace/shared/hooks/useThemeDetector";
import { sendToastReport } from "@docspace/shared/utils/crashReport";
import { combineUrl } from "@docspace/shared/utils/combineUrl";
import config from "PACKAGE_FILE";
@ -77,6 +78,7 @@ const Shell = ({ items = [], page = "home", ...rest }) => {
userTheme,
//user,
userId,
userLoginEventId,
currentDeviceType,
timezone,
showArticleLoader,
@ -134,6 +136,7 @@ const Shell = ({ items = [], page = "home", ...rest }) => {
command: "subscribe",
data: { roomParts: "backup-restore" },
});
socketHelper.on("restore-backup", () => {
getRestoreProgress()
.then((response) => {
@ -159,7 +162,27 @@ const Shell = ({ items = [], page = "home", ...rest }) => {
command: "subscribe",
data: { roomParts: "QUOTA", individual: true },
});
}, [socketHelper]);
socketHelper.emit({
command: "subscribe",
data: { roomParts: userId },
});
socketHelper.on("s:logout-session", (loginEventId) => {
console.log(`[WS] "logout-session"`, loginEventId, userLoginEventId);
if (userLoginEventId === loginEventId || loginEventId === 0) {
window.location.replace(
combineUrl(window.ClientConfig?.proxy?.url, "/login"),
);
}
});
}, [
socketHelper,
userLoginEventId,
setPreparationPortalDialogVisible,
userId,
]);
const { t, ready } = useTranslation(["Common"]); //TODO: if enable banner ["Common", "SmartBanner"]
@ -533,6 +556,7 @@ const ShellWrapper = inject(
setSnackbarExist,
userTheme: isFrame ? frameConfig?.theme : userTheme,
userId: userStore?.user?.id,
userLoginEventId: userStore?.user?.loginEventId,
currentDeviceType,
showArticleLoader: clientLoadingStore.showArticleLoader,
setPortalTariff,

View File

@ -103,6 +103,7 @@ const Root = ({
const { filesSettings } = useFilesSettings({});
const { socketHelper } = useSocketHelper({
socketUrl: user ? settings?.socketUrl ?? "" : "",
user,
});
const {
onSDKRequestSaveAs,

View File

@ -29,12 +29,14 @@
import React from "react";
import SocketIOHelper from "@docspace/shared/utils/socket";
import { combineUrl } from "@docspace/shared/utils/combineUrl";
import { getRestoreProgress } from "@docspace/shared/api/portal";
import { getUser } from "@docspace/shared/api/people";
import { EDITOR_ID } from "@docspace/shared/constants";
import { UseSocketHelperProps } from "@/types";
const useSocketHelper = ({ socketUrl }: UseSocketHelperProps) => {
const useSocketHelper = ({ socketUrl, user }: UseSocketHelperProps) => {
const [socketHelper, setSocketHelper] = React.useState<SocketIOHelper | null>(
null,
);
@ -48,6 +50,11 @@ const useSocketHelper = ({ socketUrl }: UseSocketHelperProps) => {
data: { roomParts: "backup-restore" },
});
socketIOHelper.emit({
command: "subscribe",
data: { roomParts: user?.id || "" },
});
socketIOHelper.on("restore-backup", async () => {
try {
const response = await getRestoreProgress();
@ -69,6 +76,24 @@ const useSocketHelper = ({ socketUrl }: UseSocketHelperProps) => {
}
});
socketIOHelper.on("s:logout-session", async (loginEventId) => {
console.log(`[WS] "logout-session"`, loginEventId, user?.loginEventId);
if (
Number(loginEventId) === user?.loginEventId ||
Number(loginEventId) === 0
) {
const docEditor =
typeof window !== "undefined" &&
window.DocEditor?.instances[EDITOR_ID];
docEditor?.requestClose();
window.location.replace(
combineUrl(window.ClientConfig?.proxy?.url, "/login"),
);
}
});
setSocketHelper(socketIOHelper);
}, [socketHelper, socketUrl]);
@ -76,4 +101,3 @@ const useSocketHelper = ({ socketUrl }: UseSocketHelperProps) => {
};
export default useSocketHelper;

View File

@ -334,6 +334,7 @@ export interface SelectFileDialogProps {
export interface UseSocketHelperProps {
socketUrl: string;
user?: TUser;
}
export interface UseEventsProps {

View File

@ -71,6 +71,7 @@ export type TUser = {
cultureName?: string;
groups?: TUserGroup[];
shared?: boolean;
loginEventId?: number;
};
export type TGetUserList = {