plugins offline

pull/5370/head
filip mertens 1 year ago
parent be58ef2fd6
commit 4c568da0a2
  1. 11
      .circleci/config.yml
  2. 3
      apps/remix-ide/src/app/tabs/locales/en/pluginManager.json
  3. 2
      libs/remix-ui/plugin-manager/src/lib/components/ActivePluginCardContainer.tsx
  4. 27
      libs/remix-ui/plugin-manager/src/lib/components/InactivePluginCard.tsx
  5. 2
      libs/remix-ui/plugin-manager/src/lib/components/InactivePluginCardContainer.tsx
  6. 6
      libs/remix-ui/plugin-manager/src/lib/remix-ui-plugin-manager.tsx

@ -135,16 +135,6 @@ jobs:
path: apps/remixdesktop/release/ path: apps/remixdesktop/release/
destination: remixdesktop-linux destination: remixdesktop-linux
SSM_Signing:
executor: win/server-2022
steps:
- run:
name: "Client-Tool-Setup"
command: |
cd C:\
curl.exe -X GET https://one.digicert.com/signingmanager/api-ui/v1/releases/smtools-windows-x64.msi/download -H "x-api-key:$env:SM_API_KEY" -o smtools-windows-x64.msi
msiexec.exe /i smtools-windows-x64.msi /quiet /qn
build-remixdesktop-windows: build-remixdesktop-windows:
executor: executor:
name: win/default # executor type name: win/default # executor type
@ -447,7 +437,6 @@ workflows:
build_all: build_all:
unless: << pipeline.parameters.run_flaky_tests >> unless: << pipeline.parameters.run_flaky_tests >>
jobs: jobs:
- SSM_Signing
- build - build
- build-desktop: - build-desktop:
filters: filters:

@ -39,5 +39,6 @@
"pluginManager.deactivatePlugin": "Deactivate {pluginName}", "pluginManager.deactivatePlugin": "Deactivate {pluginName}",
"pluginManager.activatePlugin": "Activate {pluginName}", "pluginManager.activatePlugin": "Activate {pluginName}",
"pluginManager.search": "Search", "pluginManager.search": "Search",
"pluginManager.managePluginsPermissions": "Manage plugins Permissions" "pluginManager.managePluginsPermissions": "Manage plugins Permissions",
"pluginManager.UnavailableOffline": "Unavailable Offline"
} }

