add more type for safety

pull/4201/head
yann300 1 year ago committed by Aniket
parent 3d5aa369df
commit 677bbfb742
  1. 13
      apps/remix-ide/src/app/providers/abstract-provider.tsx
  2. 6
      apps/remix-ide/src/app/providers/injected-provider.tsx

@ -14,11 +14,15 @@ export type JsonDataResult = {
id: number id: number
jsonrpc: string // version jsonrpc: string // version
result?: any result?: any
error?: any error?: {
code: number,
message: string
data?: string
}
errorData?: any errorData?: any
} }
export type RejectRequest = (error: Error) => void export type RejectRequest = (error: JsonDataResult) => void
export type SuccessRequest = (data: JsonDataResult) => void export type SuccessRequest = (data: JsonDataResult) => void
export interface IProvider { export interface IProvider {
@ -98,7 +102,7 @@ export abstract class AbstractProvider extends Plugin implements IProvider {
sendAsync(data: JsonDataRequest): Promise<JsonDataResult> { sendAsync(data: JsonDataRequest): Promise<JsonDataResult> {
// eslint-disable-next-line no-async-promise-executor // eslint-disable-next-line no-async-promise-executor
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
if (!this.provider) return reject(new Error('provider node set')) if (!this.provider) return reject({jsonrpc: '2.0', id: data.id, error: { message: 'provider node set', code: -32603 } } as JsonDataResult)
this.sendAsyncInternal(data, resolve, reject) this.sendAsyncInternal(data, resolve, reject)
}) })
} }
@ -128,7 +132,8 @@ export abstract class AbstractProvider extends Plugin implements IProvider {
if (error && error.message && error.message.includes('net_version') && error.message.includes('SERVER_ERROR')) { if (error && error.message && error.message.includes('net_version') && error.message.includes('SERVER_ERROR')) {
this.switchAway(true) this.switchAway(true)
} }
reject(error) error.code = -32603
reject({jsonrpc: '2.0', error, id: data.id})
} }
} else { } else {
const result = data.method === 'net_listening' ? 'canceled' : [] const result = data.method === 'net_listening' ? 'canceled' : []

@ -80,7 +80,7 @@ export abstract class InjectedProvider extends Plugin implements IProvider {
this.call('notification', 'toast', 'No injected provider (e.g Metamask) has been found.') this.call('notification', 'toast', 'No injected provider (e.g Metamask) has been found.')
return resolve({ return resolve({
jsonrpc: '2.0', jsonrpc: '2.0',
error: 'no injected provider found', error: { message: 'no injected provider found', code: -32603 },
id: data.id id: data.id
}) })
} }
@ -89,7 +89,7 @@ export abstract class InjectedProvider extends Plugin implements IProvider {
if (web3Provider.request) resultData = await web3Provider.request({method: data.method, params: data.params}) if (web3Provider.request) resultData = await web3Provider.request({method: data.method, params: data.params})
else if (web3Provider.send) resultData = await web3Provider.send(data.method, data.params) else if (web3Provider.send) resultData = await web3Provider.send(data.method, data.params)
else { else {
resolve({jsonrpc: '2.0', error: 'provider not valid', id: data.id}) resolve({jsonrpc: '2.0', error: { message: 'provider not valid', code: -32603 }, id: data.id})
return return
} }
if (resultData) { if (resultData) {
@ -98,7 +98,7 @@ export abstract class InjectedProvider extends Plugin implements IProvider {
} }
resolve({jsonrpc: '2.0', result: resultData, id: data.id}) resolve({jsonrpc: '2.0', result: resultData, id: data.id})
} else { } else {
resolve({jsonrpc: '2.0', error: 'no return data provided', id: data.id}) resolve({jsonrpc: '2.0', result: null, id: data.id})
} }
} catch (error) { } catch (error) {
if (error.data && error.data.originalError && error.data.originalError.data) { if (error.data && error.data.originalError && error.data.originalError.data) {

Loading…
Cancel
Save