Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 11f66de6e6 | |||
| 9bf2ae2d7f | |||
| 2a384f3eed | |||
| 6b3666def9 | |||
| 74c8e32cc6 | |||
| 5dde978499 | |||
| 0625ee9d79 | |||
| dc5dfe19f2 | |||
| c518b7f565 | |||
| d13242b210 | |||
| ada029586a | |||
| 7bf5fa444a | |||
| d08d5f9e8d | |||
| a2bd3f76b8 | |||
| a4ca37d882 | |||
| 143317d909 | |||
| d8bcc8ff67 | |||
| e4a39ec67c | |||
| 5b47ba9e11 | |||
| d8f565cd9e | |||
| a9480a09f1 | |||
| 60ba019139 | |||
| 413bcddb1e | |||
| c2273d1778 | |||
| 780afc9bc6 | |||
| a8ae2b0156 | |||
| d6d2b1a61c | |||
| 4c70c0d233 | |||
| 725d36bed6 | |||
| 0a71d7ad91 | |||
| 6a176b5904 | |||
| c7d046aa46 |
@@ -71,10 +71,10 @@ These are the basic steps to get up and running:
|
|||||||
|
|
||||||
#### 1. IPFS
|
#### 1. IPFS
|
||||||
|
|
||||||
Run a local IPFS deamon in offline mode.
|
Run a local IPFS deamon.
|
||||||
|
|
||||||
* Make sure CORS headers are configured. See [IPFS](#ipfs) for more info.
|
* Make sure CORS headers are configured. See [IPFS](#ipfs) for more info.
|
||||||
* `ipfs daemon --offline`
|
* `ipfs daemon`
|
||||||
|
|
||||||
#### 2. kredits-contracts
|
#### 2. kredits-contracts
|
||||||
|
|
||||||
@@ -94,10 +94,15 @@ With IPFS and Ethereum/ganache running, you can now start this Ember app.
|
|||||||
* `npm link kredits-contracts` - link the local `kredits-contracts` package
|
* `npm link kredits-contracts` - link the local `kredits-contracts` package
|
||||||
* `npm run start:local` - WEB3_PROVIDER_URL=http://localhost:7545 must be set for local settings
|
* `npm run start:local` - WEB3_PROVIDER_URL=http://localhost:7545 must be set for local settings
|
||||||
|
|
||||||
If you restart the devchain your network ID changes. So kredits-contracts does not find the correct DAO Kernel address.
|
If you restart the devchain your network ID changes. So kredits-contracts does not find the correct DAO address.
|
||||||
If that is the case the DAO address must be provided as `KREDITS_KERNEL_ADDRESS` environment variable.
|
If that is the case the DAO address must be provided as `KREDITS_DAO_ADDRESS` environment variable.
|
||||||
|
|
||||||
* `KREDITS_KERNEL_ADDRESS=<0xYOURADDRESS> npm run start:local` - find your address with the `npm run dao:address` command in the kredits-contracts repo.
|
* `npm run dao:address` in the kredits-contracts repo to find your address
|
||||||
|
* `KREDITS_DAO_ADDRESS=<0xYOURADDRESS> npm run start:local`
|
||||||
|
|
||||||
|
#### 4. Metamask network
|
||||||
|
|
||||||
|
Switch the network in Metamask to "Custom RPC" with the RPC URL `http://localhost:7545`.
|
||||||
|
|
||||||
#### IPFS
|
#### IPFS
|
||||||
|
|
||||||
@@ -107,6 +112,7 @@ Install IPFS with your favorite package manager and run
|
|||||||
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["localhost:4200"]'
|
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["localhost:4200"]'
|
||||||
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'
|
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'
|
||||||
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'
|
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'
|
||||||
|
ipfs config Addresses.Gateway /ip4/127.0.0.1/tcp/8080
|
||||||
|
|
||||||
## Further Reading / Useful Links
|
## Further Reading / Useful Links
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import Component from '@ember/component';
|
import Component from '@ember/component';
|
||||||
import { computed } from '@ember/object';
|
import { computed } from '@ember/object';
|
||||||
import { and, notEmpty } from '@ember/object/computed';
|
import { and, notEmpty } from '@ember/object/computed';
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
export default Component.extend({
|
export default Component.extend({
|
||||||
|
|
||||||
@@ -21,13 +22,13 @@ export default Component.extend({
|
|||||||
|
|
||||||
init () {
|
init () {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
this.set('defaultDate', new Date());
|
this.set('defaultDate', moment().startOf('hour').toDate());
|
||||||
|
|
||||||
// Default attributes used by reset
|
// Default attributes used by reset
|
||||||
this.set('attributes', {
|
this.set('attributes', {
|
||||||
contributorId: null,
|
contributorId: null,
|
||||||
kind: null,
|
kind: null,
|
||||||
date: [new Date()],
|
date: this.defaultDate,
|
||||||
amount: null,
|
amount: null,
|
||||||
description: null,
|
description: null,
|
||||||
url: null,
|
url: null,
|
||||||
@@ -49,8 +50,12 @@ export default Component.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
const attributes = this.getProperties(Object.keys(this.attributes));
|
const attributes = this.getProperties(Object.keys(this.attributes));
|
||||||
const [ date/* , time */ ] = attributes.date[0].toISOString().split('T');
|
|
||||||
attributes.date = date;
|
let dateInput = (attributes.date instanceof Array) ?
|
||||||
|
attributes.date[0] : attributes.date;
|
||||||
|
|
||||||
|
const [ date, time ] = dateInput.toISOString().split('T');
|
||||||
|
[ attributes.date, attributes.time ] = [ date, time ];
|
||||||
|
|
||||||
this.set('inProgress', true);
|
this.set('inProgress', true);
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,20 @@
|
|||||||
<form {{action "submit" on="submit"}}>
|
<form {{action "submit" on="submit"}}>
|
||||||
|
<label>
|
||||||
|
<p class="label">Contributor:</p>
|
||||||
<p>
|
<p>
|
||||||
<select required onchange={{action (mut contributorId) value="target.value"}}>
|
<select required onchange={{action (mut contributorId) value="target.value"}}>
|
||||||
<option value="" selected disabled hidden>Contributor</option>
|
<option value="" selected disabled hidden></option>
|
||||||
{{#each contributors as |contributor|}}
|
{{#each contributors as |contributor|}}
|
||||||
<option value={{contributor.id}} selected={{eq contributorId contributor.id}}>{{contributor.name}}</option>
|
<option value={{contributor.id}} selected={{eq contributorId contributor.id}}>{{contributor.name}}</option>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</select>
|
</select>
|
||||||
</p>
|
</p>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<p class="label">Kind:</p>
|
||||||
<p>
|
<p>
|
||||||
<select required onchange={{action (mut kind) value="target.value"}}>
|
<select required onchange={{action (mut kind) value="target.value"}}>
|
||||||
<option value="" selected disabled hidden>Kind</option>
|
<option value="" selected disabled hidden></option>
|
||||||
<option value="community" selected={{eq kind "community"}}>Community</option>
|
<option value="community" selected={{eq kind "community"}}>Community</option>
|
||||||
<option value="design" selected={{eq kind "design"}}>Design</option>
|
<option value="design" selected={{eq kind "design"}}>Design</option>
|
||||||
<option value="dev" selected={{eq kind "dev"}}>Development</option>
|
<option value="dev" selected={{eq kind "dev"}}>Development</option>
|
||||||
@@ -18,37 +23,46 @@
|
|||||||
<option value="special" selected={{eq kind "special"}}>Special</option>
|
<option value="special" selected={{eq kind "special"}}>Special</option>
|
||||||
</select>
|
</select>
|
||||||
</p>
|
</p>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<p class="label">Date:</p>
|
||||||
<p>
|
<p>
|
||||||
{{ember-flatpickr
|
{{ember-flatpickr
|
||||||
allowInput=false
|
|
||||||
altFormat="F j, Y"
|
|
||||||
altInput=true
|
|
||||||
altInputClass="date-alt"
|
|
||||||
date=date
|
date=date
|
||||||
dateFormat="Y-m-d"
|
|
||||||
defaultDate=defaultDate
|
defaultDate=defaultDate
|
||||||
maxDate=defaultDate
|
maxDate=defaultDate
|
||||||
|
enableTime=true
|
||||||
|
time_24hr=true
|
||||||
onChange=(action (mut date))
|
onChange=(action (mut date))
|
||||||
}}
|
}}
|
||||||
</p>
|
</p>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<p class="label">Amount:</p>
|
||||||
<p>
|
<p>
|
||||||
{{input type="text"
|
{{input type="text"
|
||||||
placeholder="500"
|
placeholder="500"
|
||||||
value=amount
|
value=amount
|
||||||
class=(if isValidAmount "valid" "")}}
|
class=(if isValidAmount "valid" "")}}
|
||||||
</p>
|
</p>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<p class="label">Description:</p>
|
||||||
<p>
|
<p>
|
||||||
{{input type="text"
|
{{input type="text"
|
||||||
placeholder="Description"
|
|
||||||
value=description
|
value=description
|
||||||
class=(if isValidDescription "valid" "")}}
|
class=(if isValidDescription "valid" "")}}
|
||||||
</p>
|
</p>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<p class="label">URL (optional):</p>
|
||||||
<p>
|
<p>
|
||||||
{{input type="text"
|
{{input type="text"
|
||||||
placeholder="URL (optional)"
|
|
||||||
value=url
|
value=url
|
||||||
class=(if isValidUrl "valid" "")}}
|
class=(if isValidUrl "valid" "")}}
|
||||||
</p>
|
</p>
|
||||||
|
</label>
|
||||||
|
|
||||||
<p class="actions">
|
<p class="actions">
|
||||||
{{input type="submit"
|
{{input type="submit"
|
||||||
disabled=inProgress
|
disabled=inProgress
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
import Component from '@ember/component';
|
import Component from '@ember/component';
|
||||||
|
import { computed } from '@ember/object';
|
||||||
import { and, notEmpty } from '@ember/object/computed';
|
import { and, notEmpty } from '@ember/object/computed';
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
import { isPresent } from '@ember/utils';
|
import { isPresent } from '@ember/utils';
|
||||||
|
import { isAddress } from 'web3-utils';
|
||||||
|
|
||||||
export default Component.extend({
|
export default Component.extend({
|
||||||
|
|
||||||
@@ -9,14 +11,17 @@ export default Component.extend({
|
|||||||
|
|
||||||
attributes: null,
|
attributes: null,
|
||||||
|
|
||||||
// TODO: add proper address validation
|
isValidAccount: computed('account', function() {
|
||||||
isValidAccount: notEmpty('account'),
|
return isAddress(this.account);
|
||||||
|
}),
|
||||||
|
|
||||||
isValidName: notEmpty('name'),
|
isValidName: notEmpty('name'),
|
||||||
isValidURL: notEmpty('url'),
|
isValidURL: notEmpty('url'),
|
||||||
isValidGithubUID: notEmpty('github_uid'),
|
isValidGithubUID: notEmpty('github_uid'),
|
||||||
isValidGithubUsername: notEmpty('github_username'),
|
isValidGithubUsername: notEmpty('github_username'),
|
||||||
isValidGiteaUsername: notEmpty('gitea_username'),
|
isValidGiteaUsername: notEmpty('gitea_username'),
|
||||||
isValidWikiUsername: notEmpty('wiki_username'),
|
isValidWikiUsername: notEmpty('wiki_username'),
|
||||||
|
|
||||||
isValid: and(
|
isValid: and(
|
||||||
'isValidAccount',
|
'isValidAccount',
|
||||||
'isValidName',
|
'isValidName',
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
import Component from '@ember/component';
|
||||||
|
import { inject as service } from '@ember/service';
|
||||||
|
|
||||||
|
export default Component.extend({
|
||||||
|
|
||||||
|
tagName: '',
|
||||||
|
|
||||||
|
kredits: service(),
|
||||||
|
router: service(),
|
||||||
|
|
||||||
|
actions: {
|
||||||
|
|
||||||
|
signup() {
|
||||||
|
this.router.transitionTo('signup');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<section id="user-account">
|
||||||
|
{{#if (and kredits.hasAccounts kredits.currentUser)}}
|
||||||
|
{{kredits.currentUser.name}}
|
||||||
|
{{#if kredits.currentUserIsCore}}
|
||||||
|
<span class="core-flag">(core)</span>
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
Anonymous
|
||||||
|
<button {{action "signup"}} class="small green">Sign up</button>
|
||||||
|
{{/if}}
|
||||||
|
</section>
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
import Controller from '@ember/controller';
|
||||||
|
import { computed } from '@ember/object';
|
||||||
|
import { alias, not } from '@ember/object/computed';
|
||||||
|
import { isAddress } from 'web3-utils';
|
||||||
|
import { inject as service } from '@ember/service';
|
||||||
|
import config from 'kredits-web/config/environment';
|
||||||
|
|
||||||
|
export default Controller.extend({
|
||||||
|
|
||||||
|
kredits: service(),
|
||||||
|
|
||||||
|
ethAddress: null,
|
||||||
|
githubAccessToken: alias('kredits.githubAccessToken'),
|
||||||
|
|
||||||
|
isValidEthAccount: computed('ethAddress', function() {
|
||||||
|
return isAddress(this.ethAddress);
|
||||||
|
}),
|
||||||
|
|
||||||
|
signupButtonDisabled: not('isValidEthAccount'),
|
||||||
|
|
||||||
|
actions: {
|
||||||
|
|
||||||
|
completeSignup () {
|
||||||
|
const payload = {
|
||||||
|
accessToken: this.githubAccessToken,
|
||||||
|
account: this.ethAddress
|
||||||
|
}
|
||||||
|
|
||||||
|
fetch(config.githubSignupUrl, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify(payload)
|
||||||
|
})
|
||||||
|
.then(res => res.json())
|
||||||
|
.then(data => {
|
||||||
|
console.log('Created contributor:', data);
|
||||||
|
|
||||||
|
this.setProperties({
|
||||||
|
githubAccessToken: null,
|
||||||
|
ethAddress: null
|
||||||
|
});
|
||||||
|
|
||||||
|
this.transitionToRoute('signup.complete');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
import Controller from '@ember/controller';
|
||||||
|
import config from 'kredits-web/config/environment';
|
||||||
|
|
||||||
|
export default Controller.extend({
|
||||||
|
|
||||||
|
actions: {
|
||||||
|
|
||||||
|
connectGithub () {
|
||||||
|
window.location = config.githubConnectUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
@@ -26,6 +26,11 @@ Router.map(function() {
|
|||||||
this.route('new');
|
this.route('new');
|
||||||
this.route('edit', { path: ':id/edit' });
|
this.route('edit', { path: ':id/edit' });
|
||||||
});
|
});
|
||||||
|
this.route('signup', function() {
|
||||||
|
this.route('github');
|
||||||
|
this.route('eth-account');
|
||||||
|
this.route('complete');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
export default Router;
|
export default Router;
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
import Route from '@ember/routing/route';
|
||||||
|
|
||||||
|
export default Route.extend({
|
||||||
|
});
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
import Route from '@ember/routing/route';
|
||||||
|
|
||||||
|
export default Route.extend({
|
||||||
|
});
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
import Route from '@ember/routing/route';
|
||||||
|
import { inject as service } from '@ember/service';
|
||||||
|
import { isEmpty } from '@ember/utils';
|
||||||
|
|
||||||
|
export default Route.extend({
|
||||||
|
|
||||||
|
kredits: service(),
|
||||||
|
|
||||||
|
redirect () {
|
||||||
|
this._super(...arguments);
|
||||||
|
|
||||||
|
if (isEmpty(this.kredits.githubAccessToken)) {
|
||||||
|
this.transitionTo('signup.index');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
import Route from '@ember/routing/route';
|
||||||
|
import { inject as service } from '@ember/service';
|
||||||
|
import { isEmpty } from '@ember/utils';
|
||||||
|
|
||||||
|
export default Route.extend({
|
||||||
|
|
||||||
|
kredits: service(),
|
||||||
|
|
||||||
|
redirect () {
|
||||||
|
this._super(...arguments);
|
||||||
|
|
||||||
|
let accessToken;
|
||||||
|
try {
|
||||||
|
accessToken = window.location.hash.match(/access_token=(.+)/)[1];
|
||||||
|
} catch (error) { /* ignore */ }
|
||||||
|
|
||||||
|
if (isEmpty(accessToken) || accessToken === 'undefined') {
|
||||||
|
console.error('No GitHub access token found.');
|
||||||
|
this.transitionTo('signup');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.kredits.set('githubAccessToken', accessToken);
|
||||||
|
|
||||||
|
this.transitionTo('signup.eth-account');
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
@@ -24,6 +24,7 @@ export default Service.extend({
|
|||||||
contributors: null,
|
contributors: null,
|
||||||
contributions: null,
|
contributions: null,
|
||||||
proposals: null,
|
proposals: null,
|
||||||
|
githubAccessToken: null,
|
||||||
|
|
||||||
currentUserIsContributor: notEmpty('currentUser'),
|
currentUserIsContributor: notEmpty('currentUser'),
|
||||||
currentUserIsCore: alias('currentUser.isCore'),
|
currentUserIsCore: alias('currentUser.isCore'),
|
||||||
|
|||||||
@@ -23,8 +23,12 @@ button, input[type=submit], .button {
|
|||||||
border-color: $primary-color;
|
border-color: $primary-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&[disabled] {
|
||||||
|
color: rgba(255,255,255,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
&.small {
|
&.small {
|
||||||
font-size: 0.8rem;
|
font-size: 0.86rem;
|
||||||
padding: 0.2rem 0.8rem;
|
padding: 0.2rem 0.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,4 +57,17 @@ button, input[type=submit], .button {
|
|||||||
border-color: $green;
|
border-color: $green;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.icon {
|
||||||
|
svg {
|
||||||
|
width: 2rem;
|
||||||
|
height: 2rem;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-right: 1rem;
|
||||||
|
|
||||||
|
.fg {
|
||||||
|
fill: $primary-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-1
@@ -1,12 +1,21 @@
|
|||||||
section#add-contributor,
|
section#add-contributor,
|
||||||
section#add-contribution,
|
section#add-contribution,
|
||||||
section#add-proposal {
|
section#add-proposal,
|
||||||
|
section#signup {
|
||||||
|
|
||||||
form {
|
form {
|
||||||
|
|
||||||
p {
|
p {
|
||||||
margin-bottom: 1.5rem;
|
margin-bottom: 1.5rem;
|
||||||
|
|
||||||
|
&.mg-bottom-md {
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.label {
|
||||||
|
margin-bottom: .5rem;
|
||||||
|
}
|
||||||
|
|
||||||
&.actions {
|
&.actions {
|
||||||
padding-top: 1.5rem;
|
padding-top: 1.5rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|||||||
@@ -28,6 +28,37 @@ main {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
section {
|
||||||
|
.content {
|
||||||
|
a {
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.text-lg {
|
||||||
|
p {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
line-height: 1.5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.text-center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
&.mg-bottom-md {
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.actions {
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 550px) {
|
@media (min-width: 550px) {
|
||||||
|
|||||||
+11
-3
@@ -2,7 +2,6 @@
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
font-size: 14px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*:hover, *:active, *:focus {
|
*:hover, *:active, *:focus {
|
||||||
@@ -17,13 +16,17 @@
|
|||||||
|
|
||||||
$font-family-sans: 'Open Sans', sans-serif;
|
$font-family-sans: 'Open Sans', sans-serif;
|
||||||
|
|
||||||
body {
|
html, body {
|
||||||
font-family: $font-family-sans;
|
font-family: $font-family-sans;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
|
font-size: 12px;
|
||||||
|
color: $body-text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
background-image: linear-gradient(to bottom, rgba(22, 21, 40, .4), rgba(0, 0, 0, .75)), url('/img/bg.jpg');
|
background-image: linear-gradient(to bottom, rgba(22, 21, 40, .4), rgba(0, 0, 0, .75)), url('/img/bg.jpg');
|
||||||
background-repeat: none;
|
background-repeat: none;
|
||||||
background-attachment: fixed;
|
background-attachment: fixed;
|
||||||
color: $body-text-color;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (min-width: 900px) {
|
@media screen and (min-width: 900px) {
|
||||||
@@ -38,6 +41,10 @@ h1, h2, h3, h4, h5, input, button {
|
|||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: $primary-color;
|
||||||
|
}
|
||||||
|
|
||||||
section {
|
section {
|
||||||
h2 {
|
h2 {
|
||||||
font-size: 1.4rem;
|
font-size: 1.4rem;
|
||||||
@@ -106,4 +113,5 @@ section {
|
|||||||
@import "components/loading-spinner";
|
@import "components/loading-spinner";
|
||||||
@import "components/proposal-list";
|
@import "components/proposal-list";
|
||||||
@import "components/topbar";
|
@import "components/topbar";
|
||||||
|
@import "components/topbar-account-panel";
|
||||||
@import "components/user-avatar";
|
@import "components/user-avatar";
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ section#contribution-details {
|
|||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
font-size: inherit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&.who-what-when {
|
&.who-what-when {
|
||||||
@@ -45,9 +44,8 @@ section#contribution-details {
|
|||||||
a {
|
a {
|
||||||
color: $primary-color;
|
color: $primary-color;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-size: inherit;
|
|
||||||
|
|
||||||
&:hover {
|
&:not(.button):hover {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,13 +11,10 @@ main section {
|
|||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
|
|
||||||
p {
|
p {
|
||||||
font-size: inherit;
|
|
||||||
padding: 0.2rem 0 0;
|
padding: 0.2rem 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
label {
|
label {
|
||||||
font-size: inherit;
|
|
||||||
|
|
||||||
&+ label {
|
&+ label {
|
||||||
margin-left: 3.6rem;
|
margin-left: 3.6rem;
|
||||||
}
|
}
|
||||||
@@ -60,7 +57,6 @@ ul.contribution-list {
|
|||||||
p {
|
p {
|
||||||
align-self: center;
|
align-self: center;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-size: inherit;
|
|
||||||
line-height: 2rem;
|
line-height: 2rem;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
@@ -72,11 +68,8 @@ ul.contribution-list {
|
|||||||
}
|
}
|
||||||
|
|
||||||
span {
|
span {
|
||||||
font-size: inherit;
|
|
||||||
|
|
||||||
&.title {
|
&.title {
|
||||||
a {
|
a {
|
||||||
font-size: inherit;
|
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: $body-text-color;
|
color: $body-text-color;
|
||||||
}
|
}
|
||||||
@@ -151,9 +144,7 @@ ul.contribution-list {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.description {
|
.description {
|
||||||
font-size: inherit;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ ul.proposal-list {
|
|||||||
p {
|
p {
|
||||||
align-self: center;
|
align-self: center;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-size: inherit;
|
|
||||||
line-height: 2rem;
|
line-height: 2rem;
|
||||||
|
|
||||||
&.kredits-amount, &.voting {
|
&.kredits-amount, &.voting {
|
||||||
@@ -36,7 +35,6 @@ ul.proposal-list {
|
|||||||
}
|
}
|
||||||
|
|
||||||
span {
|
span {
|
||||||
font-size: inherit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.description {
|
.description {
|
||||||
@@ -107,7 +105,6 @@ ul.proposal-list {
|
|||||||
|
|
||||||
|
|
||||||
.description {
|
.description {
|
||||||
font-size: inherit;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
header#topbar section#user-account {
|
||||||
|
|
||||||
|
button {
|
||||||
|
margin-left: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,16 +1,6 @@
|
|||||||
<header id="topbar">
|
<header id="topbar">
|
||||||
<h1>{{link-to "Kosmos Kredits" "dashboard"}}</h1>
|
<h1>{{link-to "Kosmos Kredits" "dashboard"}}</h1>
|
||||||
|
{{topbar-account-panel}}
|
||||||
<section id="user-account">
|
|
||||||
{{#if kredits.hasAccounts }}
|
|
||||||
{{#if kredits.currentUser}}
|
|
||||||
{{kredits.currentUser.name}}
|
|
||||||
{{#if kredits.currentUserIsCore}}(core){{/if}}
|
|
||||||
{{/if}}
|
|
||||||
{{else}}
|
|
||||||
Anonymous
|
|
||||||
{{/if}}
|
|
||||||
</section>
|
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
{{outlet}}
|
{{outlet}}
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<main class="center-column">
|
||||||
|
<section id="signup">
|
||||||
|
{{outlet}}
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<header>
|
||||||
|
<h2>Welcome aboard!</h2>
|
||||||
|
</header>
|
||||||
|
<div class="content text-lg text-center">
|
||||||
|
<p>
|
||||||
|
Congratulations. Your initial profile is now complete.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Why not say hi to your fellow contributors
|
||||||
|
<a href="https://wiki.kosmos.org/Main_Page#Community_.2F_Getting_in_touch_.2F_Getting_involved">in one of our chat rooms</a>?.
|
||||||
|
</p>
|
||||||
|
<p class="actions">
|
||||||
|
{{#link-to "dashboard" class="button small"}}Return to dashboard{{/link-to}}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<header>
|
||||||
|
<h2>Complete your contributor profile</h2>
|
||||||
|
</header>
|
||||||
|
<div class="content text-lg">
|
||||||
|
<p class="mg-bottom-md">
|
||||||
|
Kredits allow you to take part in project governance, and to earn rewards for
|
||||||
|
your contributions. For both, you will need an Ethereum wallet/account.
|
||||||
|
</p>
|
||||||
|
<form {{action "submit" on="submit"}}>
|
||||||
|
<p>
|
||||||
|
<label>
|
||||||
|
Ethereum account:<br>
|
||||||
|
{{input type="text" value=ethAddress
|
||||||
|
placeholder="0xF18E631Ea191aE4ebE70046Fcb01a436554421BA4"
|
||||||
|
class=(if isValidEthAccount "valid" "")}}
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
<p class="actions">
|
||||||
|
<button disabled={{signupButtonDisabled}}
|
||||||
|
{{action "completeSignup"}}>
|
||||||
|
Complete my profile
|
||||||
|
</button>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<header>
|
||||||
|
<h2>Create your contributor profile</h2>
|
||||||
|
</header>
|
||||||
|
<div class="content text-lg">
|
||||||
|
<p>
|
||||||
|
You have already contributed to a Kosmos project, or you are interested
|
||||||
|
in contributing in the near future? Fantastic!
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
In order to earn kredits for your contributions, you will need a
|
||||||
|
registered contributor profile. The quickest way to register is by
|
||||||
|
connecting one of the following accounts:
|
||||||
|
</p>
|
||||||
|
<p class="actions">
|
||||||
|
<button {{action "connectGithub"}} class="icon">
|
||||||
|
{{icon-account-github-com}}
|
||||||
|
Connect GitHub
|
||||||
|
</button>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
@@ -37,6 +37,9 @@ module.exports = function(environment) {
|
|||||||
|
|
||||||
web3ProviderUrl: 'https://rinkeby.infura.io/v3/d4f788b7a6584f7db2fc3c268d4d09e9',
|
web3ProviderUrl: 'https://rinkeby.infura.io/v3/d4f788b7a6584f7db2fc3c268d4d09e9',
|
||||||
|
|
||||||
|
githubConnectUrl: 'https://hal8000.chat.kosmos.org/kredits/signup/connect/github',
|
||||||
|
githubSignupUrl: 'https://hal8000.chat.kosmos.org/kredits/signup/github',
|
||||||
|
|
||||||
ipfs: {
|
ipfs: {
|
||||||
host: 'ipfs.kosmos.org',
|
host: 'ipfs.kosmos.org',
|
||||||
port: '5444',
|
port: '5444',
|
||||||
@@ -53,6 +56,9 @@ module.exports = function(environment) {
|
|||||||
// ENV.APP.LOG_VIEW_LOOKUPS = true;
|
// ENV.APP.LOG_VIEW_LOOKUPS = true;
|
||||||
ENV.web3ProviderUrl = 'https://rinkeby.infura.io/v3/d4f788b7a6584f7db2fc3c268d4d09e9';
|
ENV.web3ProviderUrl = 'https://rinkeby.infura.io/v3/d4f788b7a6584f7db2fc3c268d4d09e9';
|
||||||
|
|
||||||
|
ENV.githubConnectUrl = 'http://localhost:8888/kredits/signup/connect/github';
|
||||||
|
ENV.githubSignupUrl = 'http://localhost:8888/kredits/signup/github';
|
||||||
|
|
||||||
ENV.ipfs = {
|
ENV.ipfs = {
|
||||||
host: 'localhost',
|
host: 'localhost',
|
||||||
port: '5001',
|
port: '5001',
|
||||||
@@ -81,8 +87,8 @@ module.exports = function(environment) {
|
|||||||
if (process.env.WEB3_PROVIDER_URL) {
|
if (process.env.WEB3_PROVIDER_URL) {
|
||||||
ENV.web3ProviderUrl = process.env.WEB3_PROVIDER_URL;
|
ENV.web3ProviderUrl = process.env.WEB3_PROVIDER_URL;
|
||||||
}
|
}
|
||||||
if (process.env.KREDITS_KERNEL_ADDRESS) {
|
if (process.env.KREDITS_DAO_ADDRESS) {
|
||||||
ENV.kreditsKernelAddress = process.env.KREDITS_KERNEL_ADDRESS;
|
ENV.kreditsKernelAddress = process.env.KREDITS_DAO_ADDRESS;
|
||||||
}
|
}
|
||||||
if (process.env.KREDITS_APM_DOMAIN) {
|
if (process.env.KREDITS_APM_DOMAIN) {
|
||||||
ENV.kreditsApmDomain = process.env.KREDITS_APM_DOMAIN;
|
ENV.kreditsApmDomain = process.env.KREDITS_APM_DOMAIN;
|
||||||
|
|||||||
Generated
+224
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "kredits-web",
|
"name": "kredits-web",
|
||||||
"version": "1.6.0",
|
"version": "1.9.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -4241,6 +4241,12 @@
|
|||||||
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
|
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"buffer-to-arraybuffer": {
|
||||||
|
"version": "0.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz",
|
||||||
|
"integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"buffer-xor": {
|
"buffer-xor": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
|
||||||
@@ -5636,6 +5642,12 @@
|
|||||||
"esutils": "^2.0.2"
|
"esutils": "^2.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"dom-walk": {
|
||||||
|
"version": "0.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz",
|
||||||
|
"integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"domain-browser": {
|
"domain-browser": {
|
||||||
"version": "1.1.7",
|
"version": "1.1.7",
|
||||||
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
|
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
|
||||||
@@ -8414,6 +8426,17 @@
|
|||||||
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
|
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"eth-lib": {
|
||||||
|
"version": "0.2.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz",
|
||||||
|
"integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"bn.js": "^4.11.6",
|
||||||
|
"elliptic": "^6.4.0",
|
||||||
|
"xhr-request-promise": "^0.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"ethers": {
|
"ethers": {
|
||||||
"version": "4.0.27",
|
"version": "4.0.27",
|
||||||
"resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.27.tgz",
|
"resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.27.tgz",
|
||||||
@@ -8468,6 +8491,24 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ethjs-unit": {
|
||||||
|
"version": "0.1.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz",
|
||||||
|
"integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"bn.js": "4.11.6",
|
||||||
|
"number-to-bn": "1.7.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"bn.js": {
|
||||||
|
"version": "4.11.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz",
|
||||||
|
"integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"event-emitter": {
|
"event-emitter": {
|
||||||
"version": "0.3.5",
|
"version": "0.3.5",
|
||||||
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
|
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
|
||||||
@@ -9245,6 +9286,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"for-each": {
|
||||||
|
"version": "0.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
|
||||||
|
"integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"is-callable": "^1.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"for-in": {
|
"for-in": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
|
||||||
@@ -10073,6 +10123,24 @@
|
|||||||
"integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
|
"integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"global": {
|
||||||
|
"version": "4.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz",
|
||||||
|
"integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"min-document": "^2.19.0",
|
||||||
|
"process": "~0.5.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"process": {
|
||||||
|
"version": "0.5.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz",
|
||||||
|
"integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"global-modules": {
|
"global-modules": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
|
||||||
@@ -11111,6 +11179,12 @@
|
|||||||
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
|
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"is-function": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"is-git-url": {
|
"is-git-url": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-git-url/-/is-git-url-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-git-url/-/is-git-url-1.0.0.tgz",
|
||||||
@@ -11126,6 +11200,12 @@
|
|||||||
"is-extglob": "^2.1.0"
|
"is-extglob": "^2.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"is-hex-prefixed": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"is-ip": {
|
"is-ip": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-ip/-/is-ip-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-ip/-/is-ip-2.0.0.tgz",
|
||||||
@@ -12765,6 +12845,15 @@
|
|||||||
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
|
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"min-document": {
|
||||||
|
"version": "2.19.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
|
||||||
|
"integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"dom-walk": "^0.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"minimalistic-assert": {
|
"minimalistic-assert": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
|
||||||
@@ -13433,6 +13522,24 @@
|
|||||||
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
|
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"number-to-bn": {
|
||||||
|
"version": "1.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz",
|
||||||
|
"integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"bn.js": "4.11.6",
|
||||||
|
"strip-hex-prefix": "1.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"bn.js": {
|
||||||
|
"version": "4.11.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz",
|
||||||
|
"integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"nwsapi": {
|
"nwsapi": {
|
||||||
"version": "2.1.4",
|
"version": "2.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz",
|
||||||
@@ -13781,6 +13888,16 @@
|
|||||||
"safe-buffer": "^5.1.1"
|
"safe-buffer": "^5.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"parse-headers": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"for-each": "^0.3.3",
|
||||||
|
"string.prototype.trim": "^1.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"parse-json": {
|
"parse-json": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
|
||||||
@@ -14500,6 +14617,12 @@
|
|||||||
"safe-buffer": "^5.1.0"
|
"safe-buffer": "^5.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"randomhex": {
|
||||||
|
"version": "0.1.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/randomhex/-/randomhex-0.1.5.tgz",
|
||||||
|
"integrity": "sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"range-parser": {
|
"range-parser": {
|
||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
||||||
@@ -15430,6 +15553,23 @@
|
|||||||
"debug": "^2.2.0"
|
"debug": "^2.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"simple-concat": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"simple-get": {
|
||||||
|
"version": "2.8.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz",
|
||||||
|
"integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"decompress-response": "^3.3.0",
|
||||||
|
"once": "^1.3.1",
|
||||||
|
"simple-concat": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"simple-html-tokenizer": {
|
"simple-html-tokenizer": {
|
||||||
"version": "0.5.7",
|
"version": "0.5.7",
|
||||||
"resolved": "https://registry.npmjs.org/simple-html-tokenizer/-/simple-html-tokenizer-0.5.7.tgz",
|
"resolved": "https://registry.npmjs.org/simple-html-tokenizer/-/simple-html-tokenizer-0.5.7.tgz",
|
||||||
@@ -16118,6 +16258,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"string.prototype.trim": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz",
|
||||||
|
"integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"define-properties": "^1.1.2",
|
||||||
|
"es-abstract": "^1.5.0",
|
||||||
|
"function-bind": "^1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"string_decoder": {
|
"string_decoder": {
|
||||||
"version": "0.10.31",
|
"version": "0.10.31",
|
||||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||||
@@ -16148,6 +16299,15 @@
|
|||||||
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
|
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"strip-hex-prefix": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"is-hex-prefixed": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"strip-indent": {
|
"strip-indent": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
|
||||||
@@ -17039,6 +17199,12 @@
|
|||||||
"prepend-http": "^2.0.0"
|
"prepend-http": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"url-set-query": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"url-to-options": {
|
"url-to-options": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz",
|
||||||
@@ -17067,6 +17233,12 @@
|
|||||||
"integrity": "sha512-ayNkOJdoNSGNDBE46Nkc+l6IXmeugbzahZLSMkwvgRWv5y5ZqNY2IrzcgmkR4z32sj1W3tM3TuTUMqkqBzO+RA==",
|
"integrity": "sha512-ayNkOJdoNSGNDBE46Nkc+l6IXmeugbzahZLSMkwvgRWv5y5ZqNY2IrzcgmkR4z32sj1W3tM3TuTUMqkqBzO+RA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"utf8": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"util-deprecate": {
|
"util-deprecate": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
@@ -17212,6 +17384,21 @@
|
|||||||
"defaults": "^1.0.3"
|
"defaults": "^1.0.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"web3-utils": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-zm0gdLXLk54ldwxxBMNPS62EuqHI2PaJohEGijTowacNS0BS2vEXdriNA8gp1+EplP2WgoHE0uRVmQIfpAyV+Q==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"bn.js": "4.11.8",
|
||||||
|
"eth-lib": "0.2.7",
|
||||||
|
"ethjs-unit": "0.1.6",
|
||||||
|
"number-to-bn": "1.7.0",
|
||||||
|
"randomhex": "0.1.5",
|
||||||
|
"underscore": "1.9.1",
|
||||||
|
"utf8": "3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"webidl-conversions": {
|
"webidl-conversions": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
|
||||||
@@ -17483,6 +17670,42 @@
|
|||||||
"integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
|
"integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"xhr": {
|
||||||
|
"version": "2.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz",
|
||||||
|
"integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"global": "~4.3.0",
|
||||||
|
"is-function": "^1.0.1",
|
||||||
|
"parse-headers": "^2.0.0",
|
||||||
|
"xtend": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xhr-request": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"buffer-to-arraybuffer": "^0.0.5",
|
||||||
|
"object-assign": "^4.1.1",
|
||||||
|
"query-string": "^5.0.1",
|
||||||
|
"simple-get": "^2.7.0",
|
||||||
|
"timed-out": "^4.0.1",
|
||||||
|
"url-set-query": "^1.0.0",
|
||||||
|
"xhr": "^2.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xhr-request-promise": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.2.tgz",
|
||||||
|
"integrity": "sha1-NDxE0e53JrhkgGloLQ+EDIO0Jh0=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"xhr-request": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"xml-name-validator": {
|
"xml-name-validator": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
|
||||||
|
|||||||
+3
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "kredits-web",
|
"name": "kredits-web",
|
||||||
"version": "1.6.0",
|
"version": "1.9.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "Contribution dashboard of the Kosmos project",
|
"description": "Contribution dashboard of the Kosmos project",
|
||||||
"repository": "https://github.com/67P/kredits-web",
|
"repository": "https://github.com/67P/kredits-web",
|
||||||
@@ -67,7 +67,8 @@
|
|||||||
"ndjson": "github:hugomrdias/ndjson#feat/readable-stream3",
|
"ndjson": "github:hugomrdias/ndjson#feat/readable-stream3",
|
||||||
"qunit-dom": "^0.8.4",
|
"qunit-dom": "^0.8.4",
|
||||||
"transform-loader": "^0.2.4",
|
"transform-loader": "^0.2.4",
|
||||||
"tv4": "^1.3.0"
|
"tv4": "^1.3.0",
|
||||||
|
"web3-utils": "^1.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "8.* || >= 10.*"
|
"node": "8.* || >= 10.*"
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
+71
-42
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+3385
-2443
File diff suppressed because one or more lines are too long
+4
-4
@@ -8,10 +8,10 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||||
|
|
||||||
|
|
||||||
<meta name="kredits-web/config/environment" content="%7B%22modulePrefix%22%3A%22kredits-web%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22auto%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%7D%2C%22_JQUERY_INTEGRATION%22%3Atrue%7D%2C%22APP%22%3A%7B%22name%22%3A%22kredits-web%22%2C%22version%22%3A%221.6.0%2B9c185935%22%7D%2C%22browserify%22%3A%7B%22tests%22%3Atrue%2C%22transform%22%3A%5B%5B%22babelify%22%2C%7B%22presets%22%3A%5B%22es2015%22%5D%2C%22global%22%3Atrue%7D%5D%5D%7D%2C%22web3ProviderUrl%22%3A%22https%3A%2F%2Frinkeby.infura.io%2Fv3%2Fd4f788b7a6584f7db2fc3c268d4d09e9%22%2C%22ipfs%22%3A%7B%22host%22%3A%22ipfs.kosmos.org%22%2C%22port%22%3A%225444%22%2C%22protocol%22%3A%22https%22%2C%22gatewayUrl%22%3A%22https%3A%2F%2Fipfs.kosmos.org%2Fipfs%22%7D%2C%22kreditsApmDomain%22%3A%22open.aragonpm.eth%22%2C%22exportApplicationGlobal%22%3Afalse%7D" />
|
<meta name="kredits-web/config/environment" content="%7B%22modulePrefix%22%3A%22kredits-web%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22auto%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%7D%2C%22_JQUERY_INTEGRATION%22%3Atrue%7D%2C%22APP%22%3A%7B%22name%22%3A%22kredits-web%22%2C%22version%22%3A%221.9.0%2B9bf2ae2d%22%7D%2C%22browserify%22%3A%7B%22tests%22%3Atrue%2C%22transform%22%3A%5B%5B%22babelify%22%2C%7B%22presets%22%3A%5B%22es2015%22%5D%2C%22global%22%3Atrue%7D%5D%5D%7D%2C%22web3ProviderUrl%22%3A%22https%3A%2F%2Frinkeby.infura.io%2Fv3%2Fd4f788b7a6584f7db2fc3c268d4d09e9%22%2C%22githubConnectUrl%22%3A%22https%3A%2F%2Fhal8000.chat.kosmos.org%2Fkredits%2Fsignup%2Fconnect%2Fgithub%22%2C%22githubSignupUrl%22%3A%22https%3A%2F%2Fhal8000.chat.kosmos.org%2Fkredits%2Fsignup%2Fgithub%22%2C%22ipfs%22%3A%7B%22host%22%3A%22ipfs.kosmos.org%22%2C%22port%22%3A%225444%22%2C%22protocol%22%3A%22https%22%2C%22gatewayUrl%22%3A%22https%3A%2F%2Fipfs.kosmos.org%2Fipfs%22%7D%2C%22kreditsApmDomain%22%3A%22open.aragonpm.eth%22%2C%22exportApplicationGlobal%22%3Afalse%7D" />
|
||||||
|
|
||||||
<link integrity="" rel="stylesheet" href="/assets/vendor-179cf27a97ea5bbb0ce72403a401cc8c.css">
|
<link integrity="" rel="stylesheet" href="/assets/vendor-179cf27a97ea5bbb0ce72403a401cc8c.css">
|
||||||
<link integrity="" rel="stylesheet" href="/assets/kredits-web-a396c24a9ca056f27e5b65609d59b97e.css">
|
<link integrity="" rel="stylesheet" href="/assets/kredits-web-c870e46b48f385300f37386e5ce5b3a6.css">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
|
||||||
<script src="/assets/vendor-d84a577c9f0624a0b15861936fe740f2.js" integrity="sha256-o5SitqUpXKccldebvatDY/WvXTbEnAu/IA/TyvBxU0U= sha512-gDMabciAMuF89anreuu39lAYDOf6tXMMHxVRUxtqGpmhJdSAUQGFQ2MWTgE8mt+8GvGvPxw9QvnHuBJDK34YVw==" ></script>
|
<script src="/assets/vendor-765025e7de61c40a38fb3d7f2c93d4aa.js" integrity="sha256-/Qtv1B7vhqswTyQR74IPIUbG3346Xqb94WqJleIR3v4= sha512-T77HNtXJ47uJ90fMPppaFIoPzyymEX1ZWVkVOkuDWCA/miwGZXeJreaMsE++XphOLB8hvHm26eORNOJECPC37g==" ></script>
|
||||||
<script src="/assets/kredits-web-4b35839b5ed8ad1ce819c960f4750ade.js" integrity="sha256-NdPT2sp5XKdQ8vqjEtAXPx3MG48ey1tEEkarF7MuAjs= sha512-cw3EEhGyW7lz2MWd3pXsN/FvxSeye7iP52/fIDImMyhOI6lkj1on8R67ZfMR5e/5sQKTQOnD4Qdg/lp1jb9Zqg==" ></script>
|
<script src="/assets/kredits-web-788265737118a90913112fa6ebe6b8f5.js" integrity="sha256-ey9RABp1iJ86aXudb96KujZGI4jaUU1Ng3W4Cx1Cqg0= sha512-MCgoD4+VRdwXCLq2rZc4AOhchBv+wZ/RCpfvfUaCtiUk5VCktp3Lrf7vy6dn++LmQUtx3yVHw/oRmRyLH7tW2A==" ></script>
|
||||||
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
import { module, test } from 'qunit';
|
||||||
|
import { setupRenderingTest } from 'ember-qunit';
|
||||||
|
import { render } from '@ember/test-helpers';
|
||||||
|
import hbs from 'htmlbars-inline-precompile';
|
||||||
|
|
||||||
|
module('Integration | Component | topbar-account-panel', function(hooks) {
|
||||||
|
setupRenderingTest(hooks);
|
||||||
|
|
||||||
|
test('unknown user without wallet (or no permission to get wallet/account info)', async function(assert) {
|
||||||
|
await render(hbs`<TopbarAccountPanel />`);
|
||||||
|
|
||||||
|
assert.ok(this.element.textContent.trim().match(/^Anonymous/));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('unknown user with Ethereum wallet', async function(assert) {
|
||||||
|
let service = this.owner.lookup('service:kredits');
|
||||||
|
service.set('currentUserAccounts', [{ foo: 'bar' }]);
|
||||||
|
await render(hbs`<TopbarAccountPanel />`);
|
||||||
|
|
||||||
|
assert.ok(this.element.textContent.trim().match(/^Anonymous/));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('known contributor', async function(assert) {
|
||||||
|
let service = this.owner.lookup('service:kredits');
|
||||||
|
service.set('currentUserAccounts', [{ foo: 'bar' }]);
|
||||||
|
service.set('currentUser', {
|
||||||
|
name: 'Dorian Nakamoto',
|
||||||
|
isCore: false
|
||||||
|
});
|
||||||
|
await render(hbs`<TopbarAccountPanel />`);
|
||||||
|
|
||||||
|
assert.equal(this.element.textContent.trim(), 'Dorian Nakamoto');
|
||||||
|
|
||||||
|
service.set('currentUser.isCore', true);
|
||||||
|
await render(hbs`<TopbarAccountPanel />`);
|
||||||
|
|
||||||
|
assert.equal(this.element.querySelectorAll('span.core-flag').length, 1);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import { module, test } from 'qunit';
|
||||||
|
import { setupTest } from 'ember-qunit';
|
||||||
|
|
||||||
|
module('Unit | Route | signup', function(hooks) {
|
||||||
|
setupTest(hooks);
|
||||||
|
|
||||||
|
test('it exists', function(assert) {
|
||||||
|
let route = this.owner.lookup('route:signup');
|
||||||
|
assert.ok(route);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import { module, test } from 'qunit';
|
||||||
|
import { setupTest } from 'ember-qunit';
|
||||||
|
|
||||||
|
module('Unit | Route | signup/complete', function(hooks) {
|
||||||
|
setupTest(hooks);
|
||||||
|
|
||||||
|
test('it exists', function(assert) {
|
||||||
|
let route = this.owner.lookup('route:signup/complete');
|
||||||
|
assert.ok(route);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import { module, test } from 'qunit';
|
||||||
|
import { setupTest } from 'ember-qunit';
|
||||||
|
|
||||||
|
module('Unit | Route | signup/eth-account', function(hooks) {
|
||||||
|
setupTest(hooks);
|
||||||
|
|
||||||
|
test('it exists', function(assert) {
|
||||||
|
let route = this.owner.lookup('route:signup/eth-account');
|
||||||
|
assert.ok(route);
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user