Skip to content

Commit 7f77830

Browse files
Merge pull request byteball#257 from kakysha/send-email
Send email
2 parents 3a3f9fa + a27eca4 commit 7f77830

File tree

8 files changed

+1883
-1536
lines changed

8 files changed

+1883
-1536
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<nav class="tab-bar">
2+
<section class="left-small">
3+
<a ng-click="cancel()" class="p10">
4+
<span class="text-close" translate>Close</span>
5+
</a>
6+
</section>
7+
<section class="middle tab-bar-section">
8+
<h1 class="title ellipsis" ng-style="{'color':color}" translate>
9+
Claim funds by mnemonic
10+
</h1>
11+
</section>
12+
</nav>
13+
14+
<div class="modal-content fix-modals-touch">
15+
<div ng-show="!amountInSmallestUnits" class="row m20t">
16+
<div class="large-12 large-centered columns">
17+
<form name="mnemonicForm" ng-submit="submitForm(mnemonicForm)" novalidate>
18+
<div class="right" ng-hide="mnemonicForm.mnemonic.$pristine && !mnemonicForm.mnemonic.$modelValue ">
19+
<span class="has-error right size-12" ng-if="mnemonicForm.mnemonic.$invalid">
20+
<i class="icon-close-circle size-14"></i>
21+
<span clas="vm" translate>Not valid</span>
22+
</span>
23+
<small class="text-primary right" ng-if="!mnemonicForm.mnemonic.$invalid">
24+
<i class="icon-checkmark-circle size-14"></i>
25+
</small>
26+
</div>
27+
<div >
28+
<label for="mnemonic">
29+
<span translate>Mnemonic</span>
30+
</label>
31+
<div class="input">
32+
<input type="text" id="mnemonic" name="mnemonic" ng-model="mnemonic" ng-attr-placeholder="{{'Mnemonic'|translate}}"
33+
valid-mnemonic required autocomplete="off">
34+
</div>
35+
</div>
36+
<button type="submit" class="button black round expand" ng-disabled="mnemonicForm.$invalid" ng-style="{'background-color':color}" translate>
37+
{{buttonLabel}}
38+
</button>
39+
</form>
40+
</div>
41+
</div>
42+
43+
</div>

public/views/modals/share.html

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<nav class="tab-bar">
2+
<section class="left-small">
3+
<a ng-click="cancel()" class="p10">
4+
<span class="text-close" translate>Close</span>
5+
</a>
6+
</section>
7+
<section class="middle tab-bar-section">
8+
<h1 class="title ellipsis" ng-style="{'color':color}" translate>
9+
Share
10+
</h1>
11+
</section>
12+
</nav>
13+
14+
<div class="modal-content fix-modals-touch">
15+
<div ng-show="!amountInSmallestUnits" class="row m20t">
16+
<div class="large-12 large-centered columns">
17+
<div ng-if="address">
18+
<p translate>Click the button to <span ng-if="isResend">re</span>send email</p>
19+
<button ng-if="isCordova" class="button black round expand" ng-style="{'background-color':index.backgroundColor}" ng-click="shareToEmail()">{{buttonLabel}}</button>
20+
<a class="button black round expand" ng-style="{'background-color':index.backgroundColor}" href="mailto:{{address}}?body={{text | encodeURIComponent}}&subject={{subject | encodeURIComponent}}" ng-if="!isCordova">{{buttonLabel}}</a>
21+
</div>
22+
<div>
23+
<p><span ng-if="address">Or </span>copy text and send by yourself:</p>
24+
<textarea readonly rows=4 onclick="this.focus();this.select()">{{text}}</textarea>
25+
</div>
26+
</div>
27+
</div>
28+
29+
</div>

