From 75d2b0d97606b22e87b2c5fa99f3d286281b59e3 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Mon, 20 May 2024 09:07:40 +0100 Subject: [PATCH] update git statusbar section --- apps/remix-ide/src/app/panels/file-panel.js | 13 +++- .../app/src/lib/remix-app/remix-app.tsx | 2 +- .../src/lib/components/gitStatus.tsx | 12 ++-- .../src/lib/remixui-statusbar-panel.tsx | 64 +++++++++++-------- .../remix-ui/statusbar/src/lib/types/index.ts | 1 + 5 files changed, 57 insertions(+), 35 deletions(-) diff --git a/apps/remix-ide/src/app/panels/file-panel.js b/apps/remix-ide/src/app/panels/file-panel.js index d8f55573f5..3a1ad39a69 100644 --- a/apps/remix-ide/src/app/panels/file-panel.js +++ b/apps/remix-ide/src/app/panels/file-panel.js @@ -34,6 +34,7 @@ const profile = { methods: [ 'createNewFile', 'uploadFile', + 'echoCall', 'getCurrentWorkspace', 'getAvailableWorkspaceName', 'getWorkspaces', @@ -43,7 +44,7 @@ const profile = { 'registerContextMenuItem', 'renameWorkspace', 'deleteWorkspace', - 'loadTemplate', + 'loadTemplate', 'clone', 'isExpanded', 'isGist' @@ -103,6 +104,11 @@ module.exports = class Filepanel extends ViewPlugin { }) } + echoCall(args) { + console.log('echoCall', args) + return args + } + /** * @param item { id: string, name: string, type?: string[], path?: string[], extension?: string[], pattern?: string[] } * typically: @@ -147,6 +153,7 @@ module.exports = class Filepanel extends ViewPlugin { } getCurrentWorkspace() { + console.log('getCurrentWorkspace', this.currentWorkspaceMetadata) return this.currentWorkspaceMetadata } @@ -154,10 +161,10 @@ module.exports = class Filepanel extends ViewPlugin { return this.workspaces } - getAvailableWorkspaceName(name) { + getAvailableWorkspaceName(name) { if (!this.workspaces) return name let index = 1 - let workspace = this.workspaces.find((workspace) => workspace.name === name + ' - ' + index) + let workspace = this.workspaces.find((workspace) => workspace.name === name + ' - ' + index) while (workspace) { index++ workspace = this.workspaces.find((workspace) => workspace.name === name + ' - ' + index) diff --git a/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx b/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx index 3e0bdec00e..eea8701c60 100644 --- a/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx +++ b/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx @@ -168,7 +168,7 @@ const RemixApp = (props: IRemixAppUi) => { } } - console.log('statusbar', props.app.statusBar) + return ( //@ts-ignore diff --git a/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx b/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx index 8fba5add56..7ce3de2bff 100644 --- a/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx +++ b/libs/remix-ui/statusbar/src/lib/components/gitStatus.tsx @@ -1,11 +1,15 @@ -import React from 'react' +import React, { useState } from 'react' + +export interface GitStatusProps { + workspaceName: string +} + +export default function GitStatus({ workspaceName }: GitStatusProps) { -//use placeholder data to show the small section of the statusbar for git -export default function GitStatus() { return (
- dev-updates + {`${workspaceName}`}
) diff --git a/libs/remix-ui/statusbar/src/lib/remixui-statusbar-panel.tsx b/libs/remix-ui/statusbar/src/lib/remixui-statusbar-panel.tsx index 813a661407..d0dc9480a0 100644 --- a/libs/remix-ui/statusbar/src/lib/remixui-statusbar-panel.tsx +++ b/libs/remix-ui/statusbar/src/lib/remixui-statusbar-panel.tsx @@ -6,6 +6,7 @@ import ScamAlertStatus from './components/scamAlertStatus' import ScamDetails from './components/scamDetails' import { FloatingFocusManager, autoUpdate, flip, offset, shift, useClick, useDismiss, useFloating, useInteractions, useRole } from '@floating-ui/react' import axios from 'axios' +import { get } from 'lodash' export interface RemixUIStatusBarProps { statusBarPlugin: StatusBarInterface @@ -16,27 +17,27 @@ export type ScamAlert = { url: string } -export function RemixUIStatusBar ({ statusBarPlugin }: RemixUIStatusBarProps) { +type GetCurrentWorkspace = + { + name: string + isLocalhost: boolean + absolutePath: string + } + +export function RemixUIStatusBar({ statusBarPlugin }: RemixUIStatusBarProps) { const [showScamDetails, setShowScamDetails] = useState(false) const [scamAlerts, setScamAlerts] = useState([]) + const [workspaceName, setWorkspaceName] = useState('') const { refs, context, floatingStyles } = useFloating({ open: showScamDetails, onOpenChange: setShowScamDetails, - middleware: [ - offset(10), - flip({ fallbackAxisSideDirection: "end" }), - shift() - ], - whileElementsMounted: autoUpdate + middleware: [offset(10), flip({ fallbackAxisSideDirection: 'end' }), shift()], + whileElementsMounted: autoUpdate, }) const click = useClick(context) const dismiss = useDismiss(context) const role = useRole(context) - const { getReferenceProps, getFloatingProps } = useInteractions([ - click, - dismiss, - role - ]) + const { getReferenceProps, getFloatingProps } = useInteractions([click, dismiss, role]) useEffect(() => { const abortController = new AbortController() @@ -44,9 +45,7 @@ export function RemixUIStatusBar ({ statusBarPlugin }: RemixUIStatusBarProps) { async function getScamAlerts() { const response = await axios.get('https://raw.githubusercontent.com/remix-project-org/remix-dynamics/main/ide/scam-alerts.json', { signal }) if (signal.aborted) return - console.log('getScamAlerts', response) setScamAlerts(response.data.alerts) - console.log('getScamAlerts', scamAlerts) } getScamAlerts() return () => { @@ -54,28 +53,39 @@ export function RemixUIStatusBar ({ statusBarPlugin }: RemixUIStatusBarProps) { } }, []) - useEffect(() => { - console.log('scamAlerts', scamAlerts) - }, [scamAlerts]) - - const getGitBranchName = async () => { - return new Promise((resolve, reject) => { - return 0 - }) + async function getGitBranchName() { + const gitRepo = await statusBarPlugin.call('fileManager', 'isGitRepo') + console.log('gitRepo', gitRepo) + return gitRepo + } + async function getWorkspaceName() { + console.log(statusBarPlugin) + const workspaceObject = await statusBarPlugin.call('filePanel', 'getCurrentWorkspace') + if (workspaceObject === null) { + console.log('workspaceObject is null or undefined') + return + } + console.log('workspaceObject', workspaceObject) } + function getWorkspaceGitBranchName() { + if (!getGitBranchName()) return + getWorkspaceName() + } + // getWorkspaceName() + getWorkspaceGitBranchName() + return ( <> {showScamDetails && ( - )} + + )}
- -
-
- +
+
diff --git a/libs/remix-ui/statusbar/src/lib/types/index.ts b/libs/remix-ui/statusbar/src/lib/types/index.ts index 3bb309f618..3ff77181e1 100644 --- a/libs/remix-ui/statusbar/src/lib/types/index.ts +++ b/libs/remix-ui/statusbar/src/lib/types/index.ts @@ -1,4 +1,5 @@ import EventEmitter from 'events' +import { Plugin } from '@remixproject/engine' export interface PluginProfile { name: string displayName: string