diff --git a/.all-contributorsrc b/.all-contributorsrc
new file mode 100644
index 000000000..8af9cfd9f
--- /dev/null
+++ b/.all-contributorsrc
@@ -0,0 +1,308 @@
+{
+ "projectName": "aragon",
+ "projectOwner": "aragon",
+ "repoType": "github",
+ "repoHost": "https://github.com",
+ "files": [
+ "README.md"
+ ],
+ "imageSize": 75,
+ "commit": true,
+ "contributors": [
+ {
+ "login": "bpierre",
+ "name": "Pierre Bertet",
+ "avatar_url": "https://avatars2.githubusercontent.com/u/36158?v=4",
+ "profile": "https://pierre.world/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "sohkai",
+ "name": "Brett Sun",
+ "avatar_url": "https://avatars2.githubusercontent.com/u/4166642?v=4",
+ "profile": "http://キタ.moe",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "AquiGorka",
+ "name": "Gorka Ludlow",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/3072458?v=4",
+ "profile": "http://AquiGorka.com",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "izqui",
+ "name": "Jorge Izquierdo",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/447328?v=4",
+ "profile": "http://izqui.me",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "luisivan",
+ "name": "Luis Iván Cuende",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/718208?v=4",
+ "profile": "http://aragon.org",
+ "contributions": [
+ "code",
+ "design",
+ "ideas"
+ ]
+ },
+ {
+ "login": "onbjerg",
+ "name": "Oliver",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/8862627?v=4",
+ "profile": "http://notbjerg.me",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "bingen",
+ "name": "ßingen",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/701095?v=4",
+ "profile": "https://github.com/bingen",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "2color",
+ "name": "Daniel Norman",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/1992255?v=4",
+ "profile": "http://2color.me",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "john-light",
+ "name": "John Light",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/9424721?v=4",
+ "profile": "https://www.lightco.in",
+ "contributions": [
+ "doc",
+ "bug"
+ ]
+ },
+ {
+ "login": "Smokyish",
+ "name": "Tatu",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/21331903?v=4",
+ "profile": "https://github.com/Smokyish",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "dizzypaty",
+ "name": "Patricia Davila",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/7205369?v=4",
+ "profile": "https://github.com/dizzypaty",
+ "contributions": [
+ "design",
+ "userTesting"
+ ]
+ },
+ {
+ "login": "jounih",
+ "name": "Jouni Helminen",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/10109867?v=4",
+ "profile": "https://github.com/jounih",
+ "contributions": [
+ "design",
+ "userTesting"
+ ]
+ },
+ {
+ "login": "lkngtn",
+ "name": "Luke Duncan",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/4986634?v=4",
+ "profile": "https://github.com/lkngtn",
+ "contributions": [
+ "ideas"
+ ]
+ },
+ {
+ "login": "0x6431346e",
+ "name": "Daniel Constantin",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/26041347?v=4",
+ "profile": "http://danielconstantin.net/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "ewingrj",
+ "name": "RJ Ewing",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/30963004?v=4",
+ "profile": "https://rjewing.com",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "drcmda",
+ "name": "Paul Henschel",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/2223602?v=4",
+ "profile": "https://twitter.com/0xca0a",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "rperez89",
+ "name": "Rodrigo Perez",
+ "avatar_url": "https://avatars2.githubusercontent.com/u/11763623?v=4",
+ "profile": "https://github.com/rperez89",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "gasolin",
+ "name": "gasolin",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/748808?v=4",
+ "profile": "http://www.gasolin.idv.tw",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "asoltys",
+ "name": "Adam Soltys",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/7641?v=4",
+ "profile": "http://adamsoltys.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "arku",
+ "name": "Arun Kumar",
+ "avatar_url": "https://avatars2.githubusercontent.com/u/7039523?v=4",
+ "profile": "https://github.com/arku",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "bvanderdrift",
+ "name": "Beer van der Drift",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/6398452?v=4",
+ "profile": "https://github.com/bvanderdrift",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "danielcaballero",
+ "name": "Daniel Caballero",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/1639333?v=4",
+ "profile": "https://github.com/danielcaballero",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "deamme",
+ "name": "Deam",
+ "avatar_url": "https://avatars2.githubusercontent.com/u/9392750?v=4",
+ "profile": "https://twitter.com/deamlabs",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "uniconstructor",
+ "name": "Ilia Smirnov",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/1384545?v=4",
+ "profile": "https://github.com/uniconstructor",
+ "contributions": [
+ "doc",
+ "tool"
+ ]
+ },
+ {
+ "login": "JulSar",
+ "name": "julsar",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/28685529?v=4",
+ "profile": "https://github.com/JulSar",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "PascalPrecht",
+ "name": "Pascal Precht",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/445106?v=4",
+ "profile": "https://pascalprecht.github.io",
+ "contributions": [
+ "tool"
+ ]
+ },
+ {
+ "login": "rudygodoy",
+ "name": "Rudy Godoy",
+ "avatar_url": "https://avatars2.githubusercontent.com/u/2400137?v=4",
+ "profile": "https://rudygodoy.com",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "stellarmagnet",
+ "name": "Yalda Mousavinia",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/2584493?v=4",
+ "profile": "http://spacedecentral.net",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "decodedbrain",
+ "name": "decodedbrain",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/18285094?v=4",
+ "profile": "https://github.com/decodedbrain",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "jvluso",
+ "name": "jvluso",
+ "avatar_url": "https://avatars2.githubusercontent.com/u/8061735?v=4",
+ "profile": "https://github.com/jvluso",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "MarkGeeRomano",
+ "name": "mark g romano",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/13630752?v=4",
+ "profile": "https://github.com/MarkGeeRomano",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "mul53",
+ "name": "mul53",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/19148531?v=4",
+ "profile": "https://github.com/mul53",
+ "contributions": [
+ "code"
+ ]
+ }
+ ],
+ "contributorsPerLine": 7
+}
diff --git a/.eslintrc b/.eslintrc
index 5120e5f09..84f4a7ce7 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -4,17 +4,28 @@
"es6": true
},
"extends": [
+ "plugin:import/recommended",
+ "plugin:promise/recommended",
"standard",
"standard-react",
- "plugin:prettier/recommended",
- "prettier/react"
+ "prettier/react",
+ "plugin:prettier/recommended"
],
"parser": "babel-eslint",
- "plugins": ["prettier", "react"],
+ "parserOptions": {
+ "ecmaFeatures": {
+ "experimentalObjectRestSpread": true,
+ "jsx": true
+ },
+ "sourceType": "module"
+ },
+ "plugins": ["prettier", "react", "import", "promise"],
"rules": {
+ "import/no-unresolved": ["error", { ignore: ["^react(-dom)?$", "^styled-components$"] }],
+ "promise/no-nesting": ["off"],
"valid-jsdoc": "error",
"react/prop-types": 'warn',
- "linebreak-style": ["error", "unix"]
+ "linebreak-style": ["error", "unix"],
},
"settings": {
"react": {
diff --git a/.github/main.workflow b/.github/main.workflow
new file mode 100644
index 000000000..39f96fc9d
--- /dev/null
+++ b/.github/main.workflow
@@ -0,0 +1,21 @@
+workflow "Lint and build" {
+ on = "push"
+ resolves = ["install", "lint", "build"]
+}
+
+action "install" {
+ uses = "actions/npm@master"
+ args = "install"
+}
+
+action "lint" {
+ needs = "install"
+ uses = "actions/npm@master"
+ args = "run lint"
+}
+
+action "build" {
+ needs = "install"
+ uses = "actions/npm@master"
+ args = "run build"
+}
\ No newline at end of file
diff --git a/.github/screenshot.png b/.github/screenshot.png
new file mode 100644
index 000000000..093f1c800
Binary files /dev/null and b/.github/screenshot.png differ
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 000000000..523ca5873
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,67 @@
+# Contributing to Aragon
+
+:tada: Thank you for being interested in contributing to Aragon! :tada:
+
+Feel welcome and read the following sections in order to know how to ask questions and how to work on something.
+
+There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests or writing code which can be incorporated into the project.
+
+All members of our community are expected to follow our [Code of Conduct](https://wiki.aragon.org/documentation/Code_of_Conduct/). Please make sure you are welcoming and friendly in all of our spaces.
+
+## Your first contribution
+
+Unsure where to begin contributing to Aragon?
+
+You can start with a [Good First Issue](https://github.com/aragon/aragon/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).
+
+> Good first issues are usually for small features, additional tests, spelling / grammar fixes, formatting changes, or other clean up.
+
+Start small, pick a subject you care about, are familiar with, or want to learn.
+
+If you're not already familiar with git or Github, here are a couple of friendly tutorials: [First Contributions](https://github.com/firstcontributions/first-contributions), [Open Source Guide](https://opensource.guide/), and [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github).
+
+## How to file an issue or report a bug
+
+If you see a problem, you can report it in our [issue tracker](https://github.com/aragon/aragon/issues).
+
+Please take a quick look to see if the issue doesn't already exist before filing yours.
+
+Do your best to include as many details as needed in order for someone else to fix the problem and resolve the issue.
+
+#### If you find a security vulnerability, do NOT open an issue. Email security@aragon.org instead.
+
+In order to determine whether you are dealing with a security issue, ask yourself these two questions:
+
+- Can I access or steal something that's not mine, or access something I shouldn't have access to?
+- Can I disable something for other people?
+
+If the answer to either of those two questions are "yes", then you're probably dealing with a security issue. Note that even if you answer "no" to both questions, you may still be dealing with a security issue, so if you're unsure, please send a email.
+
+#### If you're interested in the smart contracts underlying Aragon, a [bug bounty program](https://wiki.aragon.org/dev/bug_bounty/) with payouts up to $50,000 is available for rewarding contributors who find security vulnerabilities.
+
+## Fixing issues
+
+1. [Find an issue](https://github.com/aragon/aragon/issues) that you are interested in.
+ - You may want to ask on the issue or on Aragon Chat's [#dev channel](https://aragon.chat/channel/dev) if anyone has already started working on the issue.
+1. Fork and clone a local copy of the repository.
+1. Make the appropriate changes for the issue you are trying to address or the feature that you want to add.
+1. Push the changes to the remote repository.
+1. Submit a pull request in Github, explaining any changes and further questions you may have.
+1. Wait for the pull request to be reviewed.
+1. Make changes to the pull request if the maintainer recommends them.
+1. Celebrate your success after your pull request is merged!
+
+It's OK if your pull request is not perfect (no pull request is).
+The reviewer will be able to help you fix any problems and improve it!
+
+You can also edit a page directly through your browser by clicking the "EDIT" link in the top-right corner of any page and then clicking the pencil icon in the github copy of the page.
+
+## Styleguide and development processes
+
+We use [prettier](https://prettier.io/) and [eslint](https://eslint.org/) to automatically lint and format the project.
+
+We generally avoid adding external dependencies if they can be ported over easily, due to numerous NPM-related security issues in the past (e.g. [`event-stream`](https://blog.npmjs.org/post/180565383195/details-about-the-event-stream-incident)).
+
+## Community
+
+If you need help, please reach out to Aragon core contributors and community members in the Aragon Chat [#dev](https://aragon.chat/channel/dev) and [#dev-help](https://aragon.chat/channel/dev-help) channels. We'd love to hear from you and know what you're working on!
diff --git a/README.md b/README.md
index 4067fc200..fbb16c568 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,18 @@
# Aragon
[![Build Status](https://travis-ci.org/aragon/aragon.svg?branch=master)](https://travis-ci.org/aragon/aragon)
+[![All Contributors](https://img.shields.io/badge/all_contributors-32-orange.svg?style=flat-square)](#contributors)
-#### 📝 Please report support and feedback related issues at the [Aragon Chat #feedback](https://aragon.chat/channel/feedback) channel.
-#### 🔧 For technical stuff, use this project's [issues](http://github.com/aragon/aragon/issues) or join the technical conversation in our [#dev](https://aragon.chat/channel/dev) channel.
-#### 🦋 For an overview of what changed in every version check the [changelog](https://github.com/aragon/aragon/blob/master/changelog.md)
+#### 🌎🚀 Trusted by over [300 organizations](https://daolist.io/), securing more than $1MM in funds.
-## Contributing
-
-Please note that all of the code is still undocumented, and no contribution guidelines are in place.
+
-Contributions are welcome, just beware of the dragons. 🐲
+- 📚 Read the [User Guide](https://wiki.aragon.org/tutorials/Aragon_User_Guide/) first, if you have any questions as a user.
+- 💻 You may be interested in [Aragon Desktop](https://github.com/aragon/aragon-desktop/), the most decentralized Aragon experience to date.
+- 🏗 If you'd like to develop an Aragon app, please visit the [Aragon Developer Portal](https://hack.aragon.org).
+- 📝 Please report any issues and feedback in the [Aragon Chat #feedback](https://aragon.chat/channel/feedback) channel.
+- 🔧 For technical stuff, use this project's [issues](http://github.com/aragon/aragon/issues) or join the technical conversation in our [#dev](https://aragon.chat/channel/dev) channel.
+- 🚢 For an overview of what changed with each release, check the [releases](https://github.com/aragon/aragon/releases) and [changelog](https://github.com/aragon/aragon/blob/master/changelog.md).
## Quick start
@@ -19,10 +21,26 @@ Contributions are welcome, just beware of the dragons. 🐲
For connecting to other chains / deployments, a few useful npm scripts are provided:
- Mainnet: `npm run start:mainnet` will launch the app, configured to connect to our mainnet deployment
-- Local development: `npm run start:local` will launch the app, configured to connect to our [aragen](https://github.com/aragon/aragen) local development environment. It will also use the local IPFS daemon, if it detects one exists.
+- Local development: `npm run start:local` will launch the app, configured to connect to our [aragen](https://github.com/aragon/aragen) local development environment. It will also use the local IPFS daemon, if it detects one exists. If you're using the [aragonCLI](http://github.com/aragon/aragon-cli), you'll want to run this to connect to its local chain.
**Note**: Windows users may need to install the [windows-build-tools](https://www.npmjs.com/package/windows-build-tools) before installing this project's dependencies.
+## Contributing
+
+#### 👋 Get started contributing with a [good first issue](https://github.com/aragon/aragon/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).
+
+Don't be shy to contribute even the smallest tweak. 🐲 There are still some dragons to be aware of, but we'll be here to help you get started!
+
+For more details about contributing to Aragon, please check the [contributing guide](./CONTRIBUTING.md).
+
+#### Issues
+
+If you come across an issue with Aragon, do a search in the [Issues](https://github.com/aragon/aragon/issues?utf8=%E2%9C%93&q=is%3Aissue) tab of this repo and the [Aragon Apps Issues](https://github.com/aragon/aragon-apps/issues?utf8=%E2%9C%93&q=is%3Aissue) to make sure it hasn't been reported before. Follow these steps to help us prevent duplicate issues and unnecessary notifications going to the many people watching this repo:
+
+- If the issue you found has been reported and is still open, and the details match your issue, give a "thumbs up" to the relevant posts in the issue thread to signal that you have the same issue. No further action is required on your part.
+- If the issue you found has been reported and is still open, but the issue is missing some details, you can add a comment to the issue thread describing the additional details.
+- If the issue you found has been reported but has been closed, you can comment on the closed issue thread and ask to have the issue reopened because you are still experiencing the issue. Alternatively, you can open a new issue, reference the closed issue by number or link, and state that you are still experiencing the issue. Provide any additional details in your post so we can better understand the issue and how to fix it.
+
## Environment options
The app can be configured in a number of ways via environment variables:
@@ -36,10 +54,14 @@ The app can be configured in a number of ways via environment variables:
Without any settings, the app is configured to connect to our Rinkeby deployment fetching assets from IPFS.
-## Issues
+## Contributors
-If you come across an issue with Aragon, do a search in the [Issues](https://github.com/aragon/aragon/issues?utf8=%E2%9C%93&q=is%3Aissue) tab of this repo and the [Aragon Apps Issues](https://github.com/aragon/aragon-apps/issues?utf8=%E2%9C%93&q=is%3Aissue) to make sure it hasn't been reported before. Follow these steps to help us prevent duplicate issues and unnecessary notifications going to the many people watching this repo:
+Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
-- If the issue you found has been reported and is still open, and the details match your issue, give a "thumbs up" to the relevant posts in the issue thread to signal that you have the same issue. No further action is required on your part.
-- If the issue you found has been reported and is still open, but the issue is missing some details, you can add a comment to the issue thread describing the additional details.
-- If the issue you found has been reported but has been closed, you can comment on the closed issue thread and ask to have the issue reopened because you are still experiencing the issue. Alternatively, you can open a new issue, reference the closed issue by number or link, and state that you are still experiencing the issue. Provide any additional details in your post so we can better understand the issue and how to fix it.
+
+
+
@@ -66,7 +65,7 @@ class Apps extends React.Component {
{knownApps.map((app, i) => (
+
-
+
+
+ )}
+
-
+
+
+ )}
+
-
+
)}
)
@@ -88,13 +90,13 @@ class Row extends React.Component {
const { action, app, proxyAddress } = this.props
return (
+
)}
-
-
+
+
+ )}
+
-
+
{item.content}
: item.content switch (item.type) { diff --git a/src/components/Notifications/NotificationHub.js b/src/components/Notifications/NotificationHub.js index b0fec45bf..ebe62fc46 100644 --- a/src/components/Notifications/NotificationHub.js +++ b/src/components/Notifications/NotificationHub.js @@ -1,4 +1,5 @@ import React from 'react' +import PropTypes from 'prop-types' import { Spring, Transition, animated } from 'react-spring' import styled from 'styled-components' import { theme, IconClose } from '@aragon/ui' @@ -7,6 +8,12 @@ import TimeTag from './TimeTag' const spring = { tension: 1900, friction: 200, precision: 0.0001, clamp: true } class NotificationHub extends React.Component { + static propTypes = { + items: PropTypes.arrayOf(PropTypes.object).isRequired, + keys: PropTypes.func.isRequired, + children: PropTypes.func.isRequired, + } + state = { ready: {} } render() { const { items, keys, children, onNotificationClosed } = this.props @@ -46,6 +53,11 @@ class NotificationHub extends React.Component { } class Notification extends React.Component { + static propTypes = { + title: PropTypes.string, + children: PropTypes.node, + time: PropTypes.string, + } render() { const { children, title } = this.props return ( @@ -63,6 +75,10 @@ class Notification extends React.Component { } Notification.Transaction = class extends React.Component { + static propTypes = { + children: PropTypes.node, + ready: PropTypes.bool, + } state = { showPayload: true } isDone = props => props.p === 1 && this.setState({ showPayload: false }) render() { diff --git a/src/components/Preferences/EmptyLocalIdentities.js b/src/components/Preferences/EmptyLocalIdentities.js new file mode 100644 index 000000000..2609294c7 --- /dev/null +++ b/src/components/Preferences/EmptyLocalIdentities.js @@ -0,0 +1,72 @@ +import React from 'react' +import PropTypes from 'prop-types' +import styled from 'styled-components' +import { EthIdenticon, IdentityBadge, breakpoint } from '@aragon/ui' +import { getEmptyAddress } from '../../web3-utils' +import Import from './Import' + +const EmptyLocalIdentities = ({ onImport }) => ( +
-
+
-
+