From 17ccd7999f6c87f5d18250c4b5be97949c930119 Mon Sep 17 00:00:00 2001 From: lianahus Date: Wed, 29 Nov 2023 18:58:21 +0100 Subject: [PATCH] write order for modals --- apps/remix-ide-e2e/src/helpers/init.ts | 1 - apps/remix-ide/src/app.js | 7 ++- apps/remix-ide/src/walkthroughService.js | 14 +++-- .../lib/remix-app/components/modals/enter.tsx | 41 +++------------ .../app/src/lib/remix-app/remix-app.tsx | 52 +++++++++++++++++-- 5 files changed, 72 insertions(+), 43 deletions(-) diff --git a/apps/remix-ide-e2e/src/helpers/init.ts b/apps/remix-ide-e2e/src/helpers/init.ts index eafc584dd3..48c09a52f4 100644 --- a/apps/remix-ide-e2e/src/helpers/init.ts +++ b/apps/remix-ide-e2e/src/helpers/init.ts @@ -56,7 +56,6 @@ export default function (browser: NightwatchBrowser, callback: VoidFunction, url if (preloadPlugins) { initModules(browser, () => { browser - .clickLaunchIcon('solidity') .waitForElementVisible('[for="autoCompile"]') .click('[for="autoCompile"]') diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.js index f6e5e1c214..c7e11c0512 100644 --- a/apps/remix-ide/src/app.js +++ b/apps/remix-ide/src/app.js @@ -130,8 +130,11 @@ class AppComponent { 'remix.ethereum.org': 23, '6fd22d6fe5549ad4c4d8fd3ca0b7816b.mod': 35 // remix desktop } - this.showMatamo = matomoDomains[window.location.hostname] && !Registry.getInstance().get('config').api.exists('settings/matomo-analytics') - this.walkthroughService = new WalkthroughService(appManager, this.showMatamo) + this.showMatamo = true//matomoDomains[window.location.hostname] && !Registry.getInstance().get('config').api.exists('settings/matomo-analytics') + this.showEnter = !localStorage.getItem('hadUsageTypeAsked') + + console.log("show ", this.showMatamo, " ", this.showEnter) + this.walkthroughService = new WalkthroughService(appManager, !this.showMatamo || !this.showEnter) const hosts = ['127.0.0.1:8080', '192.168.0.101:8080', 'localhost:8080'] // workaround for Electron support diff --git a/apps/remix-ide/src/walkthroughService.js b/apps/remix-ide/src/walkthroughService.js index d0d466555f..67bb850a8c 100644 --- a/apps/remix-ide/src/walkthroughService.js +++ b/apps/remix-ide/src/walkthroughService.js @@ -11,13 +11,21 @@ const profile = { } export class WalkthroughService extends Plugin { - constructor (appManager, showMatamo) { + constructor (appManager, showWalkthrough) { super(profile) - appManager.event.on('activate', (plugin) => { - if (plugin.name === 'udapp' && !showMatamo) { + let readyToStart = 0; + /*appManager.event.on('activate', (plugin) => { + if (plugin.name === 'udapp') readyToStart++ + if (readyToStart == 2 && showWalkthrough) { this.start() } }) + appManager.event.on('activate', (plugin) => { + if (plugin.name === 'solidity') readyToStart++ + if (readyToStart == 2 && showWalkthrough) { + this.start() + } + })*/ } start () { diff --git a/libs/remix-ui/app/src/lib/remix-app/components/modals/enter.tsx b/libs/remix-ui/app/src/lib/remix-app/components/modals/enter.tsx index 55f62beca0..3cefacdc03 100644 --- a/libs/remix-ui/app/src/lib/remix-app/components/modals/enter.tsx +++ b/libs/remix-ui/app/src/lib/remix-app/components/modals/enter.tsx @@ -1,14 +1,8 @@ import React, {useContext, useEffect, useState} from 'react' +import {AppContext} from '../../context/context' import {UsageTypes} from '../../types' import { type } from 'os' -declare global { - interface Window { - _paq: any - } -} -const _paq = (window._paq = window._paq || []) - interface EnterDialogProps { hide: boolean, handleUserChoice: (userChoice: UsageTypes) => void, @@ -16,6 +10,7 @@ interface EnterDialogProps { const EnterDialog = (props: EnterDialogProps) => { const [visibility, setVisibility] = useState(false) + const {showEnter} = useContext(AppContext) useEffect(() => { setVisibility(!props.hide) @@ -23,29 +18,9 @@ const EnterDialog = (props: EnterDialogProps) => { const enterAs = async (uType) => { props.handleUserChoice(uType) - - switch (uType) { - case UsageTypes.Beginner: { - _paq.push(['trackEvent', 'enterDialog', 'usageType', 'beginner']) - break - } - case UsageTypes.Tutor: { - _paq.push(['trackEvent', 'enterDialog', 'usageType', 'tutor']) - break - } - case UsageTypes.Prototyper: { - _paq.push(['trackEvent', 'enterDialog', 'usageType', 'prototyper']) - break - } - case UsageTypes.Production: { - _paq.push(['trackEvent', 'enterDialog', 'usageType', 'production']) - break - } - default: throw new Error() - } } - const modalClass = !visibility ? "d-none" : "d-flex" + const modalClass = (visibility && showEnter) ? "d-flex" : "d-none" return (
{

Welcome to Remix IDE

- To load the project with the most efficiant setup we would like to know your experiance type. + To load the project with the most efficient setup we would like to know your experiance type.
- - - - + + + +
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 d08c6493df..b8d2a748d3 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 @@ -13,6 +13,13 @@ import {IntlProvider, FormattedMessage} from 'react-intl' import {CustomTooltip} from '@remix-ui/helper' import {UsageTypes} from './types' +declare global { + interface Window { + _paq: any + } +} +const _paq = (window._paq = window._paq || []) + interface IRemixAppUi { app: any } @@ -80,16 +87,47 @@ const RemixApp = (props: IRemixAppUi) => { const value = { settings: props.app.settings, showMatamo: props.app.showMatamo, + showEnter: props.app.showEnter, appManager: props.app.appManager, modal: props.app.notification, layout: props.app.layout } - const handleUserChosenType = (type) => { + const handleUserChosenType = async (type) => { setShowEnterDialog(false) - localStorage.setItem('hadUsageTypeAsked', "true") + localStorage.setItem('hadUsageTypeAsked', "1") + + await props.app.appManager.call('walkthrough', 'start') // Use the type to setup the UI accordingly + switch (type) { + case UsageTypes.Beginner: { + await props.app.appManager.call('manager', 'activatePlugin', 'LearnEth') + // const wName = 'Playground' + // const workspaces = await props.app.appManager.call('filePanel', 'getWorkspaces') + // if (!workspaces.find((workspace) => workspace.name === wName)) { + // await props.app.appManager.call('filePanel', 'createWorkspace', wName, 'playground') + // } + // await props.app.appManager.call('filePanel', 'switchToWorkspace', { name: wName, isLocalHost: false }) + + _paq.push(['trackEvent', 'enterDialog', 'usageType', 'beginner']) + break + } + case UsageTypes.Tutor: { + _paq.push(['trackEvent', 'enterDialog', 'usageType', 'tutor']) + break + } + case UsageTypes.Prototyper: { + _paq.push(['trackEvent', 'enterDialog', 'usageType', 'prototyper']) + break + } + case UsageTypes.Production: { + _paq.push(['trackEvent', 'enterDialog', 'usageType', 'production']) + break + } + default: throw new Error() + } + } return ( @@ -97,13 +135,19 @@ const RemixApp = (props: IRemixAppUi) => { - + {setShowEnterDialog(true)}}> + handleUserChosenType(type)}>
{props.app.menuicons.render()}
-
+
{props.app.sidePanel.render()}