1
1
/* eslint-disable @typescript-eslint/no-unused-vars */
2
- import React , { useContext , useState } from 'react'
2
+ import React , { useContext , useEffect , useState } from 'react'
3
3
import { useIntl } from 'react-intl'
4
4
import { ThemeContext } from '../themeContext'
5
5
import { ToggleSwitch } from '@remix-ui/toggle'
6
6
import fetchResults from '../fetch2.json'
7
- import { RenderIf } from '@remix-ui/helper'
7
+ import { RenderIf , RenderIfNot } from '@remix-ui/helper'
8
8
declare global {
9
9
interface Window {
10
10
_paq : any
@@ -32,22 +32,34 @@ interface PluginInfo {
32
32
33
33
function HomeTabFeaturedPlugins ( { plugin } : HomeTabFeaturedPluginsProps ) {
34
34
const [ activePlugins , setActivePlugins ] = useState < string [ ] > ( [ ] )
35
- const intl = useIntl ( )
35
+ const [ loadingPlugins , setLoadingPlugins ] = useState < string [ ] > ( [ ] )
36
36
const theme = useContext ( ThemeContext )
37
37
const isDark = theme . name === 'dark'
38
38
39
+ // TODO: Fix this
40
+ // useEffect(() => {
41
+ // const fetchActivePlugins = async () => {
42
+ // fetchResults.plugins.forEach(async (pluginInfo: PluginInfo) => {
43
+ // const isActive = await plugin.appManager.isActive(pluginInfo.pluginId)
44
+ // if (isActive) {
45
+ // setActivePlugins([...activePlugins, pluginInfo.pluginId])
46
+ // }
47
+ // })
48
+ // }
49
+ // fetchActivePlugins()
50
+ // }, [])
51
+
39
52
const activateFeaturedPlugin = async ( pluginId : string ) => {
40
- if ( await plugin . call ( 'manager' , 'isActive' , pluginId ) ) {
41
- console . log ( 'deactivate' , pluginId )
42
- plugin . verticalIcons . select ( pluginId )
43
- await plugin . call ( 'manager' , 'deactivatePlugin' , pluginId )
44
- setActivePlugins ( activePlugins . filter ( ( pluginId ) => pluginId !== pluginId ) )
53
+ setLoadingPlugins ( [ ...loadingPlugins , pluginId ] )
54
+ if ( await plugin . appManager . isActive ( pluginId ) ) {
55
+ await plugin . appManager . deactivatePlugin ( pluginId )
56
+ setActivePlugins ( activePlugins . filter ( ( id ) => id !== pluginId ) )
45
57
} else {
46
- console . log ( 'activate' , pluginId )
47
- await plugin . call ( 'manager' , 'activatePlugin' , pluginId )
48
- plugin . verticalIcons . select ( pluginId )
58
+ await plugin . appManager . activatePlugin ( [ pluginId ] )
59
+ await plugin . verticalIcons . select ( pluginId )
49
60
setActivePlugins ( [ ...activePlugins , pluginId ] )
50
61
}
62
+ setLoadingPlugins ( loadingPlugins . filter ( ( id ) => id !== pluginId ) )
51
63
_paq . push ( [ 'trackEvent' , 'hometabActivate' , 'userActivate' , pluginId ] )
52
64
}
53
65
@@ -56,7 +68,12 @@ function HomeTabFeaturedPlugins({ plugin }: HomeTabFeaturedPluginsProps) {
56
68
< div className = "card mb-3" >
57
69
< div className = "d-flex align-items-center px-2 justify-content-between border-bottom" >
58
70
< div className = 'd-flex align-items-center' >
59
- { pluginInfo . iconClass ? < i className = { `${ pluginInfo . iconClass } mr-2` } > </ i > : < i className = "fa-solid fa-file-book mr-2" > </ i > }
71
+ < RenderIf condition = { loadingPlugins . includes ( pluginInfo . pluginId ) } >
72
+ < i className = "fad fa-spinner fa-spin mr-2" > </ i >
73
+ </ RenderIf >
74
+ < RenderIfNot condition = { loadingPlugins . includes ( pluginInfo . pluginId ) } >
75
+ { pluginInfo . iconClass ? < i className = { `${ pluginInfo . iconClass } mr-2` } > </ i > : < i className = "fa-solid fa-file-book mr-2" > </ i > }
76
+ </ RenderIfNot >
60
77
< span className = "fw-bold" style = { { color : isDark ? 'white' : 'black' } } > { pluginInfo . pluginTitle } </ span >
61
78
</ div >
62
79
< ToggleSwitch id = { `toggleSwitch-${ pluginInfo . pluginId } ` } isOn = { activePlugins . includes ( pluginInfo . pluginId ) } onClick = { ( ) => activateFeaturedPlugin ( pluginInfo . pluginId ) } />
0 commit comments