feat(ui): leave user/role detail page on successful Apply Changes

pull/5956/head
Pavel Zavora 2022-06-24 06:46:41 +02:00
parent 8c6b0d01c5
commit 0ab1e096f1
3 changed files with 23 additions and 42 deletions

View File

@ -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 => {

View File

@ -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"

View File

@ -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"