public/views/modals/tx-details.html

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,14 @@ <h4 class="title m0" translate>Details</h4>
3838
<contact ng-show="!btx.labelTo" class="enable_text_select" address="{{btx.addressTo}}"></contact>
3939
</span>
4040
</span>
41-
</li>
41+
</li>
42+
43+
<li ng-if="btx.textAddress" class="line-b p10 oh" ng-click="copyAddress(btx.textAddress)">
44+
<span class="text-gray" translate>To email</span>:
45+
<span class="right">
46+
<contact class="enable_text_select" address="{{btx.textAddress}}"></contact>
47+
</span>
48+
</li>
4249

4350
<li ng-show="btx.hasMultiplesOutputs" class="line-b p10 oh"
4451
ng-click="showMultiplesOutputs = !showMultiplesOutputs">
@@ -111,6 +118,26 @@ <h4 class="title m0" translate>Details</h4>
111118

112119
</span>
113120
</li>
121+
122+
<li ng-if="btx.textcoin" class="line-b p10 oh">
123+
<span class="text-gray" translate>Was claimed?</span>
124+
<span class="right" >
125+
<span class="text-warning" ng-show="!btx.claimed" translate>
126+
not claimed
127+
</span>
128+
<span ng-show="!btx.claimed" class="external-link">
129+
(<a href="#" ng-click="$root.$emit('claimTextcoin', btx.mnemonic.split('-').join(' '));cancel()" style="padding: 0; color: inherit;">claim back</a>)
130+
</span>
131+
<span class="label gray radius" ng-show="btx.claimed" translate>
132+
claimed by {{btx.claimedByMe?'me':'receiver'|translate}}
133+
</span>
134+
135+
</span>
136+
</li>
137+
138+
<li ng-if="btx.textcoin && !btx.claimed" class="line-b p10 oh">
139+
If the recipient doesn't see your payment, you can <a class="blue-link" style="padding: 0" ng-click="shareAgain()" translate>share again</a>
140+
</li>
114141
<li ng-if="btx.action == 'sent' && isPrivate" class="line-b p10 oh">
115142
If the recipient doesn't see your payment, you can <a class="blue-link" style="padding: 0" ng-click="showCorrespondentList()" translate>re-send private payloads</a>
116143
</li>

public/views/walletHome.html

Lines changed: 113 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@
1010
width: 40%;
1111
display: inline-block;
1212
}
13+
.mtab-title {
14+
padding: 5px;
15+
font-weight: bold;
16+
font-size: 11px;
17+
text-transform: uppercase;
18+
}
19+
.mtab-title.active {
20+
color: #34495E;
21+
}
1322
</style>
1423

1524

@@ -278,6 +287,11 @@ <h4 ng-class="{'enable_text_select': !index.isCordova}" class="size-12">
278287
<span translate>Request a specific amount</span>
279288
</a>
280289
</div>
290+
<div class="m20t text-center m30b" ng-show="!home.generatingAddress && home.addr[index.walletId]">
291+
<a class="size-14" ng-click="home.openClaimTextcoinModal(home.addr[index.walletId])" ng-style="{'color':index.backgroundColor}">
292+
<span translate>Claim funds using mnemonic</span>
293+
</a>
294+
</div>
281295
</div>
282296
</div> <!-- END Receive -->
283297

@@ -326,45 +340,6 @@ <h4 class="title m0">
326340
This is a private asset, please send it only by clicking links in the chat or send it to your other wallets.
327341
</div>
328342

