merged sendgrid whitelabel
This commit is contained in:
commit
8c45dbd00e
4 changed files with 508 additions and 506 deletions
978
package-lock.json
generated
978
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -56,7 +56,7 @@
|
||||||
"mui-tel-input": "^7.0.0",
|
"mui-tel-input": "^7.0.0",
|
||||||
"notistack": "^3.0.1",
|
"notistack": "^3.0.1",
|
||||||
"openweathermap-ts": "^1.2.10",
|
"openweathermap-ts": "^1.2.10",
|
||||||
"protobuf-ts": "git+https://gitlab+deploy-token-50627:hv8mB4WkyvtjBpJKU1rN@gitlab.com/brandx/protobuf-ts.git#dev",
|
"protobuf-ts": "git+https://gitlab+deploy-token-50627:hv8mB4WkyvtjBpJKU1rN@gitlab.com/brandx/protobuf-ts.git#sendgrid_whitelabel",
|
||||||
"query-string": "^9.2.1",
|
"query-string": "^9.2.1",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-beautiful-dnd": "^13.1.1",
|
"react-beautiful-dnd": "^13.1.1",
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,14 @@ import NavigationContainer from '../navigation/NavigationContainer'
|
||||||
import { GlobalState, GlobalStateAction, StateProvider } from '../providers/StateContainer'
|
import { GlobalState, GlobalStateAction, StateProvider } from '../providers/StateContainer'
|
||||||
import { User } from '../models/user'
|
import { User } from '../models/user'
|
||||||
import { Team } from '../models/team'
|
import { Team } from '../models/team'
|
||||||
|
import { getWhitelabel } from '../services/whiteLabel'
|
||||||
import { makeStyles } from '@mui/styles'
|
import { makeStyles } from '@mui/styles'
|
||||||
import { CssBaseline, Theme } from '@mui/material'
|
import { CssBaseline, Theme } from '@mui/material'
|
||||||
import { AppThemeProvider } from 'theme/AppThemeProvider'
|
import { AppThemeProvider } from 'theme/AppThemeProvider'
|
||||||
import HTTPProvider from 'providers/http'
|
import HTTPProvider from 'providers/http'
|
||||||
import { useMobile, useSnackbar } from 'hooks'
|
import { useMobile, useSnackbar } from 'hooks'
|
||||||
import { initCrisp, isCrispEnabled } from '../chat/CrispChat'
|
import { initCrisp, isCrispEnabled } from '../chat/CrispChat'
|
||||||
|
import { useTeamAPI } from '../providers/pond/teamAPI'
|
||||||
// import FirmwareLoader from './FirmwareLoader'
|
// import FirmwareLoader from './FirmwareLoader'
|
||||||
|
|
||||||
const reducer = (state: GlobalState, action: GlobalStateAction): GlobalState => {
|
const reducer = (state: GlobalState, action: GlobalStateAction): GlobalState => {
|
||||||
|
|
@ -61,6 +63,7 @@ export default function UserWrapper(props: Props) {
|
||||||
const { token } = props;
|
const { token } = props;
|
||||||
const [loading, setLoading] = useState(false)
|
const [loading, setLoading] = useState(false)
|
||||||
const userAPI = useUserAPI();
|
const userAPI = useUserAPI();
|
||||||
|
const teamAPI = useTeamAPI();
|
||||||
const classes = useStyles();
|
const classes = useStyles();
|
||||||
const hasFetched = useRef(false);
|
const hasFetched = useRef(false);
|
||||||
const [global, setGlobal] = useState<undefined | GlobalState>(undefined)
|
const [global, setGlobal] = useState<undefined | GlobalState>(undefined)
|
||||||
|
|
@ -81,9 +84,22 @@ export default function UserWrapper(props: Props) {
|
||||||
if (hasFetched.current) return;
|
if (hasFetched.current) return;
|
||||||
setLoading(true)
|
setLoading(true)
|
||||||
userAPI.getUserWithTeam(user_id).then(resp => {
|
userAPI.getUserWithTeam(user_id).then(resp => {
|
||||||
|
const loadedUser = resp.data.user ? User.create(resp.data.user) : User.create();
|
||||||
|
const loadedTeam = resp.data.team ? Team.create(resp.data.team) : Team.create();
|
||||||
|
|
||||||
|
const currentSlug = getWhitelabel().slug;
|
||||||
|
if (!loadedUser.empty() && loadedUser.settings.whitelabel !== currentSlug) {
|
||||||
|
loadedUser.settings.whitelabel = currentSlug;
|
||||||
|
userAPI.updateUser(loadedUser.id(), loadedUser.protobuf()).catch(() => {});
|
||||||
|
}
|
||||||
|
if (!loadedTeam.empty() && loadedTeam.settings.whitelabel === "") {
|
||||||
|
loadedTeam.settings.whitelabel = currentSlug;
|
||||||
|
teamAPI.updateTeam(loadedTeam.key(), loadedTeam.settings).catch(() => {});
|
||||||
|
}
|
||||||
|
|
||||||
setGlobal({
|
setGlobal({
|
||||||
user: resp.data.user ? User.create(resp.data.user) : User.create(),
|
user: loadedUser,
|
||||||
team: resp.data.team ? Team.create(resp.data.team) : Team.create(),
|
team: loadedTeam,
|
||||||
as: resp.data.user?.settings?.useTeam === true ? resp.data.user.settings.defaultTeam : "",
|
as: resp.data.user?.settings?.useTeam === true ? resp.data.user.settings.defaultTeam : "",
|
||||||
showErrors: false,
|
showErrors: false,
|
||||||
userTeamPermissions: [],
|
userTeamPermissions: [],
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ export default function TeamSettings(props: Props) {
|
||||||
const [loading, setLoading] = useState<boolean>(false);
|
const [loading, setLoading] = useState<boolean>(false);
|
||||||
const [nameField, setNameField] = useState<string>("");
|
const [nameField, setNameField] = useState<string>("");
|
||||||
const [infoField, setInfoField] = useState<string>("");
|
const [infoField, setInfoField] = useState<string>("");
|
||||||
|
const [whitelabelField, setWhitelabelField] = useState<string>("");
|
||||||
const [url, setUrl] = useState<string>("");
|
const [url, setUrl] = useState<string>("");
|
||||||
const snackbar = useSnackbar();
|
const snackbar = useSnackbar();
|
||||||
const [tab, setTab] = useState(0);
|
const [tab, setTab] = useState(0);
|
||||||
|
|
@ -55,6 +56,7 @@ export default function TeamSettings(props: Props) {
|
||||||
if (team) {
|
if (team) {
|
||||||
setNameField(team.name());
|
setNameField(team.name());
|
||||||
setInfoField(team.settings.info);
|
setInfoField(team.settings.info);
|
||||||
|
setWhitelabelField(team.settings.whitelabel);
|
||||||
setUrl(team.settings.avatar);
|
setUrl(team.settings.avatar);
|
||||||
}
|
}
|
||||||
}, [team]);
|
}, [team]);
|
||||||
|
|
@ -77,6 +79,7 @@ export default function TeamSettings(props: Props) {
|
||||||
let team = pond.TeamSettings.create();
|
let team = pond.TeamSettings.create();
|
||||||
team.name = nameField;
|
team.name = nameField;
|
||||||
team.info = infoField;
|
team.info = infoField;
|
||||||
|
team.whitelabel = whitelabelField;
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
teamAPI
|
teamAPI
|
||||||
.addTeam(team)
|
.addTeam(team)
|
||||||
|
|
@ -101,6 +104,7 @@ export default function TeamSettings(props: Props) {
|
||||||
let newTeam = pond.TeamSettings.create();
|
let newTeam = pond.TeamSettings.create();
|
||||||
newTeam.name = nameField;
|
newTeam.name = nameField;
|
||||||
newTeam.info = infoField;
|
newTeam.info = infoField;
|
||||||
|
newTeam.whitelabel = whitelabelField;
|
||||||
newTeam.avatar = url;
|
newTeam.avatar = url;
|
||||||
if (teamKey) {
|
if (teamKey) {
|
||||||
teamAPI
|
teamAPI
|
||||||
|
|
@ -131,6 +135,7 @@ export default function TeamSettings(props: Props) {
|
||||||
const close = () => {
|
const close = () => {
|
||||||
setNameField("");
|
setNameField("");
|
||||||
setInfoField("");
|
setInfoField("");
|
||||||
|
setWhitelabelField("");
|
||||||
setUrl("");
|
setUrl("");
|
||||||
closeTeamDialogCallback();
|
closeTeamDialogCallback();
|
||||||
};
|
};
|
||||||
|
|
@ -194,6 +199,15 @@ export default function TeamSettings(props: Props) {
|
||||||
style={{ margin: theme.spacing(1) }}
|
style={{ margin: theme.spacing(1) }}
|
||||||
fullWidth
|
fullWidth
|
||||||
/>
|
/>
|
||||||
|
<TextField
|
||||||
|
label="Whitelabel"
|
||||||
|
value={whitelabelField}
|
||||||
|
onChange={event => setWhitelabelField(event?.target.value)}
|
||||||
|
variant="outlined"
|
||||||
|
style={{ margin: theme.spacing(1) }}
|
||||||
|
placeholder="e.g. mivent, adaptive-ag, intellifarms"
|
||||||
|
fullWidth
|
||||||
|
/>
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue