-
-
+
diff --git a/src/app/trade-creator-page/trade-creator-form/trade-creator-form.component.ts b/src/app/trade-creator-page/trade-creator-form/trade-creator-form.component.ts
index a67a31add..de65403b4 100644
--- a/src/app/trade-creator-page/trade-creator-form/trade-creator-form.component.ts
+++ b/src/app/trade-creator-page/trade-creator-form/trade-creator-form.component.ts
@@ -2,7 +2,8 @@ import { Location } from "@angular/common";
import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from "@angular/core";
import { UntypedFormControl, Validators } from "@angular/forms";
import { ActivatedRoute, Router } from "@angular/router";
-import * as _ from "lodash";
+import debounce from "lodash/debounce";
+import bind from "lodash/bind";
import { Subscription } from "rxjs";
import { SwalHelper } from "../../../lib/helpers/swal-helper";
import { CreatorCoinTrade } from "../../../lib/trade-creator-page/creator-coin-trade";
@@ -346,7 +347,7 @@ export class TradeCreatorFormComponent implements OnInit, OnDestroy {
// Wait 700 ms before calling _executeUpdateAmounts to allow the user to finish typing.
// This makes the UX a little slower, but reduces server calls.
- let debouncedExecuteUpdateAmounts = _.debounce(_.bind(this._executeUpdateAmounts, this), 700);
+ let debouncedExecuteUpdateAmounts = debounce(bind(this._executeUpdateAmounts, this), 700);
let onValueChange = () => {
// We run _beforeExecuteUpdateAmounts here so we don't debounce if unnecessary.
if (!this._beforeExecuteUpdateAmounts()) return;
diff --git a/src/app/trade-creator-page/trade-creator-page.component.html b/src/app/trade-creator-page/trade-creator-page.component.html
index e64ab97a4..8991212b0 100644
--- a/src/app/trade-creator-page/trade-creator-page.component.html
+++ b/src/app/trade-creator-page/trade-creator-page.component.html
@@ -1,3 +1 @@
-
-
-
+
diff --git a/src/app/trade-creator-page/trade-creator/trade-creator.component.ts b/src/app/trade-creator-page/trade-creator/trade-creator.component.ts
index 57b58d6e1..6b20e7556 100644
--- a/src/app/trade-creator-page/trade-creator/trade-creator.component.ts
+++ b/src/app/trade-creator-page/trade-creator/trade-creator.component.ts
@@ -8,7 +8,7 @@
import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from "@angular/core";
import { ActivatedRoute, Router } from "@angular/router";
import * as introJs from "intro.js/intro.js";
-import { isNil } from "lodash";
+import isNil from "lodash/isNil";
import { BsModalService } from "ngx-bootstrap/modal";
import { Observable, Subscription } from "rxjs";
import { TrackingService } from "src/app/tracking.service";
diff --git a/src/app/transfer-deso-page/transfer-deso-page.component.html b/src/app/transfer-deso-page/transfer-deso-page.component.html
index 34402b38b..3bd8cf716 100644
--- a/src/app/transfer-deso-page/transfer-deso-page.component.html
+++ b/src/app/transfer-deso-page/transfer-deso-page.component.html
@@ -1,3 +1 @@
-
-
-
+
diff --git a/src/app/transfer-deso/transfer-deso.component.ts b/src/app/transfer-deso/transfer-deso.component.ts
index a08e71c9d..0f4aabbdd 100644
--- a/src/app/transfer-deso/transfer-deso.component.ts
+++ b/src/app/transfer-deso/transfer-deso.component.ts
@@ -4,7 +4,6 @@ import { ActivatedRoute } from "@angular/router";
import { identity, ProfileEntryResponse } from "deso-protocol";
import { from, Observable, of } from "rxjs";
import { switchMap } from "rxjs/operators";
-import { sprintf } from "sprintf-js";
import { TrackingService } from "src/app/tracking.service";
import { environment } from "src/environments/environment";
import { SwalHelper } from "../../lib/helpers/swal-helper";
@@ -12,15 +11,16 @@ import { RouteNames } from "../app-routing.module";
import { BackendApiService } from "../backend-api.service";
import { GlobalVarsService } from "../global-vars.service";
+const MESSAGE_PLACEHOLDER = "%s";
+
class Messages {
static INCORRECT_PASSWORD = `The password you entered was incorrect.`;
static CONNECTION_PROBLEM = `There is currently a connection problem. Is your connection to your node healthy?`;
- static UNKOWN_PROBLEM = `There was a weird problem with the transaction. Debug output: %s`;
static INSUFFICIENT_BALANCE = `You don't have enough DeSo to process the transaction. Try reducing the fee rate.`;
static SEND_DESO_MIN = `You must send a non-zero amount of DeSo`;
static INVALID_PUBLIC_KEY = `The public key you entered is invalid`;
- static CONFIRM_TRANSFER_TO_PUBKEY = "Send %s $DESO with a fee of %s DeSo for a total of %s DeSo to public key %s. %s";
- static CONFIRM_TRANSFER_TO_USERNAME = "Send %s $DESO with a fee of %s DeSo for a total of %s DeSo to username %s. %s";
+ static CONFIRM_TRANSFER_TO_PUBKEY = `Send ${MESSAGE_PLACEHOLDER} $DESO with a fee of ${MESSAGE_PLACEHOLDER} DeSo for a total of ${MESSAGE_PLACEHOLDER} DeSo to public key ${MESSAGE_PLACEHOLDER}. ${MESSAGE_PLACEHOLDER}`;
+ static CONFIRM_TRANSFER_TO_USERNAME = `Send ${MESSAGE_PLACEHOLDER} $DESO with a fee of ${MESSAGE_PLACEHOLDER} DeSo for a total of ${MESSAGE_PLACEHOLDER} DeSo to username ${MESSAGE_PLACEHOLDER}. ${MESSAGE_PLACEHOLDER}`;
static MUST_PURCHASE_CREATOR_COIN = `You must purchase a creator coin before you can send $DESO`;
}
@@ -153,19 +153,12 @@ export class TransferDeSoComponent implements OnInit {
return;
}
+ const message = isUsername ? Messages.CONFIRM_TRANSFER_TO_USERNAME : Messages.CONFIRM_TRANSFER_TO_PUBKEY;
+
SwalHelper.fire({
target: this.globalVars.getTargetComponentSelector(),
title: "Are you ready?",
- html: sprintf(
- isUsername ? Messages.CONFIRM_TRANSFER_TO_USERNAME : Messages.CONFIRM_TRANSFER_TO_PUBKEY,
- this.globalVars.nanosToDeSo(res.SpendAmountNanos),
- this.globalVars.nanosToDeSo(res.FeeNanos),
- this.globalVars.nanosToDeSo(res.SpendAmountNanos + res.FeeNanos),
- this.payToPublicKey,
- res.SpendAmountNanos / 1e9 === this.maxSendAmount
- ? "Note: this is a max send. All your DESO is being transferred."
- : ""
- ),
+ html: this.formatTransferMessage(message, { SpendAmountNanos: res.SpendAmountNanos, FeeNanos: res.FeeNanos }),
showCancelButton: true,
showConfirmButton: true,
customClass: {
@@ -278,7 +271,7 @@ export class TransferDeSoComponent implements OnInit {
_sendDeSoSuccess(comp: any) {
// the button should no longer say "Working..."
- comp.globalVars._alertSuccess(sprintf("Successfully completed transaction."));
+ comp.globalVars._alertSuccess("Successfully completed transaction.");
comp.sendingDeSo = false;
}
@@ -366,4 +359,27 @@ export class TransferDeSoComponent implements OnInit {
this.payToCreator = creator;
this.payToPublicKey = creator?.Username || creator?.PublicKeyBase58Check || "";
}
+
+ private formatTransferMessage(
+ messageWithPlaceholders: string,
+ {
+ SpendAmountNanos,
+ FeeNanos,
+ }: {
+ SpendAmountNanos: number;
+ FeeNanos: number;
+ }
+ ) {
+ return [
+ this.globalVars.nanosToDeSo(SpendAmountNanos),
+ this.globalVars.nanosToDeSo(FeeNanos),
+ this.globalVars.nanosToDeSo(SpendAmountNanos + FeeNanos),
+ this.payToPublicKey,
+ SpendAmountNanos / 1e9 === this.maxSendAmount
+ ? "Note: this is a max send. All your DESO is being transferred."
+ : "",
+ ].reduce((acc, curr) => {
+ return acc.replace(MESSAGE_PLACEHOLDER, curr);
+ }, messageWithPlaceholders);
+ }
}
diff --git a/src/app/transfer-nft-accept/transfer-nft-accept-page/transfer-nft-accept-page.component.html b/src/app/transfer-nft-accept/transfer-nft-accept-page/transfer-nft-accept-page.component.html
index 48b7277e7..6ef828c56 100644
--- a/src/app/transfer-nft-accept/transfer-nft-accept-page/transfer-nft-accept-page.component.html
+++ b/src/app/transfer-nft-accept/transfer-nft-accept-page/transfer-nft-accept-page.component.html
@@ -1,7 +1,5 @@
-
-
-
+
diff --git a/src/app/transfer-nft-accept/transfer-nft-accept-page/transfer-nft-accept-page.component.ts b/src/app/transfer-nft-accept/transfer-nft-accept-page/transfer-nft-accept-page.component.ts
index 8f2b4b0dc..e6d784e66 100644
--- a/src/app/transfer-nft-accept/transfer-nft-accept-page/transfer-nft-accept-page.component.ts
+++ b/src/app/transfer-nft-accept/transfer-nft-accept-page/transfer-nft-accept-page.component.ts
@@ -2,6 +2,7 @@ import { Component, OnInit } from "@angular/core";
import { NFTEntryResponse, PostEntryResponse } from "deso-protocol";
import { ActivatedRoute, Router } from "@angular/router";
import { GlobalVarsService } from "../../global-vars.service";
+import { PageLayoutService } from "../../../page-layout.service";
@Component({
selector: "transfer-nft-accept-modal",
@@ -15,7 +16,18 @@ export class TransferNftAcceptPageComponent implements OnInit {
post: PostEntryResponse;
transferNFTEntryResponses: NFTEntryResponse[];
- constructor(private globalVars: GlobalVarsService, private router: Router, public activatedRoute: ActivatedRoute) {}
+ constructor(
+ private globalVars: GlobalVarsService,
+ private router: Router,
+ public activatedRoute: ActivatedRoute,
+ private pageLayoutService: PageLayoutService
+ ) {
+ this.pageLayoutService.updateConfig({
+ simpleTopBar: true,
+ showBottomBar: false,
+ title: this.title,
+ });
+ }
ngOnInit(): void {
const state = window.history.state;
diff --git a/src/app/transfer-nft-accept/transfer-nft-accept.component.ts b/src/app/transfer-nft-accept/transfer-nft-accept.component.ts
index 337d7abed..55acbc68c 100644
--- a/src/app/transfer-nft-accept/transfer-nft-accept.component.ts
+++ b/src/app/transfer-nft-accept/transfer-nft-accept.component.ts
@@ -1,7 +1,7 @@
import { Location } from "@angular/common";
import { Component, EventEmitter, Input, Output } from "@angular/core";
import { Router } from "@angular/router";
-import { isNumber } from "lodash";
+import isNumber from "lodash/isNumber";
import { BsModalService } from "ngx-bootstrap/modal";
import { ToastrService } from "ngx-toastr";
import { TrackingService } from "src/app/tracking.service";
diff --git a/src/app/transfer-nft/transfer-nft-page/transfer-nft-page.component.html b/src/app/transfer-nft/transfer-nft-page/transfer-nft-page.component.html
index 988135f2b..a2c4d692b 100644
--- a/src/app/transfer-nft/transfer-nft-page/transfer-nft-page.component.html
+++ b/src/app/transfer-nft/transfer-nft-page/transfer-nft-page.component.html
@@ -1,3 +1 @@
-
-
-
+
diff --git a/src/app/transfer-nft/transfer-nft-page/transfer-nft-page.component.ts b/src/app/transfer-nft/transfer-nft-page/transfer-nft-page.component.ts
index 2b39e13f2..c6598b46a 100644
--- a/src/app/transfer-nft/transfer-nft-page/transfer-nft-page.component.ts
+++ b/src/app/transfer-nft/transfer-nft-page/transfer-nft-page.component.ts
@@ -2,6 +2,7 @@ import { Component, OnInit } from "@angular/core";
import { PostEntryResponse } from "deso-protocol";
import { ActivatedRoute, Router } from "@angular/router";
import { GlobalVarsService } from "../../global-vars.service";
+import { PageLayoutService } from "../../../page-layout.service";
@Component({
selector: "transfer-nft-page",
@@ -14,7 +15,18 @@ export class TransferNftPageComponent implements OnInit {
postHashHex: string;
post: PostEntryResponse;
- constructor(private globalVars: GlobalVarsService, private router: Router, public activatedRoute: ActivatedRoute) {}
+ constructor(
+ private globalVars: GlobalVarsService,
+ private router: Router,
+ public activatedRoute: ActivatedRoute,
+ private pageLayoutService: PageLayoutService
+ ) {
+ this.pageLayoutService.updateConfig({
+ simpleTopBar: true,
+ showBottomBar: false,
+ title: this.title,
+ });
+ }
ngOnInit(): void {
const state = window.history.state;
diff --git a/src/app/transfer-nft/transfer-nft.component.ts b/src/app/transfer-nft/transfer-nft.component.ts
index 712b2ee31..40e624e72 100644
--- a/src/app/transfer-nft/transfer-nft.component.ts
+++ b/src/app/transfer-nft/transfer-nft.component.ts
@@ -1,7 +1,8 @@
import { Location } from "@angular/common";
import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core";
import { Router } from "@angular/router";
-import * as _ from "lodash";
+import orderBy from "lodash/orderBy";
+import isNil from "lodash/isNil";
import { BsModalService } from "ngx-bootstrap/modal";
import { ToastrService } from "ngx-toastr";
import { TrackingService } from "src/app/tracking.service";
@@ -9,7 +10,6 @@ import { SwalHelper } from "../../lib/helpers/swal-helper";
import { BackendApiService } from "../backend-api.service";
import { GlobalVarsService } from "../global-vars.service";
import { NFTEntryResponse, PostEntryResponse, ProfileEntryResponse } from "deso-protocol";
-import { isNil } from "lodash";
@Component({
selector: "transfer-nft",
@@ -54,7 +54,7 @@ export class TransferNftComponent implements OnInit {
this.backendApi
.GetNFTEntriesForNFTPost(this.globalVars.loggedInUser?.PublicKeyBase58Check, this.post.PostHashHex)
.subscribe((res) => {
- this.transferableSerialNumbers = _.orderBy(
+ this.transferableSerialNumbers = orderBy(
res.NFTEntryResponses.filter(
(nftEntryResponse) =>
nftEntryResponse.OwnerPublicKeyBase58Check === this.globalVars.loggedInUser?.PublicKeyBase58Check &&
@@ -195,7 +195,7 @@ export class TransferNftComponent implements OnInit {
this.sortByOrder = "asc";
}
this.sortByField = sortField;
- this.transferableSerialNumbers = _.orderBy(
+ this.transferableSerialNumbers = orderBy(
this.transferableSerialNumbers,
[this.sortByField],
[this.sortByOrder]
diff --git a/src/app/trends-page/trends-page.component.html b/src/app/trends-page/trends-page.component.html
index 1b72d8e6b..a962f2d3f 100644
--- a/src/app/trends-page/trends-page.component.html
+++ b/src/app/trends-page/trends-page.component.html
@@ -1,3 +1 @@
-
-
-
+
diff --git a/src/app/trends-page/trends/trends.component.html b/src/app/trends-page/trends/trends.component.html
index 03577db5b..820448f07 100644
--- a/src/app/trends-page/trends/trends.component.html
+++ b/src/app/trends-page/trends/trends.component.html
@@ -121,7 +121,7 @@
{{ globalVars.abbreviateNumber(profileEntryResponse.DiamondsReceived, 0) }}
-
+
-
-
+
diff --git a/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-confirm-tutorial/buy-creator-coins-confirm-tutorial.component.ts b/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-confirm-tutorial/buy-creator-coins-confirm-tutorial.component.ts
index 4ebff4396..ac2088219 100644
--- a/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-confirm-tutorial/buy-creator-coins-confirm-tutorial.component.ts
+++ b/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-confirm-tutorial/buy-creator-coins-confirm-tutorial.component.ts
@@ -5,6 +5,7 @@ import { environment } from "src/environments/environment";
import { BackendApiService } from "../../../backend-api.service";
import { GlobalVarsService } from "../../../global-vars.service";
import { ProfileEntryResponse } from "deso-protocol";
+import { PageLayoutService } from "../../../../page-layout.service";
@Component({
selector: "buy-creator-coins-confirm-tutorial",
@@ -20,8 +21,13 @@ export class BuyCreatorCoinsConfirmTutorialComponent implements OnInit {
private globalVars: GlobalVarsService,
private backendApi: BackendApiService,
private titleService: Title,
- private route: ActivatedRoute
+ private route: ActivatedRoute,
+ private pageLayoutService: PageLayoutService
) {
+ this.pageLayoutService.updateConfig({
+ inTutorial: true,
+ });
+
this.route.params.subscribe((params) => {
this.username = params.username;
this.backendApi.GetSingleProfile("", params.username).subscribe((res) => {
diff --git a/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial-page.component.html b/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial-page.component.html
index 191c12cb2..ce9cb0ef7 100644
--- a/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial-page.component.html
+++ b/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial-page.component.html
@@ -1,3 +1 @@
-
-
-
+
diff --git a/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial-page.component.ts b/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial-page.component.ts
index 4fd0cc8fa..c6dfe9969 100644
--- a/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial-page.component.ts
+++ b/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial-page.component.ts
@@ -1,4 +1,5 @@
import { Component } from "@angular/core";
+import { PageLayoutService } from "../../../page-layout.service";
@Component({
selector: "buy-creator-coins-tutorial-page",
@@ -6,5 +7,9 @@ import { Component } from "@angular/core";
styleUrls: ["./buy-creator-coins-tutorial-page.component.scss"],
})
export class BuyCreatorCoinsTutorialPageComponent {
- constructor() {}
+ constructor(private pageLayoutService: PageLayoutService) {
+ this.pageLayoutService.updateConfig({
+ inTutorial: true,
+ });
+ }
}
diff --git a/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial/buy-creator-coins-tutorial.component.ts b/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial/buy-creator-coins-tutorial.component.ts
index a89e69b24..a286f955c 100644
--- a/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial/buy-creator-coins-tutorial.component.ts
+++ b/src/app/tutorial/buy-creator-coins-tutorial-page/buy-creator-coins-tutorial/buy-creator-coins-tutorial.component.ts
@@ -2,7 +2,7 @@ import { LocationStrategy } from "@angular/common";
import { Component, OnInit } from "@angular/core";
import { Title } from "@angular/platform-browser";
import { Router } from "@angular/router";
-import { isNil } from "lodash";
+import isNil from "lodash/isNil";
import { environment } from "src/environments/environment";
import { SwalHelper } from "../../../../lib/helpers/swal-helper";
import { AppRoutingModule } from "../../../app-routing.module";
diff --git a/src/app/tutorial/buy-deso-tutorial-page/buy-deso-tutorial-page.component.html b/src/app/tutorial/buy-deso-tutorial-page/buy-deso-tutorial-page.component.html
index 94970917d..16e3c1cb6 100644
--- a/src/app/tutorial/buy-deso-tutorial-page/buy-deso-tutorial-page.component.html
+++ b/src/app/tutorial/buy-deso-tutorial-page/buy-deso-tutorial-page.component.html
@@ -1,3 +1 @@
-
-
-
+
diff --git a/src/app/tutorial/buy-deso-tutorial-page/buy-deso-tutorial-page.component.ts b/src/app/tutorial/buy-deso-tutorial-page/buy-deso-tutorial-page.component.ts
index 96bb4aa56..793901674 100644
--- a/src/app/tutorial/buy-deso-tutorial-page/buy-deso-tutorial-page.component.ts
+++ b/src/app/tutorial/buy-deso-tutorial-page/buy-deso-tutorial-page.component.ts
@@ -1,4 +1,5 @@
import { Component } from "@angular/core";
+import { PageLayoutService } from "../../../page-layout.service";
@Component({
selector: "buy-creator-coins-tutorial-page",
@@ -6,5 +7,9 @@ import { Component } from "@angular/core";
styleUrls: ["./buy-deso-tutorial-page.component.scss"],
})
export class BuyDesoTutorialPageComponent {
- constructor() {}
+ constructor(private pageLayoutService: PageLayoutService) {
+ this.pageLayoutService.updateConfig({
+ inTutorial: true,
+ });
+ }
}
diff --git a/src/app/tutorial/buy-deso-tutorial-page/buy-deso-tutorial/buy-deso-tutorial.component.ts b/src/app/tutorial/buy-deso-tutorial-page/buy-deso-tutorial/buy-deso-tutorial.component.ts
index c213c2124..d3a42e229 100644
--- a/src/app/tutorial/buy-deso-tutorial-page/buy-deso-tutorial/buy-deso-tutorial.component.ts
+++ b/src/app/tutorial/buy-deso-tutorial-page/buy-deso-tutorial/buy-deso-tutorial.component.ts
@@ -3,7 +3,7 @@ import { Component, OnInit } from "@angular/core";
import { Title } from "@angular/platform-browser";
import { Router } from "@angular/router";
import * as introJs from "intro.js/intro.js";
-import { includes } from "lodash";
+import includes from "lodash/includes";
import { BsModalService } from "ngx-bootstrap/modal";
import { BuyDeSoComponent } from "src/app/buy-deso-page/buy-deso/buy-deso.component";
import { environment } from "src/environments/environment";
diff --git a/src/app/tutorial/create-post-tutorial-page/create-post-tutorial-page.component.html b/src/app/tutorial/create-post-tutorial-page/create-post-tutorial-page.component.html
index e16aee3ca..5a1e84e9a 100644
--- a/src/app/tutorial/create-post-tutorial-page/create-post-tutorial-page.component.html
+++ b/src/app/tutorial/create-post-tutorial-page/create-post-tutorial-page.component.html
@@ -1,3 +1 @@
-
-
-
+
diff --git a/src/app/tutorial/create-post-tutorial-page/create-post-tutorial-page.component.ts b/src/app/tutorial/create-post-tutorial-page/create-post-tutorial-page.component.ts
index 7e7aa4b63..7d8426a94 100644
--- a/src/app/tutorial/create-post-tutorial-page/create-post-tutorial-page.component.ts
+++ b/src/app/tutorial/create-post-tutorial-page/create-post-tutorial-page.component.ts
@@ -1,4 +1,5 @@
import { Component } from "@angular/core";
+import { PageLayoutService } from "../../../page-layout.service";
@Component({
selector: "create-post-tutorial-page",
@@ -6,5 +7,9 @@ import { Component } from "@angular/core";
styleUrls: ["./create-post-tutorial-page.component.scss"],
})
export class CreatePostTutorialPageComponent {
- constructor() {}
+ constructor(private pageLayoutService: PageLayoutService) {
+ this.pageLayoutService.updateConfig({
+ inTutorial: true,
+ });
+ }
}
diff --git a/src/app/tutorial/create-profile-tutorial-page/create-profile-tutorial-page.component.html b/src/app/tutorial/create-profile-tutorial-page/create-profile-tutorial-page.component.html
index 75c0389e6..200ad3bf5 100644
--- a/src/app/tutorial/create-profile-tutorial-page/create-profile-tutorial-page.component.html
+++ b/src/app/tutorial/create-profile-tutorial-page/create-profile-tutorial-page.component.html
@@ -1,3 +1 @@
-
-
-
+
diff --git a/src/app/tutorial/create-profile-tutorial-page/create-profile-tutorial-page.component.ts b/src/app/tutorial/create-profile-tutorial-page/create-profile-tutorial-page.component.ts
index fc1902880..1dd061a6f 100644
--- a/src/app/tutorial/create-profile-tutorial-page/create-profile-tutorial-page.component.ts
+++ b/src/app/tutorial/create-profile-tutorial-page/create-profile-tutorial-page.component.ts
@@ -1,5 +1,6 @@
import { Component } from "@angular/core";
import { GlobalVarsService } from "../../global-vars.service";
+import { PageLayoutService } from "../../../page-layout.service";
@Component({
selector: "create-profile-tutorial-page",
@@ -7,5 +8,9 @@ import { GlobalVarsService } from "../../global-vars.service";
styleUrls: ["./create-profile-tutorial-page.component.scss"],
})
export class CreateProfileTutorialPageComponent {
- constructor(public globalVars: GlobalVarsService) {}
+ constructor(public globalVars: GlobalVarsService, private pageLayoutService: PageLayoutService) {
+ this.pageLayoutService.updateConfig({
+ inTutorial: true,
+ });
+ }
}
diff --git a/src/app/tutorial/diamond-tutorial-page/diamond-tutorial-page.component.html b/src/app/tutorial/diamond-tutorial-page/diamond-tutorial-page.component.html
index 9fc3c77d2..d145aafb2 100644
--- a/src/app/tutorial/diamond-tutorial-page/diamond-tutorial-page.component.html
+++ b/src/app/tutorial/diamond-tutorial-page/diamond-tutorial-page.component.html
@@ -1,3 +1 @@
-
-
-
+
diff --git a/src/app/tutorial/diamond-tutorial-page/diamond-tutorial-page.component.ts b/src/app/tutorial/diamond-tutorial-page/diamond-tutorial-page.component.ts
index c211f913b..bf6853cb4 100644
--- a/src/app/tutorial/diamond-tutorial-page/diamond-tutorial-page.component.ts
+++ b/src/app/tutorial/diamond-tutorial-page/diamond-tutorial-page.component.ts
@@ -1,4 +1,6 @@
import { Component } from "@angular/core";
+import { GlobalVarsService } from "../../global-vars.service";
+import { PageLayoutService } from "../../../page-layout.service";
@Component({
selector: "diamond-tutorial-page",
@@ -6,5 +8,9 @@ import { Component } from "@angular/core";
styleUrls: ["./diamond-tutorial-page.component.scss"],
})
export class DiamondTutorialPageComponent {
- constructor() {}
+ constructor(public globalVars: GlobalVarsService, private pageLayoutService: PageLayoutService) {
+ this.pageLayoutService.updateConfig({
+ inTutorial: true,
+ });
+ }
}
diff --git a/src/app/tutorial/sell-creator-coins-tutorial-page/sell-creator-coins-tutorial/sell-creator-coins-tutorial.component.html b/src/app/tutorial/sell-creator-coins-tutorial-page/sell-creator-coins-tutorial/sell-creator-coins-tutorial.component.html
index 547902efb..aff2b16fe 100644
--- a/src/app/tutorial/sell-creator-coins-tutorial-page/sell-creator-coins-tutorial/sell-creator-coins-tutorial.component.html
+++ b/src/app/tutorial/sell-creator-coins-tutorial-page/sell-creator-coins-tutorial/sell-creator-coins-tutorial.component.html
@@ -1,3 +1 @@
-
-
-
+
diff --git a/src/app/tutorial/sell-creator-coins-tutorial-page/sell-creator-coins-tutorial/sell-creator-coins-tutorial.component.ts b/src/app/tutorial/sell-creator-coins-tutorial-page/sell-creator-coins-tutorial/sell-creator-coins-tutorial.component.ts
index 9a9c47f78..531b31f96 100644
--- a/src/app/tutorial/sell-creator-coins-tutorial-page/sell-creator-coins-tutorial/sell-creator-coins-tutorial.component.ts
+++ b/src/app/tutorial/sell-creator-coins-tutorial-page/sell-creator-coins-tutorial/sell-creator-coins-tutorial.component.ts
@@ -5,6 +5,7 @@ import { environment } from "src/environments/environment";
import { BackendApiService } from "../../../backend-api.service";
import { GlobalVarsService } from "../../../global-vars.service";
import { ProfileEntryResponse } from "deso-protocol";
+import { PageLayoutService } from "../../../../page-layout.service";
@Component({
selector: "sell-creator-coins-tutorial",
@@ -20,8 +21,13 @@ export class SellCreatorCoinsTutorialComponent implements OnInit {
private globalVars: GlobalVarsService,
private backendApi: BackendApiService,
private titleService: Title,
- private route: ActivatedRoute
+ private route: ActivatedRoute,
+ private pageLayoutService: PageLayoutService
) {
+ this.pageLayoutService.updateConfig({
+ inTutorial: true,
+ });
+
this.route.params.subscribe((params) => {
this.username = params.username;
this.backendApi.GetSingleProfile("", params.username).subscribe((res) => {
diff --git a/src/app/tutorial/wallet-tutorial-page/wallet-tutorial-page.component.html b/src/app/tutorial/wallet-tutorial-page/wallet-tutorial-page.component.html
index 71f960864..c1ce5c527 100644
--- a/src/app/tutorial/wallet-tutorial-page/wallet-tutorial-page.component.html
+++ b/src/app/tutorial/wallet-tutorial-page/wallet-tutorial-page.component.html
@@ -1,3 +1 @@
-
-
-
+
diff --git a/src/app/tutorial/wallet-tutorial-page/wallet-tutorial-page.component.ts b/src/app/tutorial/wallet-tutorial-page/wallet-tutorial-page.component.ts
index ddf76272f..2b4ec71f7 100644
--- a/src/app/tutorial/wallet-tutorial-page/wallet-tutorial-page.component.ts
+++ b/src/app/tutorial/wallet-tutorial-page/wallet-tutorial-page.component.ts
@@ -1,5 +1,6 @@
import { Component } from "@angular/core";
import { GlobalVarsService } from "../../global-vars.service";
+import { PageLayoutService } from "../../../page-layout.service";
@Component({
selector: "wallet-tutorial-page",
@@ -7,5 +8,9 @@ import { GlobalVarsService } from "../../global-vars.service";
styleUrls: ["./wallet-tutorial-page.component.scss"],
})
export class WalletTutorialPageComponent {
- constructor(public globalVars: GlobalVarsService) {}
+ constructor(public globalVars: GlobalVarsService, private pageLayoutService: PageLayoutService) {
+ this.pageLayoutService.updateConfig({
+ inTutorial: true,
+ });
+ }
}
diff --git a/src/app/twitter-sync-page/twitter-sync-page.component.html b/src/app/twitter-sync-page/twitter-sync-page.component.html
index b8af5d5fc..9b21beec3 100644
--- a/src/app/twitter-sync-page/twitter-sync-page.component.html
+++ b/src/app/twitter-sync-page/twitter-sync-page.component.html
@@ -1,5 +1,5 @@
-
+
-
+
diff --git a/src/app/update-profile-page/update-profile-page.component.html b/src/app/update-profile-page/update-profile-page.component.html
index a36980271..99ddd3905 100644
--- a/src/app/update-profile-page/update-profile-page.component.html
+++ b/src/app/update-profile-page/update-profile-page.component.html
@@ -1,4 +1,4 @@
-
+
-
+
diff --git a/src/app/update-profile-page/update-profile/update-profile.component.ts b/src/app/update-profile-page/update-profile/update-profile.component.ts
index 67cae060c..218f0e8fc 100644
--- a/src/app/update-profile-page/update-profile/update-profile.component.ts
+++ b/src/app/update-profile-page/update-profile/update-profile.component.ts
@@ -3,7 +3,7 @@ import { Title } from "@angular/platform-browser";
import { ActivatedRoute, Router } from "@angular/router";
import { updateProfile } from "deso-protocol";
import * as introJs from "intro.js/intro.js";
-import { isNil } from "lodash";
+import isNil from "lodash/isNil";
import { BsModalService } from "ngx-bootstrap/modal";
import { forkJoin, from, Observable, of } from "rxjs";
import { catchError, switchMap } from "rxjs/operators";
diff --git a/src/app/wallet/wallet-page/wallet-page.component.html b/src/app/wallet/wallet-page/wallet-page.component.html
index a58d087d1..5ee220fc3 100644
--- a/src/app/wallet/wallet-page/wallet-page.component.html
+++ b/src/app/wallet/wallet-page/wallet-page.component.html
@@ -1,3 +1 @@
-
-
-
+
diff --git a/src/app/wallet/wallet-page/wallet-page.component.ts b/src/app/wallet/wallet-page/wallet-page.component.ts
index e90f435b4..002e8d6ee 100644
--- a/src/app/wallet/wallet-page/wallet-page.component.ts
+++ b/src/app/wallet/wallet-page/wallet-page.component.ts
@@ -1,5 +1,6 @@
import { Component } from "@angular/core";
import { GlobalVarsService } from "../../global-vars.service";
+import { PageLayoutService } from "../../../page-layout.service";
@Component({
selector: "wallet-page",
@@ -7,5 +8,9 @@ import { GlobalVarsService } from "../../global-vars.service";
styleUrls: ["./wallet-page.component.scss"],
})
export class WalletPageComponent {
- constructor(public globalVars: GlobalVarsService) {}
+ constructor(public globalVars: GlobalVarsService, private pageLayoutService: PageLayoutService) {
+ this.pageLayoutService.updateConfig({
+ hideSidebar: true,
+ });
+ }
}
diff --git a/src/app/wallet/wallet.component.ts b/src/app/wallet/wallet.component.ts
index 711ef2b03..6c60367f7 100644
--- a/src/app/wallet/wallet.component.ts
+++ b/src/app/wallet/wallet.component.ts
@@ -3,7 +3,7 @@ import { Title } from "@angular/platform-browser";
import { ActivatedRoute, Router } from "@angular/router";
import { BalanceEntryResponse } from "deso-protocol";
import * as introJs from "intro.js/intro";
-import { isNil } from "lodash";
+import isNil from "lodash/isNil";
import { BsModalService } from "ngx-bootstrap/modal";
import { document } from "ngx-bootstrap/utils";
import { IAdapter, IDatasource } from "ngx-ui-scroll";
diff --git a/src/assets/diamond/spinner-dark.svg b/src/assets/diamond/spinner-dark.svg
deleted file mode 100644
index 0f3a79c59..000000000
--- a/src/assets/diamond/spinner-dark.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/src/assets/diamond/spinner-light.svg b/src/assets/diamond/spinner-light.svg
deleted file mode 100644
index 27d1ad651..000000000
--- a/src/assets/diamond/spinner-light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/blog-post/blog-post-routing.module.ts b/src/blog-post/blog-post-routing.module.ts
new file mode 100644
index 000000000..9e6fb6806
--- /dev/null
+++ b/src/blog-post/blog-post-routing.module.ts
@@ -0,0 +1,16 @@
+import { NgModule } from "@angular/core";
+import { RouterModule, Routes } from "@angular/router";
+import { CreateLongPostPageComponent } from "./create-long-post-page/create-long-post-page.component";
+import { SharedModule } from "../shared/shared.module";
+
+const routes: Routes = [
+ {
+ path: "",
+ component: CreateLongPostPageComponent,
+ },
+];
+@NgModule({
+ imports: [RouterModule.forChild(routes), SharedModule],
+ exports: [RouterModule],
+})
+export class BlogPostRoutingModule {}
diff --git a/src/blog-post/blog-post.module.ts b/src/blog-post/blog-post.module.ts
new file mode 100644
index 000000000..8b3a29d9a
--- /dev/null
+++ b/src/blog-post/blog-post.module.ts
@@ -0,0 +1,25 @@
+import { NgModule } from "@angular/core";
+import { BlogPostRoutingModule } from "./blog-post-routing.module";
+import { SharedModule } from "../shared/shared.module";
+import { QuillModule } from "ngx-quill";
+import { CreateLongPostComponent } from "./create-long-post/create-long-post.component";
+import { ManageDraftsModalComponent } from "./manage-drafts-modal/manage-drafts-modal.component";
+import { DraftsTableComponent } from "./drafts-table/drafts-table.component";
+import { CreateLongPostPageComponent } from "./create-long-post-page/create-long-post-page.component";
+
+@NgModule({
+ declarations: [
+ CreateLongPostPageComponent,
+ CreateLongPostComponent,
+ ManageDraftsModalComponent,
+ DraftsTableComponent,
+ ],
+ imports: [
+ SharedModule,
+ BlogPostRoutingModule,
+ QuillModule.forRoot({
+ format: "text",
+ }),
+ ],
+})
+export class BlogPostModule {}
diff --git a/src/blog-post/create-long-post-page/create-long-post-page.component.html b/src/blog-post/create-long-post-page/create-long-post-page.component.html
new file mode 100644
index 000000000..04fdd6503
--- /dev/null
+++ b/src/blog-post/create-long-post-page/create-long-post-page.component.html
@@ -0,0 +1 @@
+
diff --git a/src/app/create-long-post-page/create-long-post-page.component.scss b/src/blog-post/create-long-post-page/create-long-post-page.component.scss
similarity index 100%
rename from src/app/create-long-post-page/create-long-post-page.component.scss
rename to src/blog-post/create-long-post-page/create-long-post-page.component.scss
diff --git a/src/app/create-long-post-page/create-long-post-page.component.spec.ts b/src/blog-post/create-long-post-page/create-long-post-page.component.spec.ts
similarity index 100%
rename from src/app/create-long-post-page/create-long-post-page.component.spec.ts
rename to src/blog-post/create-long-post-page/create-long-post-page.component.spec.ts
diff --git a/src/app/create-long-post-page/create-long-post-page.component.ts b/src/blog-post/create-long-post-page/create-long-post-page.component.ts
similarity index 66%
rename from src/app/create-long-post-page/create-long-post-page.component.ts
rename to src/blog-post/create-long-post-page/create-long-post-page.component.ts
index bb712b891..47385d1ee 100644
--- a/src/app/create-long-post-page/create-long-post-page.component.ts
+++ b/src/blog-post/create-long-post-page/create-long-post-page.component.ts
@@ -1,6 +1,7 @@
import { Component } from "@angular/core";
import { Title } from "@angular/platform-browser";
import { environment } from "src/environments/environment";
+import { PageLayoutService } from "../../page-layout.service";
@Component({
selector: "create-long-post-page",
@@ -8,7 +9,11 @@ import { environment } from "src/environments/environment";
styleUrls: ["./create-long-post-page.component.scss"],
})
export class CreateLongPostPageComponent {
- constructor(private titleService: Title) {}
+ constructor(private titleService: Title, private pageLayoutService: PageLayoutService) {
+ this.pageLayoutService.updateConfig({
+ hideSidebar: true,
+ });
+ }
ngOnInit() {
this.titleService.setTitle(`Notifications - ${environment.node.name}`);
diff --git a/src/app/create-long-post-page/create-long-post/create-long-post.component.html b/src/blog-post/create-long-post/create-long-post.component.html
similarity index 98%
rename from src/app/create-long-post-page/create-long-post/create-long-post.component.html
rename to src/blog-post/create-long-post/create-long-post.component.html
index 892230768..5ef133454 100644
--- a/src/app/create-long-post-page/create-long-post/create-long-post.component.html
+++ b/src/blog-post/create-long-post/create-long-post.component.html
@@ -1,5 +1,5 @@
-
+
diff --git a/src/app/create-long-post-page/create-long-post/create-long-post.component.scss b/src/blog-post/create-long-post/create-long-post.component.scss
similarity index 100%
rename from src/app/create-long-post-page/create-long-post/create-long-post.component.scss
rename to src/blog-post/create-long-post/create-long-post.component.scss
diff --git a/src/app/create-long-post-page/create-long-post/create-long-post.component.spec.ts b/src/blog-post/create-long-post/create-long-post.component.spec.ts
similarity index 100%
rename from src/app/create-long-post-page/create-long-post/create-long-post.component.spec.ts
rename to src/blog-post/create-long-post/create-long-post.component.spec.ts
diff --git a/src/app/create-long-post-page/create-long-post/create-long-post.component.ts b/src/blog-post/create-long-post/create-long-post.component.ts
similarity index 94%
rename from src/app/create-long-post-page/create-long-post/create-long-post.component.ts
rename to src/blog-post/create-long-post/create-long-post.component.ts
index 0517ea056..c614741d1 100644
--- a/src/app/create-long-post-page/create-long-post/create-long-post.component.ts
+++ b/src/blog-post/create-long-post/create-long-post.component.ts
@@ -5,19 +5,19 @@ import { AfterViewInit, Component, ElementRef, OnDestroy, OnInit, ViewChild } fr
import { Title } from "@angular/platform-browser";
import { ActivatedRoute, Router } from "@angular/router";
import { GetSinglePostResponse, ProfileEntryResponse, waitForTransactionFound } from "deso-protocol";
-import { escape, has } from "lodash";
+import escape from "lodash/escape";
+import has from "lodash/has";
import { BsModalService } from "ngx-bootstrap/modal";
import { ToastrService } from "ngx-toastr";
-import "quill-mention";
import { BackendApiService } from "src/app/backend-api.service";
import { GlobalVarsService } from "src/app/global-vars.service";
import { WelcomeModalComponent } from "src/app/welcome-modal/welcome-modal.component";
-import { dataURLtoFile } from "src/lib/helpers/data-url-helpers";
import { catchError, finalize, mergeMap, tap } from "rxjs/operators";
-import { ApiInternalService, DraftBlogPostResponse } from "../../api-internal.service";
import { of } from "rxjs";
+import { SwalHelper } from "../../lib/helpers/swal-helper";
+import { dataURLtoFile } from "src/lib/helpers/data-url-helpers";
import { ManageDraftsModalComponent } from "../manage-drafts-modal/manage-drafts-modal.component";
-import { SwalHelper } from "../../../lib/helpers/swal-helper";
+import { ApiInternalService, DraftBlogPostResponse } from "../../app/api-internal.service";
const RANDOM_MOVIE_QUOTES = [
"feed_create_post.quotes.quote1",
@@ -110,7 +110,7 @@ export class CreateLongPostComponent implements OnInit, OnDestroy {
model = new FormModel();
isDraggingFileOverDropZone = false;
isSubmittingPost = false;
- isLoading: boolean;
+ isLoading: boolean = true;
isDraftSaving: boolean = false;
placeholder = RANDOM_MOVIE_QUOTES[Math.floor(Math.random() * RANDOM_MOVIE_QUOTES.length)];
contentAsPlainText?: string;
@@ -178,9 +178,7 @@ export class CreateLongPostComponent implements OnInit, OnDestroy {
public location: Location,
private modalService: BsModalService,
private apiInternalService: ApiInternalService
- ) {
- this.isLoading = !!this.route.snapshot.params?.postHashHex;
- }
+ ) {}
ngOnDestroy() {
window.clearInterval(this.autoSaveDraftBlogPostInterval);
@@ -335,30 +333,34 @@ export class CreateLongPostComponent implements OnInit, OnDestroy {
async ngOnInit() {
this.titleService.setTitle(`Publish Blog Post`);
- if (this.editPostHashHex) {
- try {
- const editPost = await this.getBlogPostToEdit(this.editPostHashHex);
- if (editPost.PostFound?.PostExtraData?.BlogDeltaRtfFormat) {
- const editPostData = editPost.PostFound?.PostExtraData;
- const contentDelta = JSON.parse(editPostData.BlogDeltaRtfFormat);
- Object.assign(this.model, { ...editPostData, ContentDelta: contentDelta });
- this.contentAsPlainText = contentDelta.ops.reduce(
- (text: string, op: any) => `${text}${typeof op.insert === "string" ? op.insert : ""}`,
- ""
- );
+ import("quill-mention" as any).then(async () => {
+ if (this.editPostHashHex) {
+ this.isLoading = !!this.route.snapshot.params?.postHashHex;
+
+ try {
+ const editPost = await this.getBlogPostToEdit(this.editPostHashHex);
+ if (editPost.PostFound?.PostExtraData?.BlogDeltaRtfFormat) {
+ const editPostData = editPost.PostFound?.PostExtraData;
+ const contentDelta = JSON.parse(editPostData.BlogDeltaRtfFormat);
+ Object.assign(this.model, { ...editPostData, ContentDelta: contentDelta });
+ this.contentAsPlainText = contentDelta.ops.reduce(
+ (text: string, op: any) => `${text}${typeof op.insert === "string" ? op.insert : ""}`,
+ ""
+ );
+ }
+ } catch (e) {
+ console.error(e);
+ // This is assuming 404 which might hide other types of errors, but this is currently what the
+ // post thread page does...
+ this.router.navigateByUrl("/" + this.globalVars.RouteNames.NOT_FOUND, { skipLocationChange: true });
+ } finally {
+ this.isLoading = false;
+ this.titleInput?.nativeElement?.focus();
}
- } catch (e) {
- console.error(e);
- // This is assuming 404 which might hide other types of errors, but this is currently what the
- // post thread page does...
- this.router.navigateByUrl("/" + this.globalVars.RouteNames.NOT_FOUND, { skipLocationChange: true });
- } finally {
- this.isLoading = false;
- this.titleInput?.nativeElement?.focus();
+ } else {
+ this.getDefaultDraftBlogPost();
}
- } else {
- this.getDefaultDraftBlogPost();
- }
+ });
}
async getUsersFromMentionPrefix(prefix: string): Promise {
@@ -508,7 +510,7 @@ export class CreateLongPostComponent implements OnInit, OnDestroy {
try {
this.model.ContentDelta = await this.postProcessDelta(this.model.ContentDelta);
- const twitter = require("../../../vendor/twitter-text-3.1.0.js");
+ const twitter = require("../../vendor/twitter-text-3.1.0.js");
const entities = Array.from(
new Set(
twitter
diff --git a/src/app/create-long-post-page/drafts-table/drafts-table.component.html b/src/blog-post/drafts-table/drafts-table.component.html
similarity index 100%
rename from src/app/create-long-post-page/drafts-table/drafts-table.component.html
rename to src/blog-post/drafts-table/drafts-table.component.html
diff --git a/src/app/create-long-post-page/drafts-table/drafts-table.component.scss b/src/blog-post/drafts-table/drafts-table.component.scss
similarity index 100%
rename from src/app/create-long-post-page/drafts-table/drafts-table.component.scss
rename to src/blog-post/drafts-table/drafts-table.component.scss
diff --git a/src/app/create-long-post-page/drafts-table/drafts-table.component.spec.ts b/src/blog-post/drafts-table/drafts-table.component.spec.ts
similarity index 100%
rename from src/app/create-long-post-page/drafts-table/drafts-table.component.spec.ts
rename to src/blog-post/drafts-table/drafts-table.component.spec.ts
diff --git a/src/app/create-long-post-page/drafts-table/drafts-table.component.ts b/src/blog-post/drafts-table/drafts-table.component.ts
similarity index 90%
rename from src/app/create-long-post-page/drafts-table/drafts-table.component.ts
rename to src/blog-post/drafts-table/drafts-table.component.ts
index f749eaa23..6a7d8df9f 100644
--- a/src/app/create-long-post-page/drafts-table/drafts-table.component.ts
+++ b/src/blog-post/drafts-table/drafts-table.component.ts
@@ -1,6 +1,6 @@
import { Component, EventEmitter, Input, Output } from "@angular/core";
import { DraftBlogPostParsed } from "../manage-drafts-modal/manage-drafts-modal.component";
-import { GlobalVarsService } from "../../global-vars.service";
+import { GlobalVarsService } from "../../app/global-vars.service";
@Component({
selector: "drafts-table",
diff --git a/src/app/create-long-post-page/manage-drafts-modal/manage-drafts-modal.component.html b/src/blog-post/manage-drafts-modal/manage-drafts-modal.component.html
similarity index 100%
rename from src/app/create-long-post-page/manage-drafts-modal/manage-drafts-modal.component.html
rename to src/blog-post/manage-drafts-modal/manage-drafts-modal.component.html
diff --git a/src/app/create-long-post-page/manage-drafts-modal/manage-drafts-modal.component.scss b/src/blog-post/manage-drafts-modal/manage-drafts-modal.component.scss
similarity index 100%
rename from src/app/create-long-post-page/manage-drafts-modal/manage-drafts-modal.component.scss
rename to src/blog-post/manage-drafts-modal/manage-drafts-modal.component.scss
diff --git a/src/app/create-long-post-page/manage-drafts-modal/manage-drafts-modal.component.spec.ts b/src/blog-post/manage-drafts-modal/manage-drafts-modal.component.spec.ts
similarity index 100%
rename from src/app/create-long-post-page/manage-drafts-modal/manage-drafts-modal.component.spec.ts
rename to src/blog-post/manage-drafts-modal/manage-drafts-modal.component.spec.ts
diff --git a/src/app/create-long-post-page/manage-drafts-modal/manage-drafts-modal.component.ts b/src/blog-post/manage-drafts-modal/manage-drafts-modal.component.ts
similarity index 93%
rename from src/app/create-long-post-page/manage-drafts-modal/manage-drafts-modal.component.ts
rename to src/blog-post/manage-drafts-modal/manage-drafts-modal.component.ts
index 3fb27b891..5a5a47486 100644
--- a/src/app/create-long-post-page/manage-drafts-modal/manage-drafts-modal.component.ts
+++ b/src/blog-post/manage-drafts-modal/manage-drafts-modal.component.ts
@@ -1,8 +1,8 @@
import { Component, Input, OnInit } from "@angular/core";
import { BsModalRef } from "ngx-bootstrap/modal";
-import { ApiInternalService, DraftBlogPostResponse } from "../../api-internal.service";
-import { GlobalVarsService } from "../../global-vars.service";
-import { orderBy } from "lodash";
+import { ApiInternalService, DraftBlogPostResponse } from "../../app/api-internal.service";
+import { GlobalVarsService } from "../../app/global-vars.service";
+import orderBy from "lodash/orderBy";
import { finalize } from "rxjs/operators";
export interface DraftBlogPostParsed extends DraftBlogPostResponse {
diff --git a/src/index.diamond.html b/src/index.diamond.html
index 38dea48d8..d9e057c01 100644
--- a/src/index.diamond.html
+++ b/src/index.diamond.html
@@ -34,7 +34,6 @@
-
diff --git a/src/index.html b/src/index.html
index 7719bc00c..5fb2dc99c 100644
--- a/src/index.html
+++ b/src/index.html
@@ -34,7 +34,6 @@
-
diff --git a/src/lib/helpers/swal-helper.ts b/src/lib/helpers/swal-helper.ts
index 600cc83e0..f4497707f 100644
--- a/src/lib/helpers/swal-helper.ts
+++ b/src/lib/helpers/swal-helper.ts
@@ -1,6 +1,6 @@
import * as sweetalert2 from "sweetalert2";
import Swal, { SweetAlertOptions } from "sweetalert2";
-import * as _ from "lodash";
+import escape from "lodash/escape";
type Awaited = T extends Promise ? U : T;
@@ -41,13 +41,13 @@ export class SwalHelper {
): Promise>> {
// Feel free to add more classes here as needed
let escapedCustomClass = {
- popup: _.escape(options?.customClass?.popup),
- confirmButton: _.escape(options?.customClass?.confirmButton),
- denyButton: _.escape(options?.customClass?.denyButton),
- cancelButton: _.escape(options?.customClass?.cancelButton),
+ popup: escape(options?.customClass?.popup),
+ confirmButton: escape(options?.customClass?.confirmButton),
+ denyButton: escape(options?.customClass?.denyButton),
+ cancelButton: escape(options?.customClass?.cancelButton),
};
- let escapedIcon = _.escape(options.icon as string) as sweetalert2.SweetAlertIcon;
+ let escapedIcon = escape(options.icon as string) as sweetalert2.SweetAlertIcon;
let escapedOptions = {
icon: escapedIcon,
@@ -69,7 +69,7 @@ export class SwalHelper {
for (let field of SwalHelper.ESCAPED_FIELDS) {
if (options[field] !== undefined) {
if (escapeFields) {
- escapedOptions[field] = _.escape(options[field]);
+ escapedOptions[field] = escape(options[field]);
} else {
escapedOptions[field] = options[field];
}
diff --git a/src/lib/pipes/sanitize-and-auto-link-pipe.ts b/src/lib/pipes/sanitize-and-auto-link-pipe.ts
index 0468f18f5..d9f4cd00b 100644
--- a/src/lib/pipes/sanitize-and-auto-link-pipe.ts
+++ b/src/lib/pipes/sanitize-and-auto-link-pipe.ts
@@ -1,8 +1,10 @@
import { Pipe, PipeTransform } from "@angular/core";
-import * as _ from "lodash";
import { RouteNames } from "../../app/app-routing.module";
import { AppComponent } from "../../app/app.component";
import Autolinker from "autolinker";
+import escape from "lodash/escape";
+import replace from "lodash/replace";
+import filter from "lodash/filter";
@Pipe({
name: "sanitizeAndAutoLink",
@@ -11,13 +13,13 @@ export class SanitizeAndAutoLinkPipe implements PipeTransform {
transform(unsafeText: string, args?: any): any {
// FIXME: TODO: someone should audit this function for XSS issues
// Escape to remove any HTML tags that may have been added by users
- let text = _.escape(unsafeText);
+ let text = escape(unsafeText);
// limit of two newlines in a row
- text = _.replace(text, /\n\n+/g, "\n\n");
+ text = replace(text, /\n\n+/g, "\n\n");
// display newlines
- text = _.replace(text, /\n/g, " ");
+ text = replace(text, /\n/g, " ");
// This expands @-mentions and $-cashtags into links to profiles.
// This is going to expand anything that's prefixed with @/$ into links, not just usernames.
@@ -31,7 +33,7 @@ export class SanitizeAndAutoLinkPipe implements PipeTransform {
});
// Only link usernames and cashtags for now (not hashtags etc)
- entities = _.filter(entities, (entity) => entity.screenName || entity.cashtag || entity.hashtag);
+ entities = filter(entities, (entity) => entity.screenName || entity.cashtag || entity.hashtag);
const textWithMentionLinks = twitter.autoLinkEntities(text, entities, {
usernameUrlBase: `/${RouteNames.USER_PREFIX}/`,
diff --git a/src/lib/services/altumbase/altumbase-service.ts b/src/lib/services/altumbase/altumbase-service.ts
index ae3e91e65..f724d5204 100644
--- a/src/lib/services/altumbase/altumbase-service.ts
+++ b/src/lib/services/altumbase/altumbase-service.ts
@@ -1,7 +1,7 @@
import { HttpClient } from "@angular/common/http";
import { Injectable } from "@angular/core";
import { ProfileEntryResponse, User } from "deso-protocol";
-import * as _ from "lodash";
+import filter from "lodash/filter";
import { Observable, of } from "rxjs";
import { map, switchMap } from "rxjs/operators";
import { BackendApiService } from "../../../app/backend-api.service";
@@ -117,7 +117,7 @@ export class AltumbaseService {
.pipe(
map((res: any) => {
if (!skipFilters) {
- res.UserList = _.filter(res.UserList, (o) => o.ProfileEntryResponse && !o.IsGraylisted && !o.IsBlacklisted);
+ res.UserList = filter(res.UserList, (o) => o.ProfileEntryResponse && !o.IsGraylisted && !o.IsBlacklisted);
}
return res.UserList.map((user: User, index: number) => {
diff --git a/src/lib/services/mention-autofill/mentionify.ts b/src/lib/services/mention-autofill/mentionify.ts
index 7271bf489..423c3edb1 100644
--- a/src/lib/services/mention-autofill/mentionify.ts
+++ b/src/lib/services/mention-autofill/mentionify.ts
@@ -1,4 +1,4 @@
-import { isNil } from "lodash";
+import isNil from "lodash/isNil";
const properties = [
"direction",
diff --git a/src/lib/services/pulse/pulse-service.ts b/src/lib/services/pulse/pulse-service.ts
index 06dde7827..0739af9cb 100644
--- a/src/lib/services/pulse/pulse-service.ts
+++ b/src/lib/services/pulse/pulse-service.ts
@@ -1,7 +1,7 @@
import { HttpClient } from "@angular/common/http";
import { Injectable } from "@angular/core";
import { ProfileEntryResponse, User } from "deso-protocol";
-import * as _ from "lodash";
+import filter from "lodash/filter";
import { Observable, of } from "rxjs";
import { map, switchMap } from "rxjs/operators";
import { BackendApiService } from "../../../app/backend-api.service";
@@ -119,7 +119,7 @@ export class PulseService {
.pipe(
map((res: any) => {
if (!skipFilters) {
- res.UserList = _.filter(res.UserList, (o) => o.ProfileEntryResponse && !o.IsGraylisted && !o.IsBlacklisted);
+ res.UserList = filter(res.UserList, (o) => o.ProfileEntryResponse && !o.IsGraylisted && !o.IsBlacklisted);
if (res.UserList.length > 10) {
res.UserList = res.UserList.slice(0, 10);
}
diff --git a/src/lib/shared-dialogs.ts b/src/lib/shared-dialogs.ts
index e89821b9f..b8d37c97e 100644
--- a/src/lib/shared-dialogs.ts
+++ b/src/lib/shared-dialogs.ts
@@ -1,5 +1,5 @@
import { Router } from "@angular/router";
-import { isNil } from "lodash";
+import isNil from "lodash/isNil";
import { GlobalVarsService } from "../app/global-vars.service";
import RouteNamesService from "../app/route-names.service";
import { SwalHelper } from "./helpers/swal-helper";
diff --git a/src/page-layout.service.spec.ts b/src/page-layout.service.spec.ts
new file mode 100644
index 000000000..5c220d722
--- /dev/null
+++ b/src/page-layout.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from "@angular/core/testing";
+
+import { PageLayoutService } from "./page-layout.service";
+
+describe("PageLayoutService", () => {
+ let service: PageLayoutService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(PageLayoutService);
+ });
+
+ it("should be created", () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/page-layout.service.ts b/src/page-layout.service.ts
new file mode 100644
index 000000000..c5c1c8245
--- /dev/null
+++ b/src/page-layout.service.ts
@@ -0,0 +1,47 @@
+import { Injectable } from "@angular/core";
+import { BehaviorSubject } from "rxjs";
+import cloneDeep from "lodash/cloneDeep";
+
+interface PageLayoutConfig {
+ hideSidebar: boolean;
+ simpleTopBar: boolean;
+ title: string;
+ showPostButton: boolean;
+ showBottomBar: boolean;
+ inTutorial: boolean;
+ onlyContent: boolean;
+}
+
+@Injectable({
+ providedIn: "root",
+})
+export class PageLayoutService {
+ private readonly defaultConfig: PageLayoutConfig = {
+ hideSidebar: false,
+ simpleTopBar: false,
+ title: "",
+ showPostButton: false,
+ showBottomBar: true,
+ inTutorial: false,
+ onlyContent: false,
+ };
+
+ private config$: BehaviorSubject = new BehaviorSubject(this.defaultConfig);
+
+ constructor() {
+ this.config$.next(cloneDeep(this.defaultConfig));
+ }
+
+ get pageLayoutConfig() {
+ return this.config$.asObservable();
+ }
+
+ updateConfig(options: Partial = {}) {
+ const defaultCopy = cloneDeep(this.defaultConfig);
+
+ this.config$.next({
+ ...defaultCopy,
+ ...options,
+ });
+ }
+}
diff --git a/src/shared/shared.module.ts b/src/shared/shared.module.ts
new file mode 100644
index 000000000..a08bcad45
--- /dev/null
+++ b/src/shared/shared.module.ts
@@ -0,0 +1,23 @@
+import { NgModule } from "@angular/core";
+import { CommonModule } from "@angular/common";
+import { FormsModule } from "@angular/forms";
+import { ReactiveFormsModule } from "@angular/forms";
+import { SimpleCenterLoaderComponent } from "../app/simple-center-loader/simple-center-loader.component";
+import { IconsModule } from "../app/icons/icons.module";
+import { BsModalService } from "ngx-bootstrap/modal";
+import { TranslocoRootModule } from "../app/transloco-root.module";
+
+@NgModule({
+ imports: [CommonModule, FormsModule, ReactiveFormsModule, IconsModule, TranslocoRootModule],
+ declarations: [SimpleCenterLoaderComponent],
+ providers: [BsModalService],
+ exports: [
+ CommonModule,
+ FormsModule,
+ ReactiveFormsModule,
+ IconsModule,
+ TranslocoRootModule,
+ SimpleCenterLoaderComponent,
+ ],
+})
+export class SharedModule {}
diff --git a/src/styles.scss b/src/styles.scss
index 920f98fc9..34fe1ab36 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -579,7 +579,9 @@ i-feather[name="check-circle"] {
-webkit-box-orient: vertical;
}
-.modal-backdrop.show {opacitY: 0.9 !important}
+.modal-backdrop.show {
+ opacity: 0.9 !important;
+}
.global__container {
min-height: 100vh;
@@ -970,9 +972,6 @@ input.bs-timepicker-field {
font-weight: 500;
}
-app-landing-page {
- background: white;
-}
@keyframes slideInFromTopRight {
0% {
transform: translate(-100px, 0px) rotate(0deg);
@@ -1026,12 +1025,6 @@ app-landing-page {
animation: .5s ease 0s 1 appear forwards;
}
-app-landing-page {
- .aos-init {
- z-index: 1;
- }
-}
-
.landing-page-top-bar {
margin: 0px auto 0px auto;
z-index: 1;
@@ -1471,7 +1464,7 @@ app-landing-page {
-webkit-backface-visibility: hidden;
-webkit-perspective: 1000;
-webkit-transform: translate3d(0, 0, 0);
- backface-bisibility: hidden;
+ backface-visibility: hidden;
perspective: 1000;
transform: translate3d(0, 0, 0);
transform: translateZ(0);
@@ -1498,7 +1491,7 @@ app-landing-page {
-webkit-backface-visibility: hidden;
-webkit-perspective: 1000;
-webkit-transform: translate3d(0, 0, 0);
- backface-bisibility: hidden;
+ backface-visibility: hidden;
perspective: 1000;
transform: translate3d(0, 0, 0);
transform: translateZ(0);
@@ -1521,7 +1514,7 @@ app-landing-page {
-webkit-backface-visibility: hidden;
-webkit-perspective: 1000;
-webkit-transform: translate3d(0, 0, 0);
- backface-bisibility: hidden;
+ backface-visibility: hidden;
perspective: 1000;
transform: translate3d(0, 0, 0);
transform: translateZ(0);
@@ -1537,7 +1530,7 @@ app-landing-page {
-webkit-backface-visibility: hidden;
-webkit-perspective: 1000;
-webkit-transform: translate3d(0, 0, 0);
- backface-bisibility: hidden;
+ backface-visibility: hidden;
perspective: 1000;
transform: translate3d(0, 0, 0);
transform: translateZ(0);
@@ -1554,7 +1547,7 @@ app-landing-page {
-webkit-backface-visibility: hidden;
-webkit-perspective: 1000;
-webkit-transform: translate3d(0, 0, 0);
- backface-bisibility: hidden;
+ backface-visibility: hidden;
perspective: 1000;
transform: translate3d(0, 0, 0);
transform: translateZ(0);
@@ -1570,7 +1563,7 @@ app-landing-page {
-webkit-backface-visibility: hidden;
-webkit-perspective: 1000;
-webkit-transform: translate3d(0, 0, 0);
- backface-bisibility: hidden;
+ backface-visibility: hidden;
perspective: 1000;
transform: translate3d(0, 0, 0);
transform: translateZ(0);
@@ -2518,12 +2511,6 @@ sign-up {
}
}
-trends {
- .icon-diamond {
- margin-left: 0px !important;
- }
-}
-
.trends-scroll-container {
height: calc(100vh - 210px) !important;
}
@@ -2768,6 +2755,10 @@ bs-dropdown-container {
font-size: 19px;
background-color: rgba(0, 0, 0, 0.7);
border-radius: 20px;
+
+ svg {
+ vertical-align: baseline;
+ }
}
.feed-post-icon-row__icon {
@@ -2824,7 +2815,7 @@ bs-dropdown-container {
}
font-weight: normal;
font-size: 15px;
- line-hieght: 24px;
+ line-height: 24px;
}
.feed-post-icon-row__icon.reply-icon {
@@ -2845,12 +2836,6 @@ bs-dropdown-container {
}
}
-.feed-post-icon-row__icon.icon-heart-fill{
- svg {
- fill: currentColor;
- }
-}
-
/* diamond button hover animation */
.feed-post-icon-row__icon.diamond-icon{
&:hover{
@@ -2859,15 +2844,6 @@ bs-dropdown-container {
}
}
-/* copy link button hover animation */
-.feed-post-icon-row__icon.icon-link{
- &:hover{
- background-color: $link-btn-hover;
- color: $link-btn-color;
-
- }
-}
-
.feed-post__icon-row-holder {
}
@@ -3057,7 +3033,7 @@ feed {
-webkit-backface-visibility: hidden;
-webkit-perspective: 1000;
-webkit-transform: translate3d(0, 0, 0);
- backface-bisibility: hidden;
+ backface-visibility: hidden;
perspective: 1000;
transform: translate3d(0, 0, 0);
transform: translateZ(0);
@@ -3065,7 +3041,7 @@ feed {
-webkit-backface-visibility: hidden;
-webkit-perspective: 1000;
-webkit-transform: translate3d(0, 0, 0);
- backface-bisibility: hidden;
+ backface-visibility: hidden;
perspective: 1000;
transform: translate3d(0, 0, 0);
transform: translateZ(0);
@@ -6563,18 +6539,13 @@ sell-nft-modal {
}
.link-preview-description {
- display: -webkit-box;
- display: -moz-box;
- display: box;
+ display: flex;
+ flex-direction: column;
word-break: break-word;
- -webkit-box-orient: vertical;
- -moz-box-orient: vertical;
- box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 3;
- -moz-box-lines: 3;
- box-lines: 3;
+ line-clamp: 3;
}
.single-line-no-overflow-ellipsis {
@@ -6628,6 +6599,17 @@ sell-nft-modal {
height: 100%;
}
+.creator-leaderboard__diamond-icon {
+ position: relative;
+ top: 1px;
+ width: 20px !important;
+ height: 20px !important;
+
+ svg {
+ vertical-align: baseline;
+ }
+}
+
.new-draft-blog-modal-container {
width: 600px !important;
}
diff --git a/src/vendor/fontello.css b/src/vendor/fontello.css
deleted file mode 100644
index f3414b9c6..000000000
--- a/src/vendor/fontello.css
+++ /dev/null
@@ -1,73 +0,0 @@
-@font-face {
- font-family: 'fontello';
- src: url('../vendor/fontello.eot?81413070');
- src: url('../vendor/fontello.eot?81413070#iefix') format('embedded-opentype'),
- url('../vendor/fontello.woff2?81413070') format('woff2'),
- url('../vendor/fontello.woff?81413070') format('woff'),
- url('../vendor/fontello.ttf?81413070') format('truetype'),
- url('../vendor/fontello.svg?81413070#fontello') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
-/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
-/*
-@media screen and (-webkit-min-device-pixel-ratio:0) {
- @font-face {
- font-family: 'fontello';
- src: url('../font/fontello.svg?81413070#fontello') format('svg');
- }
-}
-*/
-
-[class^="icon-"]:before, [class*=" icon-"]:before {
- font-family: "fontello";
- font-style: normal;
- font-weight: normal;
- speak: never;
-
- display: inline-block;
- text-decoration: inherit;
- width: 1em;
- margin-right: .2em;
- text-align: center;
- /* opacity: .8; */
-
- /* For safety - reset parent styles, that can break glyph codes*/
- font-variant: normal;
- text-transform: none;
-
- /* fix buttons height, for twitter bootstrap */
- line-height: 1em;
-
- /* Animation center compensation - margins should be symmetric */
- /* remove if not needed */
- margin-left: .2em;
-
- /* you can be more comfortable with increased icons size */
- /* font-size: 120%; */
-
- /* Font smoothing. That was taken from TWBS */
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-
- /* Uncomment for 3D effect */
- /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
-}
-
-.icon-close:before { content: '\e800'; } /* '' */
-.icon-down-arrow:before { content: '\e801'; } /* '' */
-.icon-heart:before { content: '\e802'; } /* '' */
-.icon-heart-fill:before { content: '\e803'; } /* '' */
-.icon-home:before { content: '\e804'; } /* '' */
-.icon-link:before { content: '\e805'; } /* '' */
-.icon-loading:before { content: '\e806'; } /* '' */
-.icon-messages:before { content: '\e807'; } /* '' */
-.icon-notifications:before { content: '\e808'; } /* '' */
-.icon-reply:before { content: '\e809'; } /* '' */
-.icon-repost:before { content: '\e80a'; } /* '' */
-.icon-search:before { content: '\e80b'; } /* '' */
-.icon-up-arrow:before { content: '\e80c'; } /* '' */
-.icon-wallet:before { content: '\e80d'; } /* '' */
-.icon-diamond-1:before { content: '\e80e'; } /* '' */
-.icon-diamond:before { content: '\f219'; } /* '' */
diff --git a/src/vendor/fontello.eot b/src/vendor/fontello.eot
deleted file mode 100644
index b2ef5f110..000000000
Binary files a/src/vendor/fontello.eot and /dev/null differ
diff --git a/src/vendor/fontello.json b/src/vendor/fontello.json
deleted file mode 100644
index 23dc9e798..000000000
--- a/src/vendor/fontello.json
+++ /dev/null
@@ -1,218 +0,0 @@
-{
- "name": "",
- "css_prefix_text": "icon-",
- "css_use_suffix": false,
- "hinting": true,
- "units_per_em": 1000,
- "ascent": 850,
- "glyphs": [
- {
- "uid": "515dd3f32642f6f5b3bfc4de2b3c036c",
- "css": "close",
- "code": 59392,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M526.6 500L778.3 248.3A18.8 18.8 0 1 0 751.7 221.7L500 473.4 248.3 221.7A18.8 18.8 0 0 0 221.7 248.3L473.4 500 221.7 751.7A18.8 18.8 0 0 0 248.3 778.3L500 526.6 751.7 778.3A18.8 18.8 0 0 0 778.3 751.7Z",
- "width": 1000
- },
- "search": [
- "close"
- ]
- },
- {
- "uid": "ed20cb7fd5e5114fc42be6882a98a91f",
- "css": "wallet",
- "code": 59405,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M710.1 515.1A60 60 0 1 0 770.1 575.1 60 60 0 0 0 710.1 515.1ZM812.7 284.5V248.2A114.7 114.7 0 0 0 679.2 135L190 216C133.1 225.4 88.5 271.4 88.5 320.6V760.4A106.2 106.2 0 0 0 194.7 866.5H805.4A106.2 106.2 0 0 0 911.5 760.4V389.9C911.5 333.8 867.8 288.3 812.7 284.5ZM197 257.9L686.2 176.9A72.3 72.3 0 0 1 770.3 248.2V283.7H194.7A105.6 105.6 0 0 0 135.5 301.8C145.1 280.8 169.3 262.4 197 257.9ZM869 760.4A63.8 63.8 0 0 1 805.3 824.1H194.7A63.8 63.8 0 0 1 131 760.4V389.9A63.7 63.7 0 0 1 194.7 326.2H805.4A63.7 63.7 0 0 1 869 389.9Z",
- "width": 1000
- },
- "search": [
- "wallet"
- ]
- },
- {
- "uid": "3bab3f532746704431d542302a237df7",
- "css": "down-arrow",
- "code": 59393,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M500 633.8C482 633.8 464.6 625.5 452.3 611L281.6 409.9A26.5 26.5 0 0 1 322.1 375.6L492.8 576.7C495.8 580.3 504.1 580.4 507.2 576.7L677.9 375.6A26.5 26.5 0 0 1 718.4 409.9L547.7 611C535.4 625.5 518 633.8 500 633.8Z",
- "width": 1000
- },
- "search": [
- "down-arrow"
- ]
- },
- {
- "uid": "a8c1d5759c5965393afb227a8d607625",
- "css": "up-arrow",
- "code": 59404,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M986.6 237.2A21.3 21.3 0 0 0 967 224.1H712.3A21.2 21.2 0 0 0 712.3 266.5H915.7L576.5 605.8A18.1 18.1 0 0 1 550.9 605.8L394.2 449.1A60.5 60.5 0 0 0 308.6 449.1L18 739.7A21.2 21.2 0 1 0 48 769.7L338.6 479.1A18.1 18.1 0 0 1 364.2 479.1L520.9 635.8A60.5 60.5 0 0 0 606.5 635.8L945.8 296.5V500A21.2 21.2 0 1 0 988.2 500V245.3A21.3 21.3 0 0 0 986.6 237.2Z",
- "width": 1000
- },
- "search": [
- "up-arrow"
- ]
- },
- {
- "uid": "edbe10c4dd22514574cddb72418b087e",
- "css": "heart",
- "code": 59394,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M499.7 818.4A83.5 83.5 0 0 1 442 795.3L438.7 792.1C265.7 627.4 152.5 519.8 157.4 380.1 159.5 315.6 190.9 255.4 241.4 219.1 332 154.1 437.2 181.2 500 242.1 562.7 181.4 667.9 154.3 758.6 219.1L758.6 219.1C809 255.3 840.5 315.4 842.6 379.8 847.2 520 733.4 628.1 561.2 791.6L557.7 795A83.4 83.4 0 0 1 499.7 818.4ZM355 224.2C325.4 224.2 294.8 233 266.2 253.6 226.3 282.3 201.5 330.1 199.8 381.6 195.6 502.2 303.2 604.6 466.1 759.6L471.4 764.7C487.6 780.1 512.1 780 528.4 764.3L532 760.8C695.9 605.2 804.1 502.4 800.3 381.2 798.6 330.7 773.1 281.8 733.9 253.6 655.8 197.8 563.5 229.1 516.5 286.8L500 307 483.5 286.8C453.7 250.2 405.8 224.2 355 224.2Z",
- "width": 1000
- },
- "search": [
- "heart"
- ]
- },
- {
- "uid": "b0c3c776f19866c82080693f720bcb5b",
- "css": "heart-fill",
- "code": 59395,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M746.3 236.2C661.4 175.6 556.6 203.9 500 273.3 443.4 203.9 338.6 175.3 253.7 236.2 208.7 268.5 180.4 323.1 178.5 380.7 174 511.4 284.6 616.1 453.4 776.8L456.6 779.8A62 62 0 0 0 543.1 779.4L546.6 776C715.4 615.8 825.7 511 821.5 380.3 819.6 323.1 791.3 268.5 746.3 236.2Z",
- "width": 1000
- },
- "search": [
- "heart-fill"
- ]
- },
- {
- "uid": "dc362bc92ace0d5b9df0dcd5142ae9cd",
- "css": "home",
- "code": 59396,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M823.5 313.5L536.1 138.2A76.2 76.2 0 0 0 463.9 138.2L176.5 313.5C147.2 329 129 358.2 129 389.6V828.5C129 851.9 149 870.9 173.6 870.9H343.5A53.1 53.1 0 0 0 396.6 817.9V628.9C396.6 578.2 443 537 500 537S603.4 578.2 603.4 628.8V817.8A53.1 53.1 0 0 0 656.5 870.9H826.4C851 870.9 871 851.9 871 828.5V389.6C871 358.2 852.8 329 823.5 313.5ZM828.6 815.1A13.4 13.4 0 0 1 815.2 828.5L656.5 828.5A10.6 10.6 0 0 1 645.9 817.9V628.9C645.9 554.9 580.5 494.6 500 494.6S354.1 554.8 354.1 628.9V817.9A10.6 10.6 0 0 1 343.5 828.5L184.8 828.5A13.4 13.4 0 0 1 171.5 815.1V389.6C171.5 374 181 359.2 197.5 350.4L484.9 175.1A32.9 32.9 0 0 1 515.1 175.1L802.5 350.4C819 359.2 828.6 374 828.6 389.6Z",
- "width": 1000
- },
- "search": [
- "home"
- ]
- },
- {
- "uid": "3a7dd2d172ec4fb593777e06b46453bd",
- "css": "link",
- "code": 59397,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M708.9 733.5H599.9A21.2 21.2 0 0 1 599.9 691H708.9C814.3 691 899.9 605.3 899.9 500S814.2 309 708.9 309H599.9A21.2 21.2 0 0 1 599.9 266.6H708.9C837.6 266.6 942.4 371.4 942.4 500.1S837.6 733.5 708.9 733.5ZM421.3 712.3A21.2 21.2 0 0 0 400.1 691H291.1C185.8 691 100.1 605.3 100.1 500S185.8 309 291.1 309H400.1A21.2 21.2 0 0 0 400.1 266.6H291.1C162.3 266.5 57.6 371.3 57.6 500S162.3 733.5 291.1 733.5H400.1A21.2 21.2 0 0 0 421.3 712.3ZM702.8 504.7A21.2 21.2 0 0 0 681.6 483.5H318.4A21.2 21.2 0 1 0 318.4 526H681.6A21.2 21.2 0 0 0 702.8 504.7Z",
- "width": 1000
- },
- "search": [
- "link"
- ]
- },
- {
- "uid": "edff4e8be7c55eb5006bf3c07ed84627",
- "css": "loading",
- "code": 59398,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M691.5 320.7C636.2 265.4 557.8 233.6 471.6 242.4 347 254.9 244.5 356 230.6 480.3 212 644.7 339.2 783.3 499.7 783.3 608 783.4 701 720 744.4 628.8 755.3 606.1 739 580 713.9 580 701.3 580 689.4 586.8 684 598 645.7 680.4 553.7 732.6 453.2 710.2 377.9 693.6 317.2 632.2 301.2 557 272.7 425.5 372.8 308.9 499.8 308.9 556.1 308.9 606.3 332.3 643 369.2L591.7 420.4C570.3 441.7 585.3 478.4 615.5 478.4H737.3A34 34 0 0 0 771.2 444.5V322.7C771.2 292.6 734.6 277.3 713.2 298.7Z",
- "width": 1000
- },
- "search": [
- "loading"
- ]
- },
- {
- "uid": "e36ffa9338ecf20e9edff18bab26c78b",
- "css": "messages",
- "code": 59399,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M895.9 207C880.5 167.4 842.2 139.2 797.2 139.2H202.8C157.8 139.2 119.5 167.4 104.1 207 99.8 216.3 96.7 228.6 96.7 245.3V754.7A106.2 106.2 0 0 0 202.8 860.8H797.2A106.2 106.2 0 0 0 903.3 754.7V245.3C903.3 228.6 900.2 216.3 895.9 207ZM797.2 181.6A63 63 0 0 1 823.4 187.4 104.5 104.5 0 0 0 804.5 200.9L549.4 427.7C522.6 451.6 477.4 451.5 450.6 427.7L195.5 200.9A104.5 104.5 0 0 0 176.6 187.4 63 63 0 0 1 202.8 181.6ZM860.8 754.7A63.7 63.7 0 0 1 797.2 818.4H202.8A63.7 63.7 0 0 1 139.2 754.7V245.3A62.8 62.8 0 0 1 143 224.3C143.9 222.7 144.7 221.5 145.3 221.3A3 3 0 0 1 146.5 221.1C149.6 221.1 157.1 223.7 167.3 232.7L422.4 459.4C465.2 497.5 534.8 497.4 577.6 459.4L832.7 232.7C844.7 222 853 220.3 854.7 221.2 855.3 221.5 856.1 222.7 857 224.2A62.8 62.8 0 0 1 860.8 245.2Z",
- "width": 1000
- },
- "search": [
- "messages"
- ]
- },
- {
- "uid": "1244f824558dee479548678c14b23fdc",
- "css": "notifications",
- "code": 59400,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M848.5 713.8L825.5 690A199.8 199.8 0 0 1 768.9 550.1V400.7C768.8 252.8 648.4 132 500 131.5L496.1 131.6C349.7 133.9 231.2 253.9 231.2 400.7V550.1A200 200 0 0 1 174.6 690L151.5 713.8A35 35 0 0 0 176.6 773.2H392.1C399 826.8 444.5 868.5 500 868.5S601 826.8 607.9 773.2H823.5A35 35 0 0 0 848.5 713.8ZM500 826.1A67 67 0 0 1 436.6 780.4H563.4A67 67 0 0 1 500 826.1ZM194.2 730.7L205 719.5A242 242 0 0 0 273.6 550.1V400.7C273.6 277.1 373.4 176.1 496.9 174H500.3C624.9 174.4 726.3 276.1 726.3 400.7V550.1A241.9 241.9 0 0 0 795 719.5L805.8 730.7Z",
- "width": 1000
- },
- "search": [
- "notifications"
- ]
- },
- {
- "uid": "bf400c799f09b178126d80e4150db034",
- "css": "reply",
- "code": 59401,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M800.2 818.4A20.2 20.2 0 0 1 793.5 817.3L611.5 757.3A305.4 305.4 0 0 1 483.8 785.4H483.3C367.3 785.4 262.9 721.4 210.9 618.6A297.6 297.6 0 0 1 178.6 483.5V467C187.2 312.3 310.5 190.1 465.5 181.7L483.3 181.7H484.1A304.4 304.4 0 0 1 619.5 213.7C723.4 265 788 368.4 788 483.5A296.9 296.9 0 0 1 759.7 610.4L820.3 790.4A21.2 21.2 0 0 1 800.1 818.4ZM610.1 713.2A21.7 21.7 0 0 1 616.7 714.3L766.5 763.7 716.7 615.7A21.2 21.2 0 0 1 717.9 599.3 253.7 253.7 0 0 0 745.6 483.6C745.6 384.7 690 295.8 600.7 251.6A261.6 261.6 0 0 0 484.1 224H466.6C334.4 231.3 228.4 336.3 221 468.2L221 483.5V483.5A254.5 254.5 0 0 0 248.7 599.3C293.4 687.8 383.3 742.9 483.3 742.9H483.8A262.1 262.1 0 0 0 600.5 715.4 21.2 21.2 0 0 1 610.1 713.2ZM199.8 483.5H199.8Z",
- "width": 1000
- },
- "search": [
- "reply"
- ]
- },
- {
- "uid": "6c4a7779a01ea357cc3a4584ab32de14",
- "css": "repost",
- "code": 59402,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M759.5 754.7A21.2 21.2 0 0 1 745.3 749.2L597.4 615.8A21.2 21.2 0 0 1 625.8 584.3L738.3 685.8V373.2C738.3 326.1 694.7 287.7 641.2 287.7H478.6A21.2 21.2 0 0 1 478.6 245.3H641.2C718.1 245.3 780.8 302.7 780.8 373.3V685.8L893.1 584.3A21.2 21.2 0 0 1 921.6 615.8L773.7 749.2A21.1 21.1 0 0 1 759.5 754.7ZM521.4 754.7H333.8C263 754.7 205.4 697.6 205.4 627.4V317.4L107.6 414.2A21.2 21.2 0 1 1 77.7 384.1L211.6 251.5C211.8 251.3 212 251 212.3 250.8 212.3 250.8 212.3 250.8 212.3 250.8H212.3A21.1 21.1 0 0 1 218 247.1C218 247.1 218 247.1 218 247.1H218A22.1 22.1 0 0 1 234.8 247 20.8 20.8 0 0 1 241.5 251.5L375.5 384.1A21.2 21.2 0 1 1 345.6 414.3L247.7 317.4V627.4C247.7 674.3 286.3 712.3 333.7 712.3H521.4A21.2 21.2 0 1 1 521.4 754.8Z",
- "width": 1000
- },
- "search": [
- "repost"
- ]
- },
- {
- "uid": "ffa0595179adaca6f74f0a41c93981e8",
- "css": "search",
- "code": 59403,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M812.4 777.8L699.2 660.8A301.7 301.7 0 0 0 756.8 483.1C756.8 319.3 627.8 186 469.2 186S181.6 319.3 181.6 483.2 310.6 780.3 469.2 780.3C548.5 780.3 620.4 747 672.4 693.2L783.3 807.8A20.1 20.1 0 0 0 812.3 807.8 21.8 21.8 0 0 0 812.4 777.8ZM469.2 737.9C333.3 737.9 222.7 623.6 222.7 483.2S333.3 228.4 469.2 228.4 715.7 342.7 715.7 483.2 605.1 737.9 469.2 737.9Z",
- "width": 1000
- },
- "search": [
- "search"
- ]
- },
- {
- "uid": "f85affb51c357be83d187344c8c6e35c",
- "css": "diamond",
- "code": 61977,
- "src": "fontawesome"
- },
- {
- "uid": "f8e8b267a9b949804f0c9dd7fed8e477",
- "css": "diamond-1",
- "code": 59406,
- "src": "linecons"
- }
- ]
-}
\ No newline at end of file
diff --git a/src/vendor/fontello.svg b/src/vendor/fontello.svg
deleted file mode 100644
index ecdf677e1..000000000
--- a/src/vendor/fontello.svg
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-Copyright (C) 2021 by original authors @ fontello.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/vendor/fontello.ttf b/src/vendor/fontello.ttf
deleted file mode 100644
index f687ed5d1..000000000
Binary files a/src/vendor/fontello.ttf and /dev/null differ
diff --git a/src/vendor/fontello.woff b/src/vendor/fontello.woff
deleted file mode 100644
index 3f84c8903..000000000
Binary files a/src/vendor/fontello.woff and /dev/null differ
diff --git a/src/vendor/fontello.woff2 b/src/vendor/fontello.woff2
deleted file mode 100644
index 034b36efc..000000000
Binary files a/src/vendor/fontello.woff2 and /dev/null differ
diff --git a/tsconfig.json b/tsconfig.json
index 30fea696f..85ac15386 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -16,6 +16,7 @@
"types": ["node", "jest"],
"typeRoots": ["node_modules/@types"],
"lib": ["esnext", "dom", "ES2020.BigInt"],
+ "esModuleInterop": true,
"paths": {
"models": ["dist/models"],
"models/*": ["dist/models/*"]