/ embark-ui / src / reducers / selectors.js
selectors.js
  1  import {last} from '../utils/utils';
  2  
  3  export function getCredentials(state) {
  4    return state.credentials;
  5  }
  6  
  7  export function getAuthenticationError(state) {
  8    return state.credentials.error;
  9  }
 10  
 11  export function getTheme(state) {
 12    return state.theme;
 13  }
 14  
 15  export function getAccounts(state) {
 16    return state.entities.accounts;
 17  }
 18  
 19  export function getAccount(state, address) {
 20    return state.entities.accounts.find((account) => account.address === address);
 21  }
 22  
 23  export function getTransactions(state) {
 24    return state.entities.transactions;
 25  }
 26  
 27  export function getTransaction(state, hash) {
 28    return state.entities.transactions.find((transaction) => transaction.hash === hash);
 29  }
 30  
 31  export function getTransactionsByAccount(state, address) {
 32    return state.entities.transactions.filter((transaction) => transaction.from === address);
 33  }
 34  
 35  export function getTransactionsByBlock(state, blockNumber) {
 36    return state.entities.transactions.filter((transaction) => transaction.hasOwnProperty('blockNumber') && transaction.blockNumber.toString() === blockNumber);
 37  }
 38  
 39  export function getBlocks(state) {
 40    return state.entities.blocks;
 41  }
 42  
 43  export function getLastBlock(state) {
 44    return state.entities.blocks[0];
 45  }
 46  
 47  export function getBlock(state, number) {
 48    return state.entities.blocks.find((block) => block.number.toString() === number);
 49  }
 50  
 51  export function getProcesses(state) {
 52    return state.entities.processes;
 53  }
 54  
 55  export function getServices(state) {
 56    return state.entities.services;
 57  }
 58  
 59  export function getProcessLogs(state) {
 60    return state.entities.processLogs;
 61  }
 62  
 63  export function getCommandSuggestions(state) {
 64    return state.entities.commandSuggestions;
 65  }
 66  
 67  export function getContractLogsByContract(state, contractName) {
 68    return state.entities.contractLogs.filter((contractLog => contractLog.name === contractName));
 69  }
 70  
 71  export function getContractEventsByContract(state, contractName) {
 72    return state.entities.contractEvents.filter((contractEvent => contractEvent.name === contractName));
 73  }
 74  
 75  export function getContracts(state) {
 76    return state.entities.contracts.filter(contract => !contract.isFiddle);
 77  }
 78  
 79  export function getFiddleContracts(state) {
 80    return state.entities.contracts.filter(contract => contract.isFiddle);
 81  }
 82  
 83  export function getContract(state, contractName) {
 84    return state.entities.contracts.find((contract => contract.className === contractName));
 85  }
 86  
 87  export function getContractsByPath(state, path) {
 88    return state.entities.contracts.filter((contract => contract.path === path));
 89  }
 90  
 91  export function getContractProfile(state, contractName) {
 92    return state.entities.contractProfiles.find((contractProfile => contractProfile.name === contractName));
 93  }
 94  
 95  export function getContractFunctions(state, contractName) {
 96    return state.entities.contractFunctions.filter((contractFunction => contractFunction.contractName === contractName));
 97  }
 98  
 99  export function getContractDeploys(state, contractName) {
100    return state.entities.contractDeploys.filter((contractDeploy => contractDeploy.contractName === contractName));
101  }
102  
103  export function getContractCompile(state, file) {
104    let contractCompile = state.entities.contractCompiles.reverse().find((contractCompile => contractCompile.name === file.name));
105    if (!contractCompile) return;
106    if (contractCompile.errors) {
107      contractCompile.warnings = contractCompile.errors.filter((error) => error.severity === 'warning');
108      contractCompile.errors = contractCompile.errors.filter((error) => error.severity === 'error');
109    }
110  
111    return contractCompile;
112  }
113  
114  export function getVersions(state) {
115    return state.entities.versions;
116  }
117  
118  export function getOracleGasStats(state) {
119    if (!state.entities.gasOracleStats.length) {
120      return {};
121    }
122    return state.entities.gasOracleStats[0];
123  }
124  
125  export function isWeb3Enabled(state) {
126    return Boolean(state.entities.versions.find((version) => version.name === 'web3'));
127  }
128  
129  export function isOldWeb3(state) {
130    const web3 = state.entities.versions.find((version) => version.name === 'web3');
131    return web3 && parseInt(web3[0], 10) === 0;
132  }
133  
134  export function getMessageChannels(state) {
135    return state.entities.messageChannels;
136  }
137  
138  export function getMessages(state) {
139    const messages = {};
140    state.entities.messages.forEach(message => {
141      if (!messages[message.channel]) {
142        messages[message.channel] = [];
143      }
144      messages[message.channel].push(message);
145    });
146    return messages;
147  }
148  
149  export function getFiddleDeploy(state) {
150    return {
151      data: last(state.entities.fiddleDeploys),
152      error: state.errorEntities.fiddleDeploys
153    };
154  }
155  
156  export function getEnsRecords(state) {
157    return state.entities.ensRecords;
158  }
159  
160  export function getEnsErrors(state) {
161    return state.errorEntities.ensRecords;
162  }
163  
164  export function isEnsEnabled(state) {
165    return Boolean(state.entities.plugins.find((plugin) => plugin.name === 'ens'));
166  }
167  
168  export function getFiles(state) {
169    return state.entities.files;
170  }
171  
172  export function getCurrentFile(state) {
173    return state.editorTabs.find(file => file.active) || {};
174  }
175  
176  export function getBaseEther(state) {
177    return state.baseEther;
178  }
179  
180  export function searchResult(state) {
181    return state.searchResult;
182  }
183  
184  export function getMessageSignaturePendingState(state) {
185    return state.messageSignature.pending;
186  }
187  
188  export function getMessageSignaturePayload(state) {
189    return state.messageSignature.payload ? JSON.stringify(state.messageSignature.payload, null, 2): null;
190  }
191  
192  export function getMessageSignatureError(state) {
193    return state.messageSignature.error;
194  }
195  
196  export function getVerificationPendingState(state) {
197    return state.messageVerification.pending;
198  }
199  
200  export function getVerifiedAddressPayload(state) {
201    return state.messageVerification.payload ? state.messageVerification.payload.verifiedAddress : null;
202  }
203  
204  export function getVerificationError(state) {
205    return state.messageVerification.error;
206  }
207  
208  export function getBreakpointsByFilename(state, filename) {
209    return state.breakpoints[filename] || [];
210  }
211  
212  export function getDeploymentPipeline(state) {
213    return state.deploymentPipeline;
214  }
215  
216  export function getWeb3(state) {
217    return state.web3.instance;
218  }
219  
220  export function getWeb3GasEstimates(state) {
221    return state.web3.gasEstimates;
222  }
223  
224  export function getWeb3Deployments(state) {
225    return state.web3.deployments;
226  }
227  
228  export function debuggerInfo(state) {
229    return state.debuggerInfo;
230  }
231  
232  export function getDebuggerLine(state) {
233    if (!state.debuggerInfo.sources) return 10;
234    return state.debuggerInfo.sources.lineColumnPos[0].start.line + 1;
235  }
236  
237  export function getEditorTabs(state) {
238    return state.editorTabs
239  }