329-
<div ng-hide="home.hideAddress">
330-
<div class="row collapse">
331-
<label for="address" class="left" >
332-
<span translate>To</span>
333-
</label>
334-
<span ng-hide="sendPaymentForm.address.$pristine">
335-
<span class="has-error right size-12" ng-show="sendPaymentForm.address.$invalid && _address">
336-
<i class="icon-close-circle size-14"></i>
337-
<span class="vm" translate>Not valid</span>
338-
</span>
339-
<small class="right text-primary" ng-show="!sendPaymentForm.address.$invalid">
340-
<i class="icon-checkmark-circle size-14"></i>
341-
</small>
342-
</span>
343-
</div>
344-
345-
<div class="input">
346-
<input ng-show="sendPaymentForm.address.$invalid" class="m0" type="text" id="address" name="address" ng-disabled="home.blockUx || home.lockAddress || !home.canSendExternalPayment()" ng-attr-placeholder="{{home.canSendExternalPayment() ? 'Byteball address' : 'Byteball address of your other wallet &#8594;'}}" ng-model="_address" valid-address required ng-focus="home.formFocus('address')" ng-blur="home.formFocus(false)">
347-
<div class="addressbook-input" ng-show="!sendPaymentForm.address.$invalid && _address">
348-
{{index.addressbook[_address] || _address}}
349-
</div>
350-
<a class="postfix size-12 m0 text-gray" ng-hide="home.blockUx || home.lockAddress" ng-click="openDestinationAddressModal(index.otherWallets, _address)">
351-
<i class="icon-wallet size-18"></i>
352-
</a>
353-
</div>
354-
<div ng-if="home.deviceAddressIsKnown()" style="font-size: 11px; font-weight: bold; margin-top: -1.5rem; margin-bottom: 1.5rem">
355-
<a ng-click="home.openBindModal()">
356-
<span ng-if="!home.binding" translate>Bind the payment to a condition</span>
357-
<span ng-if="home.binding" translate>This payment is bound to a condition</span>
358-
</a>
359-
</div>
360-
<div id="binding-drop" class="f-dropdown" data-dropdown-content style="padding: 10px;" translate>To bind the payment to a condition, please click the peer's address in chat</div>
361-
<div ng-if="!home.deviceAddressIsKnown()" style="font-size: 11px; font-weight: bold; margin-top: -1.5rem; margin-bottom: 1.5rem">
362-
<a dropdown-toggle="#binding-drop" data-options="align:top">
363-
<span translate class="text-gray">Bind the payment to a condition</span>
364-
</a>
365-
</div>
366-
</div>
367-
368343
<div class="row" ng-hide="home.hideAmount">
369344
<div class="large-12 medium-12 columns">
370345
<div class="right" ng-hide="sendPaymentForm.amount.$pristine && !sendPaymentForm.amount.$modelValue ">
@@ -391,52 +366,107 @@ <h4 class="title m0">
391366
</div>
392367
</div>
393368
</div>
394-
<div class="row" ng-show="index.bHasMerkle">
395-
<div class="large-12 columns">
396-
<label for="merkle_proof"><span translate>Merkle proof</span>
397-
<small translate ng-hide="!sendPaymentForm.merkle_proof.$pristine">optional</small>
398-
<small translate class="has-error" ng-show="sendPaymentForm.merkle_proof.$invalid && !sendPaymentForm.merkle_proof.$pristine">too long!</small>
399-
</label>
400-
<div class="input">
401-
<textarea id="merkle_proof" ng-disabled="home.blockUx" name="merkle_proof" maxlength="4096" ng-model="_merkle_proof"></textarea>
402-
</div>
403-
</div>
404-
</div>
405-
<div class="row" ng-hide="home.hideNote">
406-
<div class="large-12 columns">
407-
<label for="comment"><span translate>Note</span>
408-
<small translate ng-hide="!sendPaymentForm.comment.$pristine">optional</small>
409-
<small translate class="has-error" ng-show="sendPaymentForm.comment.$invalid && !sendPaymentForm.comment.$pristine">too long!</small>
410-
</label>
411-
<div class="input">
412-
<textarea id="comment" ng-disabled="home.blockUx" name="comment"
413-
ng-maxlength="500" ng-model="_comment" ng-focus="home.formFocus('msg')"
414-
ng-blur="home.formFocus(false)"></textarea>
415-
</div>
416-
</div>
417-
</div>
418-
419-
<div class="" ng-show="index.m < index.n && index.m > 1">
420-
<div class="large-12 medium-12">
421-
<label>
422-
<span translate>Who signs:</span>
423-
</label>
424-
<cosigners></cosigners>
425-
</div>
426-
</div>
427369

