feat(ui): leave user/role detail page on successful Apply Changes
parent
8c6b0d01c5
commit
0ab1e096f1
|
@ -410,11 +410,13 @@ export const updateRoleUsersAsync = (role, users) => async dispatch => {
|
|||
const {data} = await updateRoleAJAX(role.links.self, {users})
|
||||
dispatch(notify(notifyRoleUsersUpdated()))
|
||||
dispatch(syncRole(role, data))
|
||||
return true
|
||||
} catch (error) {
|
||||
dispatch(
|
||||
errorThrown(error, notifyRoleUsersUpdateFailed(error.data.message))
|
||||
)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
export const updateRolePermissionsAsync = (
|
||||
|
@ -425,11 +427,13 @@ export const updateRolePermissionsAsync = (
|
|||
const {data} = await updateRoleAJAX(role.links.self, {permissions})
|
||||
dispatch(notify(notifyRolePermissionsUpdated()))
|
||||
dispatch(syncRole(role, data))
|
||||
return true
|
||||
} catch (error) {
|
||||
dispatch(
|
||||
errorThrown(error, notifyRolePermissionsUpdateFailed(error.data.message))
|
||||
)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
export const updateUserPermissionsAsync = (
|
||||
|
@ -440,6 +444,7 @@ export const updateUserPermissionsAsync = (
|
|||
const {data} = await updateUserAJAX(user.links.self, {permissions})
|
||||
dispatch(notify(notifyDBUserPermissionsUpdated()))
|
||||
dispatch(syncUser(user, data))
|
||||
return true
|
||||
} catch (error) {
|
||||
dispatch(
|
||||
errorThrown(
|
||||
|
@ -455,11 +460,13 @@ export const updateUserRolesAsync = (user, roles) => async dispatch => {
|
|||
const {data} = await updateUserAJAX(user.links.self, {roles})
|
||||
dispatch(notify(notifyDBUserRolesUpdated()))
|
||||
dispatch(syncUser(user, data))
|
||||
return true
|
||||
} catch (error) {
|
||||
dispatch(
|
||||
errorThrown(error, notifyDBUserRolesUpdateFailed(error.data.message))
|
||||
)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
export const updateUserPasswordAsync = (user, password) => async dispatch => {
|
||||
|
|
|
@ -152,7 +152,7 @@ const RolePage = ({
|
|||
const changePermissions = useMemo(
|
||||
() => async () => {
|
||||
if (Object.entries(changedPermissions).length === 0) {
|
||||
return
|
||||
return true
|
||||
}
|
||||
setRunning(true)
|
||||
try {
|
||||
|
@ -161,7 +161,7 @@ const RolePage = ({
|
|||
roleDBPermissions,
|
||||
changedPermissions
|
||||
)
|
||||
await updatePermissionsAsync(role, permissions)
|
||||
return await updatePermissionsAsync(role, permissions)
|
||||
} finally {
|
||||
setRunning(false)
|
||||
}
|
||||
|
@ -205,7 +205,7 @@ const RolePage = ({
|
|||
const changeUsers = useMemo(
|
||||
() => async () => {
|
||||
if (Object.entries(changedUsersRecord).length === 0) {
|
||||
return
|
||||
return true
|
||||
}
|
||||
setRunning(true)
|
||||
try {
|
||||
|
@ -220,7 +220,7 @@ const RolePage = ({
|
|||
}
|
||||
return acc
|
||||
}, [])
|
||||
await updateUsersAsync(role, newUsers)
|
||||
return await updateUsersAsync(role, newUsers)
|
||||
} finally {
|
||||
setRunning(false)
|
||||
}
|
||||
|
@ -233,12 +233,10 @@ const RolePage = ({
|
|||
usersChanged,
|
||||
])
|
||||
const changeData = useCallback(async () => {
|
||||
await changeUsers()
|
||||
await changePermissions()
|
||||
}, [changePermissions, changeUsers])
|
||||
const exitHandler = useCallback(() => {
|
||||
router.push(`/sources/${sourceID}/admin-influxdb/roles`)
|
||||
}, [router, source])
|
||||
if ((await changeUsers()) && (await changePermissions())) {
|
||||
router.push(`/sources/${sourceID}/admin-influxdb/roles`)
|
||||
}
|
||||
}, [changePermissions, changeUsers, router, source])
|
||||
const databaseNames = useMemo<string[]>(
|
||||
() =>
|
||||
databases.reduce(
|
||||
|
@ -382,17 +380,6 @@ const RolePage = ({
|
|||
<Page.Title title="InfluxDB Role" />
|
||||
</Page.Header.Left>
|
||||
<Page.Header.Right showSourceIndicator={true}>
|
||||
{dataChanged ? (
|
||||
<ConfirmButton
|
||||
text="Exit"
|
||||
confirmText="Discard unsaved changes?"
|
||||
confirmAction={exitHandler}
|
||||
position="left"
|
||||
testId="discard-changes--exit--button"
|
||||
/>
|
||||
) : (
|
||||
<Button text="Exit" onClick={exitHandler} testId="exit--button" />
|
||||
)}
|
||||
{dataChanged && (
|
||||
<Button
|
||||
text="Apply Changes"
|
||||
|
|
|
@ -183,7 +183,7 @@ const UserPage = ({
|
|||
const changePermissions = useMemo(
|
||||
() => async () => {
|
||||
if (Object.entries(changedPermissions).length === 0) {
|
||||
return
|
||||
return true
|
||||
}
|
||||
setRunning(true)
|
||||
try {
|
||||
|
@ -193,7 +193,7 @@ const UserPage = ({
|
|||
changedPermissions,
|
||||
isEnterprise ? [] : user.permissions.filter(x => x.scope === 'all')
|
||||
)
|
||||
await updatePermissionsAsync(user, permissions)
|
||||
return await updatePermissionsAsync(user, permissions)
|
||||
} finally {
|
||||
setRunning(false)
|
||||
}
|
||||
|
@ -240,7 +240,7 @@ const UserPage = ({
|
|||
const changeRoles = useMemo(
|
||||
() => async () => {
|
||||
if (Object.entries(changedRolesRecord).length === 0) {
|
||||
return
|
||||
return true
|
||||
}
|
||||
setRunning(true)
|
||||
try {
|
||||
|
@ -255,7 +255,7 @@ const UserPage = ({
|
|||
}
|
||||
return acc
|
||||
}, [])
|
||||
await updateRolesAsync(user, newRoles)
|
||||
return await updateRolesAsync(user, newRoles)
|
||||
} finally {
|
||||
setRunning(false)
|
||||
}
|
||||
|
@ -268,12 +268,10 @@ const UserPage = ({
|
|||
rolesChanged,
|
||||
])
|
||||
const changeData = useCallback(async () => {
|
||||
await changeRoles()
|
||||
await changePermissions()
|
||||
}, [changePermissions, changeRoles])
|
||||
const exitHandler = useCallback(() => {
|
||||
router.push(`/sources/${sourceID}/admin-influxdb/users`)
|
||||
}, [router, source])
|
||||
if ((await changeRoles()) && (await changePermissions())) {
|
||||
router.push(`/sources/${sourceID}/admin-influxdb/users`)
|
||||
}
|
||||
}, [changePermissions, changeRoles, router, source])
|
||||
const databaseNames = useMemo<string[]>(
|
||||
() =>
|
||||
databases.reduce(
|
||||
|
@ -487,17 +485,6 @@ const UserPage = ({
|
|||
<Page.Title title="InfluxDB User" />
|
||||
</Page.Header.Left>
|
||||
<Page.Header.Right showSourceIndicator={true}>
|
||||
{dataChanged ? (
|
||||
<ConfirmButton
|
||||
text="Exit"
|
||||
confirmText="Discard unsaved changes?"
|
||||
confirmAction={exitHandler}
|
||||
position="left"
|
||||
testId="exit--button"
|
||||
/>
|
||||
) : (
|
||||
<Button text="Exit" onClick={exitHandler} testId="exit--button" />
|
||||
)}
|
||||
{dataChanged && (
|
||||
<Button
|
||||
text="Apply Changes"
|
||||
|
|
Loading…
Reference in New Issue