11import React , { FC , MouseEvent , useEffect , useState } from 'react' ;
22
33import { Button , IconName , Spinner } from '@grafana/ui' ;
4- import { SettingsService } from 'app/percona/settings/Settings.service ' ;
5- import { logger } from 'app/percona/shared/helpers/logger ' ;
4+ import { getPerconaUser , getPerconaSettings } from 'app/percona/shared/core/selectors ' ;
5+ import { useSelector } from 'app/types ' ;
66
77import { Messages } from './UpdatePanel.messages' ;
88import * as styles from './UpdatePanel.styles' ;
@@ -14,9 +14,8 @@ export const UpdatePanel: FC<{}> = () => {
1414 const [ forceUpdate , setForceUpdate ] = useState ( false ) ;
1515 const [ showModal , setShowModal ] = useState ( false ) ;
1616 const [ errorMessage , setErrorMessage ] = useState ( '' ) ;
17- const [ updatesDisabled , setUpdatesDisabled ] = useState ( false ) ;
18- const [ isLoadingSettings , setLoadingSettings ] = useState ( true ) ;
19- const [ hasNoAccess , setHasNoAccess ] = useState ( false ) ;
17+ const { isAuthorized } = useSelector ( getPerconaUser ) ;
18+ const { result : settings , loading : isLoadingSettings } = useSelector ( getPerconaSettings ) ;
2019 const [
2120 { installedVersionDetails, lastCheckDate, nextVersionDetails, isUpdateAvailable } ,
2221 fetchVersionErrorMessage ,
@@ -27,25 +26,6 @@ export const UpdatePanel: FC<{}> = () => {
2726 const [ output , updateErrorMessage , isUpdated , updateFailed , launchUpdate ] = usePerformUpdate ( ) ;
2827 const isLoading = isLoadingVersionDetails || isLoadingSettings ;
2928
30- const getSettings = async ( ) => {
31- setLoadingSettings ( true ) ;
32-
33- try {
34- const { updatesDisabled } = await SettingsService . getSettings ( undefined , true ) ;
35-
36- setUpdatesDisabled ( ! ! updatesDisabled ) ;
37- } catch ( e ) {
38- // @ts -ignore
39- if ( e . response ?. status === 401 ) {
40- setHasNoAccess ( true ) ;
41- }
42-
43- logger . error ( e ) ;
44- }
45-
46- setLoadingSettings ( false ) ;
47- } ;
48-
4929 const handleCheckForUpdates = ( e : MouseEvent ) => {
5030 if ( e . altKey ) {
5131 setForceUpdate ( true ) ;
@@ -54,10 +34,6 @@ export const UpdatePanel: FC<{}> = () => {
5434 getCurrentVersionDetails ( { force : true } ) ;
5535 } ;
5636
57- useEffect ( ( ) => {
58- getSettings ( ) ;
59- } , [ ] ) ;
60-
6137 useEffect ( ( ) => {
6238 setErrorMessage ( fetchVersionErrorMessage || updateErrorMessage ) ;
6339
@@ -79,7 +55,7 @@ export const UpdatePanel: FC<{}> = () => {
7955 < >
8056 < div className = { styles . panel } >
8157 < CurrentVersion installedVersionDetails = { installedVersionDetails } />
82- { isUpdateAvailable && ! isDefaultView && ! updatesDisabled && ! hasNoAccess && ! isLoading && isOnline ? (
58+ { isUpdateAvailable && ! isDefaultView && ! settings ?. updatesDisabled && isAuthorized && ! isLoading && isOnline ? (
8359 < AvailableUpdate nextVersionDetails = { nextVersionDetails } />
8460 ) : null }
8561 { isLoading ? (
@@ -88,7 +64,7 @@ export const UpdatePanel: FC<{}> = () => {
8864 </ div >
8965 ) : (
9066 < >
91- { ( isUpdateAvailable || forceUpdate ) && ! updatesDisabled && ! hasNoAccess && isOnline ? (
67+ { ( isUpdateAvailable || forceUpdate ) && ! settings ?. updatesDisabled && isAuthorized && isOnline ? (
9268 < div className = { styles . middleSectionWrapper } >
9369 { /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */ }
9470 < Button onClick = { handleUpdate } icon = { 'fa fa-download' as IconName } variant = "secondary" >
@@ -98,15 +74,15 @@ export const UpdatePanel: FC<{}> = () => {
9874 ) : (
9975 < InfoBox
10076 upToDate = { ! isDefaultView && ! forceUpdate }
101- hasNoAccess = { hasNoAccess }
102- updatesDisabled = { updatesDisabled }
77+ hasNoAccess = { ! isAuthorized }
78+ updatesDisabled = { settings ?. updatesDisabled }
10379 isOnline = { isOnline }
10480 />
10581 ) }
10682 </ >
10783 ) }
10884 < LastCheck
109- disabled = { isLoading || updatesDisabled || ! isOnline }
85+ disabled = { isLoading || settings ?. updatesDisabled || ! isOnline }
11086 onCheckForUpdates = { handleCheckForUpdates }
11187 lastCheckDate = { lastCheckDate }
11288 />
0 commit comments