diff --git a/package.json b/package.json index 3a30bac684..3a8bee75f0 100644 --- a/package.json +++ b/package.json @@ -360,4 +360,4 @@ "resolutions": { "@types/react": "^17.0.24" } -} \ No newline at end of file +} diff --git a/src/App.tsx b/src/App.tsx index 05f138bf8b..873ba2d695 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,11 +1,12 @@ import React, { useState, useEffect, useRef } from "react"; +import { PluginClient } from "@remixproject/plugin"; +import { createClient } from "@remixproject/plugin-webview"; import { - createIframeClient, CompilationFileSources, CompilationResult, - Status, -} from "@remixproject/plugin"; +} from "@remixproject/plugin-api/"; +import { Status } from "@remixproject/plugin-utils"; import { AppContext } from "./AppContext"; import { Routes } from "./routes"; @@ -42,12 +43,12 @@ const App = () => { useEffect(() => { console.log("Remix EthDoc loading..."); - const client = createIframeClient({ devMode }); + const client = createClient(new PluginClient()); const loadClient = async () => { await client.onload(); setClientInstance(client); console.log("Remix EthDoc Plugin has been loaded"); - await client.call("manager" as any, "activatePlugin", "ethdoc-viewer"); + //await client.call("manager" as any, "activatePlugin", "ethdoc-viewer"); client.solidity.on( "compilationFinished", ( diff --git a/src/AppContext.tsx b/src/AppContext.tsx index 05c17b5c90..9a53ccd10c 100644 --- a/src/AppContext.tsx +++ b/src/AppContext.tsx @@ -1,5 +1,7 @@ import React from "react"; -import { PluginApi, IRemixApi, Api, PluginClient } from "@remixproject/plugin"; +import { PluginClient } from "@remixproject/plugin"; +import { PluginApi, Api } from "@remixproject/plugin-utils"; +import { IRemixApi } from "@remixproject/plugin-api"; import { ContractName, Documentation, PublishedSite } from "./types"; diff --git a/src/utils/faker.ts b/src/utils/faker.ts index bd0df7fd5d..162bc32776 100644 --- a/src/utils/faker.ts +++ b/src/utils/faker.ts @@ -1,4 +1,4 @@ -import { CompiledContract, ABIParameter } from "@remixproject/plugin"; +import { CompiledContract, ABIParameter } from "@remixproject/plugin-api/lib/compiler"; import sampleData from "./sample-data/sample-artifact.json"; import sampleDataWithComments from "./sample-data/sample-artifact-with-comments.json"; diff --git a/src/utils/types.ts b/src/utils/types.ts index d85872deae..f0d91c5588 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -3,7 +3,7 @@ import { DevMethodDoc, DeveloperDocumentation, UserDocumentation, -} from "@remixproject/plugin"; +} from "@remixproject/plugin-api/lib/compiler"; export interface MethodsDocumentation { [x: string]: UserMethodDoc | DevMethodDoc; diff --git a/src/utils/utils.ts b/src/utils/utils.ts index 236aefb6e6..c56077fba2 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -4,7 +4,7 @@ import { FunctionDescription, ABIParameter, ABIDescription, -} from "@remixproject/plugin"; +} from "@remixproject/plugin-api/lib/compiler"; import { FileName, Documentation, ContractName } from "../types"; import { template } from "./template"; diff --git a/src/views/HomeView.tsx b/src/views/HomeView.tsx index 1f68250f7d..236b60d411 100644 --- a/src/views/HomeView.tsx +++ b/src/views/HomeView.tsx @@ -3,12 +3,15 @@ import { AppContext } from "../AppContext"; import { ContractName, Documentation } from "../types"; import { publish } from "../utils"; import { htmlTemplate } from "../utils/template"; +import { CopyToClipboard } from "react-copy-to-clipboard"; export const HomeView: React.FC = () => { const [activeItem, setActiveItem] = useState(""); const [isPublishing, setIsPublishing] = useState(false); const [htmlDocumentation, setHtmlDocumentation] = useState(""); const [hasErrorOnPublishing, setHasErrorOnPublishing] = useState(false); + const [publishedURL, setPublishedURL] = useState(""); + const [isCopied, setIsCopied] = useState(false); const clearMessageFuncRef = useRef(undefined as any); useEffect(() => { @@ -27,6 +30,7 @@ export const HomeView: React.FC = () => { const url = `https://ipfs.io/ipfs/${hash}`; window.open(url); + setPublishedURL(url); } catch (error) { if (retries < maxNumberOfRetries) { console.log("Retrying..."); @@ -82,6 +86,8 @@ export const HomeView: React.FC = () => { } aria-pressed="false" onClick={() => { + setPublishedURL(""); + setIsCopied(false); setActiveItem(item); displayDocumentation( clientInstance, @@ -104,22 +110,44 @@ export const HomeView: React.FC = () => { onClick={() => { setContracts(new Map()); displayDocumentation(clientInstance, "", ""); + setPublishedURL(""); + setIsCopied(false); }} > Clear -