Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8c759601ca | |||
| 15e5d3c2fb | |||
| 47b7a6501b | |||
| 42304a8e27 | |||
| 9a4db6daf6 | |||
| 26dc78f553 | |||
| 5a618f7ef9 | |||
| 5d29bd9604 | |||
| 97cc71024f | |||
| 58f1382df1 | |||
| 6c5406c0b9 | |||
| b2457421be | |||
| 134eb7d355 | |||
| 1dc1a9767e | |||
| 243a41db88 | |||
| 523d4524b5 | |||
| c21613f20a | |||
| 12b127c75d | |||
| a7dd058d21 | |||
| de6606b29d | |||
| ec701b3130 | |||
| 8e7430ebb9 | |||
| 1deecafee7 | |||
| 51d8b6c8c1 | |||
| b28f6e6bd7 | |||
| 4ab28016a3 | |||
| 6995b67a22 | |||
| 0076d59a42 | |||
| 36b92d97ca | |||
| f272bcfcbc | |||
| 985e1673ac |
@@ -8,6 +8,7 @@ import { isAddress } from 'web3-utils';
|
|||||||
export default Component.extend({
|
export default Component.extend({
|
||||||
|
|
||||||
kredits: service(),
|
kredits: service(),
|
||||||
|
router: service(),
|
||||||
|
|
||||||
attributes: null,
|
attributes: null,
|
||||||
|
|
||||||
@@ -21,6 +22,7 @@ export default Component.extend({
|
|||||||
isValidGithubUsername: notEmpty('github_username'),
|
isValidGithubUsername: notEmpty('github_username'),
|
||||||
isValidGiteaUsername: notEmpty('gitea_username'),
|
isValidGiteaUsername: notEmpty('gitea_username'),
|
||||||
isValidWikiUsername: notEmpty('wiki_username'),
|
isValidWikiUsername: notEmpty('wiki_username'),
|
||||||
|
isValidZoomDisplayName: notEmpty('zoom_display_name'),
|
||||||
|
|
||||||
isValid: and(
|
isValid: and(
|
||||||
'isValidAccount',
|
'isValidAccount',
|
||||||
@@ -47,7 +49,8 @@ export default Component.extend({
|
|||||||
github_username: null,
|
github_username: null,
|
||||||
github_uid: null,
|
github_uid: null,
|
||||||
gitea_username: null,
|
gitea_username: null,
|
||||||
wiki_username: null
|
wiki_username: null,
|
||||||
|
zoom_display_name: null
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -75,6 +78,7 @@ export default Component.extend({
|
|||||||
window.alert('Something went wrong. Please check the browser console.');
|
window.alert('Something went wrong. Please check the browser console.');
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.set('inProgress', false);
|
this.set('inProgress', false);
|
||||||
|
this.router.transitionTo('dashboard');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,6 +43,11 @@
|
|||||||
{{input name="wiki_username" type="text" value=wiki_username placeholder="ZeroCool"
|
{{input name="wiki_username" type="text" value=wiki_username placeholder="ZeroCool"
|
||||||
class=(if isValidWikiUsername "valid" "") id="c-wiki-username"}}
|
class=(if isValidWikiUsername "valid" "") id="c-wiki-username"}}
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
<label for="c-zoom-display-name">Zoom display name</label>
|
||||||
|
{{input name="zoom_display_name" type="text" value=zoom_display_name placeholder="Zero Cool"
|
||||||
|
class=(if isValidZoomDisplayName "valid" "") id="c-zoom-display-name"}}
|
||||||
|
</p>
|
||||||
<p class="actions">
|
<p class="actions">
|
||||||
{{input type="submit" disabled=inProgress
|
{{input type="submit" disabled=inProgress
|
||||||
value=(if inProgress "Processing" "Save")}}
|
value=(if inProgress "Processing" "Save")}}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
{{#each contributionsFiltered as |contribution|}}
|
{{#each contributionsFiltered as |contribution|}}
|
||||||
<li role="button" {{action "openContributionDetails" contribution}}
|
<li role="button" {{action "openContributionDetails" contribution}}
|
||||||
data-contribution-id={{contribution.id}}
|
data-contribution-id={{contribution.id}}
|
||||||
class="{{contribution-status contribution}}{{if contribution.vetoed " vetoed"}}{{if (eq contribution.id selectedContributionId) " selected"}}">
|
class="{{contribution-status contribution}}{{if (eq contribution.id selectedContributionId) " selected"}}">
|
||||||
<p class="meta">
|
<p class="meta">
|
||||||
<span class="recipient">{{user-avatar contributor=contribution.contributor}}</span>
|
<span class="recipient">{{user-avatar contributor=contribution.contributor}}</span>
|
||||||
<span class="category {{contribution.kind}}">({{contribution.kind}})</span>
|
<span class="category {{contribution.kind}}">({{contribution.kind}})</span>
|
||||||
@@ -45,7 +45,10 @@
|
|||||||
{{#unless contribution.vetoed}}
|
{{#unless contribution.vetoed}}
|
||||||
{{#unless (is-confirmed-contribution contribution)}}
|
{{#unless (is-confirmed-contribution contribution)}}
|
||||||
<p class="voting">
|
<p class="voting">
|
||||||
<button {{action "veto" contribution.id}} class="small danger">veto</button>
|
{{input type="button" class="button small danger"
|
||||||
|
click=(action "veto" contribution.id)
|
||||||
|
disabled=contribution.hasPendingChanges
|
||||||
|
value="veto"}}
|
||||||
</p>
|
</p>
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ export default Component.extend({
|
|||||||
account: null,
|
account: null,
|
||||||
|
|
||||||
iconComponentName: computed('account.site', function() {
|
iconComponentName: computed('account.site', function() {
|
||||||
if (this.account.site.match(/github|gitea|wiki/)) {
|
if (this.account.site.match(/github|gitea|wiki|zoom/)) {
|
||||||
return 'icon-account-' + this.account.site.replace(/\./g, '-');
|
return 'icon-account-' + this.account.site.replace(/\./g, '-');
|
||||||
} else {
|
} else {
|
||||||
return 'icon-web-globe';
|
return 'icon-web-globe';
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<svg id="svg825" class="icon-github" width="260" height="260" enable-background="new 0 0 212.4575 186.23" version="1.1" viewBox="0 0 260 260" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
<svg class="icon-github" width="260" height="260" enable-background="new 0 0 212.4575 186.23" version="1.1" viewBox="0 0 260 260" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||||
<g transform="translate(23.766 36.885)">
|
<g transform="translate(23.766 36.885)">
|
||||||
<path d="m151.79 86.234c-7.078 0.1229-14.154 0.5605-21.232 0.7069-12.318 0.248-24.64 0.5664-36.961 0.512-11.176-0.0472-22.358-0.9728-33.518-0.7052-7.3164 0.1776-14.373 2.2948-20.131 7.584-9.9472 9.1368-12.522 21-11.314 33.807 1.92 20.357 9.2716 31.449 29.115 37.064 15.793 4.4704 31.963 5.2088 48.199 4.9744 5.254 0 10.51 0.1367 15.758-0.0292 12.723-0.4064 25.264-2.2072 37.358-6.3596 10.846-3.7225 18.799-10.691 22.572-22.166 2.6736-8.1288 3.7148-16.388 2.5544-24.853-1.7772-12.959-13.275-30.86-32.4-30.535zm-81.576 59.996c-8.836 0-16-8.9551-16-20 0-11.045 7.164-20 16-20s16 8.9553 16 20c0 11.045-7.164 20-16 20zm76 0c-8.836 0-16-8.9551-16-20 0-11.045 7.164-20 16-20s16 8.9553 16 20c0 11.045-7.164 20-16 20z" fill="none"/>
|
<path d="m151.79 86.234c-7.078 0.1229-14.154 0.5605-21.232 0.7069-12.318 0.248-24.64 0.5664-36.961 0.512-11.176-0.0472-22.358-0.9728-33.518-0.7052-7.3164 0.1776-14.373 2.2948-20.131 7.584-9.9472 9.1368-12.522 21-11.314 33.807 1.92 20.357 9.2716 31.449 29.115 37.064 15.793 4.4704 31.963 5.2088 48.199 4.9744 5.254 0 10.51 0.1367 15.758-0.0292 12.723-0.4064 25.264-2.2072 37.358-6.3596 10.846-3.7225 18.799-10.691 22.572-22.166 2.6736-8.1288 3.7148-16.388 2.5544-24.853-1.7772-12.959-13.275-30.86-32.4-30.535zm-81.576 59.996c-8.836 0-16-8.9551-16-20 0-11.045 7.164-20 16-20s16 8.9553 16 20c0 11.045-7.164 20-16 20zm76 0c-8.836 0-16-8.9551-16-20 0-11.045 7.164-20 16-20s16 8.9553 16 20c0 11.045-7.164 20-16 20z" fill="none"/>
|
||||||
<path class="fg" d="m200.25 59.188c-2.5076-3.4493-4.3632-6.3888-3.8748-11.44 0.6796-7.0664-0.3536-14.396-1.3204-21.518-1.2188-8.9843-3.5236-17.74-7.1776-26.23-9.0332 1.9356-17.981 3.49-25.963 8.0976-8.4648 4.8908-16.695 10.215-25.08 15.25-0.9532 0.5704-2.3124 0.8848-3.3848 0.7032-17.967-3.1368-35.92-3.0196-53.898-0.086-1.3632 0.2244-3.0724-0.2345-4.2948-0.9608-4.4436-2.6604-8.6564-5.7344-13.123-8.3516-11.656-6.844-23.66-12.822-37.494-14.59-0.3928 0.8597-0.7188 1.4785-0.9612 2.1253-4.164 11.22-6.6424 22.844-7.4276 34.82-0.2872 4.3516-0.6092 8.8048 0 13.072 0.3456 2.4296-4e-3 3.8788-1.3924 5.6132-4.8516 6.0488-8.6368 12.717-11.102 20.219-4.6972 14.295-4.4004 28.861-2.2756 43.475 1.7268 11.974 4.7344 23.537 11.324 33.873 13.186 20.682 32.892 29.774 55.572 31.705 19.308 1.6464 38.8 1.1992 58.213 1.2364 13.855 0.0251 27.57-1.4924 40.715-6.6389 20.375-7.9727 33.859-22.604 40.275-44.166 3.7344-12.545 5.2324-25.396 4.8144-38.498-0.4412-13.81-4.0504-26.566-12.144-37.711zm-18.609 82.435c-3.7736 11.475-11.727 18.444-22.572 22.166-12.094 4.1524-24.635 5.9532-37.358 6.3596-5.248 0.1659-10.504 0.0292-15.758 0.0292-16.236 0.2344-32.406-0.504-48.199-4.9744-19.844-5.6152-27.195-16.707-29.115-37.064-1.2072-12.807 1.3672-24.67 11.314-33.807 5.7576-5.2892 12.814-7.4064 20.131-7.584 11.16-0.2676 22.342 0.658 33.518 0.7052 12.32 0.0544 24.642-0.264 36.961-0.512 7.0784-0.1464 14.154-0.584 21.232-0.7069 19.125-0.3243 30.623 17.576 32.4 30.535 1.1604 8.4647 0.1192 16.724-2.5544 24.853z"/>
|
<path class="fg" d="m200.25 59.188c-2.5076-3.4493-4.3632-6.3888-3.8748-11.44 0.6796-7.0664-0.3536-14.396-1.3204-21.518-1.2188-8.9843-3.5236-17.74-7.1776-26.23-9.0332 1.9356-17.981 3.49-25.963 8.0976-8.4648 4.8908-16.695 10.215-25.08 15.25-0.9532 0.5704-2.3124 0.8848-3.3848 0.7032-17.967-3.1368-35.92-3.0196-53.898-0.086-1.3632 0.2244-3.0724-0.2345-4.2948-0.9608-4.4436-2.6604-8.6564-5.7344-13.123-8.3516-11.656-6.844-23.66-12.822-37.494-14.59-0.3928 0.8597-0.7188 1.4785-0.9612 2.1253-4.164 11.22-6.6424 22.844-7.4276 34.82-0.2872 4.3516-0.6092 8.8048 0 13.072 0.3456 2.4296-4e-3 3.8788-1.3924 5.6132-4.8516 6.0488-8.6368 12.717-11.102 20.219-4.6972 14.295-4.4004 28.861-2.2756 43.475 1.7268 11.974 4.7344 23.537 11.324 33.873 13.186 20.682 32.892 29.774 55.572 31.705 19.308 1.6464 38.8 1.1992 58.213 1.2364 13.855 0.0251 27.57-1.4924 40.715-6.6389 20.375-7.9727 33.859-22.604 40.275-44.166 3.7344-12.545 5.2324-25.396 4.8144-38.498-0.4412-13.81-4.0504-26.566-12.144-37.711zm-18.609 82.435c-3.7736 11.475-11.727 18.444-22.572 22.166-12.094 4.1524-24.635 5.9532-37.358 6.3596-5.248 0.1659-10.504 0.0292-15.758 0.0292-16.236 0.2344-32.406-0.504-48.199-4.9744-19.844-5.6152-27.195-16.707-29.115-37.064-1.2072-12.807 1.3672-24.67 11.314-33.807 5.7576-5.2892 12.814-7.4064 20.131-7.584 11.16-0.2676 22.342 0.658 33.518 0.7052 12.32 0.0544 24.642-0.264 36.961-0.512 7.0784-0.1464 14.154-0.584 21.232-0.7069 19.125-0.3243 30.623 17.576 32.4 30.535 1.1604 8.4647 0.1192 16.724-2.5544 24.853z"/>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
@@ -0,0 +1,5 @@
|
|||||||
|
import Component from '@ember/component';
|
||||||
|
|
||||||
|
export default Component.extend({
|
||||||
|
tagName: ""
|
||||||
|
});
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<svg width="256" height="256" version="1.1" viewBox="0 0 67.733 67.733" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||||
|
<g transform="translate(0 -229.27)">
|
||||||
|
<g transform="matrix(.90278 0 0 .90278 6.5684 141.05)" fill-rule="evenodd">
|
||||||
|
<path class="fg" d="m32.67 117.1c2.2056 0.1405 3.0528 0.27041 4.1992 0.64479 3.9359 1.2854 6.7418 4.6736 7.3059 8.8223 0.06615 0.48578 0.13996 1.0253 0.16431 1.1986 0.29104 2.0743 0.07488 21.552-0.25003 22.55-0.59082 1.814-1.901 2.7993-4.0537 3.0488-1.3671 0.15849-30.564 0.0701-31.846-0.0963-5.2843-0.68659-8.8934-4.001-9.7398-8.9445-0.38418-2.2439-0.62362-20.748-0.29871-23.084 0.34422-2.4746 1.7264-3.797 4.3212-4.1338 0.98769-0.12832 28.191-0.13361 30.197-6e-3"/>
|
||||||
|
<path class="fg" d="m61.114 118.11c0.56621 0.4072 0.97816 1.0565 1.1885 1.874 0.19553 0.75909 0.24474 28.04 0.05371 29.747-0.37333 3.3361-2.6305 4.0137-5.5264 1.6584-7.9722-6.4841-9.021-7.5734-9.6795-10.052-0.26008-0.97895-0.33152-10.629-0.08811-11.876 0.38021-1.9457 1.2594-3.1946 3.7383-5.3099 7.4491-6.3564 7.5914-6.4569 9.0522-6.4008 0.70723 0.0272 0.8599 0.0709 1.2613 0.3593"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -14,7 +14,7 @@ export default Component.extend({
|
|||||||
|
|
||||||
userHasEthereumWallet: computed(function() {
|
userHasEthereumWallet: computed(function() {
|
||||||
return isPresent(window.ethereum);
|
return isPresent(window.ethereum);
|
||||||
}).volatile(),
|
}),
|
||||||
|
|
||||||
showConnectButton: computed('userHasEthereumWallet',
|
showConnectButton: computed('userHasEthereumWallet',
|
||||||
'kredits.hasAccounts', function() {
|
'kredits.hasAccounts', function() {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<span class="core-flag">(core)</span>
|
<span class="core-flag">(core)</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
Anonymous
|
<span class="anonymous">Anonymous</span>
|
||||||
<button {{action "signup"}} class="small">Sign up</button>
|
<button {{action "signup"}} class="small">Sign up</button>
|
||||||
{{#if showConnectButton}}
|
{{#if showConnectButton}}
|
||||||
<button {{action "connectAccount"}} class="small green">Connect account</button>
|
<button {{action "connectAccount"}} class="small green">Connect account</button>
|
||||||
|
|||||||
@@ -8,9 +8,7 @@ export default Controller.extend({
|
|||||||
actions: {
|
actions: {
|
||||||
|
|
||||||
save (attributes) {
|
save (attributes) {
|
||||||
return this.kredits
|
return this.kredits.updateContributor(this.model.id, attributes);
|
||||||
.updateContributor(this.model.id, attributes)
|
|
||||||
.then(() => this.transitionToRoute('index'))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,7 @@ export default Controller.extend({
|
|||||||
actions: {
|
actions: {
|
||||||
|
|
||||||
save (contributor) {
|
save (contributor) {
|
||||||
return this.kredits
|
return this.kredits.addContributor(contributor);
|
||||||
.addContributor(contributor)
|
|
||||||
.then(() => this.transitionToRoute('index'))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,10 @@ export default Controller.extend({
|
|||||||
showQuickFilterUnconfirmed: false,
|
showQuickFilterUnconfirmed: false,
|
||||||
showQuickFilterConfirmed: false,
|
showQuickFilterConfirmed: false,
|
||||||
|
|
||||||
|
showIntroText: computed('kredits.{hasAccounts,currentUser}', function(){
|
||||||
|
return (!this.kredits.hasAccounts || !this.kredits.currentUser);
|
||||||
|
}),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
|
|
||||||
vetoContribution (contributionId) {
|
vetoContribution (contributionId) {
|
||||||
|
|||||||
@@ -7,6 +7,6 @@ export default Controller.extend({
|
|||||||
|
|
||||||
ipfsGatewayUrl: computed(function() {
|
ipfsGatewayUrl: computed(function() {
|
||||||
return config.ipfs.gatewayUrl;
|
return config.ipfs.gatewayUrl;
|
||||||
}).volatile()
|
})
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import Controller from '@ember/controller';
|
import Controller from '@ember/controller';
|
||||||
import { computed } from '@ember/object';
|
import { computed } from '@ember/object';
|
||||||
|
import config from 'kredits-web/config/environment';
|
||||||
|
|
||||||
export default Controller.extend({
|
export default Controller.extend({
|
||||||
|
|
||||||
@@ -7,6 +8,10 @@ export default Controller.extend({
|
|||||||
if (this.model.isCore) return 'Core Contributor';
|
if (this.model.isCore) return 'Core Contributor';
|
||||||
if (this.model.totalKreditsEarned <= 5000) return 'Newcomer';
|
if (this.model.totalKreditsEarned <= 5000) return 'Newcomer';
|
||||||
return 'Contributor';
|
return 'Contributor';
|
||||||
|
}),
|
||||||
|
|
||||||
|
ipfsGatewayUrl: computed(function() {
|
||||||
|
return config.ipfs.gatewayUrl;
|
||||||
})
|
})
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import Helper from '@ember/component/helper';
|
import Helper from '@ember/component/helper';
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
import { alias } from '@ember/object/computed';
|
import { alias } from '@ember/object/computed';
|
||||||
|
import { once } from '@ember/runloop';
|
||||||
|
|
||||||
export default Helper.extend({
|
export default Helper.extend({
|
||||||
|
|
||||||
@@ -8,13 +9,50 @@ export default Helper.extend({
|
|||||||
currentBlock: alias('kredits.currentBlock'),
|
currentBlock: alias('kredits.currentBlock'),
|
||||||
|
|
||||||
compute([contribution]) {
|
compute([contribution]) {
|
||||||
|
this.setupRecompute(contribution);
|
||||||
|
|
||||||
|
let status = [];
|
||||||
|
|
||||||
if (contribution.vetoed) {
|
if (contribution.vetoed) {
|
||||||
return 'vetoed';
|
status.push('vetoed');
|
||||||
} else if (contribution.confirmedAt > this.currentBlock) {
|
} else if (contribution.confirmedAt > this.currentBlock) {
|
||||||
return 'unconfirmed';
|
status.push('unconfirmed');
|
||||||
} else {
|
} else {
|
||||||
return 'confirmed'
|
status.push('confirmed');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (contribution.hasPendingChanges) {
|
||||||
|
status.push('pending');
|
||||||
|
}
|
||||||
|
|
||||||
|
return status.join(' ');
|
||||||
|
},
|
||||||
|
|
||||||
|
destroy () {
|
||||||
|
if (this.teardown) this.teardown();
|
||||||
|
this._super(...arguments);
|
||||||
|
},
|
||||||
|
|
||||||
|
setupRecompute (contribution) {
|
||||||
|
if (this.teardown) this.teardown();
|
||||||
|
|
||||||
|
contribution.addObserver('vetoed' , this, this.triggerRecompute);
|
||||||
|
contribution.addObserver('confirmedAt' , this, this.triggerRecompute);
|
||||||
|
contribution.addObserver('currentBlock' , this, this.triggerRecompute);
|
||||||
|
contribution.addObserver('hasPendingChanges' , this, this.triggerRecompute);
|
||||||
|
|
||||||
|
this.teardown = () => {
|
||||||
|
contribution.removeObserver('vetoed', this, this.triggerRecompute);
|
||||||
|
contribution.removeObserver('confirmedAt', this, this.triggerRecompute);
|
||||||
|
contribution.removeObserver('currentBlock', this, this.triggerRecompute);
|
||||||
|
contribution.removeObserver('hadPendingChanges', this, this.triggerRecompute);
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
triggerRecompute () {
|
||||||
|
once(this, function () {
|
||||||
|
this.recompute();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import EmberObject, { computed } from '@ember/object';
|
import EmberObject, { computed } from '@ember/object';
|
||||||
import { isEmpty } from '@ember/utils';
|
import { isEmpty, isPresent } from '@ember/utils';
|
||||||
import bignumber from 'kredits-web/utils/cps/bignumber';
|
import bignumber from 'kredits-web/utils/cps/bignumber';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
|
|
||||||
@@ -24,6 +24,8 @@ export default EmberObject.extend({
|
|||||||
time: null,
|
time: null,
|
||||||
ipfsData: '',
|
ipfsData: '',
|
||||||
|
|
||||||
|
pendingTx: null,
|
||||||
|
|
||||||
init () {
|
init () {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
if (isEmpty(this.details)) this.set('details', {});
|
if (isEmpty(this.details)) this.set('details', {});
|
||||||
@@ -35,6 +37,10 @@ export default EmberObject.extend({
|
|||||||
|
|
||||||
jsDate: computed('iso8601Date', function() {
|
jsDate: computed('iso8601Date', function() {
|
||||||
return moment(this.iso8601Date).toDate();
|
return moment(this.iso8601Date).toDate();
|
||||||
|
}),
|
||||||
|
|
||||||
|
hasPendingChanges: computed('pendingTx', function() {
|
||||||
|
return isPresent(this.pendingTx);
|
||||||
})
|
})
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ export default EmberObject.extend({
|
|||||||
github_username: null,
|
github_username: null,
|
||||||
github_uid: null,
|
github_uid: null,
|
||||||
wiki_username: null,
|
wiki_username: null,
|
||||||
|
zoom_display_name: null,
|
||||||
ipfsData: ''
|
ipfsData: ''
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,7 +22,8 @@ export default Route.extend({
|
|||||||
github_username: model.github_username,
|
github_username: model.github_username,
|
||||||
github_uid: model.github_uid,
|
github_uid: model.github_uid,
|
||||||
gitea_username: model.gitea_username,
|
gitea_username: model.gitea_username,
|
||||||
wiki_username: model.wiki_username
|
wiki_username: model.wiki_username,
|
||||||
|
zoom_display_name: model.zoom_display_name
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -210,8 +210,8 @@ export default Service.extend({
|
|||||||
|
|
||||||
getContributors () {
|
getContributors () {
|
||||||
return this.kredits.Contributor.all()
|
return this.kredits.Contributor.all()
|
||||||
.then((contributors) => {
|
.then(contributors => {
|
||||||
return contributors.map((contributor) => {
|
return contributors.map(contributor => {
|
||||||
return Contributor.create(contributor);
|
return Contributor.create(contributor);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -225,6 +225,7 @@ export default Service.extend({
|
|||||||
console.debug('[kredits] add contribution response', data);
|
console.debug('[kredits] add contribution response', data);
|
||||||
attributes.contributor = this.contributors.findBy('id', attributes.contributorId);
|
attributes.contributor = this.contributors.findBy('id', attributes.contributorId);
|
||||||
const contribution = Contribution.create(attributes);
|
const contribution = Contribution.create(attributes);
|
||||||
|
contribution.set('pendingTx', data);
|
||||||
contribution.set('confirmedAtBlock', data.blockNumber + 40320);
|
contribution.set('confirmedAtBlock', data.blockNumber + 40320);
|
||||||
this.contributions.pushObject(contribution);
|
this.contributions.pushObject(contribution);
|
||||||
return contribution;
|
return contribution;
|
||||||
@@ -278,10 +279,12 @@ export default Service.extend({
|
|||||||
|
|
||||||
veto (contributionId) {
|
veto (contributionId) {
|
||||||
console.debug('[kredits] veto against', contributionId);
|
console.debug('[kredits] veto against', contributionId);
|
||||||
|
const contribution = this.contributions.findBy('id', contributionId);
|
||||||
|
|
||||||
return this.kredits.Contribution.functions.veto(contributionId, { gasLimit: 300000 })
|
return this.kredits.Contribution.functions.veto(contributionId, { gasLimit: 300000 })
|
||||||
.then(data => {
|
.then(data => {
|
||||||
console.debug('[kredits] veto response', data);
|
console.debug('[kredits] veto response', data);
|
||||||
|
contribution.set('pendingTx', data);
|
||||||
return data;
|
return data;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@@ -367,6 +370,7 @@ export default Service.extend({
|
|||||||
|
|
||||||
if (contribution) {
|
if (contribution) {
|
||||||
contribution.set('vetoed', true);
|
contribution.set('vetoed', true);
|
||||||
|
contribution.set('pendingTx', null);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ button, input[type=submit], .button {
|
|||||||
padding: 0.2rem 0.8rem;
|
padding: 0.2rem 0.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.danger {
|
&.danger:not(:disabled) {
|
||||||
color: $red;
|
color: $red;
|
||||||
background-color: rgba(40, 21, 21, 0.6);
|
background-color: rgba(40, 21, 21, 0.6);
|
||||||
border-color: rgba(40, 21, 21, 1);
|
border-color: rgba(40, 21, 21, 1);
|
||||||
@@ -45,7 +45,7 @@ button, input[type=submit], .button {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.green {
|
&.green:not(:disabled) {
|
||||||
color: $green;
|
color: $green;
|
||||||
background-color: rgba(21, 40, 21, 0.6);
|
background-color: rgba(21, 40, 21, 0.6);
|
||||||
border-color: rgba(21, 40, 21, 1);
|
border-color: rgba(21, 40, 21, 1);
|
||||||
|
|||||||
@@ -8,8 +8,3 @@ $red: #fb6868;
|
|||||||
$primary-color: $blue;
|
$primary-color: $blue;
|
||||||
|
|
||||||
$body-text-color: #fff;
|
$body-text-color: #fff;
|
||||||
|
|
||||||
#topbar {
|
|
||||||
background-color: rgba(255, 0, 255, .2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
@@ -61,6 +61,40 @@ main {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#intro {
|
||||||
|
padding: 2rem;
|
||||||
|
background-color: rgba(0,0,0,.2);
|
||||||
|
font-size: 1.6rem;
|
||||||
|
|
||||||
|
@include media-max(small) {
|
||||||
|
padding: 2rem 1rem;
|
||||||
|
font-size: 1.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: inherit;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
line-height: 1.5em;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&:hover, &:active {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (min-width: 550px) {
|
@media (min-width: 550px) {
|
||||||
main {
|
main {
|
||||||
&#dashboard {
|
&#dashboard {
|
||||||
|
|||||||
@@ -8,4 +8,10 @@ header#topbar section#user-account {
|
|||||||
margin-left: 0.6rem;
|
margin-left: 0.6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@include media-max(small) {
|
||||||
|
.anonymous {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,19 @@
|
|||||||
|
{{#if showIntroText}}
|
||||||
|
<div id="intro">
|
||||||
|
<h2>
|
||||||
|
Welcome to the contribution dashboard of the
|
||||||
|
<a href="https://kosmos.org" target="_blank" rel="noopener">Kosmos</a> project!
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
If you want to learn more about what the numbers mean and how this works,
|
||||||
|
check out the
|
||||||
|
<a href="https://wiki.kosmos.org/Kredits" target="_blank" rel="noopener">Kredits documentation</a>.
|
||||||
|
If you want to start earning kredits for your contributions,
|
||||||
|
{{link-to "create a contributor profile" "signup"}}.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<main id="dashboard" class={{if showDetailsPane "with-details"}}>
|
<main id="dashboard" class={{if showDetailsPane "with-details"}}>
|
||||||
|
|
||||||
<div id="stats">
|
<div id="stats">
|
||||||
@@ -41,12 +57,12 @@
|
|||||||
<section id="contributions-unconfirmed">
|
<section id="contributions-unconfirmed">
|
||||||
<header class="with-nav">
|
<header class="with-nav">
|
||||||
<h2>Latest Contributions</h2>
|
<h2>Latest Contributions</h2>
|
||||||
{{#if kredits.hasAccounts}}
|
|
||||||
<nav>
|
<nav>
|
||||||
<button {{action "toggleQuickFilterUnconfirmed"}} class="small {{if showQuickFilterUnconfirmed "active"}}">filter</button>
|
<button {{action "toggleQuickFilterUnconfirmed"}} class="small {{if showQuickFilterUnconfirmed "active"}}">filter</button>
|
||||||
|
{{#if kredits.hasAccounts}}
|
||||||
{{link-to "add" "contributions.new" title="Submit a contribution" class="button small green"}}
|
{{link-to "add" "contributions.new" title="Submit a contribution" class="button small green"}}
|
||||||
</nav>
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{!-- TODO: We need a better naming for kredits.hasAccounts --}}
|
{{!-- TODO: We need a better naming for kredits.hasAccounts --}}
|
||||||
|
|||||||
@@ -50,6 +50,7 @@
|
|||||||
|
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
<p>
|
<p>
|
||||||
|
{{link-to "Copy & edit as new" "contributions.resubmit" model class="button small"}}.
|
||||||
{{#if model.ipfsHash}}
|
{{#if model.ipfsHash}}
|
||||||
<a href="{{ipfsGatewayUrl}}/{{model.ipfsHash}}"
|
<a href="{{ipfsGatewayUrl}}/{{model.ipfsHash}}"
|
||||||
class="button small" target="_blank" rel="noopener">
|
class="button small" target="_blank" rel="noopener">
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
<p>
|
<p>
|
||||||
<a href="https://rinkeby.etherscan.io/address/{{model.account}}" class="button small" target="_blank" rel="noopener">Inspect Ethereum transactions</a>
|
<a href="https://rinkeby.etherscan.io/address/{{model.account}}" class="button small" target="_blank" rel="noopener">Inspect Ethereum transactions</a>
|
||||||
{{#if model.ipfsHash}}
|
{{#if model.ipfsHash}}
|
||||||
<a href="https://ipfs.io/ipfs/{{model.ipfsHash}}" class="button small" target="_blank" rel="noopener">Inspect IPFS profile</a>
|
<a href="{{ipfsGatewayUrl}}/{{model.ipfsHash}}" class="button small" target="_blank" rel="noopener">Inspect IPFS profile</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{link-to "Edit profile" "contributors.edit" model class="button small"}}
|
{{link-to "Edit profile" "contributors.edit" model class="button small"}}
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
Generated
+338
-435
File diff suppressed because it is too large
Load Diff
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "kredits-web",
|
"name": "kredits-web",
|
||||||
"version": "1.10.0",
|
"version": "1.13.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",
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
"brfs": "^2.0.2",
|
"brfs": "^2.0.2",
|
||||||
"broccoli-asset-rev": "^3.0.0",
|
"broccoli-asset-rev": "^3.0.0",
|
||||||
"ember-ajax": "^5.0.0",
|
"ember-ajax": "^5.0.0",
|
||||||
"ember-auto-import": "^1.5.2",
|
"ember-auto-import": "^1.5.3",
|
||||||
"ember-awesome-macros": "0.41.0",
|
"ember-awesome-macros": "0.41.0",
|
||||||
"ember-cli": "~3.10.1",
|
"ember-cli": "~3.10.1",
|
||||||
"ember-cli-app-version": "^3.2.0",
|
"ember-cli-app-version": "^3.2.0",
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
"eslint-plugin-node": "^9.0.1",
|
"eslint-plugin-node": "^9.0.1",
|
||||||
"ethers": "^4.0.27",
|
"ethers": "^4.0.27",
|
||||||
"kosmos-schemas": "^2.0.0",
|
"kosmos-schemas": "^2.0.0",
|
||||||
"kredits-contracts": "^5.4.0",
|
"kredits-contracts": "^5.5.0",
|
||||||
"loader.js": "^4.7.0",
|
"loader.js": "^4.7.0",
|
||||||
"ndjson": "github:hugomrdias/ndjson#feat/readable-stream3",
|
"ndjson": "github:hugomrdias/ndjson#feat/readable-stream3",
|
||||||
"qunit-dom": "^0.8.4",
|
"qunit-dom": "^0.8.4",
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+46
-39
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
+2517
-2049
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.10.0%2B7b9659e2%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%22web3RequiredNetwork%22%3A%22rinkeby%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%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.13.0%2B15e5d3c2%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%22web3RequiredNetwork%22%3A%22rinkeby%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%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-bf8cdb5aeca9f819317b56a053af9a07.css">
|
<link integrity="" rel="stylesheet" href="/assets/kredits-web-7486572f1c1005f28df459da134a97f2.css">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
|
||||||
<script src="/assets/vendor-13d8e4e4e82dd7bac91d821b2e30d995.js" integrity="sha256-7W4pPHJA775yfzH5yRprMaeGsW0iuMwhw2JwjXc2+Pk= sha512-fQfK5OmWIdSpGamuq7f3/EpCbVQnGSgR1VPXwxWRCu8JFeXdrUDmK67J4lHuC5cHc8yxD9WFymXKugeH7+NNgA==" ></script>
|
<script src="/assets/vendor-21c31ba5343c7b72f638899d335a0531.js" integrity="sha256-5QKR4/TvbS9UoThtAlcyvj54wU+Bcn0hnM0FzjUbvfA= sha512-tHxWM5t9FYFz6DBnXuzWiIMPPW/gNwPaFDOdUL32cWvWcMfjyrhIEPM5I1D6+HQE1kXCEd64a+7UiMdU2hH5JQ==" ></script>
|
||||||
<script src="/assets/kredits-web-f1054baf811714b6865ab8c77c69fb4c.js" integrity="sha256-hrHVjH6k8rdA8LxWsKWsd300dN0+m/osbECl2U0ntZ8= sha512-L2xrymtmnW49TvaECYHqQ5Ql4lkEDERWveK1i66UbA3DddwdaFTjqPSLdj7kq6doX6TTlBdzfEDdsuwUjLyxeg==" ></script>
|
<script src="/assets/kredits-web-a6b23d76eb470475515cfa602440fbfb.js" integrity="sha256-0kjKqEi3xMDzRlsV7Z+2x9xXF5AAi0EFVSLPD16NdH8= sha512-9IuLwhzOfgxZKJZ2L2sy4zoibavROIwKU4TRoNYGdzkVqPUhNOhT5i3BLgbRrZ57oFm5WwfjVyB6RAoVjVz06w==" ></script>
|
||||||
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import { module, test } from 'qunit';
|
||||||
|
import { setupTest } from 'ember-qunit';
|
||||||
|
import Contribution from 'kredits-web/models/contribution';
|
||||||
|
|
||||||
|
module('Unit | Helper | contribution-status', function (hooks) {
|
||||||
|
setupTest(hooks);
|
||||||
|
|
||||||
|
test('returns the appropriate status', function (assert) {
|
||||||
|
const contributionStatus = this.owner.factoryFor('helper:contribution-status').create();
|
||||||
|
const kredits = this.owner.lookup('service:kredits');
|
||||||
|
|
||||||
|
kredits.set('currentBlock', 23000);
|
||||||
|
|
||||||
|
const contributionUnconfirmed = Contribution.create({ confirmedAt: 23001, vetoed: false });
|
||||||
|
const contributionConfirmed = Contribution.create({ confirmedAt: 21000, vetoed: false });
|
||||||
|
const contributionVetoed = Contribution.create({ confirmedAt: 23001, vetoed: true });
|
||||||
|
|
||||||
|
assert.equal(contributionStatus.compute([contributionUnconfirmed]), 'unconfirmed');
|
||||||
|
assert.equal(contributionStatus.compute([contributionConfirmed]), 'confirmed');
|
||||||
|
assert.equal(contributionStatus.compute([contributionVetoed]), 'vetoed');
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
import { module, test } from 'qunit';
|
|
||||||
import { setupTest } from 'ember-qunit';
|
|
||||||
|
|
||||||
module('Unit | Helper | contribution-status', function (hooks) {
|
|
||||||
setupTest(hooks);
|
|
||||||
|
|
||||||
test('returns the appropriate status', function (assert) {
|
|
||||||
const contributionStatus = this.owner.factoryFor('helper:contribution-status').create();
|
|
||||||
const kredits = this.owner.lookup('service:kredits');
|
|
||||||
|
|
||||||
kredits.set('currentBlock', 23000);
|
|
||||||
|
|
||||||
const contributionUnconfirmed = { confirmedAt: 23001, vetoed: false };
|
|
||||||
const contributionConfirmed = { confirmedAt: 21000, vetoed: false };
|
|
||||||
const contributionVetoed = { confirmedAt: 23001, vetoed: true };
|
|
||||||
|
|
||||||
assert.eq(contributionStatus.compute([contributionUnconfirmed]), 'unconfirmed');
|
|
||||||
assert.eq(contributionStatus.compute([contributionConfirmed]), 'confirmed');
|
|
||||||
assert.eq(contributionStatus.compute([contributionVetoed]), 'vetoed');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
import { module, test } from 'qunit';
|
|
||||||
import { setupTest } from 'ember-qunit';
|
|
||||||
|
|
||||||
module('Unit | Helper | contribution-status', function (hooks) {
|
|
||||||
setupTest(hooks);
|
|
||||||
|
|
||||||
test('returns the appropriate status', function (assert) {
|
|
||||||
const contributionStatus = this.owner.factoryFor('helper:contribution-status').create();
|
|
||||||
const kredits = this.owner.lookup('service:kredits');
|
|
||||||
|
|
||||||
kredits.set('currentBlock', 23000);
|
|
||||||
|
|
||||||
const contributionUnconfirmed = { confirmedAt: 23001, vetoed: false };
|
|
||||||
const contributionConfirmed = { confirmedAt: 21000, vetoed: false };
|
|
||||||
const contributionVetoed = { confirmedAt: 23001, vetoed: true };
|
|
||||||
|
|
||||||
assert.notOk(contributionStatus.compute([contributionUnconfirmed]), 'unconfirmed');
|
|
||||||
assert.notOk(contributionStatus.compute([contributionVetoed]), 'vetoed');
|
|
||||||
assert.ok(contributionStatus.compute([contributionConfirmed]), 'confirmed');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -24,4 +24,13 @@ module('Unit | Model | contribution', function(hooks) {
|
|||||||
assert.ok(model.jsDate instanceof Date);
|
assert.ok(model.jsDate instanceof Date);
|
||||||
assert.equal(model.jsDate.toISOString(), '2019-09-10T09:33:00.141Z');
|
assert.equal(model.jsDate.toISOString(), '2019-09-10T09:33:00.141Z');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('hasPendingChanges', function(assert) {
|
||||||
|
const model = Contribution.create({});
|
||||||
|
assert.equal(model.hasPendingChanges, false);
|
||||||
|
|
||||||
|
model.set('pendingTx', { hash: 'abcdef123456' });
|
||||||
|
assert.equal(model.hasPendingChanges, true);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user