Merge branch 'feature/thirdparty-integrations' of https://github.com/ONLYOFFICE/CommunityServer-AspNetCore into feature/thirdparty-integrations

This commit is contained in:
Nikita Gopienko 2020-11-24 15:12:27 +03:00
commit dcccb1180f
4 changed files with 44 additions and 51 deletions

View File

@ -14,10 +14,11 @@ import {
getWebDavConnect,
} from "../../../store/files/selectors";
import {
getOAuthToken,
openConnectWindow,
setConnectItem,
setSelectedNode,
setSelectedFolder,
setSelectedNode,
setShowThirdPartyPanel,
} from "../../../store/files/actions";
@ -128,37 +129,20 @@ const PureThirdPartyListContainer = ({
}
};
const getOAuthToken = (modal, serviceData) => {
let t = setInterval(() => {
try {
if (modal.json) {
clearInterval(t);
const token = modal.json.response;
if (token) {
modal.close();
const data = {
title: serviceData.title,
provider_key: serviceData.title,
link: serviceData.link,
token,
};
setConnectItem(data);
}
}
} catch {
return;
}
}, 1000);
};
const onConnect = (e) => {
const data = e.currentTarget.dataset;
data.link
? openConnectWindow(data.title).then((modal) =>
getOAuthToken(modal, data)
getOAuthToken(modal).then((token) => {
const serviceData = {
title: data.title,
provider_key: data.title,
link: data.link,
token,
};
setConnectItem(serviceData);
})
)
: setConnectItem(data);

View File

@ -11,15 +11,16 @@ import {
} from "asc-web-components";
import { utils as commonUtils, toastr } from "asc-web-common";
import {
saveThirdParty,
openConnectWindow,
fetchFiles,
setUpdateTree,
setTreeFolders,
fetchThirdPartyProviders,
fetchTreeFolders,
getOAuthToken,
openConnectWindow,
saveThirdParty,
setIsLoading,
setSelectedNode,
setTreeFolders,
setUpdateTree,
} from "../../../store/files/actions";
import {
getTreeFolders,
@ -90,6 +91,7 @@ const PureConnectDialogContainer = (props) => {
const [passwordValue, setPasswordValue] = useState("");
const [customerTitle, setCustomerTitleValue] = useState(title);
const [isCorporate, setMakeShared] = useState(!!corporate);
const [oAuthToken, setToken] = useState(token);
const onChangeUrl = (e) => setUrlValue(e.target.value);
const onChangeLogin = (e) => setLoginValue(e.target.value);
@ -104,7 +106,7 @@ const PureConnectDialogContainer = (props) => {
urlValue,
loginValue,
passwordValue,
token,
oAuthToken,
isCorporate,
customerTitle,
provider_key,
@ -131,7 +133,9 @@ const PureConnectDialogContainer = (props) => {
};
const onReconnect = () => {
openConnectWindow(title);
openConnectWindow(title).then((modal) =>
getOAuthToken(modal).then((token) => setToken(token))
);
};
const isAccount = !!link;

View File

@ -16,6 +16,7 @@ import EmptyFolderContainer from "../../../Home/Section/Body/EmptyFolderContaine
import { createI18N } from "../../../../../helpers/i18n";
import { Trans } from "react-i18next";
import {
getOAuthToken,
openConnectWindow,
setConnectItem,
setShowThirdPartyPanel,
@ -145,29 +146,14 @@ class ConnectClouds extends React.Component {
});
};
getOAuthToken = (modal, serviceData) => {
let t = setInterval(() => {
try {
if (modal.json) {
clearInterval(t);
const token = modal.json.response;
if (token) {
modal.close();
this.showOAuthModal(token, serviceData);
}
}
} catch {
return;
}
}, 1000);
};
onShowService = (e) => {
const selectedServiceData = e.currentTarget.dataset;
const showAccountSettingDialog = !e.currentTarget.dataset.link;
!showAccountSettingDialog &&
openConnectWindow(selectedServiceData.title).then((modal) =>
this.getOAuthToken(modal, selectedServiceData)
getOAuthToken(modal).then((token) =>
this.showOAuthModal(token, selectedServiceData)
)
);
this.setState({

View File

@ -1390,6 +1390,25 @@ const convertServiceName = (serviceName) => {
}
};
export function getOAuthToken(modal) {
return new Promise((resolve) => {
const interval = setInterval(() => {
try {
if (modal.json) {
clearInterval(interval);
const token = modal.json.response;
if (token) {
modal.close();
return resolve(token);
}
}
} catch {
return;
}
}, 500);
});
}
export function openConnectWindow(serviceName) {
const service = convertServiceName(serviceName);
return api.files.openConnectWindow(service).then((link) => {