@@ -35,7 +35,12 @@ const BUTTON_LABELS = {
3535}
3636
3737const PluginCard = ( { plugin } ) => {
38- const [ status , setStatus ] = useState ( usefulPlugins [ plugin . id ] . status )
38+ const pluginData = usefulPlugins ?. [ plugin . id ] ?? null
39+ const [ status , setStatus ] = useState ( pluginData ?. status ?? PLUGIN_STATUS . ACTIVATED )
40+
41+ if ( ! pluginData ) {
42+ return null
43+ }
3944 const onClickAction = ( ) => {
4045 if ( status === PLUGIN_STATUS . ACTIVATED ||
4146 status === PLUGIN_STATUS . INSTALLING ||
@@ -59,7 +64,7 @@ const PluginCard = ( { plugin } ) => {
5964 formData . append ( 'action' , 'stackable_useful_plugins_activate' )
6065 formData . append ( 'nonce' , activateNonce )
6166 formData . append ( 'slug' , plugin . id )
62- formData . append ( 'full_slug' , usefulPlugins [ plugin . id ] . fullSlug )
67+ formData . append ( 'full_slug' , pluginData . fullSlug )
6368 newStatus = PLUGIN_STATUS . ACTIVATING
6469 successStatus = PLUGIN_STATUS . ACTIVATED
6570 }
@@ -74,8 +79,8 @@ const PluginCard = ( { plugin } ) => {
7479 } ) . then ( response => {
7580 setTimeout ( ( ) => {
7681 // Mark as succeeded if operation successful or folder already exists after install
77- if ( response . success || response . data . errorCode === 'folder_exists' ) {
78- usefulPlugins [ plugin . id ] . status = successStatus
82+ if ( response . success || response . data ? .errorCode === 'folder_exists' ) {
83+ pluginData . status = successStatus
7984 setStatus ( successStatus )
8085 } else {
8186 usefulPlugins [ plugin . id ] . status = prevStatus
@@ -85,14 +90,14 @@ const PluginCard = ( { plugin } ) => {
8590 } ) . catch ( e => {
8691 // eslint-disable-next-line no-console
8792 console . error ( 'Stackable: ' , e )
88- usefulPlugins [ plugin . id ] . status = prevStatus
93+ pluginData . status = prevStatus
8994 setStatus ( prevStatus )
9095 } )
9196 }
9297
9398 return < div key = { plugin . id } className = "s-card" >
9499 < div className = "s-plugin-title" >
95- < img className = "s-plugin-icon" src = { usefulPlugins [ plugin . id ] . icon } alt = { __ ( 'Plugin icon' , i18n ) } />
100+ < img className = "s-plugin-icon" src = { pluginData . icon } alt = { __ ( 'Plugin icon' , i18n ) } />
96101 < h3 className = "s-card-title" > { plugin . title } </ h3 >
97102 </ div >
98103 < p > { plugin . description } </ p >
0 commit comments