diff --git a/libs/remix-ui/run-tab/src/lib/actions/events.ts b/libs/remix-ui/run-tab/src/lib/actions/events.ts
index e47724aef0..46af1dba0d 100644
--- a/libs/remix-ui/run-tab/src/lib/actions/events.ts
+++ b/libs/remix-ui/run-tab/src/lib/actions/events.ts
@@ -101,8 +101,13 @@ const broadcastCompilationResult = async (plugin: RunTab, dispatch: React.Dispat
const contracts = getCompiledContracts(compiler).map((contract) => {
return { name: languageVersion, alias: contract.name, file: contract.file, compiler }
})
- const index = contracts.findIndex(contract => contract.alias === plugin.REACT_API.contracts.currentContract)
- if ((index < 0) && (contracts.length > 0)) dispatch(setCurrentContract(contracts[0].alias))
+ if ((contracts.length > 0)) {
+ const contractsInCompiledFile = contracts.filter(obj => obj.file === file)
+ let currentContract
+ if (contractsInCompiledFile.length) currentContract = contractsInCompiledFile[0].alias
+ else currentContract = contracts[0].alias
+ dispatch(setCurrentContract(currentContract))
+ }
const isUpgradeable = await plugin.call('openzeppelin-proxy', 'isConcerned', data.sources && data.sources[file] ? data.sources[file].ast : {})
if (isUpgradeable) {
diff --git a/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx b/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx
index 21dde7afc9..7eb240c7a9 100644
--- a/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx
+++ b/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx
@@ -7,12 +7,18 @@ import { CopyToClipboard } from '@remix-ui/clipboard' // eslint-disable-line
import './css/style.css'
export const ContractSelection = (props: ContractSelectionProps) => {
- const { api, contractsDetails, contractList, modal } = props
+ const { api, compiledFileName, contractsDetails, contractList, modal } = props
const [selectedContract, setSelectedContract] = useState('')
const [storage, setStorage] = useState(null)
useEffect(() => {
- if (contractList.length) setSelectedContract(contractList[0].name)
+ if (contractList.length) {
+ const compiledPathArr = compiledFileName.split('/')
+ const compiledFile = compiledPathArr[compiledPathArr.length - 1]
+ const contractsInCompiledFile = contractList.filter(obj => obj.file === compiledFile)
+ if (contractsInCompiledFile.length) setSelectedContract(contractsInCompiledFile[0].name)
+ else setSelectedContract(contractList[0].name)
+ }
}, [contractList])
const resetStorage = () => {
diff --git a/libs/remix-ui/solidity-compiler/src/lib/solidity-compiler.tsx b/libs/remix-ui/solidity-compiler/src/lib/solidity-compiler.tsx
index 3a9ce290e8..0f52e2c16e 100644
--- a/libs/remix-ui/solidity-compiler/src/lib/solidity-compiler.tsx
+++ b/libs/remix-ui/solidity-compiler/src/lib/solidity-compiler.tsx
@@ -183,7 +183,7 @@ export const SolidityCompiler = (props: SolidityCompilerProps) => {
configFilePath={state.configFilePath}
setConfigFilePath={setConfigFilePath}
/>
- { contractsFile[currentFile] && contractsFile[currentFile].contractsDetails &&