428-
<div class="row" ng-show="!home.onGoingProcess">
429-
<div class="large-6 medium-6 small-6 columns" ng-show="!home.blockUx && (home.lockAddress || home.lockAmount)">
430-
<a ng-click="home.resetForm(sendPaymentForm)" class="button expand outline dark-gray round" translate>Cancel</a>
431-
</div>
432-
<div class="columns" ng-class="{'small-6 medium-6 large-6':(home.lockAddress || home.lockAmount)}">
433-
<button type="submit" class="button black round expand" ng-disabled="home.current_payment_key || sendPaymentForm.$invalid || home.blockUx || index.isOffline || !index.isEnoughSignersSelected()"
434-
ng-style="{'background-color':index.backgroundColor}" translate>
435-
Send
436-
</button>
437-
</div>
370+
<div class="mtabset" ng-show="index.arrBalances.length > 0 && index.arrBalances[index.assetIndex].asset === 'base'">
371+
<div class="mtab-title active" ng-click="mtab = 1" ng-class="{'active': mtab == 1}" translate>To byteball address / email</div>
372+
<div class="mtab-title" ng-click="mtab = 2" ng-class="{'active': mtab == 2}">Share via message</div>
373+
</div>
438374

439-
</div>
375+
<div class="mtab" ng-class="{'active': mtab == 1}" ng-init="mtab = 1">
376+
<div ng-hide="home.hideAddress">
377+
<div class="row collapse">
378+
<label for="address" class="left" ng-if="index.arrBalances.length > 0 && index.arrBalances[index.assetIndex].asset !== 'base'">
379+
<span translate>To byteball address</span>
380+
</label>
381+
<span ng-hide="sendPaymentForm.address.$pristine">
382+
<span class="has-error right size-12" ng-show="sendPaymentForm.address.$invalid && _address">
383+
<i class="icon-close-circle size-14"></i>
384+
<span class="vm" translate>Not valid</span>
385+
</span>
386+
<small class="right text-primary" ng-show="!sendPaymentForm.address.$invalid">
387+
<i class="icon-checkmark-circle size-14"></i>
388+
</small>
389+
</span>
390+
&nbsp;
391+
</div>
392+
393+
<div class="input">
394+
<input ng-if="index.arrBalances[index.assetIndex].asset === 'base'" class="m0" type="text" id="address" name="address" ng-disabled="home.blockUx || home.lockAddress || !home.canSendExternalPayment()" ng-attr-placeholder="{{home.canSendExternalPayment() ? 'Byteball address or email' : 'Byteball address of your other wallet &#8594;'}}" ng-model="_address" ng-required valid-address-or-email ng-focus="home.formFocus('address')" ng-blur="home.formFocus(false)">
395+
396+
<input ng-if="index.arrBalances[index.assetIndex].asset !== 'base'" class="m0" type="text" id="address" name="address" ng-disabled="home.blockUx || home.lockAddress || !home.canSendExternalPayment()" ng-attr-placeholder="{{home.canSendExternalPayment() ? 'Byteball address' : 'Byteball address of your other wallet &#8594;'}}" ng-model="_address" ng-required valid-address ng-focus="home.formFocus('address')" ng-blur="home.formFocus(false)">
397+
<!--<div class="addressbook-input" ng-show="!sendPaymentForm.address.$invalid && _address">
398+
{{index.addressbook[_address] || _address}}
399+
</div>-->
400+
<a class="postfix size-12 m0 text-gray" ng-hide="home.blockUx || home.lockAddress" ng-click="openDestinationAddressModal(index.otherWallets, _address)">
401+
<i class="icon-wallet size-18"></i>
402+
</a>
403+
</div>
404+
<div ng-if="home.deviceAddressIsKnown()" style="font-size: 11px; font-weight: bold; margin-top: -1.5rem; margin-bottom: 1.5rem">
405+
<a ng-click="home.openBindModal()">
406+
<span ng-if="!home.binding" translate>Bind the payment to a condition</span>
407+
<span ng-if="home.binding" translate>This payment is bound to a condition</span>
408+
</a>
409+
</div>
410+
<div id="binding-drop" class="f-dropdown" data-dropdown-content style="padding: 10px;" translate>To bind the payment to a condition, please click the peer's address in chat</div>
411+
<div ng-if="!home.deviceAddressIsKnown()" style="font-size: 11px; font-weight: bold; margin-top: -1.5rem; margin-bottom: 1.5rem">
412+
<a dropdown-toggle="#binding-drop" data-options="align:top">
413+
<span translate class="text-gray">Bind the payment to a condition</span>
414+
</a>
415+
</div>
416+
</div>
417+
418+
<div class="row" ng-show="index.bHasMerkle">
419+
<div class="large-12 columns">
420+
<label for="merkle_proof"><span translate>Merkle proof</span>
421+
<small translate ng-hide="!sendPaymentForm.merkle_proof.$pristine">optional</small>
422+
<small translate class="has-error" ng-show="sendPaymentForm.merkle_proof.$invalid && !sendPaymentForm.merkle_proof.$pristine">too long!</small>
423+
</label>
424+
<div class="input">
425+
<textarea id="merkle_proof" ng-disabled="home.blockUx" name="merkle_proof" maxlength="4096" ng-model="_merkle_proof"></textarea>
426+
</div>
427+
</div>
428+
</div>
429+
<div class="row" ng-hide="home.hideNote">
430+
<div class="large-12 columns">
431+
<label for="comment"><span translate>Note</span>
432+
<small translate ng-hide="!sendPaymentForm.comment.$pristine">optional</small>
433+
<small translate class="has-error" ng-show="sendPaymentForm.comment.$invalid && !sendPaymentForm.comment.$pristine">too long!</small>
434+
</label>
435+
<div class="input">
436+
<textarea id="comment" ng-disabled="home.blockUx" name="comment"
437+
ng-maxlength="500" ng-model="_comment" ng-focus="home.formFocus('msg')"
438+
ng-blur="home.formFocus(false)"></textarea>
439+
</div>
440+
</div>
441+
</div>
442+
443+
<div class="" ng-show="index.m < index.n && index.m > 1">
444+
<div class="large-12 medium-12">
445+
<label>
446+
<span translate>Who signs:</span>
447+
</label>
448+
<cosigners></cosigners>
449+
</div>
450+
</div>
451+
452+
<div class="row" ng-show="!home.onGoingProcess">
453+
<div class="large-6 medium-6 small-6 columns" ng-show="!home.blockUx && (home.lockAddress || home.lockAmount)">
454+
<a ng-click="home.resetForm(sendPaymentForm)" class="button expand outline dark-gray round" translate>Cancel</a>
455+
</div>
456+
<div class="columns" ng-class="{'small-6 medium-6 large-6':(home.lockAddress || home.lockAmount)}">
457+
<button type="submit" class="button black round expand" ng-disabled="home.current_payment_key || sendPaymentForm.$invalid || home.blockUx || index.isOffline || !index.isEnoughSignersSelected()"
458+
ng-style="{'background-color':index.backgroundColor}" translate>
459+
Send
460+
</button>
461+
</div>
462+
</div>
463+
</div>
464+
465+
<div class="mtab" ng-class="{'active': mtab == 2}">
466+
<br>
467+
<p translate>Click this button to create payment and share it via private message in chat apps</p>
468+
<button type="submit" class="button black round expand" ng-disabled="home.current_payment_key || home.blockUx || index.isOffline || !index.isEnoughSignersSelected() || sendPaymentForm.amount.$invalid" translate ng-style="{'background-color':index.backgroundColor}">Share via message</button>
469+
</div>
440470
</form>
441471
</div>
442472
</div>

0 commit comments

Comments
 (0)