├── src ├── assets │ ├── .gitkeep │ ├── deso │ │ ├── favicon.png │ │ ├── coin-deso.png │ │ ├── logo-192.png │ │ ├── logo-512.png │ │ ├── logo-cropped.png │ │ ├── camelcase_logo.png │ │ └── camelcase_logo_og.jpg │ ├── bitclout │ │ ├── favicon.png │ │ ├── logo-192.png │ │ ├── logo-512.png │ │ ├── logo-cropped.png │ │ ├── camelcase_logo.png │ │ └── camelcase_logo_og.jpg │ ├── img │ │ ├── default_profile_pic.png │ │ └── blockchain-logo-cropped.png │ └── app.webmanifest ├── app │ ├── feed │ │ ├── feed.component.sass │ │ ├── feed-post │ │ │ ├── feed-post.component.sass │ │ │ └── feed-post.component.spec.ts │ │ ├── feed-create-post │ │ │ ├── feed-create-post.component.sass │ │ │ └── feed-create-post.component.spec.ts │ │ ├── feed-post-dropdown │ │ │ └── feed-post-dropdown.component.sass │ │ ├── feed-post-icon-row │ │ │ ├── feed-post-icon-row.component.sass │ │ │ ├── feed-post-icon-row.component.scss │ │ │ └── feed-post-icon-row.component.spec.ts │ │ ├── feed-post-image-modal │ │ │ ├── feed-post-image-modal.component.scss │ │ │ ├── feed-post-image-modal.component.html │ │ │ ├── feed-post-image-modal.component.ts │ │ │ └── feed-post-image-modal.component.spec.ts │ │ └── feed.component.spec.ts │ ├── page │ │ ├── page.component.scss │ │ ├── page.component.spec.ts │ │ └── page.component.ts │ ├── admin │ │ ├── admin.component.scss │ │ ├── admin-jumio │ │ │ ├── admin-jumio.component.scss │ │ │ └── admin-jumio.component.spec.ts │ │ ├── admin-wyre │ │ │ ├── admin-wyre.component.scss │ │ │ └── admin-wyre.component.spec.ts │ │ ├── admin-node-fees │ │ │ ├── admin-node-fees.component.scss │ │ │ └── admin-node-fees.component.spec.ts │ │ └── admin.component.spec.ts │ ├── sign-up │ │ ├── sign-up.component.scss │ │ ├── sign-up-get-starter-deso │ │ │ ├── sign-up-get-starter-deso.component.scss │ │ │ └── sign-up-get-starter-deso.component.spec.ts │ │ └── sign-up.component.spec.ts │ ├── left-bar │ │ ├── left-bar.component.sass │ │ ├── left-bar-button │ │ │ ├── left-bar-button.component.scss │ │ │ ├── left-bar-button.component.spec.ts │ │ │ └── left-bar-button.component.ts │ │ └── left-bar.component.spec.ts │ ├── settings │ │ ├── settings.component.scss │ │ └── settings.component.spec.ts │ ├── tos-page │ │ ├── tos-page.component.scss │ │ ├── tos-page.component.html │ │ ├── tos-page.component.ts │ │ └── tos-page.component.spec.ts │ ├── admin-page │ │ ├── admin-page.component.scss │ │ ├── admin-page.component.ts │ │ ├── admin-page.component.html │ │ └── admin-page.component.spec.ts │ ├── browse-page │ │ ├── browse-page.component.sass │ │ └── browse-page.component.spec.ts │ ├── jumio-status │ │ ├── jumio-status.component.scss │ │ ├── jumio-status.component.ts │ │ └── jumio-status.component.spec.ts │ ├── network-info │ │ ├── network-info.component.scss │ │ └── network-info.component.spec.ts │ ├── search-bar │ │ ├── search-bar.component.scss │ │ └── search-bar.component.spec.ts │ ├── tab-selector │ │ ├── tab-selector.component.scss │ │ ├── tab-selector.component.spec.ts │ │ ├── tab-selector.component.ts │ │ └── tab-selector.component.html │ ├── trends-page │ │ ├── trends-page.component.scss │ │ ├── trends │ │ │ ├── trends.component.scss │ │ │ └── trends.component.spec.ts │ │ ├── trends-page.component.html │ │ ├── trends-page.component.ts │ │ └── trends-page.component.spec.ts │ ├── verify-email │ │ ├── verify-email.component.html │ │ ├── verify-email.component.scss │ │ └── verify-email.component.spec.ts │ ├── buy-deso-page │ │ ├── buy-deso-page.component.scss │ │ ├── buy-deso │ │ │ ├── buy-deso.component.scss │ │ │ └── buy-deso.component.spec.ts │ │ ├── buy-deso-usd │ │ │ ├── buy-deso-usd.component.scss │ │ │ └── buy-deso-usd.component.spec.ts │ │ ├── buy-deso-logged-out │ │ │ ├── buy-deso-logged-out.component.scss │ │ │ ├── buy-deso-logged-out.component.ts │ │ │ └── buy-deso-logged-out.component.spec.ts │ │ ├── buy-deso-heroswap │ │ │ ├── buy-deso-heroswap.component.scss │ │ │ ├── buy-deso-heroswap.component.html │ │ │ └── buy-deso-heroswap.component.spec.ts │ │ ├── buy-deso-page.component.html │ │ ├── buy-deso-page.component.ts │ │ └── buy-deso-page.component.spec.ts │ ├── comment-modal │ │ ├── comment-modal.component.scss │ │ ├── comment-modal.component.ts │ │ └── comment-modal.component.spec.ts │ ├── follow-button │ │ ├── follow-button.component.scss │ │ └── follow-button.component.spec.ts │ ├── messages-page │ │ ├── message │ │ │ ├── message.component.scss │ │ │ ├── message.component.ts │ │ │ └── message.component.spec.ts │ │ ├── messages-page.component.scss │ │ ├── messages-inbox │ │ │ ├── messages-inbox.component.scss │ │ │ └── messages-inbox.component.spec.ts │ │ ├── messages-thread │ │ │ ├── messages-thread.component.scss │ │ │ ├── messages-thread.component.ts │ │ │ └── messages-thread.component.spec.ts │ │ ├── messages-thread-view │ │ │ ├── messages-thread-view.component.scss │ │ │ └── messages-thread-view.component.spec.ts │ │ └── messages-page.component.spec.ts │ ├── nft-post-page │ │ ├── nft-post-page.component.scss │ │ ├── nft-post │ │ │ ├── nft-post.component.scss │ │ │ └── nft-post.component.spec.ts │ │ ├── nft-post-page.component.html │ │ ├── nft-post-page.component.ts │ │ └── nft-post-page.component.spec.ts │ ├── not-found-page │ │ ├── not-found-page.component.scss │ │ ├── not-found │ │ │ ├── not-found.component.scss │ │ │ ├── not-found.component.ts │ │ │ ├── not-found.component.spec.ts │ │ │ └── not-found.component.html │ │ ├── not-found-page.component.html │ │ ├── not-found-page.component.ts │ │ └── not-found-page.component.spec.ts │ ├── settings-page │ │ ├── settings-page.component.scss │ │ ├── settings-page.component.html │ │ ├── settings-page.component.ts │ │ └── settings-page.component.spec.ts │ ├── transfer-deso │ │ ├── transfer-deso.component.scss │ │ └── transfer-deso.component.spec.ts │ ├── wallet │ │ └── wallet-page │ │ │ ├── wallet-page.component.scss │ │ │ ├── wallet-page.component.html │ │ │ ├── wallet-page.component.ts │ │ │ └── wallet-page.component.spec.ts │ ├── bottom-bar-mobile │ │ ├── bottom-bar-mobile.component.scss │ │ ├── bottom-bar-mobile-tab │ │ │ ├── bottom-bar-mobile-tab.component.scss │ │ │ ├── bottom-bar-mobile-tab.component.html │ │ │ ├── bottom-bar-mobile-tab.component.ts │ │ │ └── bottom-bar-mobile-tab.component.spec.ts │ │ ├── bottom-bar-mobile.component.ts │ │ └── bottom-bar-mobile.component.spec.ts │ ├── countdown-timer │ │ ├── countdown-timer.component.scss │ │ ├── countdown-timer.component.spec.ts │ │ └── countdown-timer.component.html │ ├── create-post-page │ │ ├── create-post-page.component.scss │ │ ├── create-post-form │ │ │ ├── create-post-form.component.scss │ │ │ └── create-post-form.component.spec.ts │ │ ├── create-post-page.component.html │ │ ├── create-post-page.component.ts │ │ └── create-post-page.component.spec.ts │ ├── left-bar-mobile │ │ ├── left-bar-mobile.component.scss │ │ ├── left-bar-mobile.component.html │ │ └── left-bar-mobile.component.spec.ts │ ├── post-thread-page │ │ ├── post-thread-page.component.scss │ │ ├── post-thread │ │ │ ├── post-thread.component.scss │ │ │ └── post-thread.component.spec.ts │ │ ├── post-thread-page.component.html │ │ ├── post-thread-page.component.ts │ │ └── post-thread-page.component.spec.ts │ ├── right-bar-signup │ │ ├── right-bar-signup.component.scss │ │ ├── right-bar-signup.component.ts │ │ ├── right-bar-signup.component.html │ │ └── right-bar-signup.component.spec.ts │ ├── terms-of-service │ │ ├── terms-of-service.component.sass │ │ ├── terms-of-service.component.spec.ts │ │ └── terms-of-service.component.ts │ ├── dao-coins │ │ └── dao-coins-page │ │ │ ├── dao-coins-page.component.scss │ │ │ ├── dao-coins-page.component.html │ │ │ ├── dao-coins-page.component.ts │ │ │ └── dao-coins-page.component.spec.ts │ ├── diamond-posts-page │ │ ├── diamond-posts-page.component.sass │ │ ├── diamond-posts │ │ │ ├── diamond-posts.component.sass │ │ │ └── diamond-posts.component.spec.ts │ │ ├── diamond-posts-page.component.html │ │ ├── diamond-posts-page.component.ts │ │ └── diamond-posts-page.component.spec.ts │ ├── manage-follows-page │ │ ├── manage-follows-page.component.scss │ │ ├── manage-follows │ │ │ ├── manage-follows.component.scss │ │ │ └── manage-follows.component.spec.ts │ │ ├── manage-follows-page.component.html │ │ ├── manage-follows-page.component.ts │ │ └── manage-follows-page.component.spec.ts │ ├── notifications-page │ │ ├── notifications-page.component.scss │ │ ├── notifications-list │ │ │ ├── notifications-list.component.scss │ │ │ └── notifications-list.component.spec.ts │ │ ├── notifications-page.component.html │ │ ├── notifications-page.component.ts │ │ └── notifications-page.component.spec.ts │ ├── right-bar-creators │ │ ├── right-bar-creators.component.sass │ │ ├── right-bar-creators-leaderboard │ │ │ ├── right-bar-creators-leaderboard.component.scss │ │ │ └── right-bar-creators-leaderboard.component.spec.ts │ │ └── right-bar-creators.component.spec.ts │ ├── trade-creator-page │ │ ├── trade-creator-page.component.scss │ │ ├── trade-creator │ │ │ ├── trade-creator.component.scss │ │ │ └── trade-creator.component.spec.ts │ │ ├── trade-creator-form │ │ │ ├── trade-creator-form.component.scss │ │ │ └── trade-creator-form.component.spec.ts │ │ ├── trade-creator-table │ │ │ ├── trade-creator-table.component.scss │ │ │ └── trade-creator-table.component.spec.ts │ │ ├── trade-creator-complete │ │ │ ├── trade-creator-complete.component.scss │ │ │ └── trade-creator-complete.component.spec.ts │ │ ├── trade-creator-preview │ │ │ ├── trade-creator-preview.component.scss │ │ │ └── trade-creator-preview.component.spec.ts │ │ ├── trade-creator-logged-out │ │ │ ├── trade-creator-logged-out.component.scss │ │ │ ├── trade-creator-logged-out.component.ts │ │ │ └── trade-creator-logged-out.component.spec.ts │ │ ├── trade-creator-page.component.html │ │ ├── trade-creator-page.component.ts │ │ └── trade-creator-page.component.spec.ts │ ├── transfer-deso-page │ │ ├── transfer-deso-page.component.scss │ │ ├── transfer-deso-page.component.html │ │ ├── transfer-deso-page.component.ts │ │ └── transfer-deso-page.component.spec.ts │ ├── update-profile-page │ │ ├── update-profile-page.component.scss │ │ ├── update-profile │ │ │ ├── update-profile.component.scss │ │ │ └── update-profile.component.spec.ts │ │ ├── update-profile-get-starter-deso │ │ │ ├── update-profile-get-starter-deso.component.scss │ │ │ ├── update-profile-get-starter-deso.component.spec.ts │ │ │ └── update-profile-get-starter-deso.component.html │ │ ├── update-profile-page.component.html │ │ ├── update-profile-page.component.ts │ │ └── update-profile-page.component.spec.ts │ ├── creator-profile-page │ │ ├── creator-profile-page.component.scss │ │ ├── creator-diamonds │ │ │ ├── creator-diamonds.component.scss │ │ │ └── creator-diamonds.component.spec.ts │ │ ├── creator-profile-nfts │ │ │ ├── creator-profile-nfts.component.scss │ │ │ └── creator-profile-nfts.component.spec.ts │ │ ├── creator-profile-posts │ │ │ ├── creator-profile-posts.component.scss │ │ │ └── creator-profile-posts.component.spec.ts │ │ ├── creator-profile-details │ │ │ ├── creator-profile-details.component.scss │ │ │ └── creator-profile-details.component.spec.ts │ │ ├── creator-profile-hodlers │ │ │ ├── creator-profile-hodlers.component.scss │ │ │ └── creator-profile-hodlers.component.spec.ts │ │ ├── creator-profile-top-card │ │ │ ├── creator-profile-top-card.component.scss │ │ │ └── creator-profile-top-card.component.spec.ts │ │ ├── creator-profile-page.component.html │ │ ├── creator-profile-page.component.ts │ │ └── creator-profile-page.component.spec.ts │ ├── get-starter-deso-page │ │ ├── get-starter-deso-page.component.scss │ │ ├── get-starter-deso │ │ │ ├── get-starter-deso.component.scss │ │ │ ├── get-starter-deso.component.ts │ │ │ ├── get-starter-deso.component.html │ │ │ └── get-starter-deso.component.spec.ts │ │ ├── get-starter-deso-page.component.html │ │ ├── get-starter-deso-page.component.ts │ │ └── get-starter-deso-page.component.spec.ts │ ├── change-account-selector │ │ ├── change-account-selector.component.scss │ │ └── change-account-selector.component.spec.ts │ ├── tutorial │ │ ├── wallet-tutorial-page │ │ │ ├── wallet-tutorial-page.component.scss │ │ │ ├── wallet-tutorial-page.component.html │ │ │ ├── wallet-tutorial-page.component.ts │ │ │ └── wallet-tutorial-page.component.spec.ts │ │ ├── diamond-tutorial-page │ │ │ ├── diamond-tutorial-page.component.scss │ │ │ ├── diamond-tutorial │ │ │ │ ├── diamond-tutorial.component.scss │ │ │ │ └── diamond-tutorial.component.spec.ts │ │ │ ├── diamond-tutorial-page.component.html │ │ │ ├── diamond-tutorial-page.component.ts │ │ │ └── diamond-tutorial-page.component.spec.ts │ │ ├── create-post-tutorial-page │ │ │ ├── create-post-tutorial-page.component.scss │ │ │ ├── create-post-tutorial-page.component.html │ │ │ ├── create-post-tutorial-page.component.ts │ │ │ └── create-post-tutorial-page.component.spec.ts │ │ ├── create-profile-tutorial-page │ │ │ ├── create-profile-tutorial-page.component.scss │ │ │ ├── create-profile-tutorial-page.component.html │ │ │ ├── create-profile-tutorial-page.component.ts │ │ │ └── create-profile-tutorial-page.component.spec.ts │ │ ├── buy-creator-coins-tutorial-page │ │ │ ├── buy-creator-coins-tutorial-page.component.scss │ │ │ ├── buy-creator-coins-tutorial │ │ │ │ ├── buy-creator-coins-tutorial.component.scss │ │ │ │ └── buy-creator-coins-tutorial.component.spec.ts │ │ │ ├── buy-creator-coins-confirm-tutorial │ │ │ │ ├── buy-creator-coins-confirm-tutorial.component.scss │ │ │ │ ├── buy-creator-coins-confirm-tutorial.component.html │ │ │ │ └── buy-creator-coins-confirm-tutorial.component.spec.ts │ │ │ ├── buy-creator-coins-tutorial-page.component.html │ │ │ ├── buy-creator-coins-tutorial-page.component.ts │ │ │ └── buy-creator-coins-tutorial-page.component.spec.ts │ │ └── sell-creator-coins-tutorial-page │ │ │ └── sell-creator-coins-tutorial │ │ │ ├── sell-creator-coins-tutorial.component.scss │ │ │ ├── sell-creator-coins-tutorial.component.html │ │ │ └── sell-creator-coins-tutorial.component.spec.ts │ ├── supply-monitoring-stats-page │ │ ├── supply-monitoring-stats-page.component.scss │ │ ├── supply-monitoring-stats │ │ │ ├── supply-monitoring-stats.component.scss │ │ │ └── supply-monitoring-stats.component.spec.ts │ │ ├── supply-monitoring-stats-page.component.html │ │ ├── supply-monitoring-stats-page.component.ts │ │ └── supply-monitoring-stats-page.component.spec.ts │ ├── creators-leaderboard │ │ ├── creators-leaderboard │ │ │ ├── creators-leaderboard.component.scss │ │ │ └── creators-leaderboard.component.spec.ts │ │ └── creators-leaderboard-page │ │ │ ├── creators-leaderboard-page.component.scss │ │ │ ├── creators-leaderboard-page.component.html │ │ │ ├── creators-leaderboard-page.component.ts │ │ │ └── creators-leaderboard-page.component.spec.ts │ ├── top-bar-mobile │ │ ├── top-bar-mobile-hamburger-menu │ │ │ ├── top-bar-mobile-hamburger-menu.component.scss │ │ │ ├── top-bar-mobile-hamburger-menu.component.html │ │ │ ├── top-bar-mobile-hamburger-menu.component.ts │ │ │ └── top-bar-mobile-hamburger-menu.component.spec.ts │ │ ├── top-bar-mobile-log-in-or-sign-up │ │ │ ├── top-bar-mobile-log-in-or-sign-up.component.scss │ │ │ ├── top-bar-mobile-log-in-or-sign-up.component.html │ │ │ ├── top-bar-mobile-log-in-or-sign-up.component.ts │ │ │ └── top-bar-mobile-log-in-or-sign-up.component.spec.ts │ │ └── top-bar-mobile-navigation-control │ │ │ ├── top-bar-mobile-navigation-control.component.scss │ │ │ ├── top-bar-mobile-navigation-control.component.html │ │ │ ├── top-bar-mobile-navigation-control.component.ts │ │ │ └── top-bar-mobile-navigation-control.component.spec.ts │ ├── theme │ │ ├── themes │ │ │ ├── _index.scss │ │ │ ├── light.scss │ │ │ ├── dark.scss │ │ │ ├── cake.scss │ │ │ ├── icydark.scss │ │ │ ├── legends.scss │ │ │ └── greenish.scss │ │ ├── symbols.ts │ │ └── theme.module.ts │ ├── directives │ │ └── upload.directive.spec.ts │ ├── route-names.service.ts │ ├── landing-page │ │ ├── landing-page.component.scss │ │ └── landing-page.component.spec.ts │ ├── nft-modal-header │ │ ├── nft-modal-header.component.html │ │ └── nft-modal-header.component.ts │ ├── identity.service.spec.ts │ ├── backend-api.service.spec.ts │ ├── global-vars.service.spec.ts │ ├── route-names.service.spec.ts │ ├── free-deso-message │ │ ├── free-deso-message.component.ts │ │ └── free-deso-message.component.html │ ├── nft-sold-modal │ │ └── nft-sold-modal.component.html │ ├── bid-placed-modal │ │ ├── bid-placed-modal.component.html │ │ └── bid-placed-modal.component.ts │ ├── app.component.scss │ ├── likes-modal │ │ └── likes-modal.component.html │ ├── reposts-modal │ │ └── reposts-modal.component.html │ ├── diamonds-modal │ │ └── diamonds-modal.component.html │ ├── simple-center-loader │ │ ├── simple-center-loader.component.ts │ │ ├── simple-center-loader.component.spec.ts │ │ └── simple-center-loader.component.html │ ├── referrals │ │ └── referrals.component.ts │ ├── close-nft-auction-modal │ │ └── close-nft-auction-modal.component.html │ └── app.component.html ├── favicon.png ├── vendor │ ├── fontello.eot │ ├── fontello.ttf │ ├── fontello.woff │ ├── fontello.woff2 │ ├── roboto │ │ ├── KFOmCnqEu92Fr1Mu4mxK.woff2 │ │ ├── KFOmCnqEu92Fr1Mu4WxKOzY.woff2 │ │ ├── KFOmCnqEu92Fr1Mu5mxKOzY.woff2 │ │ ├── KFOmCnqEu92Fr1Mu72xKOzY.woff2 │ │ ├── KFOmCnqEu92Fr1Mu7GxKOzY.woff2 │ │ ├── KFOmCnqEu92Fr1Mu7WxKOzY.woff2 │ │ ├── KFOmCnqEu92Fr1Mu7mxKOzY.woff2 │ │ ├── KFOlCnqEu92Fr1MmEU9fBBc4.woff2 │ │ ├── KFOlCnqEu92Fr1MmWUlfBBc4.woff2 │ │ ├── KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 │ │ ├── KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2 │ │ ├── KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2 │ │ ├── KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 │ │ ├── KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 │ │ ├── KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2 │ │ ├── KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 │ │ ├── KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 │ │ ├── KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 │ │ ├── KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 │ │ ├── KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 │ │ └── KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 │ └── roboto-mono │ │ ├── L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2 │ │ ├── L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2 │ │ ├── L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0mf0h.woff2 │ │ ├── L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0mf0h.woff2 │ │ ├── L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2 │ │ └── L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0mf0h.woff2 ├── lib │ ├── observable-results │ │ ├── follow-change-observable-result.ts │ │ └── logged-in-user-observable-result.ts │ ├── helpers │ │ └── follows │ │ │ └── can_public_key_follow_target_public_key_helper.ts │ ├── validators │ │ ├── min-validator.ts │ │ └── dynamic-max-validator.ts │ └── pipes │ │ ├── sanitize-embed-pipe.ts │ │ ├── sanitize-qrcode-pipe.ts │ │ └── sanitize-video-url-pipe.ts ├── tsconfig.app.json ├── tsconfig.spec.json ├── main.ts ├── test.ts └── environments │ ├── environment.prod.ts │ ├── environment.deso.ts │ ├── environment.dev.ts │ └── environment.bitclout.ts ├── .npmrc ├── CODEOWNERS ├── .prettierrc ├── run.sh ├── SECURITY.md ├── e2e ├── tsconfig.e2e.json ├── src │ ├── app.po.ts │ └── app.e2e-spec.ts ├── protractor.conf.js └── .eslintrc.json ├── .editorconfig ├── .gitpod.Dockerfile ├── .gitpod.yml ├── .gitignore └── tsconfig.json /src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | ignore-scripts = true 2 | -------------------------------------------------------------------------------- /src/app/feed/feed.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/page/page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/admin/admin.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/sign-up/sign-up.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/left-bar/left-bar.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/settings/settings.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/tos-page/tos-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/admin-page/admin-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/browse-page/browse-page.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/feed/feed-post/feed-post.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/jumio-status/jumio-status.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/network-info/network-info.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/search-bar/search-bar.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/tab-selector/tab-selector.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/trends-page/trends-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/trends-page/trends/trends.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/verify-email/verify-email.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/verify-email/verify-email.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/admin/admin-jumio/admin-jumio.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/admin/admin-wyre/admin-wyre.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/buy-deso-page/buy-deso-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/comment-modal/comment-modal.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/follow-button/follow-button.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/messages-page/message/message.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/messages-page/messages-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/nft-post-page/nft-post-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/not-found-page/not-found-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/settings-page/settings-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/transfer-deso/transfer-deso.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/wallet/wallet-page/wallet-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/bottom-bar-mobile/bottom-bar-mobile.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/buy-deso-page/buy-deso/buy-deso.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/countdown-timer/countdown-timer.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/create-post-page/create-post-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/left-bar-mobile/left-bar-mobile.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/nft-post-page/nft-post/nft-post.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/not-found-page/not-found/not-found.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/post-thread-page/post-thread-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/right-bar-signup/right-bar-signup.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/terms-of-service/terms-of-service.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/admin/admin-node-fees/admin-node-fees.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/buy-deso-page/buy-deso-usd/buy-deso-usd.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/dao-coins/dao-coins-page/dao-coins-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/diamond-posts-page/diamond-posts-page.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/feed/feed-create-post/feed-create-post.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/left-bar/left-bar-button/left-bar-button.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/manage-follows-page/manage-follows-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/notifications-page/notifications-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/post-thread-page/post-thread/post-thread.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/right-bar-creators/right-bar-creators.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/transfer-deso-page/transfer-deso-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/update-profile-page/update-profile-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-profile-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/feed/feed-post-dropdown/feed-post-dropdown.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/feed/feed-post-icon-row/feed-post-icon-row.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/feed/feed-post-icon-row/feed-post-icon-row.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/get-starter-deso-page/get-starter-deso-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/messages-page/messages-inbox/messages-inbox.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/messages-page/messages-thread/messages-thread.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/change-account-selector/change-account-selector.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/create-post-page/create-post-form/create-post-form.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/diamond-posts-page/diamond-posts/diamond-posts.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/feed/feed-post-image-modal/feed-post-image-modal.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/manage-follows-page/manage-follows/manage-follows.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator/trade-creator.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/tutorial/wallet-tutorial-page/wallet-tutorial-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/update-profile-page/update-profile/update-profile.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/buy-deso-page/buy-deso-logged-out/buy-deso-logged-out.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-diamonds/creator-diamonds.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/get-starter-deso-page/get-starter-deso/get-starter-deso.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/messages-page/messages-thread-view/messages-thread-view.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/tutorial/diamond-tutorial-page/diamond-tutorial-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/notifications-page/notifications-list/notifications-list.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/sign-up/sign-up-get-starter-deso/sign-up-get-starter-deso.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/supply-monitoring-stats-page/supply-monitoring-stats-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-form/trade-creator-form.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-table/trade-creator-table.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/tutorial/create-post-tutorial-page/create-post-tutorial-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/bottom-bar-mobile/bottom-bar-mobile-tab/bottom-bar-mobile-tab.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-profile-nfts/creator-profile-nfts.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-profile-posts/creator-profile-posts.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/creators-leaderboard/creators-leaderboard/creators-leaderboard.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-complete/trade-creator-complete.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-preview/trade-creator-preview.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/tutorial/diamond-tutorial-page/diamond-tutorial/diamond-tutorial.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/favicon.png -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-profile-details/creator-profile-details.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-profile-hodlers/creator-profile-hodlers.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-profile-top-card/creator-profile-top-card.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-logged-out/trade-creator-logged-out.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/tutorial/create-profile-tutorial-page/create-profile-tutorial-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # For now, tag everyone who wants to participate 2 | * @deso-protocol/reviewers 3 | -------------------------------------------------------------------------------- /src/app/creators-leaderboard/creators-leaderboard-page/creators-leaderboard-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/top-bar-mobile/top-bar-mobile-hamburger-menu/top-bar-mobile-hamburger-menu.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial-page.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/right-bar-creators/right-bar-creators-leaderboard/right-bar-creators-leaderboard.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/supply-monitoring-stats-page/supply-monitoring-stats/supply-monitoring-stats.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/top-bar-mobile/top-bar-mobile-log-in-or-sign-up/top-bar-mobile-log-in-or-sign-up.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/trends-page/trends-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/top-bar-mobile/top-bar-mobile-navigation-control/top-bar-mobile-navigation-control.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/update-profile-page/update-profile-get-starter-deso/update-profile-get-starter-deso.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/wallet/wallet-page/wallet-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/vendor/fontello.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/fontello.eot -------------------------------------------------------------------------------- /src/vendor/fontello.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/fontello.ttf -------------------------------------------------------------------------------- /src/vendor/fontello.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/fontello.woff -------------------------------------------------------------------------------- /src/vendor/fontello.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/fontello.woff2 -------------------------------------------------------------------------------- /src/app/nft-post-page/nft-post-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/not-found-page/not-found-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/settings-page/settings-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/deso/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/deso/favicon.png -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 2, 3 | "useTabs": false, 4 | "printWidth": 80, 5 | "singleQuote": true 6 | } 7 | -------------------------------------------------------------------------------- /src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial/buy-creator-coins-tutorial.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/deso/coin-deso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/deso/coin-deso.png -------------------------------------------------------------------------------- /src/assets/deso/logo-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/deso/logo-192.png -------------------------------------------------------------------------------- /src/assets/deso/logo-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/deso/logo-512.png -------------------------------------------------------------------------------- /src/app/dao-coins/dao-coins-page/dao-coins-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/post-thread-page/post-thread-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/tos-page/tos-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/tutorial/sell-creator-coins-tutorial-page/sell-creator-coins-tutorial/sell-creator-coins-tutorial.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/bitclout/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/bitclout/favicon.png -------------------------------------------------------------------------------- /src/assets/bitclout/logo-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/bitclout/logo-192.png -------------------------------------------------------------------------------- /src/assets/bitclout/logo-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/bitclout/logo-512.png -------------------------------------------------------------------------------- /src/assets/deso/logo-cropped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/deso/logo-cropped.png -------------------------------------------------------------------------------- /run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "Loading Caddy config from file: ${CADDY_FILE}" 4 | 5 | caddy run --config ${CADDY_FILE} 6 | -------------------------------------------------------------------------------- /src/assets/deso/camelcase_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/deso/camelcase_logo.png -------------------------------------------------------------------------------- /src/app/create-post-page/create-post-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/diamond-posts-page/diamond-posts-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/manage-follows-page/manage-follows-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/transfer-deso-page/transfer-deso-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-confirm-tutorial/buy-creator-coins-confirm-tutorial.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/bitclout/logo-cropped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/bitclout/logo-cropped.png -------------------------------------------------------------------------------- /src/assets/deso/camelcase_logo_og.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/deso/camelcase_logo_og.jpg -------------------------------------------------------------------------------- /src/assets/bitclout/camelcase_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/bitclout/camelcase_logo.png -------------------------------------------------------------------------------- /src/assets/img/default_profile_pic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/img/default_profile_pic.png -------------------------------------------------------------------------------- /src/app/get-starter-deso-page/get-starter-deso-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/bitclout/camelcase_logo_og.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/bitclout/camelcase_logo_og.jpg -------------------------------------------------------------------------------- /src/assets/img/blockchain-logo-cropped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/assets/img/blockchain-logo-cropped.png -------------------------------------------------------------------------------- /src/app/notifications-page/notifications-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/vendor/roboto/KFOmCnqEu92Fr1Mu4mxK.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOmCnqEu92Fr1Mu4mxK.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOmCnqEu92Fr1Mu4WxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOmCnqEu92Fr1Mu72xKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOmCnqEu92Fr1Mu72xKOzY.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOmCnqEu92Fr1Mu7WxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOmCnqEu92Fr1Mu7mxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOlCnqEu92Fr1MmEU9fBBc4.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOlCnqEu92Fr1MmWUlfBBc4.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 -------------------------------------------------------------------------------- /src/app/tutorial/diamond-tutorial-page/diamond-tutorial-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/tutorial/wallet-tutorial-page/wallet-tutorial-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/supply-monitoring-stats-page/supply-monitoring-stats-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-profile-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/update-profile-page/update-profile-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/theme/themes/_index.scss: -------------------------------------------------------------------------------- 1 | @import 'light.scss'; 2 | @import 'dark.scss'; 3 | @import 'icydark.scss'; 4 | @import 'legends.scss'; 5 | @import 'cake.scss'; 6 | @import 'greenish.scss'; 7 | -------------------------------------------------------------------------------- /src/app/creators-leaderboard/creators-leaderboard-page/creators-leaderboard-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/tutorial/create-post-tutorial-page/create-post-tutorial-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/lib/observable-results/follow-change-observable-result.ts: -------------------------------------------------------------------------------- 1 | export class FollowChangeObservableResult { 2 | public followedPubKeyBase58Check: string; 3 | public isFollowing: boolean; 4 | } 5 | -------------------------------------------------------------------------------- /src/app/top-bar-mobile/top-bar-mobile-hamburger-menu/top-bar-mobile-hamburger-menu.component.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | DeSo encourages responsible vulnerability disclosure for security issues. 4 | 5 | Read the [Bug Bounty documentation](https://docs.deso.org/devs/bug-bounty) for more information. 6 | -------------------------------------------------------------------------------- /src/app/buy-deso-page/buy-deso-heroswap/buy-deso-heroswap.component.scss: -------------------------------------------------------------------------------- 1 | .fs-7 { 2 | font-size: 0.7rem; 3 | } 4 | 5 | .fs-8 { 6 | font-size: 0.8rem; 7 | } 8 | 9 | .vh-75 { 10 | height: 75vh; 11 | } 12 | -------------------------------------------------------------------------------- /src/app/feed/feed-post-image-modal/feed-post-image-modal.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /src/vendor/roboto-mono/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto-mono/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto-mono/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto-mono/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto-mono/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0mf0h.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto-mono/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0mf0h.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto-mono/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0mf0h.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto-mono/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0mf0h.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto-mono/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto-mono/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2 -------------------------------------------------------------------------------- /src/vendor/roboto-mono/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0mf0h.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deso-protocol/frontend/HEAD/src/vendor/roboto-mono/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0mf0h.woff2 -------------------------------------------------------------------------------- /src/app/tutorial/sell-creator-coins-tutorial-page/sell-creator-coins-tutorial/sell-creator-coins-tutorial.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": ["jasmine", "jasminewd2", "node"] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": ["node"] 6 | }, 7 | "files": ["main.ts", "polyfills.ts"], 8 | "include": ["src/**/*.d.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-confirm-tutorial/buy-creator-coins-confirm-tutorial.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/app/tutorial/create-profile-tutorial-page/create-profile-tutorial-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /src/app/buy-deso-page/buy-deso-page.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 | 6 | 7 | 8 |
9 | -------------------------------------------------------------------------------- /src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": ["jasmine", "node", "jest"] 6 | }, 7 | "files": ["test.ts", "polyfills.ts"], 8 | "include": ["**/*.spec.ts", "**/*.d.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /src/app/directives/upload.directive.spec.ts: -------------------------------------------------------------------------------- 1 | import { UploadDirective } from './upload.directive'; 2 | 3 | describe('UploadDirective', () => { 4 | it('should create an instance', () => { 5 | const directive = new UploadDirective(); 6 | expect(directive).toBeTruthy(); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /src/app/route-names.service.ts: -------------------------------------------------------------------------------- 1 | import { RouteNames } from './app-routing.module'; 2 | import { Injectable } from '@angular/core'; 3 | 4 | @Injectable({ 5 | providedIn: 'root', 6 | }) 7 | export default class RouteNamesService extends RouteNames { 8 | constructor() { 9 | super(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css('app-root h1')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/app/tos-page/tos-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-tos-page', 5 | templateUrl: './tos-page.component.html', 6 | styleUrls: ['./tos-page.component.scss'], 7 | }) 8 | export class TosPageComponent { 9 | constructor() {} 10 | } 11 | -------------------------------------------------------------------------------- /src/lib/observable-results/logged-in-user-observable-result.ts: -------------------------------------------------------------------------------- 1 | import { User } from '../../app/backend-api.service'; 2 | 3 | export class LoggedInUserObservableResult { 4 | public loggedInUser: User; 5 | 6 | // Does this user have the same pubkey as the previous user? 7 | public isSameUserAsBefore: boolean; 8 | } 9 | -------------------------------------------------------------------------------- /.gitpod.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM gitpod/workspace-full:latest 2 | 3 | RUN bash -c 'NODE_VERSION="14.15.5" \ 4 | && source $HOME/.nvm/nvm.sh && nvm install $NODE_VERSION \ 5 | && nvm use $NODE_VERSION && nvm alias default $NODE_VERSION \ 6 | && npm -g install npm@7' 7 | 8 | RUN echo "nvm use default &>/dev/null" >> ~/.bashrc.d/51-nvm-fix -------------------------------------------------------------------------------- /src/app/not-found-page/not-found/not-found.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'not-found', 5 | templateUrl: './not-found.component.html', 6 | styleUrls: ['./not-found.component.scss'], 7 | }) 8 | export class NotFoundComponent { 9 | constructor() {} 10 | } 11 | -------------------------------------------------------------------------------- /src/app/landing-page/landing-page.component.scss: -------------------------------------------------------------------------------- 1 | $header-height: 78px; 2 | 3 | .bitclout-landing__wrapper { 4 | background: var(--background); 5 | 6 | .bitclout-landing__content { 7 | min-height: calc(100vh - #{$header-height}); 8 | 9 | .bitclout-landing__platform-slide { 10 | max-width: 920px; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/app/settings-page/settings-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-settings-page', 5 | templateUrl: './settings-page.component.html', 6 | styleUrls: ['./settings-page.component.scss'], 7 | }) 8 | export class SettingsPageComponent { 9 | constructor() {} 10 | } 11 | -------------------------------------------------------------------------------- /src/app/not-found-page/not-found-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-not-found-page', 5 | templateUrl: './not-found-page.component.html', 6 | styleUrls: ['./not-found-page.component.scss'], 7 | }) 8 | export class NotFoundPageComponent { 9 | constructor() {} 10 | } 11 | -------------------------------------------------------------------------------- /src/app/create-post-page/create-post-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-create-post-page', 5 | templateUrl: './create-post-page.component.html', 6 | styleUrls: ['./create-post-page.component.scss'], 7 | }) 8 | export class CreatePostPageComponent { 9 | constructor() {} 10 | } 11 | -------------------------------------------------------------------------------- /src/app/transfer-deso-page/transfer-deso-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'transfer-deso-page', 5 | templateUrl: './transfer-deso-page.component.html', 6 | styleUrls: ['./transfer-deso-page.component.scss'], 7 | }) 8 | export class TransferDeSoPageComponent { 9 | constructor() {} 10 | } 11 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-profile-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'creator-profile-page', 5 | templateUrl: './creator-profile-page.component.html', 6 | styleUrls: ['./creator-profile-page.component.scss'], 7 | }) 8 | export class CreatorProfilePageComponent { 9 | constructor() {} 10 | } 11 | -------------------------------------------------------------------------------- /src/app/manage-follows-page/manage-follows-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'manage-follows-page', 5 | templateUrl: './manage-follows-page.component.html', 6 | styleUrls: ['./manage-follows-page.component.scss'], 7 | }) 8 | export class ManageFollowsPageComponent { 9 | constructor() {} 10 | } 11 | -------------------------------------------------------------------------------- /src/app/nft-modal-header/nft-modal-header.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{ header }} 4 |
5 |
9 | × 10 |
11 |
12 | -------------------------------------------------------------------------------- /src/app/theme/symbols.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from '@angular/core'; 2 | 3 | export const THEMES = new InjectionToken('THEMES'); 4 | export const ACTIVE_THEME = new InjectionToken('ACTIVE_THEME'); 5 | 6 | export interface Theme { 7 | key: string; 8 | name: string; 9 | } 10 | 11 | export interface ThemeOptions { 12 | themes: Theme[]; 13 | active: string; 14 | } 15 | -------------------------------------------------------------------------------- /src/app/get-starter-deso-page/get-starter-deso-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-get-starter-deso-page', 5 | templateUrl: './get-starter-deso-page.component.html', 6 | styleUrls: ['./get-starter-deso-page.component.scss'], 7 | }) 8 | export class GetStarterDeSoPageComponent { 9 | constructor() {} 10 | } 11 | -------------------------------------------------------------------------------- /src/app/nft-post-page/nft-post-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nft-post-page', 5 | templateUrl: './nft-post-page.component.html', 6 | styleUrls: ['./nft-post-page.component.scss'], 7 | }) 8 | export class NftPostPageComponent { 9 | isLeftBarMobileOpen: boolean = false; 10 | 11 | constructor() {} 12 | } 13 | -------------------------------------------------------------------------------- /src/app/post-thread-page/post-thread-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'post-thread-page', 5 | templateUrl: './post-thread-page.component.html', 6 | styleUrls: ['./post-thread-page.component.scss'], 7 | }) 8 | export class PostThreadPageComponent { 9 | isLeftBarMobileOpen: boolean = false; 10 | 11 | constructor() {} 12 | } 13 | -------------------------------------------------------------------------------- /src/app/bottom-bar-mobile/bottom-bar-mobile-tab/bottom-bar-mobile-tab.component.html: -------------------------------------------------------------------------------- 1 |
9 | 10 |
11 | -------------------------------------------------------------------------------- /src/lib/helpers/follows/can_public_key_follow_target_public_key_helper.ts: -------------------------------------------------------------------------------- 1 | export class CanPublicKeyFollowTargetPublicKeyHelper { 2 | static execute(currentPublicKey, targetPublicKey) { 3 | if (!currentPublicKey || !targetPublicKey) { 4 | return false; 5 | } 6 | 7 | // current can follow target as long as current != target 8 | return currentPublicKey != targetPublicKey; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/app/tutorial/diamond-tutorial-page/diamond-tutorial-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, OnInit, Output } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'diamond-tutorial-page', 5 | templateUrl: './diamond-tutorial-page.component.html', 6 | styleUrls: ['./diamond-tutorial-page.component.scss'], 7 | }) 8 | export class DiamondTutorialPageComponent { 9 | constructor() {} 10 | } 11 | -------------------------------------------------------------------------------- /src/app/admin-page/admin-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { GlobalVarsService } from '../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'app-admin-page', 6 | templateUrl: './admin-page.component.html', 7 | styleUrls: ['./admin-page.component.scss'], 8 | }) 9 | export class AdminPageComponent { 10 | constructor(public globalVars: GlobalVarsService) {} 11 | } 12 | -------------------------------------------------------------------------------- /src/app/identity.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { IdentityService } from './identity.service'; 4 | 5 | describe('IdentityService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: IdentityService = TestBed.inject(IdentityService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /src/app/jumio-status/jumio-status.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { GlobalVarsService } from '../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'jumio-status', 6 | templateUrl: './jumio-status.component.html', 7 | styleUrls: ['./jumio-status.component.scss'], 8 | }) 9 | export class JumioStatusComponent { 10 | constructor(public globalVars: GlobalVarsService) {} 11 | } 12 | -------------------------------------------------------------------------------- /src/app/supply-monitoring-stats-page/supply-monitoring-stats-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'supply-monitoring-stats-page', 5 | templateUrl: './supply-monitoring-stats-page.component.html', 6 | styleUrls: ['./supply-monitoring-stats-page.component.scss'], 7 | }) 8 | export class SupplyMonitoringStatsPageComponent { 9 | constructor() {} 10 | } 11 | -------------------------------------------------------------------------------- /src/app/backend-api.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { BackendApiService } from './backend-api.service'; 4 | 5 | describe('BackendApiService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: BackendApiService = TestBed.inject(BackendApiService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /src/app/global-vars.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { GlobalVarsService } from './global-vars.service'; 4 | 5 | describe('GlobalVarsService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: GlobalVarsService = TestBed.inject(GlobalVarsService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /src/app/route-names.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import RouteNamesService from './route-names.service'; 4 | 5 | describe('RouteNamesService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: RouteNamesService = TestBed.inject(RouteNamesService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /src/app/tutorial/create-post-tutorial-page/create-post-tutorial-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, OnInit, Output } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'create-post-tutorial-page', 5 | templateUrl: './create-post-tutorial-page.component.html', 6 | styleUrls: ['./create-post-tutorial-page.component.scss'], 7 | }) 8 | export class CreatePostTutorialPageComponent { 9 | constructor() {} 10 | } 11 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic() 12 | .bootstrapModule(AppModule) 13 | .catch((err) => console.error(err)); 14 | -------------------------------------------------------------------------------- /src/app/dao-coins/dao-coins-page/dao-coins-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { GlobalVarsService } from '../../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'dao-coins-page', 6 | templateUrl: './dao-coins-page.component.html', 7 | styleUrls: ['./dao-coins-page.component.scss'], 8 | }) 9 | export class DaoCoinsPageComponent { 10 | constructor(public globalVars: GlobalVarsService) {} 11 | } 12 | -------------------------------------------------------------------------------- /src/app/free-deso-message/free-deso-message.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { GlobalVarsService } from '../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'free-deso-message', 6 | templateUrl: './free-deso-message.component.html', 7 | }) 8 | export class FreeDesoMessageComponent { 9 | @Input() hideMessage: boolean = false; 10 | 11 | constructor(public globalVars: GlobalVarsService) {} 12 | } 13 | -------------------------------------------------------------------------------- /src/app/right-bar-signup/right-bar-signup.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { GlobalVarsService } from '../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'right-bar-signup', 6 | templateUrl: './right-bar-signup.component.html', 7 | styleUrls: ['./right-bar-signup.component.scss'], 8 | }) 9 | export class RightBarSignupComponent { 10 | constructor(public globalVars: GlobalVarsService) {} 11 | } 12 | -------------------------------------------------------------------------------- /src/app/wallet/wallet-page/wallet-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, OnInit, Output } from '@angular/core'; 2 | import { GlobalVarsService } from '../../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'wallet-page', 6 | templateUrl: './wallet-page.component.html', 7 | styleUrls: ['./wallet-page.component.scss'], 8 | }) 9 | export class WalletPageComponent { 10 | constructor(public globalVars: GlobalVarsService) {} 11 | } 12 | -------------------------------------------------------------------------------- /src/app/admin-page/admin-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 6 |
10 |
11 | You don't have access to this node's admin panel. 12 |
13 |
14 | -------------------------------------------------------------------------------- /src/app/top-bar-mobile/top-bar-mobile-log-in-or-sign-up/top-bar-mobile-log-in-or-sign-up.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | Sign Up 7 |
8 | -------------------------------------------------------------------------------- /src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, OnInit, Output } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'buy-creator-coins-tutorial-page', 5 | templateUrl: './buy-creator-coins-tutorial-page.component.html', 6 | styleUrls: ['./buy-creator-coins-tutorial-page.component.scss'], 7 | }) 8 | export class BuyCreatorCoinsTutorialPageComponent { 9 | constructor() {} 10 | } 11 | -------------------------------------------------------------------------------- /src/app/update-profile-page/update-profile-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { GlobalVarsService } from '../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'app-update-profile-page', 6 | templateUrl: './update-profile-page.component.html', 7 | styleUrls: ['./update-profile-page.component.scss'], 8 | }) 9 | export class UpdateProfilePageComponent { 10 | constructor(public globalVars: GlobalVarsService) {} 11 | } 12 | -------------------------------------------------------------------------------- /src/lib/validators/min-validator.ts: -------------------------------------------------------------------------------- 1 | import { AbstractControl, ValidatorFn } from '@angular/forms'; 2 | import { dynamicMinValidator } from './dynamic-min-validator'; 3 | 4 | // Angular's Validators.min(0) is >= 0 (i.e. returns true for 0) 5 | // exclusiveMin(0) is > 0 (i.e. returns false for 0) 6 | export function minValidator(minimum: number, inclusive: boolean): ValidatorFn { 7 | return dynamicMinValidator(() => { 8 | return minimum; 9 | }, inclusive); 10 | } 11 | -------------------------------------------------------------------------------- /src/app/buy-deso-page/buy-deso-heroswap/buy-deso-heroswap.component.html: -------------------------------------------------------------------------------- 1 |
2 | 7 | 8 |

