@@ -112,18 +103,12 @@
Maintained by
-
+
- {{
+ {{
hashtag.metadata.maintainer.username
- }}
+ }}
@@ -154,6 +139,9 @@
_closeInfo() {
this.dispatchEvent(new CustomEvent("close"));
}
+ _toReputation() {
+ this.dispatchEvent(new CustomEvent("reputation"));
+ }
/**
* converts the fee from gwei to swt amount
*/
@@ -166,4 +154,4 @@
MyDisplaySimpledealAbout
);
-
+
\ No newline at end of file
diff --git a/src/displays/display-simpledeal-title.html b/src/displays/display-simpledeal-title.html
index 2af0018e..9ea5357e 100644
--- a/src/displays/display-simpledeal-title.html
+++ b/src/displays/display-simpledeal-title.html
@@ -4,10 +4,7 @@
This code may only be used under the license found at https://github.com/swarmcity/license
-->
-
+
@@ -88,25 +85,18 @@
border-bottom: 2px dotted var(--sc-white);
color: var(--sc-white);
}
+
display-simpledeal-about {
margin-top: -2px;
position: fixed;
z-index: 32;
}
-
-
+
-
+
@@ -162,6 +152,16 @@
_close() {
this._toggle();
}
+ _handleOnReputation() {
+
+ this.dispatchEvent(new CustomEvent("reputation", {
+ detail: {
+ address: this.hashtag.maintainerAddress,
+ avatarHash: this.hashtag.metadata.maintainer.avatar,
+ username: this.hashtag.metadata.maintainer.username,
+ }
+ }));
+ }
_toggle() {
this.showDetails = !this.showDetails;
if (this.showDetails) {
@@ -213,4 +213,4 @@
window.customElements.define(MySimpledealTitle.is, MySimpledealTitle);
-
+
\ No newline at end of file
diff --git a/src/displays/display-unlock.html b/src/displays/display-unlock.html
index 430bf2f9..69dffe20 100644
--- a/src/displays/display-unlock.html
+++ b/src/displays/display-unlock.html
@@ -402,7 +402,7 @@
.then((qrCodePublicKey) => {
this.qrCodePublicKey = qrCodePublicKey;
});
- const address = this.publicKey;
+ const address = this.publicKey.toLowerCase();
this.confirmed = false;
this.$.wallet.derivePublicKey(privateKey)
.then( publicKey => {
diff --git a/src/pages/chat/chat-message.html b/src/pages/chat/chat-message.html
index f936b469..9eb788b0 100644
--- a/src/pages/chat/chat-message.html
+++ b/src/pages/chat/chat-message.html
@@ -3,14 +3,8 @@
Copyright (c) 2018 Swarm City
This code may only be used under the license found at https://github.com/swarmcity/license
-->
-
-
+
+
@@ -21,6 +15,7 @@
:host {
display: block;
}
+
.container {
@apply --layout-horizontal;
@apply --layout-end-justified;
@@ -50,7 +45,26 @@
color: black;
font-weight: 300;
max-width: 65vw;
- overflow-x: scroll;
+ overflow-x: auto;
+ /* These are technically the same, but use both */
+ overflow-wrap: break-word;
+ word-wrap: break-word;
+
+ -ms-word-break: break-all;
+ /* This is the dangerous one in WebKit, as it breaks things wherever */
+ word-break: break-all;
+ /* Instead use this non-standard one: */
+ word-break: break-word;
+
+ /* Adds a hyphen where the word breaks, if supported (No Blink) */
+ -ms-hyphens: auto;
+ -moz-hyphens: auto;
+ -webkit-hyphens: auto;
+ -webkit-user-select: text;
+ -moz-user-select: text;
+ -ms-user-select: text;
+ user-select: text;
+ hyphens: auto;
}
.avatar-chat {
@@ -65,13 +79,8 @@
[[_formatDate(message.time)]]
[[message.message]]
-
+
@@ -108,4 +117,4 @@
}
window.customElements.define(MyChatMessage.is, MyChatMessage);
-
+
\ No newline at end of file
diff --git a/src/pages/chat/chat-my-message.html b/src/pages/chat/chat-my-message.html
index 9c2a8c05..512b6e55 100644
--- a/src/pages/chat/chat-my-message.html
+++ b/src/pages/chat/chat-my-message.html
@@ -3,14 +3,9 @@
Copyright (c) 2018 Swarm City
This code may only be used under the license found at https://github.com/swarmcity/license
-->
-
-
+
+
+
@@ -21,6 +16,7 @@
:host {
display: block;
}
+
.container {
@apply --layout-horizontal;
@apply --layout-start-justified;
@@ -52,6 +48,26 @@
font-weight: 300;
max-width: 65vw;
overflow-x: scroll;
+ overflow-x: auto;
+ /* These are technically the same, but use both */
+ overflow-wrap: break-word;
+ word-wrap: break-word;
+
+ -ms-word-break: break-all;
+ /* This is the dangerous one in WebKit, as it breaks things wherever */
+ word-break: break-all;
+ /* Instead use this non-standard one: */
+ word-break: break-word;
+
+ /* Adds a hyphen where the word breaks, if supported (No Blink) */
+ -ms-hyphens: auto;
+ -moz-hyphens: auto;
+ -webkit-hyphens: auto;
+ -webkit-user-select: text;
+ -moz-user-select: text;
+ -ms-user-select: text;
+ user-select: text;
+ hyphens: auto;
}
.avatar-chat {
@@ -62,13 +78,8 @@
}
-
+
[[_formatDate(message.time)]]
@@ -109,4 +120,4 @@
}
window.customElements.define(MyChatMyMessage.is, MyChatMyMessage);
-
+
\ No newline at end of file
diff --git a/src/pages/detail/detail-router.html b/src/pages/detail/detail-router.html
index 8a97922a..35bdfd6c 100644
--- a/src/pages/detail/detail-router.html
+++ b/src/pages/detail/detail-router.html
@@ -22,8 +22,9 @@
-
-
+
+
@@ -126,6 +127,10 @@
sessionStorage.setItem('origin', this.route.path);
this.set('route.path', 'my-wallet/');
}
+ _handleOnNotifications() {
+ sessionStorage.setItem('origin', this.route.path);
+ this.set('route.path', `notifications/${this.address}`);
+ }
_handleOnProfile() {
sessionStorage.setItem('origin', this.route.path);
this.set('route.path', 'my-profile');
diff --git a/src/pages/detail/detail-simpledeal-main.html b/src/pages/detail/detail-simpledeal-main.html
index 7861ab42..ffd78dc6 100644
--- a/src/pages/detail/detail-simpledeal-main.html
+++ b/src/pages/detail/detail-simpledeal-main.html
@@ -269,14 +269,14 @@
placeholder="../images/defaultavatar.png" on-tap="_toUserReputation">
-
+
[[item.seekerUsername]]
·
[[item.seekerRep]]
-
+
[[item.seekerUsername]]
·
[[item.seekerRep]]
@@ -368,8 +368,8 @@
* @param {Object} hashtagItem the hashtagItem (request)
* @return {Boolean} true when user owns this request
*/
- _isSeeker(item) {
- return (item && item.seekerAddress && this.address && item.seekerAddress == this.address);
+ _isSeeker(item, address) {
+ return (item && item.seekerAddress && address && item.seekerAddress == address);
}
makeRequest(method, url, done) {
diff --git a/src/pages/detail/detail-simpledeal-replies.html b/src/pages/detail/detail-simpledeal-replies.html
index 623fbbb3..3da5bc83 100644
--- a/src/pages/detail/detail-simpledeal-replies.html
+++ b/src/pages/detail/detail-simpledeal-replies.html
@@ -207,7 +207,7 @@
[[reply.username]] · [[reply.providerRep]] SWR
-
+
@@ -286,8 +286,8 @@
* @param {Object} item the item (request)
* @return {Boolean} true when user owns this request
*/
- _isSeeker() {
- return (this.item.seekerAddress || {}) == this.address;
+ _isSeeker(item, address) {
+ return (item.seekerAddress || {}) == address;
}
/**
* Here we check if there are any replies
diff --git a/src/pages/detail/detail-simpledeal.html b/src/pages/detail/detail-simpledeal.html
index ed052313..84a109a9 100644
--- a/src/pages/detail/detail-simpledeal.html
+++ b/src/pages/detail/detail-simpledeal.html
@@ -213,16 +213,17 @@
.then(receipt => {
console.log("Successfully transacted reply, receipt:", receipt);
const storage = JSON.parse(localStorage.getItem('SwarmCity'));
+ const replierAddress = replier.address ? replier.address.toLowerCase() : replier.address;
this.dispatch({
type: "UPDATE_ITEM",
hashtagAddress: hashtag.address,
itemHash: this.item.itemHash,
data: {
replies: {
- [replier.address]: {
+ [replierAddress]: {
username: replier.username,
avatarHash: storage.user.avatarHash,
- replierAddress: replier.address,
+ replierAddress,
message: reply.message
}
}
@@ -297,8 +298,9 @@
}
_showReplyButton(item) {
if (
- (item && item.seekerAddress || {}) == this.address ||
- (item && item.replies && item.replies[this.address])
+ this.address &&
+ (item && (item.seekerAddress || '').toLowerCase()) == (this.address || '').toLowerCase() ||
+ (item && item.replies && this.address && item.replies[this.address.toLowerCase()])
) {
return false;
} else {
@@ -442,7 +444,8 @@
accessKeys.push(encryptedSeeker);
this.$.socket._subscribeToChat({
accessKeys,
- itemHash: this.item.itemHash
+ itemHash: this.item.itemHash,
+ hashtagAddress: this.hashtag.address
})
.then(() => {
console.log(
@@ -730,7 +733,8 @@
let accessKeys = [res]
this.$.socket._subscribeToChat({
accessKeys,
- itemHash: this.item.itemHash
+ itemHash: this.item.itemHash,
+ hashtagAddress: this.hashtag.address
})
.then(() => {
this.$.socket
diff --git a/src/pages/hashtag-list/hashtag-list-router.html b/src/pages/hashtag-list/hashtag-list-router.html
index efa3bad2..26fb7c9f 100644
--- a/src/pages/hashtag-list/hashtag-list-router.html
+++ b/src/pages/hashtag-list/hashtag-list-router.html
@@ -58,7 +58,7 @@
-
+
@@ -85,6 +85,10 @@
type: Object,
statePath: AppStore.selectors.hashtagList,
},
+ address: {
+ type: Object,
+ statePath: AppStore.selectors.address,
+ },
path: {
type: String,
observer: '_path',
@@ -124,6 +128,10 @@
sessionStorage.setItem('origin', this.route.path);
this.set('route.path', 'my-wallet');
}
+ _handleOnNotifications() {
+ sessionStorage.setItem('origin', this.route.path);
+ this.set('route.path', `notifications/${this.address}`);
+ }
_handleOnProfile() {
sessionStorage.setItem('origin', this.route.path);
this.set('route.path', 'my-profile');
diff --git a/src/pages/hashtag/hashtag-router.html b/src/pages/hashtag/hashtag-router.html
index e9cb94e5..303e84d5 100644
--- a/src/pages/hashtag/hashtag-router.html
+++ b/src/pages/hashtag/hashtag-router.html
@@ -25,8 +25,9 @@
-
-
+
+
@@ -85,6 +86,10 @@
console.log('location denied');
this.status = 'hashtag';
}
+ _handleOnReputation(e) {
+ sessionStorage.setItem('origin', this.route.path);
+ this.set('route.path', `reputation/${e.detail.address}/${e.detail.avatarHash}/${e.detail.username}`)
+ }
_handleOnDetail(e) {
this.set('route.path', `/detail/${this.hashtag.address}/${e.detail}`);
}
@@ -102,6 +107,10 @@
sessionStorage.setItem('origin', this.route.path);
this.set('route.path', 'my-wallet');
}
+ _handleOnNotifications() {
+ sessionStorage.setItem('origin', this.route.path);
+ this.set('route.path', `notifications/${this.address}`);
+ }
_handleOnProfile() {
sessionStorage.setItem('origin', this.route.path);
this.set('route.path', 'my-profile');
diff --git a/src/pages/hashtag/hashtag-simpledeal-create.html b/src/pages/hashtag/hashtag-simpledeal-create.html
index 5c840686..5e24591b 100644
--- a/src/pages/hashtag/hashtag-simpledeal-create.html
+++ b/src/pages/hashtag/hashtag-simpledeal-create.html
@@ -18,7 +18,7 @@
position: fixed;
bottom: 10vh;
right: 10vw;
- z-index: 12;
+ z-index: 30;
cursor: pointer;
box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.35);
-webkit-box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.35);
diff --git a/src/pages/hashtag/hashtag-simpledeal-item.html b/src/pages/hashtag/hashtag-simpledeal-item.html
index 91b160e0..c2968f45 100644
--- a/src/pages/hashtag/hashtag-simpledeal-item.html
+++ b/src/pages/hashtag/hashtag-simpledeal-item.html
@@ -299,7 +299,12 @@
}
}
_replycount(item) {
- return item && item.numberOfReplies ? item.numberOfReplies : 0;
+ if (!item) return 0
+ let count = 0;
+ if (item.replies) count = Object.keys(item.replies).length
+ if (item.repliers && Object.keys(item.repliers).length > count) count = Object.keys(item.repliers).length;
+ if (item.numberOfReplies > count) return item.numberOfReplies;
+ return count;
}
/**
* routes to the corresponding item detail page
diff --git a/src/pages/hashtag/hashtag-simpledeal.html b/src/pages/hashtag/hashtag-simpledeal.html
index c6c2f77e..d3fce72e 100644
--- a/src/pages/hashtag/hashtag-simpledeal.html
+++ b/src/pages/hashtag/hashtag-simpledeal.html
@@ -120,7 +120,7 @@
-
+
@@ -222,6 +222,7 @@
if (this.address) {
if (item.seekerAddress == this.address) involved = true;
if (item.providerAddress == this.address) involved = true;
+ if (item && item.repliers && this.address in item.repliers) involved = true;
// If you're maintainer && item is in conflict
if ((this.hashtag &&
this.hashtag.metadata &&
diff --git a/src/pages/my-wallet/my-wallet-history.html b/src/pages/my-wallet/my-wallet-history.html
index 2a6c36b5..36fe0da9 100644
--- a/src/pages/my-wallet/my-wallet-history.html
+++ b/src/pages/my-wallet/my-wallet-history.html
@@ -375,8 +375,14 @@
* @param {Object} event element clicked
*/
_toEtherscanTx(event) {
- window.open('https://kovan.etherscan.io/tx/'
- + event.model.__data.item.transactionHash, '_blank');
+ if (this.kovan) {
+ window.open('https://kovan.etherscan.io/tx/'
+ + event.model.__data.item.transactionHash, '_blank');
+ }
+ if (this.mainnet) {
+ window.open('https://etherscan.io/tx/'
+ + event.model.__data.item.transactionHash, '_blank');
+ }
}
_toEtherscanAddress() {
diff --git a/src/pages/my-wallet/my-wallet-router.html b/src/pages/my-wallet/my-wallet-router.html
index 6a2c8520..89c9017d 100644
--- a/src/pages/my-wallet/my-wallet-router.html
+++ b/src/pages/my-wallet/my-wallet-router.html
@@ -27,12 +27,12 @@
+ avatar="[[avatar]]" confirmed-tx="[[txsKovan]]" on-close="_handleOnClose">
+ avatar="[[avatar]]" confirmed-tx="[[txsMainnet]]" on-close="_handleOnClose">
@@ -58,13 +58,13 @@
type: Object,
statePath: AppStore.selectors.balance,
},
- txCash: {
+ txsKovan: {
type: Array,
- statePath: AppStore.selectors.confirmedTx,
+ statePath: AppStore.selectors.txsKovan,
},
- txReserves: {
+ txsMainnet: {
type: Array,
- statePath: AppStore.selectors.confirmedTx,
+ statePath: AppStore.selectors.txsMainnet,
},
language: {
type: Array,
diff --git a/src/pages/new-request/new-request-create.html b/src/pages/new-request/new-request-create.html
index 03e4f3ac..61e155ed 100644
--- a/src/pages/new-request/new-request-create.html
+++ b/src/pages/new-request/new-request-create.html
@@ -36,6 +36,11 @@
width: 100%;
}
+ .container[wide-layout] {
+ margin-top: 188px;
+
+ }
+
.requestcontainer {
background-color: var(--sc-white);
margin: 0px 10px 50px 10px;
diff --git a/src/pages/new-request/new-request-router.html b/src/pages/new-request/new-request-router.html
index bce7f3e7..4192ad42 100644
--- a/src/pages/new-request/new-request-router.html
+++ b/src/pages/new-request/new-request-router.html
@@ -29,7 +29,7 @@
+ on-location="_handleOnLocation" on-reputation="_handleOnReputation">
@@ -167,6 +167,10 @@
_handleOnClose() {
this.set('route.path', `hashtag/${this.route.path.split('/')[2]}`);
}
+ _handleOnReputation(e) {
+ sessionStorage.setItem('origin', this.route.path);
+ this.set('route.path', `reputation/${e.detail.address}/${e.detail.avatarHash}/${e.detail.username}`)
+ }
_handleOnConfirm() {
this.$.unlock._getPrivateKey()
.then((res) => {
diff --git a/src/pages/notifications/notifications-notification-archive.html b/src/pages/notifications/notifications-notification-archive.html
new file mode 100644
index 00000000..b75acb44
--- /dev/null
+++ b/src/pages/notifications/notifications-notification-archive.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[[date]]
+
[[message]]
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/notifications/notifications-notification.html b/src/pages/notifications/notifications-notification.html
new file mode 100644
index 00000000..76746835
--- /dev/null
+++ b/src/pages/notifications/notifications-notification.html
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[[date]]
+
[[message]]
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/notifications/notifications-repeater.html b/src/pages/notifications/notifications-repeater.html
new file mode 100644
index 00000000..98300412
--- /dev/null
+++ b/src/pages/notifications/notifications-repeater.html
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/notifications/notifications-router.html b/src/pages/notifications/notifications-router.html
new file mode 100644
index 00000000..3778c6be
--- /dev/null
+++ b/src/pages/notifications/notifications-router.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/page-make-backup-profile.html b/src/pages/page-make-backup-profile.html
index f0614ccc..8d819f48 100644
--- a/src/pages/page-make-backup-profile.html
+++ b/src/pages/page-make-backup-profile.html
@@ -144,11 +144,6 @@
border-bottom: 2px dotted var(--sc-blue);
}
- .blur {
- @apply --unlock-blur;
- }
-
-
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (min--moz-device-pixel-ratio: 1.5),
only screen and (min-resolution: 240dpi) {
@@ -191,18 +186,6 @@
-
-
-
-
-
-
-
+
@@ -12,6 +13,7 @@
+
\ No newline at end of file
diff --git a/src/redux/sagas/hashtag-saga.html b/src/redux/sagas/hashtag-saga.html
index 3c98305f..5c306eb1 100644
--- a/src/redux/sagas/hashtag-saga.html
+++ b/src/redux/sagas/hashtag-saga.html
@@ -1,297 +1,441 @@
-
-
\ No newline at end of file
diff --git a/src/redux/sagas/hashtagList-saga.html b/src/redux/sagas/hashtagList-saga.html
index 82f46c84..cd95ba1f 100644
--- a/src/redux/sagas/hashtagList-saga.html
+++ b/src/redux/sagas/hashtagList-saga.html
@@ -74,9 +74,11 @@
// visitedHashtags is an object
const visitedHashtags = yield select(selectors.visitedHashtags)
const uniqueHashtags = visitedHashtags
- hashtagList.forEach(hashtag => {
- uniqueHashtags[hashtag.hashtagAddress] = hashtag
- })
+ hashtagList
+ .filter(hashtag => hashtag.hashtagShown)
+ .forEach(hashtag => {
+ uniqueHashtags[hashtag.hashtagAddress] = hashtag
+ })
const uniqueHashtagList = Object.values(uniqueHashtags)
// Get reputation for all hashtags in the list
diff --git a/src/redux/sagas/item-saga.html b/src/redux/sagas/item-saga.html
index c5833edb..e8b0633d 100644
--- a/src/redux/sagas/item-saga.html
+++ b/src/redux/sagas/item-saga.html
@@ -1,5 +1,3 @@
-
-
\ No newline at end of file
diff --git a/src/redux/sagas/notifications-saga.html b/src/redux/sagas/notifications-saga.html
new file mode 100644
index 00000000..bc7421f6
--- /dev/null
+++ b/src/redux/sagas/notifications-saga.html
@@ -0,0 +1,661 @@
+
\ No newline at end of file
diff --git a/src/redux/sagas/setup.html b/src/redux/sagas/setup.html
index a8af1903..4257ef0b 100644
--- a/src/redux/sagas/setup.html
+++ b/src/redux/sagas/setup.html
@@ -6,6 +6,8 @@
+
+