From 3c508e62a8fdab46cd69fcaee6dcc0a2c6e4e317 Mon Sep 17 00:00:00 2001
From: lianahus
Date: Mon, 27 Nov 2023 15:19:35 +0100
Subject: [PATCH 01/10] Added Enter Dialog. Improvement in Light theme
---
apps/remix-ide-e2e/src/helpers/init.ts | 2 +
.../assets/css/themes/remix-light_powaqg.css | 28 +++---
.../lib/remix-app/components/modals/enter.tsx | 85 +++++++++++++++++++
.../remix-app/components/modals/matomo.tsx | 10 +--
.../app/src/lib/remix-app/interface/index.ts | 7 ++
.../app/src/lib/remix-app/remix-app.tsx | 13 +++
.../app/src/lib/remix-app/types/index.ts | 20 +++--
.../src/lib/components/workspaceTemplate.tsx | 1 -
8 files changed, 138 insertions(+), 28 deletions(-)
create mode 100644 libs/remix-ui/app/src/lib/remix-app/components/modals/enter.tsx
diff --git a/apps/remix-ide-e2e/src/helpers/init.ts b/apps/remix-ide-e2e/src/helpers/init.ts
index 572fa7a113..eafc584dd3 100644
--- a/apps/remix-ide-e2e/src/helpers/init.ts
+++ b/apps/remix-ide-e2e/src/helpers/init.ts
@@ -13,6 +13,8 @@ export default function (browser: NightwatchBrowser, callback: VoidFunction, url
//.switchBrowserTab(0)
.waitForElementVisible('[id="remixTourSkipbtn"]')
.click('[id="remixTourSkipbtn"]')
+ .waitForElementVisible('data-id="EnterModalDialogContainer-react"]')
+ .click('[data-id="beginnerbtn"]')
.perform((done) => {
if (!loadPlugin) return done()
diff --git a/apps/remix-ide/src/assets/css/themes/remix-light_powaqg.css b/apps/remix-ide/src/assets/css/themes/remix-light_powaqg.css
index 3217df2899..b99025172c 100644
--- a/apps/remix-ide/src/assets/css/themes/remix-light_powaqg.css
+++ b/apps/remix-ide/src/assets/css/themes/remix-light_powaqg.css
@@ -2386,8 +2386,8 @@ fieldset:disabled a.btn {
.btn-secondary {
color: #fff;
- background-color: #a8b3bc;
- border-color: #a8b3bc;
+ background-color: #8b98a3;
+ border-color: #8b98a3;
}
.btn-secondary:hover {
color: #fff;
@@ -2401,8 +2401,8 @@ fieldset:disabled a.btn {
.btn-secondary.disabled,
.btn-secondary:disabled {
color: #fff;
- background-color: #a8b3bc;
- border-color: #a8b3bc;
+ background-color: #8b98a3;
+ border-color: #8b98a3;
}
.btn-secondary:not(:disabled):not(.disabled):active,
.btn-secondary:not(:disabled):not(.disabled).active,
@@ -2656,13 +2656,13 @@ fieldset:disabled a.btn {
}
.btn-outline-secondary {
- color: #a8b3bc;
- border-color: #a8b3bc;
+ color: #8b98a3;
+ border-color: #8b98a3;
}
.btn-outline-secondary:hover {
color: #fff;
- background-color: #a8b3bc;
- border-color: #a8b3bc;
+ background-color: #8b98a3;
+ border-color: #8b98a3;
}
.btn-outline-secondary:focus,
.btn-outline-secondary.focus {
@@ -2670,15 +2670,15 @@ fieldset:disabled a.btn {
}
.btn-outline-secondary.disabled,
.btn-outline-secondary:disabled {
- color: #a8b3bc;
+ color: #8b98a3;
background-color: transparent;
}
.btn-outline-secondary:not(:disabled):not(.disabled):active,
.btn-outline-secondary:not(:disabled):not(.disabled).active,
.show > .btn-outline-secondary.dropdown-toggle {
color: #fff;
- background-color: #a8b3bc;
- border-color: #a8b3bc;
+ background-color: #8b98a3;
+ border-color: #8b98a3;
}
.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,
.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,
@@ -4731,7 +4731,7 @@ a.badge-primary.focus {
.badge-secondary {
color: #fff;
- background-color: #a8b3bc;
+ background-color: #8b98a3;
}
a.badge-secondary:hover,
a.badge-secondary:focus {
@@ -6271,7 +6271,7 @@ button.bg-dark:focus {
}
.border-secondary {
- border-color: #a8b3bc !important;
+ border-color: #8b98a3 !important;
}
.border-success {
@@ -9308,7 +9308,7 @@ a.text-primary:focus {
}
.text-secondary {
- color: #a8b3bc !important;
+ color: #8b98a3 !important;
}
a.text-secondary:hover,
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
new file mode 100644
index 0000000000..55f62beca0
--- /dev/null
+++ b/libs/remix-ui/app/src/lib/remix-app/components/modals/enter.tsx
@@ -0,0 +1,85 @@
+import React, {useContext, useEffect, useState} from 'react'
+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,
+}
+
+const EnterDialog = (props: EnterDialogProps) => {
+ const [visibility, setVisibility] = useState(false)
+
+ useEffect(() => {
+ setVisibility(!props.hide)
+ }, [props.hide])
+
+ 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"
+ return (
+
+
+
{
+ }}
+ >
+
+
Welcome to Remix IDE
+
+
+ To load the project with the most efficiant setup we would like to know your experiance type.
+
+
+
+
+
+ {enterAs(UsageTypes.Beginner)}}>Beginner
+ {enterAs(UsageTypes.Tutor)}}>Tutor
+ {enterAs(UsageTypes.Prototyper)}}>Prototyper
+ {enterAs(UsageTypes.Production)}}>Production
+
+
+
+
+ )
+}
+
+export default EnterDialog
diff --git a/libs/remix-ui/app/src/lib/remix-app/components/modals/matomo.tsx b/libs/remix-ui/app/src/lib/remix-app/components/modals/matomo.tsx
index 2e0c25d934..849f14a0da 100644
--- a/libs/remix-ui/app/src/lib/remix-app/components/modals/matomo.tsx
+++ b/libs/remix-ui/app/src/lib/remix-app/components/modals/matomo.tsx
@@ -25,11 +25,7 @@ const MatomoDialog = (props) => {
We realize that our users have sensitive information in their code and that their privacy - your privacy - must be protected.
- All data collected through Matomo is stored on our own server - no data is ever given to third parties. Our analytics reports are public:{' '}
-
- take a look
-
- .
+ All data collected through Matomo is stored on our own server - no data is ever given to third parties.
We do not collect nor store any personally identifiable information (PII).
@@ -61,14 +57,14 @@ const MatomoDialog = (props) => {
const declineModal = async () => {
settings.updateMatomoAnalyticsChoice(false)
_paq.push(['optUserOut'])
- appManager.call('walkthrough', 'start')
+ //appManager.call('walkthrough', 'start')
setVisible(false)
}
const handleModalOkClick = async () => {
_paq.push(['forgetUserOptOut'])
settings.updateMatomoAnalyticsChoice(true)
- appManager.call('walkthrough', 'start')
+ //appManager.call('walkthrough', 'start')
setVisible(false)
}
diff --git a/libs/remix-ui/app/src/lib/remix-app/interface/index.ts b/libs/remix-ui/app/src/lib/remix-app/interface/index.ts
index fcee9ef693..eb298090ea 100644
--- a/libs/remix-ui/app/src/lib/remix-app/interface/index.ts
+++ b/libs/remix-ui/app/src/lib/remix-app/interface/index.ts
@@ -37,3 +37,10 @@ export interface ModalState {
focusModal: AppModal,
focusToaster: {message: (string | JSX.Element), timestamp: number }
}
+
+export interface forceChoiceModal {
+ id: string
+ title?: string,
+ message: string | JSX.Element,
+}
+
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 a86f09e272..d08c6493df 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
@@ -2,6 +2,7 @@ import React, {useEffect, useRef, useState} from 'react'
import './style/remix-app.css'
import {RemixUIMainPanel} from '@remix-ui/panel'
import MatomoDialog from './components/modals/matomo'
+import EnterDialog from './components/modals/enter'
import OriginWarning from './components/modals/origin-warning'
import DragBar from './components/dragbar/dragbar'
import {AppProvider} from './context/provider'
@@ -10,12 +11,14 @@ import DialogViewPlugin from './components/modals/dialogViewPlugin'
import {AppContext} from './context/context'
import {IntlProvider, FormattedMessage} from 'react-intl'
import {CustomTooltip} from '@remix-ui/helper'
+import {UsageTypes} from './types'
interface IRemixAppUi {
app: any
}
const RemixApp = (props: IRemixAppUi) => {
const [appReady, setAppReady] = useState(false)
+ const [showEnterDialog, setShowEnterDialog] = useState(true)
const [hideSidePanel, setHideSidePanel] = useState(false)
const [maximiseTrigger, setMaximiseTrigger] = useState(0)
const [resetTrigger, setResetTrigger] = useState(0)
@@ -37,6 +40,8 @@ const RemixApp = (props: IRemixAppUi) => {
if (props.app) {
activateApp()
}
+ const hadUsageTypeAsked = localStorage.getItem('hadUsageTypeAsked')
+ setShowEnterDialog(!hadUsageTypeAsked)
}, [])
function setListeners() {
@@ -80,12 +85,20 @@ const RemixApp = (props: IRemixAppUi) => {
layout: props.app.layout
}
+ const handleUserChosenType = (type) => {
+ setShowEnterDialog(false)
+ localStorage.setItem('hadUsageTypeAsked', "true")
+
+ // Use the type to setup the UI accordingly
+ }
+
return (
//@ts-ignore
+ handleUserChosenType(type)}>
{props.app.menuicons.render()}
diff --git a/libs/remix-ui/app/src/lib/remix-app/types/index.ts b/libs/remix-ui/app/src/lib/remix-app/types/index.ts
index 6822dbe73e..0037fd6cb8 100644
--- a/libs/remix-ui/app/src/lib/remix-app/types/index.ts
+++ b/libs/remix-ui/app/src/lib/remix-app/types/index.ts
@@ -1,8 +1,16 @@
export const enum ModalTypes {
- alert = 'alert',
- confirm = 'confirm',
- prompt = 'prompt',
- password = 'password',
- default = 'default',
- form = 'form',
+ alert = 'alert',
+ confirm = 'confirm',
+ prompt = 'prompt',
+ password = 'password',
+ default = 'default',
+ form = 'form',
+ forceChoice = 'forceChoice'
}
+
+export const enum UsageTypes {
+ Beginner = 1,
+ Tutor,
+ Prototyper,
+ Production,
+}
\ No newline at end of file
diff --git a/libs/remix-ui/home-tab/src/lib/components/workspaceTemplate.tsx b/libs/remix-ui/home-tab/src/lib/components/workspaceTemplate.tsx
index ee48f5d83c..6fa131d702 100644
--- a/libs/remix-ui/home-tab/src/lib/components/workspaceTemplate.tsx
+++ b/libs/remix-ui/home-tab/src/lib/components/workspaceTemplate.tsx
@@ -14,7 +14,6 @@ interface WorkspaceTemplateProps {
function WorkspaceTemplate({gsID, workspaceTitle, description, projectLogo, callback}: WorkspaceTemplateProps) {
const themeFilter = useContext(ThemeContext)
- console.log("theme ", themeFilter)
return (
Date: Wed, 29 Nov 2023 18:58:21 +0100
Subject: [PATCH 02/10] 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.
- {enterAs(UsageTypes.Beginner)}}>Beginner
- {enterAs(UsageTypes.Tutor)}}>Tutor
- {enterAs(UsageTypes.Prototyper)}}>Prototyper
- {enterAs(UsageTypes.Production)}}>Production
+ {enterAs(UsageTypes.Beginner)}}>Learn/Playground
+ {enterAs(UsageTypes.Tutor)}}>Teach/Workshop
+ {enterAs(UsageTypes.Prototyper)}}>Prototype/Test
+ {enterAs(UsageTypes.Production)}}>Production level
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()}
Date: Wed, 29 Nov 2023 18:58:58 +0100
Subject: [PATCH 03/10] enamble matomo check
---
apps/remix-ide-e2e/src/helpers/init.ts | 4 ++--
apps/remix-ide/src/app.js | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/apps/remix-ide-e2e/src/helpers/init.ts b/apps/remix-ide-e2e/src/helpers/init.ts
index 48c09a52f4..2f8eb94c7f 100644
--- a/apps/remix-ide-e2e/src/helpers/init.ts
+++ b/apps/remix-ide-e2e/src/helpers/init.ts
@@ -11,10 +11,10 @@ export default function (browser: NightwatchBrowser, callback: VoidFunction, url
browser
.url(url || 'http://127.0.0.1:8080')
//.switchBrowserTab(0)
+ .waitForElementVisible('[id="beginnerbtn"]')
+ .click('[id="beginnerbtn"]')
.waitForElementVisible('[id="remixTourSkipbtn"]')
.click('[id="remixTourSkipbtn"]')
- .waitForElementVisible('data-id="EnterModalDialogContainer-react"]')
- .click('[data-id="beginnerbtn"]')
.perform((done) => {
if (!loadPlugin) return done()
diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.js
index c7e11c0512..55d349088a 100644
--- a/apps/remix-ide/src/app.js
+++ b/apps/remix-ide/src/app.js
@@ -130,7 +130,7 @@ class AppComponent {
'remix.ethereum.org': 23,
'6fd22d6fe5549ad4c4d8fd3ca0b7816b.mod': 35 // remix desktop
}
- this.showMatamo = true//matomoDomains[window.location.hostname] && !Registry.getInstance().get('config').api.exists('settings/matomo-analytics')
+ this.showMatamo = 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)
From 6fdd818f95ec3698e699afd685844dde5712eac8 Mon Sep 17 00:00:00 2001
From: lianahus
Date: Thu, 30 Nov 2023 10:15:13 +0100
Subject: [PATCH 04/10] saving type in localstorage
---
apps/remix-ide-e2e/src/helpers/init.ts | 6 ++++--
apps/remix-ide/src/app.js | 1 -
.../app/src/lib/remix-app/components/modals/matomo.tsx | 2 --
libs/remix-ui/app/src/lib/remix-app/remix-app.tsx | 2 +-
4 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/apps/remix-ide-e2e/src/helpers/init.ts b/apps/remix-ide-e2e/src/helpers/init.ts
index 2f8eb94c7f..02a5261036 100644
--- a/apps/remix-ide-e2e/src/helpers/init.ts
+++ b/apps/remix-ide-e2e/src/helpers/init.ts
@@ -11,8 +11,10 @@ export default function (browser: NightwatchBrowser, callback: VoidFunction, url
browser
.url(url || 'http://127.0.0.1:8080')
//.switchBrowserTab(0)
- .waitForElementVisible('[id="beginnerbtn"]')
- .click('[id="beginnerbtn"]')
+ .waitForElementVisible('[data-id="EnterModalDialogModalBody-react"]')
+ .scrollInto('[data-id = "EnterModalDialogModalBody-react"]')
+ .waitForElementVisible('[data-id="beginnerbtn"]')
+ .click('[data-id="beginnerbtn"]')
.waitForElementVisible('[id="remixTourSkipbtn"]')
.click('[id="remixTourSkipbtn"]')
diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.js
index 55d349088a..f0e8cf4535 100644
--- a/apps/remix-ide/src/app.js
+++ b/apps/remix-ide/src/app.js
@@ -133,7 +133,6 @@ class AppComponent {
this.showMatamo = 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']
diff --git a/libs/remix-ui/app/src/lib/remix-app/components/modals/matomo.tsx b/libs/remix-ui/app/src/lib/remix-app/components/modals/matomo.tsx
index 849f14a0da..c4637cb85d 100644
--- a/libs/remix-ui/app/src/lib/remix-app/components/modals/matomo.tsx
+++ b/libs/remix-ui/app/src/lib/remix-app/components/modals/matomo.tsx
@@ -57,14 +57,12 @@ const MatomoDialog = (props) => {
const declineModal = async () => {
settings.updateMatomoAnalyticsChoice(false)
_paq.push(['optUserOut'])
- //appManager.call('walkthrough', 'start')
setVisible(false)
}
const handleModalOkClick = async () => {
_paq.push(['forgetUserOptOut'])
settings.updateMatomoAnalyticsChoice(true)
- //appManager.call('walkthrough', 'start')
setVisible(false)
}
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 b8d2a748d3..72e84bfe30 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
@@ -95,7 +95,7 @@ const RemixApp = (props: IRemixAppUi) => {
const handleUserChosenType = async (type) => {
setShowEnterDialog(false)
- localStorage.setItem('hadUsageTypeAsked', "1")
+ localStorage.setItem('hadUsageTypeAsked', type)
await props.app.appManager.call('walkthrough', 'start')
From 3d2207bd0f18fe753f1648c03a76ce76f81557e4 Mon Sep 17 00:00:00 2001
From: lianahus
Date: Thu, 30 Nov 2023 16:17:28 +0100
Subject: [PATCH 05/10] updated labels
---
apps/remix-ide/src/app.js | 2 +-
.../app/src/lib/remix-app/components/modals/enter.tsx | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.js
index f0e8cf4535..2c04ee78f7 100644
--- a/apps/remix-ide/src/app.js
+++ b/apps/remix-ide/src/app.js
@@ -130,7 +130,7 @@ 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.showMatamo = true //matomoDomains[window.location.hostname] && !Registry.getInstance().get('config').api.exists('settings/matomo-analytics')
this.showEnter = !localStorage.getItem('hadUsageTypeAsked')
this.walkthroughService = new WalkthroughService(appManager, !this.showMatamo || !this.showEnter)
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 3cefacdc03..b5199664f8 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
@@ -46,10 +46,10 @@ const EnterDialog = (props: EnterDialogProps) => {
- {enterAs(UsageTypes.Beginner)}}>Learn/Playground
- {enterAs(UsageTypes.Tutor)}}>Teach/Workshop
- {enterAs(UsageTypes.Prototyper)}}>Prototype/Test
- {enterAs(UsageTypes.Production)}}>Production level
+ {enterAs(UsageTypes.Beginner)}}>Beginner
+ {enterAs(UsageTypes.Tutor)}}>Teacher
+ {enterAs(UsageTypes.Prototyper)}}>Prototyper
+ {enterAs(UsageTypes.Production)}}>Production User
From b4f32a638c932f343c5a92fc3b6ca8ef7b9b8bef Mon Sep 17 00:00:00 2001
From: Liana Husikyan
Date: Thu, 30 Nov 2023 16:42:08 +0100
Subject: [PATCH 06/10] not show matomo
---
apps/remix-ide-e2e/src/helpers/init.ts | 4 ----
apps/remix-ide/src/app.js | 2 +-
2 files changed, 1 insertion(+), 5 deletions(-)
diff --git a/apps/remix-ide-e2e/src/helpers/init.ts b/apps/remix-ide-e2e/src/helpers/init.ts
index 02a5261036..f5c091b4d8 100644
--- a/apps/remix-ide-e2e/src/helpers/init.ts
+++ b/apps/remix-ide-e2e/src/helpers/init.ts
@@ -11,10 +11,6 @@ export default function (browser: NightwatchBrowser, callback: VoidFunction, url
browser
.url(url || 'http://127.0.0.1:8080')
//.switchBrowserTab(0)
- .waitForElementVisible('[data-id="EnterModalDialogModalBody-react"]')
- .scrollInto('[data-id = "EnterModalDialogModalBody-react"]')
- .waitForElementVisible('[data-id="beginnerbtn"]')
- .click('[data-id="beginnerbtn"]')
.waitForElementVisible('[id="remixTourSkipbtn"]')
.click('[id="remixTourSkipbtn"]')
diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.js
index 2c04ee78f7..f0e8cf4535 100644
--- a/apps/remix-ide/src/app.js
+++ b/apps/remix-ide/src/app.js
@@ -130,7 +130,7 @@ class AppComponent {
'remix.ethereum.org': 23,
'6fd22d6fe5549ad4c4d8fd3ca0b7816b.mod': 35 // remix desktop
}
- this.showMatamo = true //matomoDomains[window.location.hostname] && !Registry.getInstance().get('config').api.exists('settings/matomo-analytics')
+ this.showMatamo = matomoDomains[window.location.hostname] && !Registry.getInstance().get('config').api.exists('settings/matomo-analytics')
this.showEnter = !localStorage.getItem('hadUsageTypeAsked')
this.walkthroughService = new WalkthroughService(appManager, !this.showMatamo || !this.showEnter)
From 7e85a88858afcb3ee24fa1fb80690f1a60a64519 Mon Sep 17 00:00:00 2001
From: lianahus
Date: Thu, 30 Nov 2023 16:57:54 +0100
Subject: [PATCH 07/10] not show enter dialog for tests
---
apps/remix-ide/src/app.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.js
index f0e8cf4535..971090c29f 100644
--- a/apps/remix-ide/src/app.js
+++ b/apps/remix-ide/src/app.js
@@ -131,7 +131,7 @@ class AppComponent {
'6fd22d6fe5549ad4c4d8fd3ca0b7816b.mod': 35 // remix desktop
}
this.showMatamo = matomoDomains[window.location.hostname] && !Registry.getInstance().get('config').api.exists('settings/matomo-analytics')
- this.showEnter = !localStorage.getItem('hadUsageTypeAsked')
+ this.showEnter = matomoDomains[window.location.hostname] && !localStorage.getItem('hadUsageTypeAsked')
this.walkthroughService = new WalkthroughService(appManager, !this.showMatamo || !this.showEnter)
From 0b81e1202d69b354a5766b3d59b5a37cfa567e0b Mon Sep 17 00:00:00 2001
From: lianahus
Date: Thu, 30 Nov 2023 17:09:16 +0100
Subject: [PATCH 08/10] removing check for warkthrough
---
apps/remix-ide-e2e/src/helpers/init.ts | 4 +---
.../src/tests/migrateFileSystem.test.ts | 18 +++++++-----------
.../lib/remix-app/components/modals/enter.tsx | 2 +-
.../app/src/lib/remix-app/remix-app.tsx | 3 +--
4 files changed, 10 insertions(+), 17 deletions(-)
diff --git a/apps/remix-ide-e2e/src/helpers/init.ts b/apps/remix-ide-e2e/src/helpers/init.ts
index f5c091b4d8..8e0a93b450 100644
--- a/apps/remix-ide-e2e/src/helpers/init.ts
+++ b/apps/remix-ide-e2e/src/helpers/init.ts
@@ -11,9 +11,7 @@ export default function (browser: NightwatchBrowser, callback: VoidFunction, url
browser
.url(url || 'http://127.0.0.1:8080')
//.switchBrowserTab(0)
- .waitForElementVisible('[id="remixTourSkipbtn"]')
- .click('[id="remixTourSkipbtn"]')
-
+
.perform((done) => {
if (!loadPlugin) return done()
browser
diff --git a/apps/remix-ide-e2e/src/tests/migrateFileSystem.test.ts b/apps/remix-ide-e2e/src/tests/migrateFileSystem.test.ts
index 35398ef75b..c6cd47f61d 100644
--- a/apps/remix-ide-e2e/src/tests/migrateFileSystem.test.ts
+++ b/apps/remix-ide-e2e/src/tests/migrateFileSystem.test.ts
@@ -11,8 +11,7 @@ module.exports = {
.maximizeWindow()
.waitForElementVisible('*[data-id="skipbackup-btn"]', 5000)
.click('*[data-id="skipbackup-btn"]')
- .waitForElementVisible('[id="remixTourSkipbtn"]')
- .click('[id="remixTourSkipbtn"]')
+ .waitForElementVisible('*[data-id="remixIdeSidePanel"]', 10000)
},
'Should load the testmigration url and refresh and still have test data #group7': function (browser: NightwatchBrowser) {
browser.url('http://127.0.0.1:8080?e2e_testmigration=true')
@@ -21,8 +20,8 @@ module.exports = {
.maximizeWindow()
.waitForElementVisible('*[data-id="skipbackup-btn"]', 5000)
.click('*[data-id="skipbackup-btn"]')
- .waitForElementVisible('[id="remixTourSkipbtn"]')
- .click('[id="remixTourSkipbtn"]').refreshPage()
+ .waitForElementVisible('*[data-id="remixIdeSidePanel"]', 10000)
+ .refreshPage()
},
'should have indexedDB storage in terminal #group1 #group7': function (browser: NightwatchBrowser) {
browser.assert.containsText('*[data-id="terminalJournal"]', 'indexedDB')
@@ -32,9 +31,7 @@ module.exports = {
.pause(6000)
.switchBrowserTab(0)
.maximizeWindow()
- .waitForElementVisible('[id="remixTourSkipbtn"]')
- .click('[id="remixTourSkipbtn"]')
- .waitForElementVisible('*[data-id="remixIdeSidePanel"]', 5000)
+ .waitForElementVisible('*[data-id="remixIdeSidePanel"]', 10000)
.waitForElementVisible('div[data-id="filePanelFileExplorerTree"]')
.openFile('README.txt')
.getEditorValue((content) => {
@@ -53,8 +50,7 @@ module.exports = {
.maximizeWindow()
.waitForElementVisible('*[data-id="skipbackup-btn"]', 5000)
.click('*[data-id="skipbackup-btn"]')
- .waitForElementVisible('[id="remixTourSkipbtn"]')
- .click('[id="remixTourSkipbtn"]')
+ .waitForElementVisible('*[data-id="remixIdeSidePanel"]', 10000)
},
'Should generate error in migration by deleting indexedDB and falling back to local storage with test #group5': function (browser: NightwatchBrowser) {
browser.url('http://127.0.0.1:8080?e2e_testmigration=true')
@@ -63,8 +59,7 @@ module.exports = {
.maximizeWindow().execute(('delete window.indexedDB'))
.waitForElementVisible('*[data-id="skipbackup-btn"]', 5000)
.click('*[data-id="skipbackup-btn"]')
- .waitForElementVisible('[id="remixTourSkipbtn"]')
- .click('[id="remixTourSkipbtn"]')
+ .waitForElementVisible('*[data-id="remixIdeSidePanel"]', 10000)
},
'should have localstorage storage in terminal #group2 #group3 #group5': function (browser: NightwatchBrowser) {
browser.assert.containsText('*[data-id="terminalJournal"]', 'localstorage')
@@ -74,6 +69,7 @@ module.exports = {
.waitForElementVisible('*[data-id="remixIdeSidePanel"]', 5000)
.waitForElementVisible('div[data-id="filePanelFileExplorerTree"]')
.openFile('TEST_README.txt')
+ .pause(6000)
.getEditorValue((content) => {
browser.assert.equal(content, 'TEST README')
})
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 b5199664f8..b13cd5adc2 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
@@ -40,7 +40,7 @@ const EnterDialog = (props: EnterDialogProps) => {
Welcome to Remix IDE
- To load the project with the most efficient setup we would like to know your experiance type.
+ To load the project with the most efficient setup we would like to know your experience 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 72e84bfe30..8aaac1c419 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
@@ -135,8 +135,7 @@ const RemixApp = (props: IRemixAppUi) => {
- {setShowEnterDialog(true)}}>
-
+ {setShowEnterDialog(true)}}>
handleUserChosenType(type)}>
From 259479622b4792760b4164d06e0df8263388d597 Mon Sep 17 00:00:00 2001
From: lianahus
Date: Thu, 30 Nov 2023 21:39:08 +0100
Subject: [PATCH 09/10] e2e
---
apps/remix-ide-e2e/src/tests/migrateFileSystem.test.ts | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/apps/remix-ide-e2e/src/tests/migrateFileSystem.test.ts b/apps/remix-ide-e2e/src/tests/migrateFileSystem.test.ts
index c6cd47f61d..7208a5affb 100644
--- a/apps/remix-ide-e2e/src/tests/migrateFileSystem.test.ts
+++ b/apps/remix-ide-e2e/src/tests/migrateFileSystem.test.ts
@@ -34,11 +34,13 @@ module.exports = {
.waitForElementVisible('*[data-id="remixIdeSidePanel"]', 10000)
.waitForElementVisible('div[data-id="filePanelFileExplorerTree"]')
.openFile('README.txt')
+ .waitForElementVisible('*[id="editorView"]', 10000)
.getEditorValue((content) => {
browser.assert.ok(content.includes('Output from script will appear in remix terminal.'))
})
.click('*[data-id="treeViewLitreeViewItemcontracts"]')
.openFile('contracts/1_Storage.sol')
+ .waitForElementVisible('*[id="editorView"]', 10000)
.getEditorValue((content) => {
browser.assert.ok(content.includes('function retrieve() public view returns (uint256){'))
})
@@ -69,7 +71,7 @@ module.exports = {
.waitForElementVisible('*[data-id="remixIdeSidePanel"]', 5000)
.waitForElementVisible('div[data-id="filePanelFileExplorerTree"]')
.openFile('TEST_README.txt')
- .pause(6000)
+ .waitForElementVisible('*[id="editorView"]', 10000)
.getEditorValue((content) => {
browser.assert.equal(content, 'TEST README')
})
@@ -92,6 +94,7 @@ module.exports = {
browser.waitForElementVisible('*[data-id="remixIdeSidePanel"]', 5000)
.click('*[data-id="treeViewLitreeViewItemtest_contracts/artifacts"]')
.openFile('test_contracts/artifacts/Storage_metadata.json')
+ .waitForElementVisible('*[id="editorView"]', 10000)
.getEditorValue((content) => {
const metadata = JSON.parse(content)
browser.assert.equal(metadata.test, 'data')
From c6f53870f116d6c3019adf6a9c158e0f9ca165ae Mon Sep 17 00:00:00 2001
From: yann300
Date: Fri, 1 Dec 2023 00:24:41 +0100
Subject: [PATCH 10/10] fix E2E
---
apps/remix-ide-e2e/src/tests/migrateFileSystem.test.ts | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/apps/remix-ide-e2e/src/tests/migrateFileSystem.test.ts b/apps/remix-ide-e2e/src/tests/migrateFileSystem.test.ts
index 7208a5affb..38a72d5bf2 100644
--- a/apps/remix-ide-e2e/src/tests/migrateFileSystem.test.ts
+++ b/apps/remix-ide-e2e/src/tests/migrateFileSystem.test.ts
@@ -11,6 +11,7 @@ module.exports = {
.maximizeWindow()
.waitForElementVisible('*[data-id="skipbackup-btn"]', 5000)
.click('*[data-id="skipbackup-btn"]')
+ .pause(5000)
.waitForElementVisible('*[data-id="remixIdeSidePanel"]', 10000)
},
'Should load the testmigration url and refresh and still have test data #group7': function (browser: NightwatchBrowser) {
@@ -20,6 +21,7 @@ module.exports = {
.maximizeWindow()
.waitForElementVisible('*[data-id="skipbackup-btn"]', 5000)
.click('*[data-id="skipbackup-btn"]')
+ .pause(5000)
.waitForElementVisible('*[data-id="remixIdeSidePanel"]', 10000)
.refreshPage()
},
@@ -31,6 +33,7 @@ module.exports = {
.pause(6000)
.switchBrowserTab(0)
.maximizeWindow()
+ .pause(5000)
.waitForElementVisible('*[data-id="remixIdeSidePanel"]', 10000)
.waitForElementVisible('div[data-id="filePanelFileExplorerTree"]')
.openFile('README.txt')
@@ -52,6 +55,7 @@ module.exports = {
.maximizeWindow()
.waitForElementVisible('*[data-id="skipbackup-btn"]', 5000)
.click('*[data-id="skipbackup-btn"]')
+ .pause(5000)
.waitForElementVisible('*[data-id="remixIdeSidePanel"]', 10000)
},
'Should generate error in migration by deleting indexedDB and falling back to local storage with test #group5': function (browser: NightwatchBrowser) {
@@ -61,6 +65,7 @@ module.exports = {
.maximizeWindow().execute(('delete window.indexedDB'))
.waitForElementVisible('*[data-id="skipbackup-btn"]', 5000)
.click('*[data-id="skipbackup-btn"]')
+ .pause(5000)
.waitForElementVisible('*[data-id="remixIdeSidePanel"]', 10000)
},
'should have localstorage storage in terminal #group2 #group3 #group5': function (browser: NightwatchBrowser) {