2021-04-02 12:36:40 +00:00
|
|
|
import { makeAutoObservable } from "mobx";
|
2021-02-01 17:33:39 +00:00
|
|
|
import api from "../api";
|
2022-08-24 07:17:39 +00:00
|
|
|
import { combineUrl, setCookie, getCookie } from "../utils";
|
2021-07-09 15:28:08 +00:00
|
|
|
import FirebaseHelper from "../utils/firebase";
|
2022-08-05 14:21:14 +00:00
|
|
|
import {
|
|
|
|
ThemeKeys,
|
|
|
|
COOKIE_EXPIRATION_YEAR,
|
2022-08-24 07:17:39 +00:00
|
|
|
LANGUAGE,
|
2022-09-09 14:10:04 +00:00
|
|
|
TenantStatus,
|
2022-08-24 07:17:39 +00:00
|
|
|
} from "../constants";
|
2021-10-04 14:08:03 +00:00
|
|
|
import { version } from "../package.json";
|
2022-01-12 17:13:30 +00:00
|
|
|
import SocketIOHelper from "../utils/socket";
|
2022-07-22 19:01:25 +00:00
|
|
|
import { Dark, Base } from "@docspace/components/themes";
|
2022-08-24 09:33:37 +00:00
|
|
|
import { initPluginStore } from "../../client/src/helpers/plugins";
|
2023-02-08 07:58:35 +00:00
|
|
|
import { wrongPortalNameUrl } from "@docspace/common/constants";
|
2021-12-14 07:52:49 +00:00
|
|
|
|
2021-12-28 13:35:47 +00:00
|
|
|
const themes = {
|
|
|
|
Dark: Dark,
|
|
|
|
Base: Base,
|
|
|
|
};
|
|
|
|
|
2022-06-27 16:22:59 +00:00
|
|
|
const isDesktopEditors = window["AscDesktopEditor"] !== undefined;
|
|
|
|
|
2021-02-01 17:33:39 +00:00
|
|
|
class SettingsStore {
|
2021-02-03 12:42:47 +00:00
|
|
|
isLoading = false;
|
|
|
|
isLoaded = false;
|
2022-05-12 11:57:58 +00:00
|
|
|
isBurgerLoading = false;
|
2021-02-03 12:42:47 +00:00
|
|
|
|
2022-01-25 15:31:48 +00:00
|
|
|
checkedMaintenance = false;
|
2022-02-01 08:22:39 +00:00
|
|
|
maintenanceExist = false;
|
2022-02-28 13:17:09 +00:00
|
|
|
snackbarExist = false;
|
2021-02-02 09:55:14 +00:00
|
|
|
currentProductId = "";
|
2022-01-14 16:12:58 +00:00
|
|
|
culture = "en";
|
2021-02-02 09:55:14 +00:00
|
|
|
cultures = [];
|
2022-06-27 16:22:59 +00:00
|
|
|
theme = isDesktopEditors
|
|
|
|
? window.RendererProcessVariable?.theme?.type === "dark"
|
|
|
|
? Dark
|
|
|
|
: Base
|
2022-10-20 12:43:11 +00:00
|
|
|
: window.matchMedia &&
|
|
|
|
window.matchMedia("(prefers-color-scheme: dark)").matches
|
|
|
|
? Dark
|
2022-06-27 16:22:59 +00:00
|
|
|
: Base;
|
2021-02-02 09:55:14 +00:00
|
|
|
trustedDomains = [];
|
2021-05-04 12:35:09 +00:00
|
|
|
trustedDomainsType = 0;
|
2022-04-06 11:09:26 +00:00
|
|
|
ipRestrictionEnable = false;
|
|
|
|
ipRestrictions = [];
|
2022-04-07 14:55:44 +00:00
|
|
|
sessionLifetime = "1440";
|
2021-02-02 09:55:14 +00:00
|
|
|
timezone = "UTC";
|
|
|
|
timezones = [];
|
2022-04-20 15:24:21 +00:00
|
|
|
tenantAlias = "";
|
2021-02-02 09:55:14 +00:00
|
|
|
utcOffset = "00:00:00";
|
|
|
|
utcHoursOffset = 0;
|
2021-06-03 12:48:19 +00:00
|
|
|
defaultPage = "/";
|
2021-03-21 21:34:21 +00:00
|
|
|
homepage = "";
|
2021-02-02 09:55:14 +00:00
|
|
|
datePattern = "M/d/yyyy";
|
|
|
|
datePatternJQ = "00/00/0000";
|
|
|
|
dateTimePattern = "dddd, MMMM d, yyyy h:mm:ss tt";
|
|
|
|
datepicker = {
|
|
|
|
datePattern: "mm/dd/yy",
|
2021-02-04 09:52:43 +00:00
|
|
|
dateTimePattern: "DD, mm dd, yy h:mm:ss tt",
|
2021-02-02 09:55:14 +00:00
|
|
|
timePattern: "h:mm tt",
|
2021-02-01 17:33:39 +00:00
|
|
|
};
|
2021-02-02 09:55:14 +00:00
|
|
|
organizationName = "ONLYOFFICE";
|
|
|
|
greetingSettings = "Web Office Applications";
|
|
|
|
enableAdmMess = false;
|
2021-04-19 15:39:00 +00:00
|
|
|
enabledJoin = false;
|
2021-02-02 09:55:14 +00:00
|
|
|
urlLicense = "https://gnu.org/licenses/gpl-3.0.html";
|
|
|
|
urlSupport = "https://helpdesk.onlyoffice.com/";
|
2022-08-29 08:27:13 +00:00
|
|
|
urlOforms = "https://cmsoforms.onlyoffice.com/api/oforms";
|
2022-04-21 10:57:04 +00:00
|
|
|
|
2022-10-31 08:29:40 +00:00
|
|
|
logoUrl = "";
|
2023-01-12 13:20:35 +00:00
|
|
|
|
2022-06-27 16:22:59 +00:00
|
|
|
isDesktopClient = isDesktopEditors;
|
2021-02-02 09:55:14 +00:00
|
|
|
//isDesktopEncryption: desktopEncryption;
|
|
|
|
isEncryptionSupport = false;
|
|
|
|
encryptionKeys = null;
|
2021-02-20 14:31:58 +00:00
|
|
|
|
2021-06-03 07:32:33 +00:00
|
|
|
personal = false;
|
2022-06-28 13:39:14 +00:00
|
|
|
docSpace = true;
|
2021-06-02 13:42:59 +00:00
|
|
|
|
2022-02-02 22:38:35 +00:00
|
|
|
roomsMode = false;
|
|
|
|
|
2021-02-20 14:31:58 +00:00
|
|
|
isHeaderVisible = false;
|
2021-02-02 09:55:14 +00:00
|
|
|
isTabletView = false;
|
2021-02-20 14:31:58 +00:00
|
|
|
|
2022-02-18 12:46:49 +00:00
|
|
|
showText = false;
|
2022-03-17 07:55:30 +00:00
|
|
|
articleOpen = false;
|
2022-04-04 07:52:25 +00:00
|
|
|
isMobileArticle = false;
|
2021-04-07 10:35:32 +00:00
|
|
|
|
2022-03-24 17:56:51 +00:00
|
|
|
folderPath = [];
|
|
|
|
|
2021-02-02 09:55:14 +00:00
|
|
|
hashSettings = null;
|
2021-02-03 12:42:47 +00:00
|
|
|
title = "";
|
2021-02-03 14:34:26 +00:00
|
|
|
ownerId = null;
|
|
|
|
nameSchemaId = null;
|
2021-02-15 19:43:07 +00:00
|
|
|
owner = {};
|
2021-03-18 18:54:03 +00:00
|
|
|
wizardToken = null;
|
2021-02-15 19:43:07 +00:00
|
|
|
passwordSettings = null;
|
2021-03-19 16:02:43 +00:00
|
|
|
hasShortenService = false;
|
2022-09-05 11:33:55 +00:00
|
|
|
withPaging = false;
|
2021-02-01 17:33:39 +00:00
|
|
|
|
2021-04-16 14:10:37 +00:00
|
|
|
customSchemaList = [];
|
2021-07-09 15:28:08 +00:00
|
|
|
firebase = {
|
|
|
|
apiKey: "",
|
|
|
|
authDomain: "",
|
|
|
|
projectId: "",
|
|
|
|
storageBucket: "",
|
|
|
|
messagingSenderId: "",
|
|
|
|
appId: "",
|
|
|
|
measurementId: "",
|
|
|
|
};
|
2021-07-14 14:31:06 +00:00
|
|
|
version = "";
|
2021-10-04 14:08:03 +00:00
|
|
|
buildVersionInfo = {
|
2022-12-20 16:51:49 +00:00
|
|
|
docspace: version,
|
2021-10-04 14:08:03 +00:00
|
|
|
documentServer: "6.4.1",
|
|
|
|
};
|
2021-10-05 08:13:38 +00:00
|
|
|
debugInfo = false;
|
2022-01-12 17:13:30 +00:00
|
|
|
socketUrl = "";
|
2021-04-13 11:34:04 +00:00
|
|
|
|
2021-10-06 08:04:29 +00:00
|
|
|
userFormValidation = /^[\p{L}\p{M}'\-]+$/gu;
|
2021-10-06 08:22:00 +00:00
|
|
|
folderFormValidation = new RegExp('[*+:"<>?|\\\\/]', "gim");
|
2021-10-05 14:38:29 +00:00
|
|
|
|
2022-03-24 17:56:51 +00:00
|
|
|
tenantStatus = null;
|
2022-06-08 14:44:27 +00:00
|
|
|
helpLink = null;
|
2023-04-07 11:24:49 +00:00
|
|
|
bookTrainingEmail = null;
|
2022-06-10 08:30:57 +00:00
|
|
|
hotkeyPanelVisible = false;
|
2022-08-04 10:31:35 +00:00
|
|
|
frameConfig = null;
|
2022-03-24 17:56:51 +00:00
|
|
|
|
2022-07-22 08:11:27 +00:00
|
|
|
appearanceTheme = [];
|
|
|
|
selectedThemeId = null;
|
|
|
|
currentColorScheme = null;
|
2022-07-13 09:34:53 +00:00
|
|
|
|
2022-08-24 09:33:37 +00:00
|
|
|
enablePlugins = false;
|
|
|
|
pluginOptions = [];
|
|
|
|
|
2022-09-09 07:34:45 +00:00
|
|
|
additionalResourcesData = null;
|
2022-10-14 14:26:54 +00:00
|
|
|
additionalResourcesIsDefault = true;
|
2022-09-06 08:03:01 +00:00
|
|
|
companyInfoSettingsData = null;
|
2022-10-14 14:26:54 +00:00
|
|
|
companyInfoSettingsIsDefault = true;
|
2022-08-27 09:17:44 +00:00
|
|
|
|
2022-09-14 14:25:31 +00:00
|
|
|
whiteLabelLogoUrls = [];
|
2023-02-09 13:25:01 +00:00
|
|
|
standalone = false;
|
2022-09-14 10:59:17 +00:00
|
|
|
|
2023-03-17 15:37:43 +00:00
|
|
|
mainBarVisible = false;
|
2023-04-04 15:07:30 +00:00
|
|
|
zendeskKey = null;
|
2023-04-04 15:18:07 +00:00
|
|
|
bookTrainingEmail = null;
|
2023-04-10 19:49:35 +00:00
|
|
|
legalTerms = null;
|
2023-04-14 07:55:13 +00:00
|
|
|
baseDomain = "onlyoffice.io";
|
2023-04-14 07:36:38 +00:00
|
|
|
documentationEmail = null;
|
2023-03-17 15:37:43 +00:00
|
|
|
|
2021-02-01 17:33:39 +00:00
|
|
|
constructor() {
|
2021-04-01 09:42:23 +00:00
|
|
|
makeAutoObservable(this);
|
2021-02-01 17:33:39 +00:00
|
|
|
}
|
|
|
|
|
2022-03-24 17:56:51 +00:00
|
|
|
setTenantStatus = (tenantStatus) => {
|
|
|
|
this.tenantStatus = tenantStatus;
|
|
|
|
};
|
2022-05-12 11:57:58 +00:00
|
|
|
|
2023-03-27 17:40:34 +00:00
|
|
|
get docspaceSettingsUrl() {
|
|
|
|
return `${this.helpLink}/administration/docspace-settings.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get integrationSettingsUrl() {
|
|
|
|
return `${this.helpLink}/administration/docspace-settings.aspx#AdjustingIntegrationSettings_block`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get docuSignUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-docusign-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get dropboxUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-dropbox-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get boxUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-box-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get mailRuUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-mail-ru-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get oneDriveUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-onedrive-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get microsoftUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-microsoft-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get googleUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-google-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get facebookUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-facebook-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get linkedinUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-linkedin-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get clickatellUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-clickatell-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get smsclUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-smsc-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get firebaseUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-firebase-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get appleIDUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-apple-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get telegramUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-telegram-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get wordpressUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-wordpress-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get awsUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-amazon-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get googleCloudUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-google-cloud-storage-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get rackspaceUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-rackspace-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get selectelUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-selectel-docspace.aspx`;
|
2021-02-01 17:33:39 +00:00
|
|
|
}
|
|
|
|
|
2023-03-28 07:39:05 +00:00
|
|
|
get yandexUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-yandex-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get vkUrl() {
|
|
|
|
return `${this.helpLink}/administration/connect-vk-docspace.aspx`;
|
|
|
|
}
|
|
|
|
|
2023-04-17 14:08:53 +00:00
|
|
|
get languageAndTimeZoneSettingsUrl() {
|
|
|
|
return `${this.helpLink}/administration/docspace-settings.aspx#DocSpacelanguage`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get dnsSettingsUrl() {
|
|
|
|
return `${this.helpLink}/administration/docspace-settings.aspx#alternativeurl`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get passwordStrengthSettingsUrl() {
|
|
|
|
return `${this.helpLink}/administration/docspace-settings.aspx#passwordstrength`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get tfaSettingsUrl() {
|
|
|
|
return `${this.helpLink}/administration/docspace-two-factor-authentication.aspx`;
|
2021-03-18 18:54:03 +00:00
|
|
|
}
|
|
|
|
|
2023-04-17 14:08:53 +00:00
|
|
|
get trustedMailDomainSettingsUrl() {
|
|
|
|
return `${this.helpLink}/administration/docspace-settings.aspx#TrustedDomain`;
|
2021-04-13 11:47:46 +00:00
|
|
|
}
|
|
|
|
|
2023-04-17 14:08:53 +00:00
|
|
|
get administratorMessageSettingsUrl() {
|
|
|
|
return `${this.helpLink}/administration/docspace-settings.aspx#administratormessage`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get dataBackupUrl() {
|
|
|
|
return `${this.helpLink}/administration/docspace-settings.aspx#CreatingBackup_block`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get automaticBackupUrl() {
|
|
|
|
return `${this.helpLink}/administration/docspace-settings.aspx#AutoBackup`;
|
|
|
|
}
|
|
|
|
|
|
|
|
get wizardCompleted() {
|
|
|
|
return this.isLoaded && !this.wizardToken;
|
2022-03-24 17:56:51 +00:00
|
|
|
}
|
|
|
|
|
2023-03-17 15:37:43 +00:00
|
|
|
setMainBarVisible = (visible) => {
|
|
|
|
this.mainBarVisible = visible;
|
|
|
|
};
|
|
|
|
|
2021-03-03 11:46:05 +00:00
|
|
|
setValue = (key, value) => {
|
|
|
|
this[key] = value;
|
|
|
|
};
|
2021-03-18 18:54:03 +00:00
|
|
|
|
2022-01-25 15:31:48 +00:00
|
|
|
setCheckedMaintenance = (checkedMaintenance) => {
|
|
|
|
this.checkedMaintenance = checkedMaintenance;
|
|
|
|
};
|
|
|
|
|
2022-02-01 08:22:39 +00:00
|
|
|
setMaintenanceExist = (maintenanceExist) => {
|
|
|
|
this.maintenanceExist = maintenanceExist;
|
|
|
|
};
|
|
|
|
|
2022-02-28 13:17:09 +00:00
|
|
|
setSnackbarExist = (snackbar) => {
|
|
|
|
this.snackbarExist = snackbar;
|
|
|
|
};
|
|
|
|
|
2021-06-03 12:48:19 +00:00
|
|
|
setDefaultPage = (defaultPage) => {
|
|
|
|
this.defaultPage = defaultPage;
|
|
|
|
};
|
|
|
|
|
2022-09-12 14:31:08 +00:00
|
|
|
setGreetingSettings = (greetingSettings) => {
|
|
|
|
this.greetingSettings = greetingSettings;
|
|
|
|
};
|
|
|
|
|
2023-03-14 14:49:51 +00:00
|
|
|
getSettings = async () => {
|
2022-07-25 13:24:10 +00:00
|
|
|
let newSettings = null;
|
|
|
|
|
2022-07-26 07:56:25 +00:00
|
|
|
if (window?.__ASC_INITIAL_EDITOR_STATE__?.portalSettings)
|
|
|
|
newSettings = window.__ASC_INITIAL_EDITOR_STATE__.portalSettings;
|
2023-03-14 14:49:51 +00:00
|
|
|
else newSettings = await api.settings.getSettings(true);
|
2021-02-01 17:33:39 +00:00
|
|
|
|
2021-06-03 12:52:07 +00:00
|
|
|
if (window["AscDesktopEditor"] !== undefined || this.personal) {
|
2022-12-20 16:51:49 +00:00
|
|
|
const dp = combineUrl(
|
|
|
|
window.DocSpaceConfig?.proxy?.url,
|
|
|
|
"/products/files/"
|
|
|
|
);
|
2021-06-03 12:52:07 +00:00
|
|
|
this.setDefaultPage(dp);
|
|
|
|
}
|
|
|
|
|
2021-02-02 09:55:14 +00:00
|
|
|
Object.keys(newSettings).map((key) => {
|
2021-02-03 14:06:47 +00:00
|
|
|
if (key in this) {
|
2021-03-21 21:34:21 +00:00
|
|
|
this.setValue(
|
|
|
|
key,
|
|
|
|
key === "defaultPage"
|
2022-12-20 16:51:49 +00:00
|
|
|
? combineUrl(window.DocSpaceConfig?.proxy?.url, newSettings[key])
|
2021-03-21 21:34:21 +00:00
|
|
|
: newSettings[key]
|
|
|
|
);
|
2021-04-07 13:33:00 +00:00
|
|
|
if (key === "culture") {
|
2023-02-01 10:50:58 +00:00
|
|
|
if (newSettings.wizardToken) return;
|
2022-08-05 14:21:14 +00:00
|
|
|
const language = getCookie(LANGUAGE);
|
2021-04-07 13:33:00 +00:00
|
|
|
if (!language || language == "undefined") {
|
2022-08-05 14:21:14 +00:00
|
|
|
setCookie(LANGUAGE, newSettings[key], {
|
|
|
|
"max-age": COOKIE_EXPIRATION_YEAR,
|
|
|
|
});
|
2021-04-07 13:33:00 +00:00
|
|
|
}
|
2021-02-02 09:55:14 +00:00
|
|
|
}
|
|
|
|
} else if (key === "passwordHash") {
|
2021-03-03 11:46:05 +00:00
|
|
|
this.setValue("hashSettings", newSettings[key]);
|
2021-02-02 09:55:14 +00:00
|
|
|
}
|
|
|
|
});
|
2021-02-01 17:33:39 +00:00
|
|
|
|
2022-09-12 14:31:08 +00:00
|
|
|
this.setGreetingSettings(newSettings.greetingSettings);
|
2022-10-20 11:08:47 +00:00
|
|
|
|
2021-02-02 09:55:14 +00:00
|
|
|
return newSettings;
|
|
|
|
};
|
2021-02-01 17:33:39 +00:00
|
|
|
|
2022-03-24 17:56:51 +00:00
|
|
|
getFolderPath = async (id) => {
|
|
|
|
this.folderPath = await api.files.getFolderPath(id);
|
|
|
|
};
|
|
|
|
|
2021-04-16 12:35:02 +00:00
|
|
|
getCustomSchemaList = async () => {
|
2021-04-16 14:10:37 +00:00
|
|
|
this.customSchemaList = await api.settings.getCustomSchemaList();
|
2021-04-13 11:34:04 +00:00
|
|
|
};
|
|
|
|
|
2021-02-02 09:55:14 +00:00
|
|
|
getPortalSettings = async () => {
|
2023-01-27 17:13:31 +00:00
|
|
|
const origSettings = await this.getSettings().catch((err) => {
|
|
|
|
if (err?.response?.status === 404) {
|
|
|
|
// portal not found
|
2023-03-14 18:31:43 +00:00
|
|
|
const url = new URL(wrongPortalNameUrl);
|
|
|
|
url.searchParams.append("url", window.location.hostname);
|
|
|
|
return window.location.replace(url);
|
2023-01-27 17:13:31 +00:00
|
|
|
}
|
|
|
|
});
|
2021-02-02 09:55:14 +00:00
|
|
|
|
2022-08-29 08:29:08 +00:00
|
|
|
if (origSettings?.plugins?.enabled) {
|
2022-08-24 09:33:37 +00:00
|
|
|
initPluginStore();
|
|
|
|
|
|
|
|
this.enablePlugins = origSettings.plugins.enabled;
|
|
|
|
this.pluginOptions = origSettings.plugins.allow;
|
|
|
|
}
|
|
|
|
|
2022-04-20 15:24:21 +00:00
|
|
|
if (origSettings.tenantAlias) {
|
|
|
|
this.setTenantAlias(origSettings.tenantAlias);
|
|
|
|
}
|
2021-02-02 09:55:14 +00:00
|
|
|
};
|
2021-02-03 12:42:47 +00:00
|
|
|
|
|
|
|
init = async () => {
|
|
|
|
this.setIsLoading(true);
|
2022-03-24 17:56:51 +00:00
|
|
|
const requests = [];
|
|
|
|
|
2022-12-02 12:34:54 +00:00
|
|
|
requests.push(
|
|
|
|
this.getPortalSettings(),
|
|
|
|
this.getAppearanceTheme(),
|
2023-01-24 13:16:46 +00:00
|
|
|
this.getWhiteLabelLogoUrls(),
|
|
|
|
this.getBuildVersionInfo()
|
2022-12-02 12:34:54 +00:00
|
|
|
);
|
2022-03-24 17:56:51 +00:00
|
|
|
|
|
|
|
await Promise.all(requests);
|
2021-02-03 12:42:47 +00:00
|
|
|
|
|
|
|
this.setIsLoading(false);
|
|
|
|
this.setIsLoaded(true);
|
|
|
|
};
|
|
|
|
|
2022-02-06 19:55:15 +00:00
|
|
|
setRoomsMode = (mode) => {
|
|
|
|
this.roomsMode = mode;
|
|
|
|
};
|
|
|
|
|
2021-02-03 12:42:47 +00:00
|
|
|
setIsLoading = (isLoading) => {
|
|
|
|
this.isLoading = isLoading;
|
|
|
|
};
|
|
|
|
|
|
|
|
setIsLoaded = (isLoaded) => {
|
|
|
|
this.isLoaded = isLoaded;
|
|
|
|
};
|
2021-02-04 09:52:43 +00:00
|
|
|
|
2022-04-19 07:33:17 +00:00
|
|
|
setCultures = (cultures) => {
|
|
|
|
this.cultures = cultures;
|
|
|
|
};
|
|
|
|
|
2022-09-09 07:34:45 +00:00
|
|
|
setAdditionalResourcesData = (data) => {
|
|
|
|
this.additionalResourcesData = data;
|
|
|
|
};
|
|
|
|
|
2022-10-14 14:26:54 +00:00
|
|
|
setAdditionalResourcesIsDefault = (additionalResourcesIsDefault) => {
|
|
|
|
this.additionalResourcesIsDefault = additionalResourcesIsDefault;
|
|
|
|
};
|
|
|
|
|
2022-09-10 17:44:22 +00:00
|
|
|
setAdditionalResources = async (
|
|
|
|
feedbackAndSupportEnabled,
|
|
|
|
videoGuidesEnabled,
|
|
|
|
helpCenterEnabled
|
|
|
|
) => {
|
2022-09-14 15:29:03 +00:00
|
|
|
return await api.settings.setAdditionalResources(
|
2022-09-10 17:44:22 +00:00
|
|
|
feedbackAndSupportEnabled,
|
|
|
|
videoGuidesEnabled,
|
|
|
|
helpCenterEnabled
|
|
|
|
);
|
2022-09-09 07:34:45 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
getAdditionalResources = async () => {
|
|
|
|
const res = await api.settings.getAdditionalResources();
|
2022-09-13 07:38:25 +00:00
|
|
|
|
2022-09-09 07:34:45 +00:00
|
|
|
this.setAdditionalResourcesData(res);
|
2022-10-14 14:26:54 +00:00
|
|
|
this.setAdditionalResourcesIsDefault(res.isDefault);
|
2022-09-09 07:34:45 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
restoreAdditionalResources = async () => {
|
2022-09-14 15:29:03 +00:00
|
|
|
return await api.settings.restoreAdditionalResources();
|
2022-09-09 07:34:45 +00:00
|
|
|
};
|
|
|
|
|
2021-02-04 09:52:43 +00:00
|
|
|
getPortalCultures = async () => {
|
2022-04-19 07:33:17 +00:00
|
|
|
const cultures = await api.settings.getPortalCultures();
|
|
|
|
this.setCultures(cultures);
|
2021-02-04 09:52:43 +00:00
|
|
|
};
|
|
|
|
|
2021-04-01 09:42:23 +00:00
|
|
|
setIsEncryptionSupport = (isEncryptionSupport) => {
|
|
|
|
this.isEncryptionSupport = isEncryptionSupport;
|
|
|
|
};
|
|
|
|
|
2021-02-04 09:52:43 +00:00
|
|
|
getIsEncryptionSupport = async () => {
|
2021-04-01 09:42:23 +00:00
|
|
|
const isEncryptionSupport = await api.files.getIsEncryptionSupport();
|
|
|
|
this.setIsEncryptionSupport(isEncryptionSupport);
|
2021-02-04 09:52:43 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
updateEncryptionKeys = (encryptionKeys) => {
|
|
|
|
this.encryptionKeys = encryptionKeys ?? {};
|
|
|
|
};
|
|
|
|
|
|
|
|
setEncryptionKeys = async (keys) => {
|
|
|
|
await api.files.setEncryptionKeys(keys);
|
|
|
|
this.updateEncryptionKeys(keys);
|
|
|
|
};
|
|
|
|
|
2022-09-06 08:03:01 +00:00
|
|
|
setCompanyInfoSettingsData = (data) => {
|
|
|
|
this.companyInfoSettingsData = data;
|
|
|
|
};
|
|
|
|
|
2022-10-14 14:26:54 +00:00
|
|
|
setCompanyInfoSettingsIsDefault = (companyInfoSettingsIsDefault) => {
|
|
|
|
this.companyInfoSettingsIsDefault = companyInfoSettingsIsDefault;
|
|
|
|
};
|
|
|
|
|
2022-09-06 08:03:01 +00:00
|
|
|
setCompanyInfoSettings = async (address, companyName, email, phone, site) => {
|
2022-09-14 15:29:03 +00:00
|
|
|
return api.settings.setCompanyInfoSettings(
|
2022-09-06 08:03:01 +00:00
|
|
|
address,
|
|
|
|
companyName,
|
|
|
|
email,
|
|
|
|
phone,
|
|
|
|
site
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
2022-10-31 08:29:40 +00:00
|
|
|
setLogoUrl = (url) => {
|
|
|
|
this.logoUrl = url[0];
|
|
|
|
};
|
|
|
|
|
2022-09-14 10:59:17 +00:00
|
|
|
setLogoUrls = (urls) => {
|
2022-09-14 14:25:31 +00:00
|
|
|
this.whiteLabelLogoUrls = urls;
|
2022-09-14 10:59:17 +00:00
|
|
|
};
|
|
|
|
|
2022-09-06 08:03:01 +00:00
|
|
|
getCompanyInfoSettings = async () => {
|
|
|
|
const res = await api.settings.getCompanyInfoSettings();
|
2022-09-12 18:08:50 +00:00
|
|
|
|
2022-09-06 08:03:01 +00:00
|
|
|
this.setCompanyInfoSettingsData(res);
|
2022-10-14 14:26:54 +00:00
|
|
|
this.setCompanyInfoSettingsIsDefault(res.isDefault);
|
2022-09-06 08:03:01 +00:00
|
|
|
};
|
|
|
|
|
2022-09-14 10:59:17 +00:00
|
|
|
getWhiteLabelLogoUrls = async () => {
|
|
|
|
const res = await api.settings.getLogoUrls();
|
2022-09-15 18:19:38 +00:00
|
|
|
|
2022-09-14 10:59:17 +00:00
|
|
|
this.setLogoUrls(Object.values(res));
|
2022-10-31 08:29:40 +00:00
|
|
|
this.setLogoUrl(Object.values(res));
|
2022-09-14 10:59:17 +00:00
|
|
|
};
|
|
|
|
|
2022-09-06 08:03:01 +00:00
|
|
|
restoreCompanyInfoSettings = async () => {
|
2022-09-14 15:29:03 +00:00
|
|
|
return await api.settings.restoreCompanyInfoSettings();
|
2022-09-06 08:03:01 +00:00
|
|
|
};
|
|
|
|
|
2021-02-04 09:52:43 +00:00
|
|
|
getEncryptionKeys = async () => {
|
|
|
|
const encryptionKeys = await api.files.getEncryptionKeys();
|
|
|
|
this.updateEncryptionKeys(encryptionKeys);
|
|
|
|
};
|
|
|
|
|
2021-04-04 13:39:35 +00:00
|
|
|
getOAuthToken = (tokenGetterWin) => {
|
|
|
|
return new Promise((resolve, reject) => {
|
2021-03-24 13:49:42 +00:00
|
|
|
localStorage.removeItem("code");
|
2021-04-04 13:39:35 +00:00
|
|
|
let interval = null;
|
|
|
|
interval = setInterval(() => {
|
2021-03-24 13:49:42 +00:00
|
|
|
try {
|
|
|
|
const code = localStorage.getItem("code");
|
|
|
|
|
|
|
|
if (code) {
|
|
|
|
localStorage.removeItem("code");
|
|
|
|
clearInterval(interval);
|
|
|
|
resolve(code);
|
2021-04-04 13:39:35 +00:00
|
|
|
} else if (tokenGetterWin && tokenGetterWin.closed) {
|
|
|
|
clearInterval(interval);
|
|
|
|
reject();
|
2021-03-24 13:49:42 +00:00
|
|
|
}
|
2022-02-15 15:39:14 +00:00
|
|
|
} catch (e) {
|
|
|
|
clearInterval(interval);
|
|
|
|
reject(e);
|
2021-03-24 13:49:42 +00:00
|
|
|
}
|
|
|
|
}, 500);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
2021-04-21 13:31:18 +00:00
|
|
|
getLoginLink = (token, code) => {
|
2022-12-20 16:51:49 +00:00
|
|
|
return combineUrl(
|
|
|
|
window.DocSpaceConfig?.proxy?.url,
|
|
|
|
`/login.ashx?p=${token}&code=${code}`
|
|
|
|
);
|
2021-04-21 13:31:18 +00:00
|
|
|
};
|
|
|
|
|
2021-02-04 09:52:43 +00:00
|
|
|
setModuleInfo = (homepage, productId) => {
|
2021-05-20 08:27:50 +00:00
|
|
|
if (this.homepage === homepage || this.currentProductId === productId)
|
|
|
|
return;
|
|
|
|
|
|
|
|
console.log(`setModuleInfo('${homepage}', '${productId}')`);
|
|
|
|
|
2021-02-04 09:52:43 +00:00
|
|
|
this.homepage = homepage;
|
2021-02-15 19:43:07 +00:00
|
|
|
this.setCurrentProductId(productId);
|
2021-03-22 14:35:33 +00:00
|
|
|
|
2021-03-13 15:29:26 +00:00
|
|
|
const baseElm = document.getElementsByTagName("base");
|
|
|
|
if (baseElm && baseElm.length === 1) {
|
|
|
|
const baseUrl = homepage
|
|
|
|
? homepage[homepage.length - 1] === "/"
|
|
|
|
? homepage
|
|
|
|
: `${homepage}/`
|
|
|
|
: "/";
|
2021-05-20 08:27:50 +00:00
|
|
|
|
2021-03-13 15:29:26 +00:00
|
|
|
baseElm[0].setAttribute("href", baseUrl);
|
|
|
|
}
|
2021-02-15 19:43:07 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
setCurrentProductId = (currentProductId) => {
|
|
|
|
this.currentProductId = currentProductId;
|
|
|
|
};
|
|
|
|
|
2023-04-06 12:51:40 +00:00
|
|
|
setPortalOwner = (owner) => {
|
|
|
|
this.owner = owner;
|
|
|
|
};
|
|
|
|
|
2021-02-15 19:43:07 +00:00
|
|
|
getPortalOwner = async () => {
|
|
|
|
const owner = await api.people.getUserById(this.ownerId);
|
2023-04-06 12:51:40 +00:00
|
|
|
this.setPortalOwner(owner);
|
2021-02-15 19:43:07 +00:00
|
|
|
return owner;
|
|
|
|
};
|
|
|
|
|
|
|
|
setWizardComplete = () => {
|
2021-03-18 18:54:03 +00:00
|
|
|
this.wizardToken = null;
|
2021-02-15 19:43:07 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
setPasswordSettings = (passwordSettings) => {
|
|
|
|
this.passwordSettings = passwordSettings;
|
|
|
|
};
|
|
|
|
|
|
|
|
getPortalPasswordSettings = async (confirmKey = null) => {
|
|
|
|
const settings = await api.settings.getPortalPasswordSettings(confirmKey);
|
|
|
|
this.setPasswordSettings(settings);
|
|
|
|
};
|
|
|
|
|
2022-03-02 08:10:30 +00:00
|
|
|
setPortalPasswordSettings = async (
|
|
|
|
minLength,
|
|
|
|
upperCase,
|
|
|
|
digits,
|
|
|
|
specSymbols
|
|
|
|
) => {
|
|
|
|
const settings = await api.settings.setPortalPasswordSettings(
|
|
|
|
minLength,
|
|
|
|
upperCase,
|
|
|
|
digits,
|
|
|
|
specSymbols
|
|
|
|
);
|
2022-04-05 08:09:50 +00:00
|
|
|
this.setPasswordSettings(settings);
|
2022-03-02 08:10:30 +00:00
|
|
|
};
|
|
|
|
|
2021-02-15 19:43:07 +00:00
|
|
|
setTimezones = (timezones) => {
|
|
|
|
this.timezones = timezones;
|
|
|
|
};
|
|
|
|
|
|
|
|
getPortalTimezones = async (token = undefined) => {
|
|
|
|
const timezones = await api.settings.getPortalTimezones(token);
|
|
|
|
this.setTimezones(timezones);
|
2023-01-20 20:49:39 +00:00
|
|
|
return timezones;
|
2021-02-04 09:52:43 +00:00
|
|
|
};
|
2021-02-20 14:31:58 +00:00
|
|
|
|
|
|
|
setHeaderVisible = (isHeaderVisible) => {
|
|
|
|
this.isHeaderVisible = isHeaderVisible;
|
|
|
|
};
|
|
|
|
|
|
|
|
setIsTabletView = (isTabletView) => {
|
|
|
|
this.isTabletView = isTabletView;
|
|
|
|
};
|
|
|
|
|
2021-09-27 12:59:37 +00:00
|
|
|
setShowText = (showText) => {
|
|
|
|
this.showText = showText;
|
2021-02-20 14:31:58 +00:00
|
|
|
};
|
2021-04-07 10:35:32 +00:00
|
|
|
|
2021-09-27 12:59:37 +00:00
|
|
|
toggleShowText = () => {
|
|
|
|
this.showText = !this.showText;
|
|
|
|
};
|
|
|
|
|
2022-03-17 07:55:30 +00:00
|
|
|
setArticleOpen = (articleOpen) => {
|
|
|
|
this.articleOpen = articleOpen;
|
|
|
|
};
|
|
|
|
|
|
|
|
toggleArticleOpen = () => {
|
|
|
|
this.articleOpen = !this.articleOpen;
|
2021-04-07 10:35:32 +00:00
|
|
|
};
|
2021-07-09 15:28:08 +00:00
|
|
|
|
2022-04-04 07:52:25 +00:00
|
|
|
setIsMobileArticle = (isMobileArticle) => {
|
|
|
|
this.isMobileArticle = isMobileArticle;
|
|
|
|
};
|
|
|
|
|
2021-07-09 15:28:08 +00:00
|
|
|
get firebaseHelper() {
|
2021-09-07 15:34:30 +00:00
|
|
|
window.firebaseHelper = new FirebaseHelper(this.firebase);
|
|
|
|
return window.firebaseHelper;
|
2021-07-09 15:28:08 +00:00
|
|
|
}
|
2021-10-04 14:08:03 +00:00
|
|
|
|
2022-01-12 17:13:30 +00:00
|
|
|
get socketHelper() {
|
|
|
|
return new SocketIOHelper(this.socketUrl);
|
|
|
|
}
|
|
|
|
|
2021-10-04 14:08:03 +00:00
|
|
|
getBuildVersionInfo = async () => {
|
2022-07-25 14:10:38 +00:00
|
|
|
let versionInfo = null;
|
2022-07-26 07:56:25 +00:00
|
|
|
if (window?.__ASC_INITIAL_EDITOR_STATE__?.versionInfo)
|
|
|
|
versionInfo = window.__ASC_INITIAL_EDITOR_STATE__.versionInfo;
|
2022-07-25 14:10:38 +00:00
|
|
|
else versionInfo = await api.settings.getBuildVersion();
|
2021-10-04 14:08:03 +00:00
|
|
|
this.setBuildVersionInfo(versionInfo);
|
|
|
|
};
|
|
|
|
|
|
|
|
setBuildVersionInfo = (versionInfo) => {
|
|
|
|
this.buildVersionInfo = {
|
|
|
|
...this.buildVersionInfo,
|
2022-12-20 16:51:49 +00:00
|
|
|
docspace: version,
|
2021-10-04 14:08:03 +00:00
|
|
|
...versionInfo,
|
|
|
|
};
|
|
|
|
|
|
|
|
if (!this.buildVersionInfo.documentServer)
|
|
|
|
this.buildVersionInfo.documentServer = "6.4.1";
|
|
|
|
};
|
2021-12-22 14:22:35 +00:00
|
|
|
|
2022-04-18 08:51:01 +00:00
|
|
|
setTheme = (key) => {
|
2022-04-21 07:32:56 +00:00
|
|
|
let theme = null;
|
|
|
|
switch (key) {
|
|
|
|
case ThemeKeys.Base:
|
|
|
|
case ThemeKeys.BaseStr:
|
|
|
|
theme = ThemeKeys.BaseStr;
|
|
|
|
break;
|
|
|
|
case ThemeKeys.Dark:
|
|
|
|
case ThemeKeys.DarkStr:
|
|
|
|
theme = ThemeKeys.DarkStr;
|
|
|
|
break;
|
|
|
|
case ThemeKeys.System:
|
|
|
|
case ThemeKeys.SystemStr:
|
|
|
|
default:
|
|
|
|
theme =
|
|
|
|
window.matchMedia &&
|
|
|
|
window.matchMedia("(prefers-color-scheme: dark)").matches
|
|
|
|
? ThemeKeys.DarkStr
|
|
|
|
: ThemeKeys.BaseStr;
|
2022-04-18 08:51:01 +00:00
|
|
|
}
|
2021-12-28 11:01:03 +00:00
|
|
|
|
2021-12-28 13:35:47 +00:00
|
|
|
this.theme = themes[theme];
|
2021-10-04 14:08:03 +00:00
|
|
|
};
|
2022-04-05 12:35:40 +00:00
|
|
|
|
|
|
|
setMailDomainSettings = async (data) => {
|
|
|
|
const res = await api.settings.setMailDomainSettings(data);
|
|
|
|
this.trustedDomainsType = data.type;
|
|
|
|
this.trustedDomains = data.domains;
|
|
|
|
return res;
|
|
|
|
};
|
2022-04-06 11:09:26 +00:00
|
|
|
|
2022-04-20 15:24:21 +00:00
|
|
|
setTenantAlias = (tenantAlias) => {
|
|
|
|
this.tenantAlias = tenantAlias;
|
|
|
|
};
|
2022-04-21 17:28:36 +00:00
|
|
|
|
2022-04-06 11:09:26 +00:00
|
|
|
getIpRestrictions = async () => {
|
|
|
|
const res = await api.settings.getIpRestrictions();
|
2022-04-11 14:05:55 +00:00
|
|
|
this.ipRestrictions = res?.map((el) => el.ip);
|
2022-04-06 11:09:26 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
setIpRestrictions = async (ips) => {
|
|
|
|
const data = {
|
|
|
|
ips: ips,
|
|
|
|
};
|
|
|
|
const res = await api.settings.setIpRestrictions(data);
|
2022-04-11 14:05:55 +00:00
|
|
|
this.ipRestrictions = res;
|
|
|
|
};
|
|
|
|
|
|
|
|
getIpRestrictionsEnable = async () => {
|
|
|
|
const res = await api.settings.getIpRestrictionsEnable();
|
|
|
|
this.ipRestrictionEnable = res.enable;
|
2022-04-06 11:09:26 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
setIpRestrictionsEnable = async (enable) => {
|
|
|
|
const data = {
|
|
|
|
enable: enable,
|
|
|
|
};
|
|
|
|
const res = await api.settings.setIpRestrictionsEnable(data);
|
2022-04-11 14:05:55 +00:00
|
|
|
this.ipRestrictionEnable = res.enable;
|
2022-04-06 11:09:26 +00:00
|
|
|
};
|
2022-04-07 01:02:34 +00:00
|
|
|
|
|
|
|
setMessageSettings = async (turnOn) => {
|
|
|
|
await api.settings.setMessageSettings(turnOn);
|
|
|
|
this.enableAdmMess = turnOn;
|
|
|
|
};
|
2022-04-07 14:55:44 +00:00
|
|
|
|
|
|
|
getSessionLifetime = async () => {
|
2022-04-12 10:36:40 +00:00
|
|
|
const res = await api.settings.getCookieSettings();
|
2022-04-07 14:55:44 +00:00
|
|
|
this.sessionLifetime = res;
|
|
|
|
};
|
|
|
|
|
|
|
|
setSessionLifetimeSettings = async (lifeTime) => {
|
|
|
|
const res = await api.settings.setCookieSettings(lifeTime);
|
|
|
|
this.sessionLifetime = lifeTime;
|
|
|
|
};
|
2022-06-01 11:26:24 +00:00
|
|
|
|
2022-05-12 11:57:58 +00:00
|
|
|
setIsBurgerLoading = (isBurgerLoading) => {
|
|
|
|
this.isBurgerLoading = isBurgerLoading;
|
|
|
|
};
|
2022-06-10 08:30:57 +00:00
|
|
|
|
|
|
|
setHotkeyPanelVisible = (hotkeyPanelVisible) => {
|
|
|
|
this.hotkeyPanelVisible = hotkeyPanelVisible;
|
|
|
|
};
|
2022-07-13 09:34:53 +00:00
|
|
|
|
2022-08-03 11:48:54 +00:00
|
|
|
setFrameConfig = (frameConfig) => {
|
|
|
|
this.frameConfig = frameConfig;
|
|
|
|
return frameConfig;
|
|
|
|
};
|
2022-08-05 14:26:30 +00:00
|
|
|
|
|
|
|
get isFrame() {
|
|
|
|
return this.frameConfig?.name === window.name;
|
|
|
|
}
|
2022-08-12 15:04:11 +00:00
|
|
|
|
2022-07-22 08:11:27 +00:00
|
|
|
setAppearanceTheme = (theme) => {
|
|
|
|
this.appearanceTheme = theme;
|
|
|
|
};
|
|
|
|
|
|
|
|
setSelectThemeId = (selected) => {
|
|
|
|
this.selectedThemeId = selected;
|
|
|
|
};
|
|
|
|
|
|
|
|
setCurrentColorScheme = (currentColorScheme) => {
|
|
|
|
this.currentColorScheme = currentColorScheme;
|
|
|
|
};
|
|
|
|
|
|
|
|
getAppearanceTheme = async () => {
|
2022-11-11 10:52:10 +00:00
|
|
|
let res = null;
|
|
|
|
if (window?.__ASC_INITIAL_EDITOR_STATE__?.appearanceTheme)
|
|
|
|
res = window.__ASC_INITIAL_EDITOR_STATE__.appearanceTheme;
|
|
|
|
else res = await api.settings.getAppearanceTheme();
|
2022-07-22 08:11:27 +00:00
|
|
|
|
|
|
|
const currentColorScheme = res.themes.find((theme) => {
|
|
|
|
return res.selected === theme.id;
|
|
|
|
});
|
|
|
|
|
|
|
|
this.setAppearanceTheme(res.themes);
|
|
|
|
this.setSelectThemeId(res.selected);
|
|
|
|
this.setCurrentColorScheme(currentColorScheme);
|
|
|
|
};
|
|
|
|
|
|
|
|
sendAppearanceTheme = async (data) => {
|
2022-09-14 15:29:03 +00:00
|
|
|
return api.settings.sendAppearanceTheme(data);
|
2022-07-13 09:34:53 +00:00
|
|
|
};
|
2022-11-01 15:26:05 +00:00
|
|
|
|
|
|
|
deleteAppearanceTheme = async (id) => {
|
|
|
|
return api.settings.deleteAppearanceTheme(id);
|
|
|
|
};
|
2021-02-01 17:33:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export default SettingsStore;
|