@ -8,8 +8,6 @@ import ModuleHeading from './moduleHeading'
interface ActivePluginCardContainerProps { interface ActivePluginCardContainerProps {
pluginComponent: PluginManagerComponent pluginComponent: PluginManagerComponent
setActiveProfiles: React.Dispatch<React.SetStateAction<Profile<any>[]>>
activeProfiles: Profile[]
} }
function ActivePluginCardContainer({pluginComponent}: ActivePluginCardContainerProps) { function ActivePluginCardContainer({pluginComponent}: ActivePluginCardContainerProps) {
const deactivatePlugin = (pluginName: string) => { const deactivatePlugin = (pluginName: string) => {

@ -1,18 +1,32 @@
import {Profile} from '@remixproject/plugin-utils' import {Profile} from '@remixproject/plugin-utils'
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-use-before-define // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-use-before-define
import React from 'react' import React, { useContext, useEffect, useState } from 'react'
import {FormattedMessage} from 'react-intl' import {FormattedMessage, useIntl} from 'react-intl'
import '../remix-ui-plugin-manager.css' import '../remix-ui-plugin-manager.css'
import {CustomTooltip} from '@remix-ui/helper' import {CustomTooltip} from '@remix-ui/helper'
import { AppContext } from '@remix-ui/app'
interface PluginCardProps { interface PluginCardProps {
profile: Profile & { profile: any
icon?: string
}
buttonText: string buttonText: string
activatePlugin: (plugin: string) => void activatePlugin: (plugin: string) => void
} }
function InactivePluginCard({profile, buttonText, activatePlugin}: PluginCardProps) { function InactivePluginCard({profile, buttonText, activatePlugin}: PluginCardProps) {
const {online} = useContext(AppContext)
const [canBeActivated, setCanBeActivated] = useState(false)
const intl = useIntl()
useEffect(() => {
if(!online) {
if(profile.url && (!profile.url.includes('http') || profile.url.includes('localhost') || profile.url.includes('127.0.0.1'))) {
setCanBeActivated(true)
}else{
setCanBeActivated(false)
}
}else{
setCanBeActivated(true)
}
},[online])
return ( return (
<div className="list-group list-group-flush plugins-list-group" data-id="pluginManagerComponentActiveTile"> <div className="list-group list-group-flush plugins-list-group" data-id="pluginManagerComponentActiveTile">
<article className="list-group-item py-1 mb-1 plugins-list-group-item"> <article className="list-group-item py-1 mb-1 plugins-list-group-item">
@ -69,6 +83,7 @@ function InactivePluginCard({profile, buttonText, activatePlugin}: PluginCardPro
tooltipClasses="text-nowrap" tooltipClasses="text-nowrap"
tooltipText={<FormattedMessage id="pluginManager.activatePlugin" values={{pluginName: profile.displayName || profile.name}} />} tooltipText={<FormattedMessage id="pluginManager.activatePlugin" values={{pluginName: profile.displayName || profile.name}} />}
> >
{!canBeActivated ? <button className="btn btn-secondary btn-sm">{intl.formatMessage({id: 'pluginManager.UnavailableOffline'})}</button> : (
<button <button
onClick={() => { onClick={() => {
activatePlugin(profile.name) activatePlugin(profile.name)
@ -77,7 +92,7 @@ function InactivePluginCard({profile, buttonText, activatePlugin}: PluginCardPro
data-id={`pluginManagerComponentActivateButton${profile.name}`} data-id={`pluginManagerComponentActivateButton${profile.name}`}
> >
{buttonText} {buttonText}
</button> </button>)}
</CustomTooltip> </CustomTooltip>
} }
</h6> </h6>

@ -8,8 +8,6 @@ import ModuleHeading from './moduleHeading'
interface InactivePluginCardContainerProps { interface InactivePluginCardContainerProps {
pluginComponent: PluginManagerComponent pluginComponent: PluginManagerComponent
setInactiveProfiles: React.Dispatch<React.SetStateAction<Profile<any>[]>>
inactiveProfiles: Profile<any>[]
} }
function InactivePluginCardContainer({pluginComponent}: InactivePluginCardContainerProps) { function InactivePluginCardContainer({pluginComponent}: InactivePluginCardContainerProps) {

@ -8,13 +8,11 @@ import RootView from './components/rootView'
import './remix-ui-plugin-manager.css' import './remix-ui-plugin-manager.css'
export const RemixUiPluginManager = ({pluginComponent}: RemixUiPluginManagerProps) => { export const RemixUiPluginManager = ({pluginComponent}: RemixUiPluginManagerProps) => {
const [activeProfiles, setActiveProfiles] = useState<Profile[]>(pluginComponent.activePlugins)
const [inactiveProfiles, setinactiveProfiles] = useState<Profile[]>(pluginComponent.inactivePlugins)
return ( return (
<RootView pluginComponent={pluginComponent}> <RootView pluginComponent={pluginComponent}>
<section data-id="pluginManagerComponentPluginManagerSection"> <section data-id="pluginManagerComponentPluginManagerSection">
<ActivePluginCardContainer pluginComponent={pluginComponent} setActiveProfiles={setActiveProfiles} activeProfiles={activeProfiles} /> <ActivePluginCardContainer pluginComponent={pluginComponent} />
<InactivePluginCardContainer pluginComponent={pluginComponent} setInactiveProfiles={setinactiveProfiles} inactiveProfiles={inactiveProfiles} /> <InactivePluginCardContainer pluginComponent={pluginComponent} />
</section> </section>
</RootView> </RootView>
) )

Loading…
Cancel
Save