9 | Unable to render iFrame.
Invalid HeroSwap URL. 10 |

11 |
12 |
13 | -------------------------------------------------------------------------------- /src/app/buy-deso-page/buy-deso-logged-out/buy-deso-logged-out.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { GlobalVarsService } from '../../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'buy-deso-logged-out', 6 | templateUrl: './buy-deso-logged-out.component.html', 7 | styleUrls: ['./buy-deso-logged-out.component.scss'], 8 | }) 9 | export class BuyDeSoLoggedOutComponent { 10 | constructor(public globalVars: GlobalVarsService) {} 11 | } 12 | -------------------------------------------------------------------------------- /src/app/tutorial/wallet-tutorial-page/wallet-tutorial-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { GlobalVarsService } from '../../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'wallet-tutorial-page', 6 | templateUrl: './wallet-tutorial-page.component.html', 7 | styleUrls: ['./wallet-tutorial-page.component.scss'], 8 | }) 9 | export class WalletTutorialPageComponent { 10 | constructor(public globalVars: GlobalVarsService) {} 11 | } 12 | -------------------------------------------------------------------------------- /src/app/nft-modal-header/nft-modal-header.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, Input } from '@angular/core'; 2 | import { BsModalRef } from 'ngx-bootstrap/modal'; 3 | 4 | @Component({ 5 | selector: 'nft-modal-header', 6 | templateUrl: './nft-modal-header.component.html', 7 | }) 8 | export class NftModalHeaderComponent implements OnInit { 9 | @Input() header: string; 10 | @Input() bsModalRef: BsModalRef; 11 | 12 | constructor() {} 13 | 14 | ngOnInit(): void {} 15 | } 16 | -------------------------------------------------------------------------------- /src/app/top-bar-mobile/top-bar-mobile-navigation-control/top-bar-mobile-navigation-control.component.html: -------------------------------------------------------------------------------- 1 |
10 |
11 | 14 |
15 |
16 | -------------------------------------------------------------------------------- /src/app/get-starter-deso-page/get-starter-deso/get-starter-deso.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { BackendApiService } from 'src/app/backend-api.service'; 3 | import { RouteNames } from '../../app-routing.module'; 4 | 5 | @Component({ 6 | selector: 'get-starter-deso', 7 | templateUrl: './get-starter-deso.component.html', 8 | styleUrls: ['./get-starter-deso.component.scss'], 9 | }) 10 | export class GetStarterDeSoComponent { 11 | constructor() {} 12 | } 13 | -------------------------------------------------------------------------------- /src/app/creators-leaderboard/creators-leaderboard-page/creators-leaderboard-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, OnInit, Output } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-creators-leaderboard-page', 5 | templateUrl: './creators-leaderboard-page.component.html', 6 | styleUrls: ['./creators-leaderboard-page.component.scss'], 7 | }) 8 | export class CreatorsLeaderboardPageComponent { 9 | isLeftBarMobileOpen: boolean = false; 10 | 11 | constructor() {} 12 | } 13 | -------------------------------------------------------------------------------- /src/app/nft-sold-modal/nft-sold-modal.component.html: -------------------------------------------------------------------------------- 1 |
2 | 6 | 7 |
Your sell was successful.
8 | 9 |
14 | View my NFTs 15 |
16 |
17 | -------------------------------------------------------------------------------- /src/app/bottom-bar-mobile/bottom-bar-mobile.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, OnInit } from '@angular/core'; 2 | import { GlobalVarsService } from '../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'bottom-bar-mobile', 6 | templateUrl: './bottom-bar-mobile.component.html', 7 | styleUrls: ['./bottom-bar-mobile.component.scss'], 8 | }) 9 | export class BottomBarMobileComponent { 10 | @Input() showPostButton = false; 11 | 12 | constructor(public globalVars: GlobalVarsService) {} 13 | } 14 | -------------------------------------------------------------------------------- /src/app/messages-page/message/message.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, Input } from '@angular/core'; 2 | import { GlobalVarsService } from '../../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'message', 6 | templateUrl: './message.component.html', 7 | styleUrls: ['./message.component.scss'], 8 | }) 9 | export class MessageComponent { 10 | @Input() message: any; 11 | @Input() nextMessage: any; 12 | @Input() profile: any; 13 | 14 | constructor(public globalVars: GlobalVarsService) {} 15 | } 16 | -------------------------------------------------------------------------------- /src/app/diamond-posts-page/diamond-posts-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { GlobalVarsService } from '../global-vars.service'; 3 | import { Router } from '@angular/router'; 4 | 5 | @Component({ 6 | selector: 'diamond-posts-page', 7 | templateUrl: './diamond-posts-page.component.html', 8 | styleUrls: ['./diamond-posts-page.component.sass'], 9 | }) 10 | export class DiamondPostsPageComponent { 11 | constructor(private globalVars: GlobalVarsService, private router: Router) {} 12 | } 13 | -------------------------------------------------------------------------------- /src/app/feed/feed-post-image-modal/feed-post-image-modal.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { GlobalVarsService } from '../../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'feed-post-image-modal', 6 | templateUrl: './feed-post-image-modal.component.html', 7 | styleUrls: ['./feed-post-image-modal.component.scss'], 8 | }) 9 | export class FeedPostImageModalComponent { 10 | @Input() imageURL: string; 11 | 12 | constructor(public globalVars: GlobalVarsService) {} 13 | } 14 | -------------------------------------------------------------------------------- /src/app/free-deso-message/free-deso-message.component.html: -------------------------------------------------------------------------------- 1 | 2 | {{ globalVars.getFreeDESOMessage() }} 3 | 4 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/app/comment-modal/comment-modal.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { BsModalRef } from 'ngx-bootstrap/modal'; 3 | 4 | @Component({ 5 | selector: 'comment-modal', 6 | templateUrl: './comment-modal.component.html', 7 | styleUrls: ['./comment-modal.component.scss'], 8 | }) 9 | export class CommentModalComponent { 10 | @Input() parentPost; 11 | @Input() afterCommentCreatedCallback: any = null; 12 | @Input() isQuote = false; 13 | 14 | constructor(public bsModalRef: BsModalRef) {} 15 | } 16 | -------------------------------------------------------------------------------- /src/app/top-bar-mobile/top-bar-mobile-hamburger-menu/top-bar-mobile-hamburger-menu.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { GlobalVarsService } from '../../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'top-bar-mobile-hamburger-menu', 6 | templateUrl: './top-bar-mobile-hamburger-menu.component.html', 7 | styleUrls: ['./top-bar-mobile-hamburger-menu.component.scss'], 8 | }) 9 | export class TopBarMobileHamburgerMenuComponent { 10 | constructor(public globalVars: GlobalVarsService) {} 11 | } 12 | -------------------------------------------------------------------------------- /src/app/get-starter-deso-page/get-starter-deso/get-starter-deso.component.html: -------------------------------------------------------------------------------- 1 |
4 | 7 | Get Starter $DESO 8 |
9 | 10 |
11 | 12 |
13 | 14 |
15 | -------------------------------------------------------------------------------- /src/app/tutorial/create-profile-tutorial-page/create-profile-tutorial-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, OnInit, Output } from '@angular/core'; 2 | import { GlobalVarsService } from '../../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'create-profile-tutorial-page', 6 | templateUrl: './create-profile-tutorial-page.component.html', 7 | styleUrls: ['./create-profile-tutorial-page.component.scss'], 8 | }) 9 | export class CreateProfileTutorialPageComponent { 10 | constructor(public globalVars: GlobalVarsService) {} 11 | } 12 | -------------------------------------------------------------------------------- /src/app/top-bar-mobile/top-bar-mobile-log-in-or-sign-up/top-bar-mobile-log-in-or-sign-up.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { GlobalVarsService } from '../../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'top-bar-mobile-log-in-or-sign-up', 6 | templateUrl: './top-bar-mobile-log-in-or-sign-up.component.html', 7 | styleUrls: ['./top-bar-mobile-log-in-or-sign-up.component.scss'], 8 | }) 9 | export class TopBarMobileLogInOrSignUpComponent { 10 | constructor(public globalVars: GlobalVarsService) {} 11 | } 12 | -------------------------------------------------------------------------------- /src/app/messages-page/messages-thread/messages-thread.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, Input } from '@angular/core'; 2 | import { GlobalVarsService } from '../../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'messages-thread', 6 | templateUrl: './messages-thread.component.html', 7 | styleUrls: ['./messages-thread.component.scss'], 8 | }) 9 | export class MessagesThreadComponent { 10 | @Input() thread: any; 11 | @Input() isSelected: boolean; 12 | isHovered = false; 13 | 14 | constructor(public globalVars: GlobalVarsService) {} 15 | } 16 | -------------------------------------------------------------------------------- /src/app/left-bar-mobile/left-bar-mobile.component.html: -------------------------------------------------------------------------------- 1 |
2 |
7 | 12 |
13 |
19 |
20 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { GlobalVarsService } from '../global-vars.service'; 3 | import { ActivatedRoute, Router } from '@angular/router'; 4 | import { BackendApiService } from '../backend-api.service'; 5 | 6 | @Component({ 7 | selector: 'trade-creator-page', 8 | templateUrl: './trade-creator-page.component.html', 9 | styleUrls: ['./trade-creator-page.component.scss'], 10 | }) 11 | export class TradeCreatorPageComponent { 12 | constructor(public globalVars: GlobalVarsService) {} 13 | } 14 | -------------------------------------------------------------------------------- /src/app/trends-page/trends-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { Title } from '@angular/platform-browser'; 3 | import { environment } from 'src/environments/environment'; 4 | 5 | @Component({ 6 | selector: 'trends-page', 7 | templateUrl: './trends-page.component.html', 8 | styleUrls: ['./trends-page.component.scss'], 9 | }) 10 | export class TrendsPageComponent implements OnInit { 11 | constructor(private titleService: Title) {} 12 | 13 | ngOnInit() { 14 | this.titleService.setTitle(`Trends - ${environment.node.name}`); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/app/theme/themes/light.scss: -------------------------------------------------------------------------------- 1 | // Light Theme 2 | // By: 3 | .light[app-theme] { 4 | --background: #fff; 5 | --text: #333333; 6 | --grey: #555555; 7 | --secondary: #f8f8f8; 8 | --secalt: #eee; 9 | --textalt: #777; 10 | --norm: #222; 11 | --formbg: #ffffff; 12 | --link: #007bff; 13 | --hover: #0056b3; 14 | --border: #e5e5e5; 15 | --mborder: #e5e5e5; 16 | --filter: ; 17 | --unread: #e7effe; 18 | --topbar: #2e2e2e; 19 | --cblue: #0058f7; 20 | --cred: #fe3537; 21 | --cgreen: #19b028; 22 | --cgold: #ffd700; 23 | --button: #0058f7; 24 | --loading: #777777; 25 | } 26 | -------------------------------------------------------------------------------- /src/lib/pipes/sanitize-embed-pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | import { DomSanitizer } from '@angular/platform-browser'; 3 | import { EmbedUrlParserService } from '../services/embed-url-parser-service/embed-url-parser-service'; 4 | 5 | @Pipe({ 6 | name: 'sanitizeEmbed', 7 | }) 8 | export class SanitizeEmbedPipe implements PipeTransform { 9 | constructor(private sanitizer: DomSanitizer) {} 10 | transform(url) { 11 | return EmbedUrlParserService.isValidEmbedURL(url) 12 | ? this.sanitizer.bypassSecurityTrustResourceUrl(url) 13 | : false; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/app/bid-placed-modal/bid-placed-modal.component.html: -------------------------------------------------------------------------------- 1 |
2 | 6 | 7 |
8 | Your bid was successful. We will notify you when the auction closes. 9 |
10 | 11 |
16 | Explore the Showcase 17 |
18 |
19 | -------------------------------------------------------------------------------- /src/app/notifications-page/notifications-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { Title } from '@angular/platform-browser'; 3 | import { environment } from 'src/environments/environment'; 4 | 5 | @Component({ 6 | selector: 'app-notifications-page', 7 | templateUrl: './notifications-page.component.html', 8 | styleUrls: ['./notifications-page.component.scss'], 9 | }) 10 | export class NotificationsPageComponent { 11 | constructor(private titleService: Title) {} 12 | 13 | ngOnInit() { 14 | this.titleService.setTitle(`Notifications - ${environment.node.name}`); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/app/right-bar-signup/right-bar-signup.component.html: -------------------------------------------------------------------------------- 1 | 2 |
Welcome to DeSo!
3 |
4 | 10 | Sign Up 11 | 12 |
16 | Log In 17 |
18 |
19 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | # Use custom node & npm versions in image 2 | image: 3 | file: .gitpod.Dockerfile 4 | 5 | # Commands to start on workspace startup 6 | tasks: 7 | - name: open terminial 8 | - name: install & run dev server 9 | openMode: split-right 10 | init: npm install 11 | command: npm start 12 | 13 | # Pre-install some extensions 14 | vscode: 15 | extensions: 16 | - angular.ng-template 17 | - ecmel.vscode-html-css 18 | - eamodio.gitlens 19 | 20 | # Ports to expose on workspace startup 21 | ports: 22 | - port: 4200 23 | onOpen: open-browser 24 | 25 | # Github integration 26 | github: 27 | prebuilds: 28 | master: true 29 | -------------------------------------------------------------------------------- /src/lib/pipes/sanitize-qrcode-pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | import { DomSanitizer } from '@angular/platform-browser'; 3 | 4 | @Pipe({ 5 | name: 'sanitizeQRCode', 6 | }) 7 | export class SanitizeQRCodePipe implements PipeTransform { 8 | constructor(private sanitizer: DomSanitizer) {} 9 | transform(url) { 10 | const regExp = /[A-Za-z0-9.:]{0,30}\/send-deso\?public_key=[A-Za-z0-9]{54,55}/; 11 | if (!url.match(regExp)) { 12 | return false; 13 | } 14 | return this.sanitizer.bypassSecurityTrustResourceUrl( 15 | `https://quickchart.io/qr?size=300&text=${encodeURIComponent(url)}` 16 | ); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-logged-out/trade-creator-logged-out.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, OnInit } from '@angular/core'; 2 | import { CreatorCoinTrade } from '../../../lib/trade-creator-page/creator-coin-trade'; 3 | import { GlobalVarsService } from '../../global-vars.service'; 4 | 5 | @Component({ 6 | selector: 'trade-creator-logged-out', 7 | templateUrl: './trade-creator-logged-out.component.html', 8 | styleUrls: ['./trade-creator-logged-out.component.scss'], 9 | }) 10 | export class TradeCreatorLoggedOutComponent { 11 | @Input() creatorCoinTrade: CreatorCoinTrade; 12 | 13 | constructor(public globalVars: GlobalVarsService) {} 14 | } 15 | -------------------------------------------------------------------------------- /src/app/bid-placed-modal/bid-placed-modal.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal'; 3 | import { GlobalVarsService } from '../global-vars.service'; 4 | 5 | @Component({ 6 | selector: 'bid-placed-modal', 7 | templateUrl: './bid-placed-modal.component.html', 8 | }) 9 | export class BidPlacedModalComponent { 10 | constructor( 11 | public bsModalRef: BsModalRef, 12 | public modalService: BsModalService, 13 | public globalVars: GlobalVarsService 14 | ) {} 15 | 16 | onExploreClicked() { 17 | this.globalVars.exploreShowcase(this.bsModalRef, this.modalService); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/app/bottom-bar-mobile/bottom-bar-mobile-tab/bottom-bar-mobile-tab.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, OnInit } from '@angular/core'; 2 | import { NavigationService } from '../../../lib/services/navigation-service'; 3 | 4 | @Component({ 5 | selector: 'bottom-bar-mobile-tab', 6 | templateUrl: './bottom-bar-mobile-tab.component.html', 7 | styleUrls: ['./bottom-bar-mobile-tab.component.scss'], 8 | }) 9 | export class BottomBarMobileTabComponent { 10 | @Input() link: string; 11 | 12 | constructor(private navigationService: NavigationService) {} 13 | 14 | clearNavigationHistory() { 15 | this.navigationService.clearHistoryAfterNavigatingToNewUrl(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/theme/themes/dark.scss: -------------------------------------------------------------------------------- 1 | // Dark Theme 2 | // By: 3 | .dark[app-theme] { 4 | --background: #121212; 5 | --text: #eff3f8; 6 | --grey: #999; 7 | --secondary: #202020; 8 | --secalt: #111; 9 | --textalt: #eee; 10 | --norm: #eee; 11 | --formbg: #111; 12 | --link: #4da3ff; 13 | --hover: #72b6ff; 14 | --border: #484848; 15 | --mborder: #484848; 16 | --filter: invert(98%) sepia(1%) saturate(264%) hue-rotate(181deg) 17 | brightness(116%) contrast(100%); 18 | --unread: #1a293f; 19 | --topbar: #2e2e2e; 20 | --cblue: #0058f7; 21 | --cred: #fe3537; 22 | --cgreen: #19b028; 23 | --cgold: #ffd700; 24 | --button: #0058f7; 25 | --loading: #999; 26 | } 27 | -------------------------------------------------------------------------------- /src/app/top-bar-mobile/top-bar-mobile-navigation-control/top-bar-mobile-navigation-control.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, Input } from '@angular/core'; 2 | import { NavigationService } from '../../../lib/services/navigation-service'; 3 | 4 | @Component({ 5 | selector: 'top-bar-mobile-navigation-control', 6 | templateUrl: './top-bar-mobile-navigation-control.component.html', 7 | styleUrls: ['./top-bar-mobile-navigation-control.component.scss'], 8 | }) 9 | export class TopBarMobileNavigationControlComponent { 10 | @Input() forceShowBackButton = false; 11 | @Input() isLightColor = false; 12 | 13 | constructor(public navigationService: NavigationService) {} 14 | } 15 | -------------------------------------------------------------------------------- /src/app/theme/themes/cake.scss: -------------------------------------------------------------------------------- 1 | // Cake Theme 2 | // By: @brixboston100 3 | .cake[app-theme] { 4 | --background: #f8edeb; 5 | --text: #47205c; 6 | --grey: #6d4e75; 7 | --secondary: #f3e1e1; 8 | --secalt: #fae1dd; 9 | --textalt: #a97aa2; 10 | --norm: #47205c; 11 | --formbg: #fff5f3; 12 | --link: #009aff; 13 | --hover: #008cad; 14 | --border: #fae1dd; 15 | --mborder: #fae1dd; 16 | --filter: grayscale(0.5) sepia(1) hue-rotate(227deg) saturate(9.2) 17 | opacity(0.78); 18 | --unread: #f3e1e1; 19 | --topbar: #ead8d8; 20 | --cblue: #457b9d; 21 | --cred: #ff3298; 22 | --cgreen: #69ab4f; 23 | --cgold: #ffd700; 24 | --button: #009aff; 25 | --loading: #d2a59d; 26 | } 27 | -------------------------------------------------------------------------------- /src/app/theme/themes/icydark.scss: -------------------------------------------------------------------------------- 1 | // Icy Dark Theme 2 | // By: 3 | .icydark[app-theme] { 4 | --background: #15202b; 5 | --text: #eff3f8; 6 | --grey: #999; 7 | --secondary: #1c2732; 8 | --secalt: #111b26; 9 | --textalt: #eee; 10 | --norm: #eee; 11 | --formbg: #111b26; 12 | --link: #3a9eea; 13 | --hover: #72b6ff; 14 | --border: #38444d; 15 | --mborder: #38444d; 16 | --filter: invert(98%) sepia(1%) saturate(264%) hue-rotate(181deg) 17 | brightness(116%) contrast(100%); 18 | --unread: #1a293f; 19 | --topbar: #041223; 20 | --cblue: #238eff; 21 | --cred: #e0245e; 22 | --cgreen: #17bf63; 23 | --cgold: #ffd700; 24 | --button: #0058f7; 25 | --loading: #999; 26 | } 27 | -------------------------------------------------------------------------------- /src/app/theme/themes/legends.scss: -------------------------------------------------------------------------------- 1 | // Legends Theme 2 | // By: 3 | .legends[app-theme] { 4 | --background: #1c1812; 5 | --text: #eff3f8; 6 | --grey: #999; 7 | --secondary: #2d261c; 8 | --secalt: #14110e; 9 | --textalt: #eee; 10 | --norm: #eee; 11 | --formbg: #14110e; 12 | --link: #d3b882; 13 | --hover: #e5c075; 14 | --border: #382418; 15 | --mborder: #382418; 16 | --filter: invert(98%) sepia(1%) saturate(264%) hue-rotate(181deg) 17 | brightness(116%) contrast(100%); 18 | --unread: #1a293f; 19 | --topbar: #16130d; 20 | --cblue: #238eff; 21 | --cred: #e0245e; 22 | --cgreen: #17bf63; 23 | --cgold: #ffd700; 24 | --button: #d3b882; 25 | --loading: #999; 26 | } 27 | -------------------------------------------------------------------------------- /src/app/app.component.scss: -------------------------------------------------------------------------------- 1 | #my-canvas-0 { 2 | position: fixed; 3 | z-index: 2000; 4 | height: 100%; 5 | width: 100%; 6 | pointer-events: none; 7 | } 8 | #my-canvas-1 { 9 | position: fixed; 10 | z-index: 2000; 11 | height: 100%; 12 | width: 100%; 13 | pointer-events: none; 14 | } 15 | #my-canvas-2 { 16 | position: fixed; 17 | z-index: 2000; 18 | height: 100%; 19 | width: 100%; 20 | pointer-events: none; 21 | } 22 | #my-canvas-3 { 23 | position: fixed; 24 | z-index: 2000; 25 | height: 100%; 26 | width: 100%; 27 | pointer-events: none; 28 | } 29 | #my-canvas-4 { 30 | position: fixed; 31 | z-index: 2000; 32 | height: 100%; 33 | width: 100%; 34 | pointer-events: none; 35 | } 36 | -------------------------------------------------------------------------------- /src/app/theme/themes/greenish.scss: -------------------------------------------------------------------------------- 1 | // Greenish Theme 2 | // By: @mrpreet 3 | .greenish[app-theme] { 4 | --background: #03353e; 5 | --text: #ffffff; 6 | --grey: #ffffff; 7 | --secondary: #00515a; 8 | --secalt: #001e24; 9 | --textalt: #eee; 10 | --norm: #ffffff; 11 | --formbg: #001e24; 12 | --link: #03a8bb; 13 | --hover: #0294a5; 14 | --border: #00515a; 15 | --mborder: #00515a; 16 | --filter: invert(98%) sepia(1%) saturate(264%) hue-rotate(181deg) 17 | brightness(116%) contrast(100%); 18 | --unread: #034753; 19 | --topbar: #034753; 20 | --cblue: #238eff; 21 | --cred: #e0245e; 22 | --cgreen: #17bf63; 23 | --cgold: #ffd700; 24 | --button: #03a8bb; 25 | --loading: #ffffff; 26 | } 27 | -------------------------------------------------------------------------------- /src/app/likes-modal/likes-modal.component.html: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /src/app/reposts-modal/reposts-modal.component.html: -------------------------------------------------------------------------------- 1 |
2 |
5 |
6 | × 7 |
8 |
9 | 10 |
11 |
12 | 17 |
18 |
19 | 20 | 21 |
22 | -------------------------------------------------------------------------------- /src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting, 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting() 16 | ); 17 | // Then we find all the tests. 18 | const context = require.context('./', true, /\.spec\.ts$/); 19 | // And load the modules. 20 | context.keys().map(context); 21 | -------------------------------------------------------------------------------- /src/app/page/page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { PageComponent } from './page.component'; 4 | 5 | describe('PageComponent', () => { 6 | let component: PageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [PageComponent], 12 | }).compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(PageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/feed/feed.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { FeedComponent } from './feed.component'; 4 | 5 | describe('FeedComponent', () => { 6 | let component: FeedComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [FeedComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(FeedComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/admin/admin.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { AdminComponent } from './admin.component'; 4 | 5 | describe('AdminComponent', () => { 6 | let component: AdminComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [AdminComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(AdminComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/sign-up/sign-up.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SignUpComponent } from './sign-up.component'; 4 | 5 | describe('SignUpComponent', () => { 6 | let component: SignUpComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [SignUpComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(SignUpComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/diamonds-modal/diamonds-modal.component.html: -------------------------------------------------------------------------------- 1 |
2 |
5 |
6 | × 7 |
8 |
9 | 10 |
11 |
12 | 17 |
18 |
19 | 20 | 21 |
22 | -------------------------------------------------------------------------------- /src/app/left-bar/left-bar.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { LeftBarComponent } from './left-bar.component'; 4 | 5 | describe('LeftBarComponent', () => { 6 | let component: LeftBarComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [LeftBarComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(LeftBarComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/settings/settings.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SettingsComponent } from './settings.component'; 4 | 5 | describe('SettingsComponent', () => { 6 | let component: SettingsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [SettingsComponent], 12 | }).compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(SettingsComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/tos-page/tos-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TosPageComponent } from './tos-page.component'; 4 | 5 | describe('TosPageComponent', () => { 6 | let component: TosPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TosPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TosPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/trends-page/trends/trends.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TrendsComponent } from './trends.component'; 4 | 5 | describe('TrendsComponent', () => { 6 | let component: TrendsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TrendsComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TrendsComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/buy-deso-page/buy-deso/buy-deso.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { BuyDeSoComponent } from './buy-deso.component'; 4 | 5 | describe('BuyDeSoComponent', () => { 6 | let component: BuyDeSoComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [BuyDeSoComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(BuyDeSoComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/feed/feed-post/feed-post.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { FeedPostComponent } from './feed-post.component'; 4 | 5 | describe('FeedPostComponent', () => { 6 | let component: FeedPostComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [FeedPostComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(FeedPostComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/messages-page/message/message.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { MessageComponent } from './message.component'; 4 | 5 | describe('MessageComponent', () => { 6 | let component: MessageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [MessageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(MessageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/nft-post-page/nft-post/nft-post.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { NftPostComponent } from './nft-post.component'; 4 | 5 | describe('NftPostComponent', () => { 6 | let component: NftPostComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [NftPostComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(NftPostComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/admin-page/admin-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { AdminPageComponent } from './admin-page.component'; 4 | 5 | describe('AdminPageComponent', () => { 6 | let component: AdminPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [AdminPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(AdminPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/buy-deso-page/buy-deso-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { GlobalVarsService } from '../global-vars.service'; 3 | import { Title } from '@angular/platform-browser'; 4 | import { environment } from 'src/environments/environment'; 5 | 6 | @Component({ 7 | selector: 'buy-deso-page', 8 | templateUrl: './buy-deso-page.component.html', 9 | styleUrls: ['./buy-deso-page.component.scss'], 10 | }) 11 | export class BuyDeSoPageComponent implements OnInit { 12 | isLeftBarMobileOpen: boolean = false; 13 | 14 | ngOnInit() { 15 | this.titleService.setTitle(`Buy $DESO - ${environment.node.name}`); 16 | } 17 | 18 | constructor( 19 | public globalVars: GlobalVarsService, 20 | private titleService: Title 21 | ) {} 22 | } 23 | -------------------------------------------------------------------------------- /src/app/search-bar/search-bar.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SearchBarComponent } from './search-bar.component'; 4 | 5 | describe('SearchBarComponent', () => { 6 | let component: SearchBarComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [SearchBarComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(SearchBarComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | import { browser, logging } from 'protractor'; 3 | 4 | describe('workspace-project App', () => { 5 | let page: AppPage; 6 | 7 | beforeEach(() => { 8 | page = new AppPage(); 9 | }); 10 | 11 | it('should display welcome message', () => { 12 | page.navigateTo(); 13 | expect(page.getTitleText()).toEqual('Welcome to electron-angular-app!'); 14 | }); 15 | 16 | afterEach(async () => { 17 | // Assert that there are no errors emitted from the browser 18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER); 19 | expect(logs).not.toContain( 20 | jasmine.objectContaining({ 21 | level: logging.Level.SEVERE, 22 | } as logging.Entry) 23 | ); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/admin/admin-wyre/admin-wyre.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { AdminWyreComponent } from './admin-wyre.component'; 4 | 5 | describe('AdminWyreComponent', () => { 6 | let component: AdminWyreComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [AdminWyreComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(AdminWyreComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/browse-page/browse-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { BrowsePageComponent } from './browse-page.component'; 4 | 5 | describe('BrowseComponent', () => { 6 | let component: BrowsePageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [BrowsePageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(BrowsePageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/not-found-page/not-found/not-found.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { NotFoundComponent } from './not-found.component'; 4 | 5 | describe('NotFoundComponent', () => { 6 | let component: NotFoundComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [NotFoundComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(NotFoundComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/simple-center-loader/simple-center-loader.component.ts: -------------------------------------------------------------------------------- 1 | import { 2 | ApplicationRef, 3 | ChangeDetectorRef, 4 | Component, 5 | OnInit, 6 | Input, 7 | ViewEncapsulation, 8 | } from '@angular/core'; 9 | 10 | @Component({ 11 | selector: 'simple-center-loader', 12 | templateUrl: './simple-center-loader.component.html', 13 | styleUrls: ['./simple-center-loader.component.scss'], 14 | }) 15 | export class SimpleCenterLoaderComponent { 16 | @Input() titleLoadingText: string = 'Loading...'; 17 | @Input() subtitleLoadingText: string = ''; 18 | @Input() spinnerColor: string = 'gray'; 19 | @Input() textColor: string = 'gray'; 20 | @Input() height = 400; 21 | 22 | constructor() {} 23 | 24 | getHeight() { 25 | return `${this.height.toString()}px`; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/app/theme/theme.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule, ModuleWithProviders } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | 4 | import { ThemeService } from './theme.service'; 5 | import { THEMES, ACTIVE_THEME, ThemeOptions } from './symbols'; 6 | 7 | @NgModule({ 8 | imports: [CommonModule], 9 | providers: [ThemeService], 10 | }) 11 | export class ThemeModule { 12 | static forRoot(options: ThemeOptions): ModuleWithProviders { 13 | return { 14 | ngModule: ThemeModule, 15 | providers: [ 16 | { 17 | provide: THEMES, 18 | useValue: options.themes, 19 | }, 20 | { 21 | provide: ACTIVE_THEME, 22 | useValue: options.active, 23 | }, 24 | ], 25 | }; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/app/trends-page/trends-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TrendsPageComponent } from './trends-page.component'; 4 | 5 | describe('TrendsPageComponent', () => { 6 | let component: TrendsPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TrendsPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TrendsPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/admin/admin-jumio/admin-jumio.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { AdminJumioComponent } from './admin-jumio.component'; 4 | 5 | describe('AdminJumioComponent', () => { 6 | let component: AdminJumioComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [AdminJumioComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(AdminJumioComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/landing-page/landing-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { LandingPageComponent } from './landing-page.component'; 4 | 5 | describe('LandingPageComponent', () => { 6 | let component: LandingPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [LandingPageComponent], 12 | }).compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(LandingPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/verify-email/verify-email.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { VerifyEmailComponent } from './verify-email.component'; 4 | 5 | describe('VerifyEmailComponent', () => { 6 | let component: VerifyEmailComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [VerifyEmailComponent], 12 | }).compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(VerifyEmailComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/wallet/wallet-page/wallet-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { WalletPageComponent } from './wallet-page.component'; 4 | 5 | describe('WalletPageComponent', () => { 6 | let component: WalletPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [WalletPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(WalletPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/buy-deso-page/buy-deso-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { BuyDeSoPageComponent } from './buy-deso-page.component'; 4 | 5 | describe('BuyDeSoPageComponent', () => { 6 | let component: BuyDeSoPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [BuyDeSoPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(BuyDeSoPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/jumio-status/jumio-status.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { JumioStatusComponent } from './jumio-status.component'; 4 | 5 | describe('JumioStatusComponent', () => { 6 | let component: JumioStatusComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [JumioStatusComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(JumioStatusComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/network-info/network-info.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { NetworkInfoComponent } from './network-info.component'; 4 | 5 | describe('NetworkInfoComponent', () => { 6 | let component: NetworkInfoComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [NetworkInfoComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(NetworkInfoComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/nft-post-page/nft-post-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { NftPostPageComponent } from './nft-post-page.component'; 4 | 5 | describe('NftPostPageComponent', () => { 6 | let component: NftPostPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [NftPostPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(NftPostPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/tab-selector/tab-selector.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TabSelectorComponent } from './tab-selector.component'; 4 | 5 | describe('TabSelectorComponent', () => { 6 | let component: TabSelectorComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TabSelectorComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TabSelectorComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/buy-deso-page/buy-deso-usd/buy-deso-usd.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { BuyDeSoUSDComponent } from './buy-deso-usd.component'; 4 | 5 | describe('BuyDeSoUSDComponent', () => { 6 | let component: BuyDeSoUSDComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [BuyDeSoUSDComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(BuyDeSoUSDComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/comment-modal/comment-modal.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CommentModalComponent } from './comment-modal.component'; 4 | 5 | describe('CommentModalComponent', () => { 6 | let component: CommentModalComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [CommentModalComponent], 12 | }).compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(CommentModalComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/post-thread-page/post-thread/post-thread.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { PostThreadComponent } from './post-thread.component'; 4 | 5 | describe('PostThreadComponent', () => { 6 | let component: PostThreadComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [PostThreadComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(PostThreadComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/follow-button/follow-button.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { FollowButtonComponent } from './follow-button.component'; 4 | 5 | describe('FollowButtonComponent', () => { 6 | let component: FollowButtonComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [FollowButtonComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(FollowButtonComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/messages-page/messages-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { MessagesPageComponent } from './messages-page.component'; 4 | 5 | describe('MessagesPageComponent', () => { 6 | let component: MessagesPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [MessagesPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(MessagesPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/not-found-page/not-found-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { NotFoundPageComponent } from './not-found-page.component'; 4 | 5 | describe('NotFoundPageComponent', () => { 6 | let component: NotFoundPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [NotFoundPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(NotFoundPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/not-found-page/not-found/not-found.component.html: -------------------------------------------------------------------------------- 1 |
5 |
6 | 9 | 10 | Page not found 11 |
12 |
13 | 14 |
15 |

Page not found

16 | 17 |
This is a 404 error
18 | 19 |
20 | Sorry! If this is a problem on our end, we've been notified and are working 21 | to fix it. 22 |
23 |
24 | -------------------------------------------------------------------------------- /src/app/settings-page/settings-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SettingsPageComponent } from './settings-page.component'; 4 | 5 | describe('SettingsPageComponent', () => { 6 | let component: SettingsPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [SettingsPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(SettingsPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/transfer-deso/transfer-deso.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TransferDeSoComponent } from './transfer-deso.component'; 4 | 5 | describe('TransferDeSoComponent', () => { 6 | let component: TransferDeSoComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TransferDeSoComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TransferDeSoComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/dao-coins/dao-coins-page/dao-coins-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { DaoCoinsPageComponent } from './wallet-page.component'; 4 | 5 | describe('WalletPageComponent', () => { 6 | let component: DaoCoinsPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [DaoCoinsPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(DaoCoinsPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/left-bar-mobile/left-bar-mobile.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { LeftBarMobileComponent } from './left-bar-mobile.component'; 4 | 5 | describe('LeftBarMobileComponent', () => { 6 | let component: LeftBarMobileComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [LeftBarMobileComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(LeftBarMobileComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | uploadImageHostname: 'node.deso.org', 4 | verificationEndpointHostname: 'https://node.deso.org', 5 | uploadVideoHostname: 'media.deso.org', 6 | identityURL: 'https://identity.deso.org', 7 | supportEmail: '', 8 | dd: { 9 | apiKey: 'DCEB26AC8BF47F1D7B4D87440EDCA6', 10 | jsPath: 'https://bitclout.com/tags.js', 11 | ajaxListenerPath: 'bitclout.com/api', 12 | endpoint: 'https://bitclout.com/js/', 13 | }, 14 | amplitude: { 15 | key: '', 16 | domain: '', 17 | }, 18 | node: { 19 | id: 1, 20 | name: 'DeSo', 21 | url: 'https://node.deso.org', 22 | logoAssetDir: '/assets/deso/', 23 | }, 24 | heroswapURL: 'https://heroswap.com', 25 | heroswapAffiliateName: 'frontendprod', 26 | }; 27 | -------------------------------------------------------------------------------- /src/app/admin/admin-node-fees/admin-node-fees.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { AdminNodeFeesComponent } from './admin-node-fees.component'; 4 | 5 | describe('AdminNodeFeesComponent', () => { 6 | let component: AdminNodeFeesComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [AdminNodeFeesComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(AdminNodeFeesComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/countdown-timer/countdown-timer.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CountdownTimerComponent } from './countdown-timer.component'; 4 | 5 | describe('CountdownTimerComponent', () => { 6 | let component: CountdownTimerComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [CountdownTimerComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(CountdownTimerComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator/trade-creator.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TradeCreatorComponent } from './trade-creator.component'; 4 | 5 | describe('TradeCreatorComponent', () => { 6 | let component: TradeCreatorComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TradeCreatorComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TradeCreatorComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/create-post-page/create-post-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CreatePostPageComponent } from './create-post-page.component'; 4 | 5 | describe('CreatePostPageComponent', () => { 6 | let component: CreatePostPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [CreatePostPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(CreatePostPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/diamond-posts-page/diamond-posts/diamond-posts.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { DiamondPostsComponent } from './diamond-posts.component'; 4 | 5 | describe('DiamondPostsPageComponent', () => { 6 | let component: DiamondPostsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [DiamondPostsComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(DiamondPostsComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/left-bar/left-bar-button/left-bar-button.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { LeftBarButtonComponent } from './left-bar-button.component'; 4 | 5 | describe('LeftBarButtonComponent', () => { 6 | let component: LeftBarButtonComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [LeftBarButtonComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(LeftBarButtonComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/messages-page/messages-inbox/messages-inbox.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { MessagesInboxComponent } from './messages-inbox.component'; 4 | 5 | describe('MessagesInboxComponent', () => { 6 | let component: MessagesInboxComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [MessagesInboxComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(MessagesInboxComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/post-thread-page/post-thread-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { PostThreadPageComponent } from './post-thread-page.component'; 4 | 5 | describe('PostThreadPageComponent', () => { 6 | let component: PostThreadPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [PostThreadPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(PostThreadPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/right-bar-signup/right-bar-signup.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { RightBarSignupComponent } from './right-bar-signup.component'; 4 | 5 | describe('RightBarSignupComponent', () => { 6 | let component: RightBarSignupComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [RightBarSignupComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(RightBarSignupComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/terms-of-service/terms-of-service.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TermsOfServiceComponent } from './terms-of-service.component'; 4 | 5 | describe('TermsOfServiceComponent', () => { 6 | let component: TermsOfServiceComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TermsOfServiceComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TermsOfServiceComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/feed/feed-create-post/feed-create-post.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { FeedCreatePostComponent } from './feed-create-post.component'; 4 | 5 | describe('FeedCreatePostComponent', () => { 6 | let component: FeedCreatePostComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [FeedCreatePostComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(FeedCreatePostComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/manage-follows-page/manage-follows/manage-follows.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ManageFollowsComponent } from './manage-follows.component'; 4 | 5 | describe('ManageFollowsComponent', () => { 6 | let component: ManageFollowsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ManageFollowsComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(ManageFollowsComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/update-profile-page/update-profile/update-profile.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { UpdateProfileComponent } from './update-profile.component'; 4 | 5 | describe('UpdateProfileComponent', () => { 6 | let component: UpdateProfileComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [UpdateProfileComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(UpdateProfileComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | # Only exists if Bazel was run 8 | /bazel-out 9 | 10 | # dependencies 11 | /node_modules 12 | 13 | # profiling files 14 | chrome-profiler-events.json 15 | speed-measure-plugin.json 16 | 17 | # IDEs and editors 18 | /.idea 19 | .project 20 | .classpath 21 | .c9/ 22 | *.launch 23 | .settings/ 24 | *.sublime-workspace 25 | 26 | # IDE - VSCode 27 | .vscode/* 28 | !.vscode/settings.json 29 | !.vscode/tasks.json 30 | !.vscode/launch.json 31 | !.vscode/extensions.json 32 | .history/* 33 | 34 | # misc 35 | /.sass-cache 36 | /connect.lock 37 | /coverage 38 | /libpeerconnection.log 39 | npm-debug.log 40 | yarn-error.log 41 | testem.log 42 | /typings 43 | 44 | # System Files 45 | .DS_Store 46 | Thumbs.db 47 | -------------------------------------------------------------------------------- /src/app/bottom-bar-mobile/bottom-bar-mobile.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { BottomBarMobileComponent } from './bottom-bar-mobile.component'; 4 | 5 | describe('BottomBarMobileComponent', () => { 6 | let component: BottomBarMobileComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [BottomBarMobileComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(BottomBarMobileComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/messages-page/messages-thread/messages-thread.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { MessagesThreadComponent } from './messages-thread.component'; 4 | 5 | describe('MessagesThreadComponent', () => { 6 | let component: MessagesThreadComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [MessagesThreadComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(MessagesThreadComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/create-post-page/create-post-form/create-post-form.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CreatePostFormComponent } from './create-post-form.component'; 4 | 5 | describe('CreatePostFormComponent', () => { 6 | let component: CreatePostFormComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [CreatePostFormComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(CreatePostFormComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/diamond-posts-page/diamond-posts-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { DiamondPostsPageComponent } from './diamond-posts-page.component'; 4 | 5 | describe('DiamondPostsPageComponent', () => { 6 | let component: DiamondPostsPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [DiamondPostsPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(DiamondPostsPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/feed/feed-post-icon-row/feed-post-icon-row.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { FeedPostIconRowComponent } from './feed-post-icon-row.component'; 4 | 5 | describe('FeedPostIconRowComponent', () => { 6 | let component: FeedPostIconRowComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [FeedPostIconRowComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(FeedPostIconRowComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/right-bar-creators/right-bar-creators.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { RightBarCreatorsComponent } from './right-bar-creators.component'; 4 | 5 | describe('RightBarCreatorsComponent', () => { 6 | let component: RightBarCreatorsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [RightBarCreatorsComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(RightBarCreatorsComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TradeCreatorPageComponent } from './trade-creator-page.component'; 4 | 5 | describe('TradeCreatorPageComponent', () => { 6 | let component: TradeCreatorPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TradeCreatorPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TradeCreatorPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/transfer-deso-page/transfer-deso-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TransferDeSoPageComponent } from './transfer-deso-page.component'; 4 | 5 | describe('TransferDeSoPageComponent', () => { 6 | let component: TransferDeSoPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TransferDeSoPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TransferDeSoPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/buy-deso-page/buy-deso-heroswap/buy-deso-heroswap.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { BuyDeSoHeroSwapComponent } from './buy-deso-heroswap.component'; 4 | 5 | describe('BuyDeSoHeroSwapComponent', () => { 6 | let component: BuyDeSoHeroSwapComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [BuyDeSoHeroSwapComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(BuyDeSoHeroSwapComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/get-starter-deso-page/get-starter-deso/get-starter-deso.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { GetStarterDeSoComponent } from './get-starter-deso.component'; 4 | 5 | describe('GetStarterDeSoComponent', () => { 6 | let component: GetStarterDeSoComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [GetStarterDeSoComponent], 12 | }).compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(GetStarterDeSoComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/page/page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, HostListener, Input, OnInit } from '@angular/core'; 2 | import { GlobalVarsService } from '../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'app-page', 6 | templateUrl: './page.component.html', 7 | styleUrls: ['./page.component.scss'], 8 | }) 9 | export class PageComponent implements OnInit { 10 | @Input() hideSidebar: string; 11 | @Input() showPostButton = false; 12 | @Input() inTutorial: boolean = false; 13 | mobile = false; 14 | 15 | @HostListener('window:resize') onResize() { 16 | this.setMobileBasedOnViewport(); 17 | } 18 | 19 | constructor(private globalVars: GlobalVarsService) {} 20 | 21 | ngOnInit() { 22 | this.setMobileBasedOnViewport(); 23 | } 24 | 25 | setMobileBasedOnViewport() { 26 | this.mobile = this.globalVars.isMobile(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-diamonds/creator-diamonds.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CreatorDiamondsComponent } from './creator-diamonds.component'; 4 | 5 | describe('CreatorDiamondsComponent', () => { 6 | let component: CreatorDiamondsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [CreatorDiamondsComponent], 12 | }).compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(CreatorDiamondsComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/manage-follows-page/manage-follows-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ManageFollowsPageComponent } from './manage-follows-page.component'; 4 | 5 | describe('ManageFollowsPageComponent', () => { 6 | let component: ManageFollowsPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ManageFollowsPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(ManageFollowsPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/notifications-page/notifications-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { NotificationsPageComponent } from './notifications-page.component'; 4 | 5 | describe('NotificationsPageComponent', () => { 6 | let component: NotificationsPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [NotificationsPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(NotificationsPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/update-profile-page/update-profile-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { UpdateProfilePageComponent } from './update-profile-page.component'; 4 | 5 | describe('UpdateProfilePageComponent', () => { 6 | let component: UpdateProfilePageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [UpdateProfilePageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(UpdateProfilePageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/environments/environment.deso.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | uploadImageHostname: 'node.deso.org', 4 | verificationEndpointHostname: 'https://node.deso.org', 5 | uploadVideoHostname: 'media.deso.org', 6 | identityURL: 'https://identity.deso.org', 7 | supportEmail: '', 8 | dd: { 9 | apiKey: 'DCEB26AC8BF47F1D7B4D87440EDCA6', 10 | jsPath: 'https://bitclout.com/tags.js', 11 | ajaxListenerPath: 'bitclout.com/api', 12 | endpoint: 'https://bitclout.com/js/', 13 | }, 14 | amplitude: { 15 | key: '5ece1af35cd1bed80fe60bbc30700a00', 16 | domain: 'amp.deso.org', 17 | }, 18 | node: { 19 | id: 1, 20 | name: 'DeSo', 21 | url: 'https://node.deso.org', 22 | logoAssetDir: '/assets/deso/', 23 | }, 24 | heroswapURL: 'https://heroswap.com', 25 | heroswapAffiliateName: 'nodedesoorg', 26 | }; 27 | -------------------------------------------------------------------------------- /src/environments/environment.dev.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | uploadImageHostname: 'test.deso.org', 4 | verificationEndpointHostname: 'https://test.deso.org', 5 | uploadVideoHostname: 'media.deso.org', 6 | identityURL: 'https://identity.deso.org', 7 | supportEmail: '', 8 | dd: { 9 | apiKey: 'DCEB26AC8BF47F1D7B4D87440EDCA6', 10 | jsPath: 'https://bitclout.com/tags.js', 11 | ajaxListenerPath: 'bitclout.com/api', 12 | endpoint: 'https://bitclout.com/js/', 13 | }, 14 | amplitude: { 15 | key: '66f7a908e20002d513850c69e1cea3df', 16 | domain: 'amp.deso.org', 17 | }, 18 | node: { 19 | id: 1, 20 | name: 'DeSo', 21 | url: 'https://test.deso.org', 22 | logoAssetDir: '/assets/deso/', 23 | }, 24 | heroswapURL: 'https://heroswap.com', 25 | heroswapAffiliateName: 'frontenddev', 26 | }; 27 | -------------------------------------------------------------------------------- /src/app/buy-deso-page/buy-deso-logged-out/buy-deso-logged-out.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { BuyDeSoLoggedOutComponent } from './buy-deso-logged-out.component'; 4 | 5 | describe('BuyDeSoLoggedOutComponent', () => { 6 | let component: BuyDeSoLoggedOutComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [BuyDeSoLoggedOutComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(BuyDeSoLoggedOutComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-profile-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CreatorProfilePageComponent } from './creator-profile-page.component'; 4 | 5 | describe('CreatorProfilePageComponent', () => { 6 | let component: CreatorProfilePageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [CreatorProfilePageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(CreatorProfilePageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/get-starter-deso-page/get-starter-deso-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { GetStarterDeSoPageComponent } from './get-starter-deso-page.component'; 4 | 5 | describe('GetStarterDeSoPageComponent', () => { 6 | let component: GetStarterDeSoPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [GetStarterDeSoPageComponent], 12 | }).compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(GetStarterDeSoPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/simple-center-loader/simple-center-loader.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SimpleCenterLoaderComponent } from './simple-center-loader.component'; 4 | 5 | describe('SimpleCenterLoaderComponent', () => { 6 | let component: SimpleCenterLoaderComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [SimpleCenterLoaderComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(SimpleCenterLoaderComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-form/trade-creator-form.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TradeCreatorFormComponent } from './trade-creator-form.component'; 4 | 5 | describe('TradeCreatorFormComponent', () => { 6 | let component: TradeCreatorFormComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TradeCreatorFormComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TradeCreatorFormComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/tutorial/wallet-tutorial-page/wallet-tutorial-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { WalletTutorialPageComponent } from './wallet-tutorial-page.component'; 4 | 5 | describe('WalletPageComponent', () => { 6 | let component: WalletTutorialPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [WalletTutorialPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(WalletTutorialPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/feed/feed-post-image-modal/feed-post-image-modal.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { FeedPostImageModalComponent } from './feed-post-image-modal.component'; 4 | 5 | describe('FeedPostImageModalComponent', () => { 6 | let component: FeedPostImageModalComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [FeedPostImageModalComponent], 12 | }).compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(FeedPostImageModalComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/notifications-page/notifications-list/notifications-list.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { NotificationsListComponent } from './notifications-list.component'; 4 | 5 | describe('NotificationsListComponent', () => { 6 | let component: NotificationsListComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [NotificationsListComponent], 12 | }).compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(NotificationsListComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/tab-selector/tab-selector.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, Output, EventEmitter } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'tab-selector', 5 | templateUrl: './tab-selector.component.html', 6 | styleUrls: ['./tab-selector.component.scss'], 7 | }) 8 | export class TabSelectorComponent { 9 | @Output() tabClick = new EventEmitter(); 10 | @Input() tabs: any; // Should be a list of strings with tab names. 11 | @Input() activeTab: string; 12 | @Input() linkTabs: {} = {}; 13 | 14 | constructor() {} 15 | 16 | _tabClicked(tab: string) { 17 | if (tab in this.linkTabs) { 18 | window.open(this.linkTabs[tab], "_blank"); 19 | } else { 20 | this.tabClick.emit(tab); 21 | this.activeTab = tab; 22 | } 23 | } 24 | 25 | isLink(tabName: string) { 26 | return tabName in this.linkTabs; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-table/trade-creator-table.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TradeCreatorTableComponent } from './trade-creator-table.component'; 4 | 5 | describe('TradeCreatorTableComponent', () => { 6 | let component: TradeCreatorTableComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TradeCreatorTableComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TradeCreatorTableComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/tutorial/diamond-tutorial-page/diamond-tutorial/diamond-tutorial.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { DiamondTutorialComponent } from './diamond-tutorial.component'; 4 | 5 | describe('BuyCreatorCoinsTutorialComponent', () => { 6 | let component: DiamondTutorialComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [DiamondTutorialComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(DiamondTutorialComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/messages-page/messages-thread-view/messages-thread-view.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { MessagesThreadViewComponent } from './messages-thread-view.component'; 4 | 5 | describe('MessagesThreadViewComponent', () => { 6 | let component: MessagesThreadViewComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [MessagesThreadViewComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(MessagesThreadViewComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/bottom-bar-mobile/bottom-bar-mobile-tab/bottom-bar-mobile-tab.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { BottomBarMobileTabComponent } from './bottom-bar-mobile-tab.component'; 4 | 5 | describe('BottomBarMobileTabComponent', () => { 6 | let component: BottomBarMobileTabComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [BottomBarMobileTabComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(BottomBarMobileTabComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-profile-nfts/creator-profile-nfts.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CreatorProfileNftsComponent } from './creator-profile-nfts.component'; 4 | 5 | describe('CreatorProfilePostsComponent', () => { 6 | let component: CreatorProfileNftsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [CreatorProfileNftsComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(CreatorProfileNftsComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/tutorial/diamond-tutorial-page/diamond-tutorial-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { DiamondTutorialPageComponent } from './diamond-tutorial-page.component'; 4 | 5 | describe('DiamondTutorialPageComponent', () => { 6 | let component: DiamondTutorialPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [DiamondTutorialPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(DiamondTutorialPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/change-account-selector/change-account-selector.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ChangeAccountSelectorComponent } from './change-account-selector.component'; 4 | 5 | describe('ChangeAccountSelectorComponent', () => { 6 | let component: ChangeAccountSelectorComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ChangeAccountSelectorComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(ChangeAccountSelectorComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-profile-posts/creator-profile-posts.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | import { CreatorProfilePostsComponent } from './creator-profile-posts.component'; 3 | 4 | describe('CreatorProfilePostsComponent', () => { 5 | let component: CreatorProfilePostsComponent; 6 | let fixture: ComponentFixture; 7 | 8 | beforeEach(async(() => { 9 | TestBed.configureTestingModule({ 10 | declarations: [CreatorProfilePostsComponent], 11 | }).compileComponents(); 12 | })); 13 | 14 | beforeEach(() => { 15 | fixture = TestBed.createComponent(CreatorProfilePostsComponent); 16 | component = fixture.componentInstance; 17 | fixture.detectChanges(); 18 | }); 19 | 20 | it('should create', () => { 21 | expect(component).toBeTruthy(); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /src/app/creators-leaderboard/creators-leaderboard/creators-leaderboard.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CreatorsLeaderboardComponent } from './creators-leaderboard.component'; 4 | 5 | describe('CreatorsLeaderboardComponent', () => { 6 | let component: CreatorsLeaderboardComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [CreatorsLeaderboardComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(CreatorsLeaderboardComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /e2e/protractor.conf.js: -------------------------------------------------------------------------------- 1 | // Protractor configuration file, see link for more information 2 | // https://github.com/angular/protractor/blob/master/lib/config.ts 3 | 4 | const { SpecReporter } = require('jasmine-spec-reporter'); 5 | 6 | exports.config = { 7 | allScriptsTimeout: 11000, 8 | specs: ['./src/**/*.e2e-spec.ts'], 9 | capabilities: { 10 | browserName: 'chrome', 11 | }, 12 | directConnect: true, 13 | baseUrl: 'http://localhost:4200/', 14 | framework: 'jasmine', 15 | jasmineNodeOpts: { 16 | showColors: true, 17 | defaultTimeoutInterval: 30000, 18 | print: function () {}, 19 | }, 20 | onPrepare() { 21 | require('ts-node').register({ 22 | project: require('path').join(__dirname, './tsconfig.e2e.json'), 23 | }); 24 | jasmine 25 | .getEnv() 26 | .addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); 27 | }, 28 | }; 29 | -------------------------------------------------------------------------------- /src/app/sign-up/sign-up-get-starter-deso/sign-up-get-starter-deso.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SignUpGetStarterDeSoComponent } from './sign-up-get-starter-deso.component'; 4 | 5 | describe('SignUpGetStarterDeSoComponent', () => { 6 | let component: SignUpGetStarterDeSoComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [SignUpGetStarterDeSoComponent], 12 | }).compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(SignUpGetStarterDeSoComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-preview/trade-creator-preview.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TradeCreatorPreviewComponent } from './trade-creator-preview.component'; 4 | 5 | describe('TradeCreatorPreviewComponent', () => { 6 | let component: TradeCreatorPreviewComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TradeCreatorPreviewComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TradeCreatorPreviewComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-complete/trade-creator-complete.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TradeCreatorCompleteComponent } from './trade-creator-complete.component'; 4 | 5 | describe('TradeCreatorCompleteComponent', () => { 6 | let component: TradeCreatorCompleteComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TradeCreatorCompleteComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TradeCreatorCompleteComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/environments/environment.bitclout.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | uploadImageHostname: 'node.deso.org', 4 | verificationEndpointHostname: 'https://node.deso.org', 5 | uploadVideoHostname: 'media.deso.org', 6 | identityURL: 'https://identity.deso.org', 7 | supportEmail: 'support@deso.org', 8 | dd: { 9 | apiKey: 'DCEB26AC8BF47F1D7B4D87440EDCA6', 10 | jsPath: 'https://bitclout.com/tags.js', 11 | ajaxListenerPath: 'bitclout.com/api', 12 | endpoint: 'https://bitclout.com/js/', 13 | }, 14 | amplitude: { 15 | key: 'eb2840b65cf3fa0fd605b2caa0926fb8', 16 | domain: 'amp.bitclout.com', 17 | }, 18 | node: { 19 | id: 2, 20 | name: 'BitClout', 21 | url: 'https://bitclout.com', 22 | logoAssetDir: '/assets/bitclout/', 23 | }, 24 | heroswapURL: 'https://heroswap.com', 25 | heroswapAffiliateName: 'bitcloutAffiliate', 26 | }; 27 | -------------------------------------------------------------------------------- /src/lib/pipes/sanitize-video-url-pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | import { DomSanitizer } from '@angular/platform-browser'; 3 | 4 | @Pipe({ 5 | name: 'sanitizeVideoUrl', 6 | }) 7 | export class SanitizeVideoUrlPipe implements PipeTransform { 8 | constructor(private sanitizer: DomSanitizer) {} 9 | transform(videoURL: string) { 10 | let url; 11 | try { 12 | url = new URL(videoURL); 13 | } catch (err) { 14 | return false; 15 | } 16 | // On this node, we also validate that it matches the expect video URL format 17 | const regExp = /^https:\/\/lvpr.tv\/\?v=[A-Za-z0-9]+$|^https:\/\/iframe\.videodelivery\.net\/[A-Za-z0-9]+[A-Za-z0-9]+(\?([A-Za-z0-9]+\=[A-Za-z0-9]+\&?)*)?$/; 18 | const match = videoURL.match(regExp); 19 | return ( 20 | match && match[0] && this.sanitizer.bypassSecurityTrustResourceUrl(url) 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/app/countdown-timer/countdown-timer.component.html: -------------------------------------------------------------------------------- 1 |
10 |
18 |
🎉
19 |
20 |
{{ timerText }}  
21 |
22 | {{ days + 'd ' + hours + 'h ' + minutes + 'm ' + seconds + 's' }} 23 |
24 |
25 |
🎉
26 |
27 |
28 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-profile-details/creator-profile-details.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CreatorProfileDetailsComponent } from './creator-profile-details.component'; 4 | 5 | describe('CreatorProfileDetailsComponent', () => { 6 | let component: CreatorProfileDetailsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [CreatorProfileDetailsComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(CreatorProfileDetailsComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-profile-hodlers/creator-profile-hodlers.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CreatorProfileHodlersComponent } from './creator-profile-hodlers.component'; 4 | 5 | describe('CreatorProfileHodlersComponent', () => { 6 | let component: CreatorProfileHodlersComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [CreatorProfileHodlersComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(CreatorProfileHodlersComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/creator-profile-page/creator-profile-top-card/creator-profile-top-card.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CreatorProfileTopCardComponent } from './creator-profile-top-card.component'; 4 | 5 | describe('CreatorProfileTopCardComponent', () => { 6 | let component: CreatorProfileTopCardComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [CreatorProfileTopCardComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(CreatorProfileTopCardComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/tab-selector/tab-selector.component.html: -------------------------------------------------------------------------------- 1 |
5 |
10 |
17 | 18 | 19 | 20 | {{ tab }} 21 |
22 |
29 |
30 |
31 | -------------------------------------------------------------------------------- /src/app/trade-creator-page/trade-creator-logged-out/trade-creator-logged-out.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TradeCreatorLoggedOutComponent } from './trade-creator-logged-out.component'; 4 | 5 | describe('TradeCreatorLoggedOutComponent', () => { 6 | let component: TradeCreatorLoggedOutComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TradeCreatorLoggedOutComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TradeCreatorLoggedOutComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/tutorial/create-post-tutorial-page/create-post-tutorial-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CreatePostTutorialPageComponent } from './create-post-tutorial-page.component'; 4 | 5 | describe('CreatePostTutorialPageComponent', () => { 6 | let component: CreatePostTutorialPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [CreatePostTutorialPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(CreatePostTutorialPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/supply-monitoring-stats-page/supply-monitoring-stats/supply-monitoring-stats.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SupplyMonitoringStatsComponent } from './supply-monitoring-stats.component'; 4 | 5 | describe('SupplyMonitoringStatsComponent', () => { 6 | let component: SupplyMonitoringStatsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [SupplyMonitoringStatsComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(SupplyMonitoringStatsComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/creators-leaderboard/creators-leaderboard-page/creators-leaderboard-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CreatorsLeaderboardPageComponent } from './creators-leaderboard-page.component'; 4 | 5 | describe('CreatorsLeaderboardPageComponent', () => { 6 | let component: CreatorsLeaderboardPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [CreatorsLeaderboardPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(CreatorsLeaderboardPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/supply-monitoring-stats-page/supply-monitoring-stats-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SupplyMonitoringStatsPageComponent } from './supply-monitoring-stats-page.component'; 4 | 5 | describe('SupplyMonitoringStatsPageComponent', () => { 6 | let component: SupplyMonitoringStatsPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [SupplyMonitoringStatsPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(SupplyMonitoringStatsPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/referrals/referrals.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { GlobalVarsService } from '../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'referrals', 6 | templateUrl: './referrals.component.html', 7 | }) 8 | export class ReferralsComponent implements OnInit { 9 | globalVars: GlobalVarsService; 10 | linkCopied = []; 11 | 12 | constructor(private _globalVars: GlobalVarsService) { 13 | this.globalVars = _globalVars; 14 | } 15 | 16 | ngOnInit(): void {} 17 | 18 | _copyLink(linkNum: number) { 19 | this.globalVars._copyText( 20 | this.globalVars.getLinkForReferralHash( 21 | this.globalVars.loggedInUser.ReferralInfoResponses[linkNum].Info 22 | .ReferralHashBase58 23 | ) 24 | ); 25 | 26 | this.linkCopied[linkNum] = true; 27 | setTimeout(() => { 28 | this.linkCopied[linkNum] = false; 29 | }, 500); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/app/tutorial/create-profile-tutorial-page/create-profile-tutorial-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CreateProfileTutorialPageComponent } from './create-profile-tutorial-page.component'; 4 | 5 | describe('CreateProfileTutorialPageComponent', () => { 6 | let component: CreateProfileTutorialPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [CreateProfileTutorialPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(CreateProfileTutorialPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/close-nft-auction-modal/close-nft-auction-modal.component.html: -------------------------------------------------------------------------------- 1 |
2 | 6 | 7 |
8 | You are going to close your auction. It will cancel all bids on your NFT and 9 | prevent new bids from being submitted. 10 |
11 |
12 | 20 |
21 | {{ auctionCounter }} of {{ auctionTotal }} closed 22 |
23 |
24 |
25 | -------------------------------------------------------------------------------- /src/app/terms-of-service/terms-of-service.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { ActivatedRoute } from '@angular/router'; 3 | 4 | @Component({ 5 | selector: 'app-terms-of-service', 6 | templateUrl: './terms-of-service.component.html', 7 | styleUrls: ['./terms-of-service.component.sass'], 8 | }) 9 | export class TermsOfServiceComponent { 10 | constructor(private route: ActivatedRoute) {} 11 | fragment = null; 12 | hasScrolled = false; 13 | 14 | ngOnInit() { 15 | this.route.fragment.subscribe((fragment) => { 16 | this.fragment = fragment; 17 | }); 18 | } 19 | 20 | ngAfterViewChecked(): void { 21 | try { 22 | if (this.fragment && !this.hasScrolled) { 23 | setTimeout(() => { 24 | document.querySelector('#' + this.fragment).scrollIntoView(); 25 | this.hasScrolled = true; 26 | }, 250); 27 | } 28 | } catch (e) {} 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/app/top-bar-mobile/top-bar-mobile-hamburger-menu/top-bar-mobile-hamburger-menu.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TopBarMobileHamburgerMenuComponent } from './top-bar-mobile-hamburger-menu.component'; 4 | 5 | describe('TopBarHamburgerMenuComponent', () => { 6 | let component: TopBarMobileHamburgerMenuComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TopBarMobileHamburgerMenuComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TopBarMobileHamburgerMenuComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/lib/validators/dynamic-max-validator.ts: -------------------------------------------------------------------------------- 1 | import { AbstractControl, ValidatorFn } from '@angular/forms'; 2 | 3 | // Uses a function getMaxFunction to compute the max and evaluates the max against 4 | // the current value 5 | export function dynamicMaxValidator( 6 | getMaxFunction: () => number, 7 | inclusive: boolean 8 | ): ValidatorFn { 9 | return (control: AbstractControl): { [key: string]: any } | null => { 10 | if (!control.value) { 11 | // let some other validator validate whether the field is required 12 | return null; 13 | } 14 | 15 | let value = parseFloat(control.value); 16 | let valid; 17 | if (isNaN(value) || getMaxFunction() == null) { 18 | valid = false; 19 | } else if (inclusive) { 20 | valid = value <= getMaxFunction(); 21 | } else { 22 | valid = value < getMaxFunction(); 23 | } 24 | return !valid ? { dynamicMax: { value: control.value } } : null; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial/buy-creator-coins-tutorial.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { BuyCreatorCoinsTutorialComponent } from './buy-creator-coins-tutorial.component'; 4 | 5 | describe('BuyCreatorCoinsTutorialComponent', () => { 6 | let component: BuyCreatorCoinsTutorialComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [BuyCreatorCoinsTutorialComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(BuyCreatorCoinsTutorialComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/assets/app.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "deso", 3 | "short_name": "deso", 4 | "description": "The crypto social network", 5 | "icons": [ 6 | { 7 | "src": "/assets/bitclout/logo-192.png", 8 | "type": "image/png", 9 | "sizes": "192x192", 10 | "purpose": "maskable" 11 | }, 12 | { 13 | "src": "/assets/bitclout/logo-512.png", 14 | "type": "image/png", 15 | "sizes": "512x512", 16 | "purpose": "maskable" 17 | }, 18 | { 19 | "src": "/assets/bitclout/logo-192.png", 20 | "type": "image/png", 21 | "sizes": "192x192", 22 | "purpose": "any" 23 | }, 24 | { 25 | "src": "/assets/bitclout/logo-512.png", 26 | "type": "image/png", 27 | "sizes": "512x512", 28 | "purpose": "any" 29 | } 30 | ], 31 | "start_url": "/", 32 | "scope": "/", 33 | "display": "standalone", 34 | "theme_color": "#182026", 35 | "background_color": "#FFF" 36 | } 37 | -------------------------------------------------------------------------------- /src/app/top-bar-mobile/top-bar-mobile-log-in-or-sign-up/top-bar-mobile-log-in-or-sign-up.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TopBarMobileLogInOrSignUpComponent } from './top-bar-mobile-log-in-or-sign-up.component'; 4 | 5 | describe('TopBarMobileLogInOrSignUpComponent', () => { 6 | let component: TopBarMobileLogInOrSignUpComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TopBarMobileLogInOrSignUpComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TopBarMobileLogInOrSignUpComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { BuyCreatorCoinsTutorialPageComponent } from './buy-creator-coins-tutorial-page.component'; 4 | 5 | describe('BuyCreatorCoinsTutorialPageComponent', () => { 6 | let component: BuyCreatorCoinsTutorialPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [BuyCreatorCoinsTutorialPageComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(BuyCreatorCoinsTutorialPageComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/tutorial/sell-creator-coins-tutorial-page/sell-creator-coins-tutorial/sell-creator-coins-tutorial.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SellCreatorCoinsTutorialComponent } from './sell-creator-coins-tutorial.component'; 4 | 5 | describe('SellCreatorCoinsTutorialComponent', () => { 6 | let component: SellCreatorCoinsTutorialComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [SellCreatorCoinsTutorialComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(SellCreatorCoinsTutorialComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/right-bar-creators/right-bar-creators-leaderboard/right-bar-creators-leaderboard.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { RightBarCreatorsLeaderboardComponent } from './right-bar-creators-leaderboard.component'; 4 | 5 | describe('RightBarCreatorsLeaderboardComponent', () => { 6 | let component: RightBarCreatorsLeaderboardComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [RightBarCreatorsLeaderboardComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(RightBarCreatorsLeaderboardComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/update-profile-page/update-profile-get-starter-deso/update-profile-get-starter-deso.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { UpdateProfileGetStarterDeSoComponent } from './update-profile-get-starter-deso.component'; 4 | 5 | describe('UpdateProfileGetStarterDeSoComponent', () => { 6 | let component: UpdateProfileGetStarterDeSoComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [UpdateProfileGetStarterDeSoComponent], 12 | }).compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(UpdateProfileGetStarterDeSoComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/simple-center-loader/simple-center-loader.component.html: -------------------------------------------------------------------------------- 1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
27 |
{{ titleLoadingText }}
28 |
29 |
30 | {{ subtitleLoadingText }} 31 |
32 |
33 |
34 |
35 | -------------------------------------------------------------------------------- /src/app/top-bar-mobile/top-bar-mobile-navigation-control/top-bar-mobile-navigation-control.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TopBarMobileNavigationControlComponent } from './top-bar-mobile-navigation-control.component'; 4 | 5 | describe('TopBarMobileNavigationControlComponent', () => { 6 | let component: TopBarMobileNavigationControlComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TopBarMobileNavigationControlComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TopBarMobileNavigationControlComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /e2e/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../.eslintrc.json", 3 | "ignorePatterns": ["!**/*"], 4 | "overrides": [ 5 | { 6 | "files": ["*.ts"], 7 | "parserOptions": { 8 | "project": [ 9 | "e2e//tsconfig.app.json", 10 | "e2e//tsconfig.spec.json", 11 | "e2e//e2e/tsconfig.json" 12 | ], 13 | "createDefaultProgram": true 14 | }, 15 | "rules": { 16 | "@angular-eslint/directive-selector": [ 17 | "error", 18 | { 19 | "type": "attribute", 20 | "prefix": "", 21 | "style": "camelCase" 22 | } 23 | ], 24 | "@angular-eslint/component-selector": [ 25 | "error", 26 | { 27 | "type": "element", 28 | "prefix": "", 29 | "style": "kebab-case" 30 | } 31 | ] 32 | } 33 | }, 34 | { 35 | "files": ["*.html"], 36 | "rules": {} 37 | } 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 16 | 17 | 18 |
23 | 24 | 27 |
28 | -------------------------------------------------------------------------------- /src/app/update-profile-page/update-profile-get-starter-deso/update-profile-get-starter-deso.component.html: -------------------------------------------------------------------------------- 1 |
Create a Profile
2 | 3 |
4 | {{ getCreateProfileMessage() }} 5 |
6 |
7 | 8 | Creating a profile currently costs 9 | {{ globalVars.createProfileFeeInDeSo() }} DeSo (≈ 11 | {{ globalVars.createProfileFeeInUsd() }} USD) 13 | 14 |
15 | 16 | 20 | Get Starter DESO 21 | 22 | 23 |
Or
24 | 25 | 34 | -------------------------------------------------------------------------------- /src/app/left-bar/left-bar-button/left-bar-button.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, Input } from '@angular/core'; 2 | import { GlobalVarsService } from '../../global-vars.service'; 3 | 4 | @Component({ 5 | selector: 'left-bar-button', 6 | templateUrl: './left-bar-button.component.html', 7 | styleUrls: ['./left-bar-button.component.scss'], 8 | }) 9 | export class LeftBarButtonComponent { 10 | @Input() link: string; 11 | @Input() buttonLabel: string; 12 | @Input() hasNotifications = false; 13 | @Input() isUnread = false; 14 | @Input() queryParams = null; 15 | notificationCount = 1; 16 | 17 | constructor(public globalVars: GlobalVarsService) {} 18 | 19 | _queryParamsForLink(link: string) { 20 | if (this.queryParams) { 21 | return this.queryParams; 22 | } 23 | if (link.includes(this.globalVars.RouteNames.BROWSE)) { 24 | return { stepNum: null, adminTab: null }; 25 | } 26 | return { stepNum: null, adminTab: null, feedTab: null }; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "downlevelIteration": true, 5 | "skipLibCheck": true, 6 | "baseUrl": "./", 7 | "outDir": "./dist/out-tsc", 8 | "sourceMap": true, 9 | "declaration": false, 10 | "module": "es2020", 11 | "moduleResolution": "node", 12 | "emitDecoratorMetadata": false, 13 | "experimentalDecorators": true, 14 | "importHelpers": true, 15 | "target": "es2015", 16 | "types": ["node", "jest"], 17 | "typeRoots": ["node_modules/@types"], 18 | "lib": ["es2018", "dom"], 19 | "paths": { 20 | "models": ["dist/models"], 21 | "models/*": ["dist/models/*"], 22 | "crypto": ["./node_modules/crypto-browserify"], 23 | "stream": ["./node_modules/stream-browserify"], 24 | "assert": ["./node_modules/assert"], 25 | "http": ["./node_modules/stream-http"], 26 | "https": ["./node_modules/https-browserify"], 27 | "os": ["./node_modules/os-browserify"] 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-confirm-tutorial/buy-creator-coins-confirm-tutorial.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { BuyCreatorCoinsConfirmTutorialComponent } from './buy-creator-coins-confirm-tutorial.component'; 4 | 5 | describe('BuyCreatorCoinsConfirmTutorialComponent', () => { 6 | let component: BuyCreatorCoinsConfirmTutorialComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [BuyCreatorCoinsConfirmTutorialComponent], 12 | }).compileComponents(); 13 | })); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(BuyCreatorCoinsConfirmTutorialComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | --------------------------------------------------------------------------------