diff --git a/frontend/app/api_client.js b/frontend/app/api_client.js
index 918fe57e2..1f85d5af9 100644
--- a/frontend/app/api_client.js
+++ b/frontend/app/api_client.js
@@ -25,7 +25,6 @@ const siteIdRequiredPaths = [
'/custom_metrics',
'/dashboards',
'/metrics',
- '/trails',
// '/custom_metrics/sessions',
];
diff --git a/frontend/app/components/Client/Roles/Roles.tsx b/frontend/app/components/Client/Roles/Roles.tsx
index 831477b90..9d9a27cec 100644
--- a/frontend/app/components/Client/Roles/Roles.tsx
+++ b/frontend/app/components/Client/Roles/Roles.tsx
@@ -110,9 +110,9 @@ function Roles(props: Props) {
>
-
Title
-
Project Access
-
Feature Access
+
Title
+
Project Access
+
Feature Access
{roles.map(role => (
{
isSearchable
name="projects"
options={ projectOptions }
- onChange={ ({ value }: any) => writeOption({ name: 'projects', value }) }
+ onChange={ ({ value }: any) => writeOption({ name: 'projects', value: value.value }) }
value={null}
/>
{ role.projects.size > 0 && (
@@ -181,10 +181,10 @@ export default connect((state: any) => {
key: p.get('id'),
value: p.get('id'),
label: p.get('name'),
- isDisabled: role.projects.includes(p.get('id')),
- })).toJS(),
- permissions: state.getIn(['roles', 'permissions'])
- .map(({ text, value }: any) => ({ label: text, value, isDisabled: role.permissions.includes(value) })).toJS(),
+ // isDisabled: role.projects.includes(p.get('id')),
+ })).filter(({ value }: any) => !role.projects.includes(value)).toJS(),
+ permissions: state.getIn(['roles', 'permissions']).filter(({ value }: any) => !role.permissions.includes(value))
+ .map(({ text, value }: any) => ({ label: text, value })).toJS(),
saving: state.getIn([ 'roles', 'saveRequest', 'loading' ]),
projectsMap: projects.reduce((acc: any, p: any) => {
acc[ p.get('id') ] = p.get('name')
diff --git a/frontend/app/components/Client/Roles/components/RoleItem/RoleItem.tsx b/frontend/app/components/Client/Roles/components/RoleItem/RoleItem.tsx
index c07919e8e..a5a9d1b61 100644
--- a/frontend/app/components/Client/Roles/components/RoleItem/RoleItem.tsx
+++ b/frontend/app/components/Client/Roles/components/RoleItem/RoleItem.tsx
@@ -45,17 +45,16 @@ function RoleItem({ role, deleteHandler, editHandler, isAdmin, permissions, proj
{role.permissions.map((permission: any) => (
))}
-
- { isAdmin && (
- { !!editHandler &&
+ {isAdmin && !!editHandler &&
editHandler(role) }>
}
- )}
+
+
);
}
diff --git a/frontend/app/components/Client/Users/components/AddUserButton/AddUserButton.tsx b/frontend/app/components/Client/Users/components/AddUserButton/AddUserButton.tsx
index 6907a7b12..5632ed6fa 100644
--- a/frontend/app/components/Client/Users/components/AddUserButton/AddUserButton.tsx
+++ b/frontend/app/components/Client/Users/components/AddUserButton/AddUserButton.tsx
@@ -9,6 +9,7 @@ const LIMIT_WARNING = 'You have reached users limit.';
function AddUserButton({ isAdmin = false, onClick }: any ) {
const { userStore } = useStore();
const limtis = useObserver(() => userStore.limits);
+ console.log('limtis', limtis)
const cannAddUser = useObserver(() => isAdmin && (limtis.teamMember === -1 || limtis.teamMember > 0));
return (
{
this.saving = false;
+ toast.error('Error saving user');
reject(error);
}).finally(() => {
this.saving = false;
@@ -130,6 +131,7 @@ export default class UserStore {
resolve(response);
}).catch(error => {
this.saving = false;
+ toast.error('Error deleting user');
reject(error);
}).finally(() => {
this.saving = false;
diff --git a/frontend/app/services/UserService.ts b/frontend/app/services/UserService.ts
index 43c6350f2..5ab27bd30 100644
--- a/frontend/app/services/UserService.ts
+++ b/frontend/app/services/UserService.ts
@@ -1,5 +1,6 @@
import APIClient from 'App/api_client';
import { IUser } from 'App/mstore/types/user'
+import { fetchErrorCheck } from 'App/utils'
export default class UserService {
private client: APIClient;
@@ -28,11 +29,11 @@ export default class UserService {
const data = user.toSave();
if (user.userId) {
return this.client.put('/client/members/' + user.userId, data)
- .then((response: { json: () => any; }) => response.json())
+ .then(fetchErrorCheck)
.then((response: { data: any; }) => response.data || {})
} else {
return this.client.post('/client/members', data)
- .then((response: { json: () => any; }) => response.json())
+ .then(fetchErrorCheck)
.then((response: { data: any; }) => response.data || {});
}
}
@@ -45,7 +46,7 @@ export default class UserService {
delete(userId: string) {
return this.client.delete('/client/members/' + userId)
- .then((response: { json: () => any; }) => response.json())
+ .then(fetchErrorCheck)
.then((response: { data: any; }) => response.data || {});
}
diff --git a/frontend/app/types/account/account.js b/frontend/app/types/account/account.js
index e130c9c0a..ebc70bae8 100644
--- a/frontend/app/types/account/account.js
+++ b/frontend/app/types/account/account.js
@@ -18,6 +18,7 @@ export default Member.extend({
apiKey: undefined,
tenantKey: undefined,
tenantName: undefined,
+ edition: undefined,
}, {
fromJS: ({ ...account})=> ({
...account,