Moved getting firebase config to API method /api/2.0/settings.json

This commit is contained in:
Alexey Safronov 2021-07-09 18:28:08 +03:00
parent 1c0e201c2c
commit b4c4625f3f
8 changed files with 236 additions and 178 deletions

View File

@ -144,5 +144,14 @@
"progressfile": "false",
"tempdir": ""
}
},
"firebase": {
"apiKey": "",
"authDomain": "",
"projectId": "",
"storageBucket": "",
"messagingSenderId": "",
"appId": "",
"measurementId": ""
}
}

View File

@ -2,6 +2,7 @@ import { makeAutoObservable } from "mobx";
import api from "../api";
import { ARTICLE_PINNED_KEY, LANGUAGE } from "../constants";
import { combineUrl } from "../utils";
import FirebaseHelper from "../utils/firebase";
import { AppServerConfig } from "../constants";
const { proxyURL } = AppServerConfig;
@ -72,6 +73,15 @@ class SettingsStore {
hasShortenService = false;
customSchemaList = [];
firebase = {
apiKey: "",
authDomain: "",
projectId: "",
storageBucket: "",
messagingSenderId: "",
appId: "",
measurementId: "",
};
constructor() {
makeAutoObservable(this);
@ -292,6 +302,10 @@ class SettingsStore {
setArticleVisibleOnUnpin = (visible) => {
this.isArticleVisibleOnUnpin = visible;
};
get firebaseHelper() {
return new FirebaseHelper(this.firebase);
}
}
export default SettingsStore;

View File

@ -1,10 +1,12 @@
import firebase from "firebase/app";
import "firebase/remote-config";
import firebaseConfig from "../../firebase.json";
class FirebaseHelper {
remoteConfig = null;
constructor() {
firebaseConfig = null;
constructor(settings) {
this.firebaseConfig = settings;
if (!this.isEnabled) return;
firebase.initializeApp(this.config);
@ -30,7 +32,7 @@ class FirebaseHelper {
}
get config() {
return firebaseConfig;
return this.firebaseConfig;
}
get isEnabled() {
@ -82,4 +84,4 @@ class FirebaseHelper {
}
}
export default new FirebaseHelper();
export default FirebaseHelper;

View File

@ -313,6 +313,17 @@ namespace ASC.Api.Settings
settings.UtcHoursOffset = settings.UtcOffset.TotalHours;
settings.OwnerId = Tenant.OwnerId;
settings.NameSchemaId = CustomNamingPeople.Current.Id;
settings.Firebase = new FirebaseWrapper
{
ApiKey = Configuration["firebase:apiKey"] ?? "",
AuthDomain = Configuration["firebase:authDomain"] ?? "",
ProjectId = Configuration["firebase:projectId"] ?? "",
StorageBucket = Configuration["firebase:storageBucket"] ?? "",
MessagingSenderId = Configuration["firebase:messagingSenderId"] ?? "",
AppId = Configuration["firebase:appId"] ?? "",
MeasurementId = Configuration["firebase:measurementId"] ?? ""
};
}
else
{

View File

@ -0,0 +1,21 @@

namespace ASC.Web.Api.Models
{
public class FirebaseWrapper
{
public string ApiKey { get; set; }
public string AuthDomain { get; set; }
public string ProjectId { get; set; }
public string StorageBucket { get; set; }
public string MessagingSenderId { get; set; }
public string AppId { get; set; }
public string MeasurementId { get; set; }
}
}

View File

@ -29,6 +29,7 @@ using System.Collections.Generic;
using ASC.Core.Tenants;
using ASC.Security.Cryptography;
using ASC.Web.Api.Models;
namespace ASC.Api.Settings
{
@ -64,6 +65,8 @@ namespace ASC.Api.Settings
public PasswordHasher PasswordHash { get; set; }
public FirebaseWrapper Firebase { get; set; }
public static SettingsWrapper GetSample()
{
return new SettingsWrapper

View File

@ -1,10 +0,0 @@
{
"apiKey": "",
"authDomain": "",
"databaseURL": "",
"projectId": "",
"storageBucket": "",
"messagingSenderId": "",
"appId": "",
"measurementId": ""
}

View File

@ -21,10 +21,8 @@ import i18n from "./i18n";
import AppLoader from "@appserver/common/components/AppLoader";
import System from "./components/System";
import { AppServerConfig } from "@appserver/common/constants";
import FirebaseHelper from "./helpers/firebase";
import { Snackbar } from "@appserver/components/snackbar";
import moment from "moment";
import { isMobile } from "react-device-detect";
const { proxyURL } = AppServerConfig;
const homepage = config.homepage;
@ -148,7 +146,14 @@ const MyProfileRoute = (props) => (
);
const Shell = ({ items = [], page = "home", ...rest }) => {
const { isLoaded, loadBaseInfo, modules, isDesktop, language } = rest;
const {
isLoaded,
loadBaseInfo,
modules,
isDesktop,
language,
FirebaseHelper,
} = rest;
useEffect(() => {
try {
@ -243,6 +248,8 @@ const Shell = ({ items = [], page = "home", ...rest }) => {
setSnackBarTimer(campaign);
if (!document.getElementById("main-bar")) return;
const campaignStr = JSON.stringify(campaign);
let skipRender = lastCampaignStr === campaignStr;
@ -431,6 +438,7 @@ const ShellWrapper = inject(({ auth }) => {
isLoaded,
modules: auth.moduleStore.modules,
isDesktop: auth.settingsStore.isDesktopClient,
FirebaseHelper: auth.settingsStore.firebaseHelper,
};
})(observer(Shell));