diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index f1419f298..26d79d619 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -29,10 +29,11 @@ jobs: - name: Install dependencies run: dotnet restore - - name: Set up JDK 11 - uses: actions/setup-java@v1 + - name: Set up JDK 17 + uses: actions/setup-java@v2 with: - java-version: 1.11 + distribution: 'zulu' + java-version: '17' - uses: actions/upload-artifact@v2 with: diff --git a/API/DTOs/ChapterDto.cs b/API/DTOs/ChapterDto.cs index b70a472de..26a8b8459 100644 --- a/API/DTOs/ChapterDto.cs +++ b/API/DTOs/ChapterDto.cs @@ -62,6 +62,11 @@ public class ChapterDto : IHasReadTimeEstimate public DateTime CreatedUtc { get; set; } public DateTime LastModifiedUtc { get; set; } /// + /// When chapter was created in local server time + /// + /// This is required for Tachiyomi Extension + public DateTime Created { get; set; } + /// /// When the chapter was released. /// /// Metadata field diff --git a/API/DTOs/VolumeDto.cs b/API/DTOs/VolumeDto.cs index 8d5e615ee..8b1d49a7a 100644 --- a/API/DTOs/VolumeDto.cs +++ b/API/DTOs/VolumeDto.cs @@ -16,8 +16,18 @@ public class VolumeDto : IHasReadTimeEstimate public string Name { get; set; } = default!; public int Pages { get; set; } public int PagesRead { get; set; } - public DateTime LastModified { get; set; } + public DateTime LastModifiedUtc { get; set; } + public DateTime CreatedUtc { get; set; } + /// + /// When chapter was created in local server time + /// + /// This is required for Tachiyomi Extension public DateTime Created { get; set; } + /// + /// When chapter was last modified in local server time + /// + /// This is required for Tachiyomi Extension + public DateTime LastModified { get; set; } public int SeriesId { get; set; } public ICollection Chapters { get; set; } = new List(); /// diff --git a/API/Services/Plus/ScrobblingService.cs b/API/Services/Plus/ScrobblingService.cs index 5ee8e9dc5..075f535b0 100644 --- a/API/Services/Plus/ScrobblingService.cs +++ b/API/Services/Plus/ScrobblingService.cs @@ -371,6 +371,7 @@ public class ScrobblingService : IScrobblingService private async Task GetRateLimit(string license, string aniListToken) { + if (string.IsNullOrWhiteSpace(aniListToken)) return 0; try { var response = await (Configuration.KavitaPlusApiUrl + "/api/scrobbling/rate-limit?accessToken=" + aniListToken) diff --git a/UI/Web/minify-json.js b/UI/Web/minify-json.js new file mode 100644 index 000000000..7799ba2b9 --- /dev/null +++ b/UI/Web/minify-json.js @@ -0,0 +1,16 @@ +const fs = require('fs'); +const jsonminify = require('jsonminify'); + +const jsonFilesDir = 'dist/assets/langs'; // Adjust the path to your JSON files +const outputDir = 'dist/assets/langs'; // Directory to store minified files + +fs.readdirSync(jsonFilesDir).forEach(file => { + if (file.endsWith('.json')) { + const filePath = `${jsonFilesDir}/${file}`; + const content = fs.readFileSync(filePath, 'utf8'); + const minifiedContent = jsonminify(content); + const outputFile = `${outputDir}/${file}`; + fs.writeFileSync(outputFile, minifiedContent, 'utf8'); + console.log(`Minified: ${file}`); + } +}); diff --git a/UI/Web/package-lock.json b/UI/Web/package-lock.json index b8fe594d6..bbe9f4b64 100644 --- a/UI/Web/package-lock.json +++ b/UI/Web/package-lock.json @@ -58,12 +58,12 @@ "@angular-eslint/template-parser": "^16.1.0", "@angular/cli": "^16.1.8", "@angular/compiler-cli": "^16.1.8", - "@ngneat/transloco-optimize": "^5.0.2", "@types/d3": "^7.4.0", "@types/node": "^20.4.8", - "@typescript-eslint/eslint-plugin": "^6.2.1", - "@typescript-eslint/parser": "^6.2.1", + "@typescript-eslint/eslint-plugin": "^6.3.0", + "@typescript-eslint/parser": "^6.3.0", "eslint": "^8.46.0", + "jsonminify": "^0.4.2", "karma-coverage": "~2.2.0", "ts-node": "~10.9.1", "typescript": "^5.1.6", @@ -3199,23 +3199,6 @@ "rxjs": ">=6.0.0" } }, - "node_modules/@ngneat/transloco-optimize": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@ngneat/transloco-optimize/-/transloco-optimize-5.0.2.tgz", - "integrity": "sha512-01qjbgkZCzp2sjcUquhuAu3PX4nkhnFPReCY2aWsaVppbsOo19y+LWPEmqnIN+Dane0eczb+v61oDYAvmwQQ/A==", - "dev": true, - "dependencies": { - "command-line-args": "^5.2.0", - "flat": "^5.0.2", - "glob": "^10.0.0" - }, - "bin": { - "transloco-optimize": "src/index.js" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/@ngneat/transloco-persist-lang": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@ngneat/transloco-persist-lang/-/transloco-persist-lang-5.0.0.tgz", @@ -4309,16 +4292,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.2.1.tgz", - "integrity": "sha512-iZVM/ALid9kO0+I81pnp1xmYiFyqibAHzrqX4q5YvvVEyJqY+e6rfTXSCsc2jUxGNqJqTfFSSij/NFkZBiBzLw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.3.0.tgz", + "integrity": "sha512-IZYjYZ0ifGSLZbwMqIip/nOamFiWJ9AH+T/GYNZBWkVcyNQOFGtSMoWV7RvY4poYCMZ/4lHzNl796WOSNxmk8A==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.2.1", - "@typescript-eslint/type-utils": "6.2.1", - "@typescript-eslint/utils": "6.2.1", - "@typescript-eslint/visitor-keys": "6.2.1", + "@typescript-eslint/scope-manager": "6.3.0", + "@typescript-eslint/type-utils": "6.3.0", + "@typescript-eslint/utils": "6.3.0", + "@typescript-eslint/visitor-keys": "6.3.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -4345,13 +4328,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.2.1.tgz", - "integrity": "sha512-fTfCgomBMIgu2Dh2Or3gMYgoNAnQm3RLtRp+jP7A8fY+LJ2+9PNpi5p6QB5C4RSP+U3cjI0vDlI3mspAkpPVbQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.3.0.tgz", + "integrity": "sha512-7Oj+1ox1T2Yc8PKpBvOKWhoI/4rWFd1j7FA/rPE0lbBPXTKjdbtC+7Ev0SeBjEKkIhKWVeZSP+mR7y1Db1CdfQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.2.1", - "@typescript-eslint/utils": "6.2.1", + "@typescript-eslint/typescript-estree": "6.3.0", + "@typescript-eslint/utils": "6.3.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -4372,17 +4355,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.2.1.tgz", - "integrity": "sha512-eBIXQeupYmxVB6S7x+B9SdBeB6qIdXKjgQBge2J+Ouv8h9Cxm5dHf/gfAZA6dkMaag+03HdbVInuXMmqFB/lKQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.3.0.tgz", + "integrity": "sha512-hLLg3BZE07XHnpzglNBG8P/IXq/ZVXraEbgY7FM0Cnc1ehM8RMdn9mat3LubJ3KBeYXXPxV1nugWbQPjGeJk6Q==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.2.1", - "@typescript-eslint/types": "6.2.1", - "@typescript-eslint/typescript-estree": "6.2.1", + "@typescript-eslint/scope-manager": "6.3.0", + "@typescript-eslint/types": "6.3.0", + "@typescript-eslint/typescript-estree": "6.3.0", "semver": "^7.5.4" }, "engines": { @@ -4430,15 +4413,15 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.2.1.tgz", - "integrity": "sha512-Ld+uL1kYFU8e6btqBFpsHkwQ35rw30IWpdQxgOqOh4NfxSDH6uCkah1ks8R/RgQqI5hHPXMaLy9fbFseIe+dIg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.3.0.tgz", + "integrity": "sha512-ibP+y2Gr6p0qsUkhs7InMdXrwldjxZw66wpcQq9/PzAroM45wdwyu81T+7RibNCh8oc0AgrsyCwJByncY0Ongg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.2.1", - "@typescript-eslint/types": "6.2.1", - "@typescript-eslint/typescript-estree": "6.2.1", - "@typescript-eslint/visitor-keys": "6.2.1", + "@typescript-eslint/scope-manager": "6.3.0", + "@typescript-eslint/types": "6.3.0", + "@typescript-eslint/typescript-estree": "6.3.0", + "@typescript-eslint/visitor-keys": "6.3.0", "debug": "^4.3.4" }, "engines": { @@ -4458,13 +4441,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.1.tgz", - "integrity": "sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.3.0.tgz", + "integrity": "sha512-WlNFgBEuGu74ahrXzgefiz/QlVb+qg8KDTpknKwR7hMH+lQygWyx0CQFoUmMn1zDkQjTBBIn75IxtWss77iBIQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.2.1", - "@typescript-eslint/visitor-keys": "6.2.1" + "@typescript-eslint/types": "6.3.0", + "@typescript-eslint/visitor-keys": "6.3.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -4559,9 +4542,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.1.tgz", - "integrity": "sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.3.0.tgz", + "integrity": "sha512-K6TZOvfVyc7MO9j60MkRNWyFSf86IbOatTKGrpTQnzarDZPYPVy0oe3myTMq7VjhfsUAbNUW8I5s+2lZvtx1gg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -4572,13 +4555,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.1.tgz", - "integrity": "sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.3.0.tgz", + "integrity": "sha512-Xh4NVDaC4eYKY4O3QGPuQNp5NxBAlEvNQYOqJquR2MePNxO11E5K3t5x4M4Mx53IZvtpW+mBxIT0s274fLUocg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.2.1", - "@typescript-eslint/visitor-keys": "6.2.1", + "@typescript-eslint/types": "6.3.0", + "@typescript-eslint/visitor-keys": "6.3.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4754,12 +4737,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.1.tgz", - "integrity": "sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.3.0.tgz", + "integrity": "sha512-kEhRRj7HnvaSjux1J9+7dBen15CdWmDnwrpyiHsFX6Qx2iW5LOBUgNefOFeh2PjWPlNwN8TOn6+4eBU3J/gupw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/types": "6.3.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -5274,15 +5257,6 @@ "dequal": "^2.0.3" } }, - "node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", @@ -5959,21 +5933,6 @@ "node": ">= 0.8" } }, - "node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "dev": true, - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -7903,18 +7862,6 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -9693,6 +9640,16 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonminify": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jsonminify/-/jsonminify-0.4.2.tgz", + "integrity": "sha512-mEtP5ECD0293D+s45JhDutqF5mFCkWY8ClrPFxjSFR2KUoantofky7noSzyKnAnD9Gd8pXHZSUd5bgzLDUBbfA==", + "dev": true, + "engines": { + "node": ">=0.8.0", + "npm": ">=1.1.0" + } + }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -9916,12 +9873,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -13855,15 +13806,6 @@ "node": ">=14.17" } }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", diff --git a/UI/Web/package.json b/UI/Web/package.json index 3aa732bb0..d6da207c2 100644 --- a/UI/Web/package.json +++ b/UI/Web/package.json @@ -5,8 +5,8 @@ "ng": "ng", "start": "ng serve", "build": "ng build", - "transloco:optimize": "transloco-optimize dist/assets/langs", - "prod": "ng build --configuration production --aot --output-hashing=all && npm run transloco:optimize", + "minify-langs": "node minify-json.js", + "prod": "ng build --configuration production --aot --output-hashing=all && npm run minify-langs", "explore": "ng build --stats-json && webpack-bundle-analyzer dist/stats.json", "lint": "ng lint", "e2e": "ng e2e" @@ -63,12 +63,12 @@ "@angular-eslint/template-parser": "^16.1.0", "@angular/cli": "^16.1.8", "@angular/compiler-cli": "^16.1.8", - "@ngneat/transloco-optimize": "^5.0.2", "@types/d3": "^7.4.0", "@types/node": "^20.4.8", - "@typescript-eslint/eslint-plugin": "^6.2.1", - "@typescript-eslint/parser": "^6.2.1", + "@typescript-eslint/eslint-plugin": "^6.3.0", + "@typescript-eslint/parser": "^6.3.0", "eslint": "^8.46.0", + "jsonminify": "^0.4.2", "karma-coverage": "~2.2.0", "ts-node": "~10.9.1", "typescript": "^5.1.6", diff --git a/UI/Web/src/app/_interceptors/jwt.interceptor.ts b/UI/Web/src/app/_interceptors/jwt.interceptor.ts index f900ecb39..c81a784e6 100644 --- a/UI/Web/src/app/_interceptors/jwt.interceptor.ts +++ b/UI/Web/src/app/_interceptors/jwt.interceptor.ts @@ -1,4 +1,4 @@ -import {inject, Injectable} from '@angular/core'; +import {Injectable} from '@angular/core'; import { HttpRequest, HttpHandler, diff --git a/UI/Web/src/app/_models/chapter.ts b/UI/Web/src/app/_models/chapter.ts index 67c5cbc54..f3010fb95 100644 --- a/UI/Web/src/app/_models/chapter.ts +++ b/UI/Web/src/app/_models/chapter.ts @@ -1,7 +1,5 @@ -import { HourEstimateRange } from './series-detail/hour-estimate-range'; import { MangaFile } from './manga-file'; import { AgeRating } from './metadata/age-rating'; -import { AgeRatingDto } from './metadata/age-rating-dto'; /** * Chapter table object. This does not have metadata on it, use ChapterMetadata which is the same Chapter but with those fields. diff --git a/UI/Web/src/app/_models/reading-list/cbl/cbl-import-summary.ts b/UI/Web/src/app/_models/reading-list/cbl/cbl-import-summary.ts index 424de0a63..476adb7ed 100644 --- a/UI/Web/src/app/_models/reading-list/cbl/cbl-import-summary.ts +++ b/UI/Web/src/app/_models/reading-list/cbl/cbl-import-summary.ts @@ -1,4 +1,3 @@ -import { Series } from "../../series"; import { CblBookResult } from "./cbl-book-result"; import { CblImportResult } from "./cbl-import-result.enum"; @@ -13,4 +12,4 @@ export interface CblImportSummary { results: Array; success: CblImportResult; successfulInserts: Array; -} \ No newline at end of file +} diff --git a/UI/Web/src/app/_models/volume.ts b/UI/Web/src/app/_models/volume.ts index 2b55cb4b9..48da5a510 100644 --- a/UI/Web/src/app/_models/volume.ts +++ b/UI/Web/src/app/_models/volume.ts @@ -5,15 +5,15 @@ export interface Volume { id: number; number: number; name: string; - created: string; - lastModified: string; + createdUtc: string; + lastModifiedUtc: string; pages: number; pagesRead: number; chapters: Array; /** * This is only available on the object when fetched for SeriesDetail */ - timeEstimate?: HourEstimateRange; + timeEstimate?: HourEstimateRange; minHoursToRead: number; maxHoursToRead: number; avgHoursToRead: number; diff --git a/UI/Web/src/app/_services/image.service.ts b/UI/Web/src/app/_services/image.service.ts index c21c104d8..ea44c2cc1 100644 --- a/UI/Web/src/app/_services/image.service.ts +++ b/UI/Web/src/app/_services/image.service.ts @@ -1,6 +1,4 @@ -import {DestroyRef, inject, Injectable, OnDestroy} from '@angular/core'; -import { Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; +import {DestroyRef, inject, Injectable} from '@angular/core'; import { environment } from 'src/environments/environment'; import { ThemeService } from './theme.service'; import { RecentlyAddedItem } from '../_models/recently-added-item'; diff --git a/UI/Web/src/app/_services/message-hub.service.ts b/UI/Web/src/app/_services/message-hub.service.ts index f1c884019..73d0b0e14 100644 --- a/UI/Web/src/app/_services/message-hub.service.ts +++ b/UI/Web/src/app/_services/message-hub.service.ts @@ -1,7 +1,5 @@ import { Injectable } from '@angular/core'; -import { Router } from '@angular/router'; import { HubConnection, HubConnectionBuilder } from '@microsoft/signalr'; -import { ToastrService } from 'ngx-toastr'; import { BehaviorSubject, ReplaySubject } from 'rxjs'; import { environment } from 'src/environments/environment'; import { LibraryModifiedEvent } from '../_models/events/library-modified-event'; diff --git a/UI/Web/src/app/_services/metadata.service.ts b/UI/Web/src/app/_services/metadata.service.ts index a456affff..da34eafd5 100644 --- a/UI/Web/src/app/_services/metadata.service.ts +++ b/UI/Web/src/app/_services/metadata.service.ts @@ -3,7 +3,6 @@ import { Injectable } from '@angular/core'; import { of } from 'rxjs'; import {map, tap} from 'rxjs/operators'; import { environment } from 'src/environments/environment'; -import { UtilityService } from '../shared/_services/utility.service'; import { Genre } from '../_models/metadata/genre'; import { AgeRating } from '../_models/metadata/age-rating'; import { AgeRatingDto } from '../_models/metadata/age-rating-dto'; diff --git a/UI/Web/src/app/_services/reader.service.ts b/UI/Web/src/app/_services/reader.service.ts index f94fba4fd..17216a90f 100644 --- a/UI/Web/src/app/_services/reader.service.ts +++ b/UI/Web/src/app/_services/reader.service.ts @@ -1,6 +1,6 @@ import { HttpClient, HttpParams } from '@angular/common/http'; -import {DestroyRef, Inject, inject, Injectable} from '@angular/core'; -import {DOCUMENT, Location} from '@angular/common'; +import {DestroyRef, inject, Injectable} from '@angular/core'; +import {Location} from '@angular/common'; import { Router } from '@angular/router'; import { environment } from 'src/environments/environment'; import { ChapterInfo } from '../manga-reader/_models/chapter-info'; diff --git a/UI/Web/src/app/_services/reading-list.service.ts b/UI/Web/src/app/_services/reading-list.service.ts index 51cf74e1e..4789fe67d 100644 --- a/UI/Web/src/app/_services/reading-list.service.ts +++ b/UI/Web/src/app/_services/reading-list.service.ts @@ -6,7 +6,6 @@ import { UtilityService } from '../shared/_services/utility.service'; import { Person } from '../_models/metadata/person'; import { PaginatedResult } from '../_models/pagination'; import { ReadingList, ReadingListItem } from '../_models/reading-list'; -import { CblImportResult } from '../_models/reading-list/cbl/cbl-import-result.enum'; import { CblImportSummary } from '../_models/reading-list/cbl/cbl-import-summary'; import { TextResonse } from '../_types/text-response'; import { ActionItem } from './action-factory.service'; @@ -28,7 +27,7 @@ export class ReadingListService { let params = new HttpParams(); params = this.utilityService.addPaginationIfExists(params, pageNum, itemsPerPage); - return this.httpClient.post>(this.baseUrl + 'readinglist/lists?includePromoted=' + includePromoted + return this.httpClient.post>(this.baseUrl + 'readinglist/lists?includePromoted=' + includePromoted + '&sortByLastModified=' + sortByLastModified, {}, {observe: 'response', params}).pipe( map((response: any) => { return this.utilityService.createPaginatedResult(response, new PaginatedResult()); @@ -92,7 +91,7 @@ export class ReadingListService { if (readingList?.promoted && !isAdmin) return false; return true; } - + nameExists(name: string) { return this.httpClient.get(this.baseUrl + 'readinglist/name-exists?name=' + name); } diff --git a/UI/Web/src/app/_services/series.service.ts b/UI/Web/src/app/_services/series.service.ts index edc83e520..659125e41 100644 --- a/UI/Web/src/app/_services/series.service.ts +++ b/UI/Web/src/app/_services/series.service.ts @@ -1,6 +1,6 @@ import { HttpClient, HttpParams } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { Observable, of } from 'rxjs'; +import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { environment } from 'src/environments/environment'; import { FilterUtilitiesService } from '../shared/_services/filter-utilities.service'; diff --git a/UI/Web/src/app/_single-module/review-card-modal/review-card-modal.component.ts b/UI/Web/src/app/_single-module/review-card-modal/review-card-modal.component.ts index 50b52031d..1f0d521fb 100644 --- a/UI/Web/src/app/_single-module/review-card-modal/review-card-modal.component.ts +++ b/UI/Web/src/app/_single-module/review-card-modal/review-card-modal.component.ts @@ -13,12 +13,12 @@ import {ReactiveFormsModule} from "@angular/forms"; import {UserReview} from "../review-card/user-review"; import {SpoilerComponent} from "../spoiler/spoiler.component"; import {SafeHtmlPipe} from "../../pipe/safe-html.pipe"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-review-card-modal', standalone: true, - imports: [CommonModule, ReactiveFormsModule, SpoilerComponent, SafeHtmlPipe, TranslocoModule], + imports: [CommonModule, ReactiveFormsModule, SpoilerComponent, SafeHtmlPipe, TranslocoDirective], templateUrl: './review-card-modal.component.html', styleUrls: ['./review-card-modal.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/UI/Web/src/app/_single-module/review-card/review-card.component.ts b/UI/Web/src/app/_single-module/review-card/review-card.component.ts index 248d0e0e5..ff9b03848 100644 --- a/UI/Web/src/app/_single-module/review-card/review-card.component.ts +++ b/UI/Web/src/app/_single-module/review-card/review-card.component.ts @@ -9,12 +9,12 @@ import {ReadMoreComponent} from "../../shared/read-more/read-more.component"; import {DefaultValuePipe} from "../../pipe/default-value.pipe"; import {ImageComponent} from "../../shared/image/image.component"; import {ProviderImagePipe} from "../../pipe/provider-image.pipe"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-review-card', standalone: true, - imports: [CommonModule, ReadMoreComponent, DefaultValuePipe, ImageComponent, NgOptimizedImage, ProviderImagePipe, TranslocoModule], + imports: [CommonModule, ReadMoreComponent, DefaultValuePipe, ImageComponent, NgOptimizedImage, ProviderImagePipe, TranslocoDirective], templateUrl: './review-card.component.html', styleUrls: ['./review-card.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/_single-module/review-series-modal/review-series-modal.component.ts b/UI/Web/src/app/_single-module/review-series-modal/review-series-modal.component.ts index 96d3dc1c4..bafbe9ce8 100644 --- a/UI/Web/src/app/_single-module/review-series-modal/review-series-modal.component.ts +++ b/UI/Web/src/app/_single-module/review-series-modal/review-series-modal.component.ts @@ -4,12 +4,12 @@ import {NgbActiveModal, NgbRating} from '@ng-bootstrap/ng-bootstrap'; import { SeriesService } from 'src/app/_services/series.service'; import {UserReview} from "../review-card/user-review"; import {CommonModule} from "@angular/common"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-review-series-modal', standalone: true, - imports: [CommonModule, NgbRating, ReactiveFormsModule, TranslocoModule], + imports: [CommonModule, NgbRating, ReactiveFormsModule, TranslocoDirective], templateUrl: './review-series-modal.component.html', styleUrls: ['./review-series-modal.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/_single-module/scrobble-event-type.pipe.ts b/UI/Web/src/app/_single-module/scrobble-event-type.pipe.ts index ad860276c..08e0b2996 100644 --- a/UI/Web/src/app/_single-module/scrobble-event-type.pipe.ts +++ b/UI/Web/src/app/_single-module/scrobble-event-type.pipe.ts @@ -1,6 +1,6 @@ import {inject, Pipe, PipeTransform} from '@angular/core'; import {ScrobbleEventType} from "../_models/scrobbling/scrobble-event"; -import {TranslocoPipe, TranslocoService} from "@ngneat/transloco"; +import {TranslocoService} from "@ngneat/transloco"; @Pipe({ name: 'scrobbleEventType', diff --git a/UI/Web/src/app/_single-module/spoiler/spoiler.component.ts b/UI/Web/src/app/_single-module/spoiler/spoiler.component.ts index d75d6b8d3..2e248c284 100644 --- a/UI/Web/src/app/_single-module/spoiler/spoiler.component.ts +++ b/UI/Web/src/app/_single-module/spoiler/spoiler.component.ts @@ -9,12 +9,12 @@ import { } from '@angular/core'; import {CommonModule} from '@angular/common'; import {SafeHtmlPipe} from "../../pipe/safe-html.pipe"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-spoiler', standalone: true, - imports: [CommonModule, SafeHtmlPipe, TranslocoModule], + imports: [CommonModule, SafeHtmlPipe, TranslocoDirective], templateUrl: './spoiler.component.html', styleUrls: ['./spoiler.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/UI/Web/src/app/admin/_modals/directory-picker/directory-picker.component.ts b/UI/Web/src/app/admin/_modals/directory-picker/directory-picker.component.ts index 70899fc8e..6d3d28d21 100644 --- a/UI/Web/src/app/admin/_modals/directory-picker/directory-picker.component.ts +++ b/UI/Web/src/app/admin/_modals/directory-picker/directory-picker.component.ts @@ -6,7 +6,7 @@ import { DirectoryDto } from 'src/app/_models/system/directory-dto'; import { LibraryService } from '../../../_services/library.service'; import { NgIf, NgFor, NgClass } from '@angular/common'; import { ReactiveFormsModule, FormsModule } from '@angular/forms'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; export interface DirectoryPickerResult { @@ -21,7 +21,7 @@ export interface DirectoryPickerResult { templateUrl: './directory-picker.component.html', styleUrls: ['./directory-picker.component.scss'], standalone: true, - imports: [ReactiveFormsModule, NgbTypeahead, FormsModule, NgbHighlight, NgIf, NgFor, NgClass, TranslocoModule] + imports: [ReactiveFormsModule, NgbTypeahead, FormsModule, NgbHighlight, NgIf, NgFor, NgClass, TranslocoDirective] }) export class DirectoryPickerComponent implements OnInit { diff --git a/UI/Web/src/app/admin/_modals/library-access-modal/library-access-modal.component.ts b/UI/Web/src/app/admin/_modals/library-access-modal/library-access-modal.component.ts index 59be11996..ff23e16ee 100644 --- a/UI/Web/src/app/admin/_modals/library-access-modal/library-access-modal.component.ts +++ b/UI/Web/src/app/admin/_modals/library-access-modal/library-access-modal.component.ts @@ -6,14 +6,14 @@ import {LibraryService} from 'src/app/_services/library.service'; import {SelectionModel} from 'src/app/typeahead/_components/typeahead.component'; import {NgFor, NgIf} from '@angular/common'; import {FormsModule, ReactiveFormsModule} from '@angular/forms'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-library-access-modal', templateUrl: './library-access-modal.component.html', styleUrls: ['./library-access-modal.component.scss'], standalone: true, - imports: [ReactiveFormsModule, FormsModule, NgFor, NgIf, TranslocoModule], + imports: [ReactiveFormsModule, FormsModule, NgFor, NgIf, TranslocoDirective], changeDetection: ChangeDetectionStrategy.OnPush }) export class LibraryAccessModalComponent implements OnInit { diff --git a/UI/Web/src/app/admin/_modals/reset-password-modal/reset-password-modal.component.ts b/UI/Web/src/app/admin/_modals/reset-password-modal/reset-password-modal.component.ts index 3b8759f94..1df444819 100644 --- a/UI/Web/src/app/admin/_modals/reset-password-modal/reset-password-modal.component.ts +++ b/UI/Web/src/app/admin/_modals/reset-password-modal/reset-password-modal.component.ts @@ -5,14 +5,14 @@ import { Member } from 'src/app/_models/auth/member'; import { AccountService } from 'src/app/_services/account.service'; import { SentenceCasePipe } from '../../../pipe/sentence-case.pipe'; import { NgIf } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-reset-password-modal', templateUrl: './reset-password-modal.component.html', styleUrls: ['./reset-password-modal.component.scss'], standalone: true, - imports: [ReactiveFormsModule, NgIf, SentenceCasePipe, TranslocoModule] + imports: [ReactiveFormsModule, NgIf, SentenceCasePipe, TranslocoDirective] }) export class ResetPasswordModalComponent { diff --git a/UI/Web/src/app/admin/dashboard/dashboard.component.ts b/UI/Web/src/app/admin/dashboard/dashboard.component.ts index 8e414ed06..784ebde27 100644 --- a/UI/Web/src/app/admin/dashboard/dashboard.component.ts +++ b/UI/Web/src/app/admin/dashboard/dashboard.component.ts @@ -20,7 +20,7 @@ import {NgbNav, NgbNavContent, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavOut import { SideNavCompanionBarComponent } from '../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; enum TabID { General = '', @@ -40,7 +40,7 @@ enum TabID { templateUrl: './dashboard.component.html', styleUrls: ['./dashboard.component.scss'], standalone: true, - imports: [SideNavCompanionBarComponent, NgbNav, NgFor, NgbNavItem, NgbNavItemRole, NgbNavLink, RouterLink, NgbNavContent, NgIf, ManageSettingsComponent, ManageEmailSettingsComponent, ManageMediaSettingsComponent, ManageUsersComponent, ManageLibraryComponent, ManageLogsComponent, ManageSystemComponent, ServerStatsComponent, ManageTasksSettingsComponent, LicenseComponent, NgbNavOutlet, SentenceCasePipe, TranslocoModule], + imports: [SideNavCompanionBarComponent, NgbNav, NgFor, NgbNavItem, NgbNavItemRole, NgbNavLink, RouterLink, NgbNavContent, NgIf, ManageSettingsComponent, ManageEmailSettingsComponent, ManageMediaSettingsComponent, ManageUsersComponent, ManageLibraryComponent, ManageLogsComponent, ManageSystemComponent, ServerStatsComponent, ManageTasksSettingsComponent, LicenseComponent, NgbNavOutlet, SentenceCasePipe, TranslocoDirective], changeDetection: ChangeDetectionStrategy.OnPush }) export class DashboardComponent implements OnInit { diff --git a/UI/Web/src/app/admin/edit-user/edit-user.component.ts b/UI/Web/src/app/admin/edit-user/edit-user.component.ts index 3e9fe9e5d..a9eba589e 100644 --- a/UI/Web/src/app/admin/edit-user/edit-user.component.ts +++ b/UI/Web/src/app/admin/edit-user/edit-user.component.ts @@ -10,14 +10,14 @@ import { RestrictionSelectorComponent } from '../../user-settings/restriction-se import { LibrarySelectorComponent } from '../library-selector/library-selector.component'; import { RoleSelectorComponent } from '../role-selector/role-selector.component'; import { NgIf } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-edit-user', templateUrl: './edit-user.component.html', styleUrls: ['./edit-user.component.scss'], standalone: true, - imports: [ReactiveFormsModule, NgIf, RoleSelectorComponent, LibrarySelectorComponent, RestrictionSelectorComponent, SentenceCasePipe, TranslocoModule] + imports: [ReactiveFormsModule, NgIf, RoleSelectorComponent, LibrarySelectorComponent, RestrictionSelectorComponent, SentenceCasePipe, TranslocoDirective] }) export class EditUserComponent implements OnInit { diff --git a/UI/Web/src/app/admin/invite-user/invite-user.component.ts b/UI/Web/src/app/admin/invite-user/invite-user.component.ts index 035b25f47..37158a1ca 100644 --- a/UI/Web/src/app/admin/invite-user/invite-user.component.ts +++ b/UI/Web/src/app/admin/invite-user/invite-user.component.ts @@ -12,14 +12,14 @@ import { RestrictionSelectorComponent } from '../../user-settings/restriction-se import { LibrarySelectorComponent } from '../library-selector/library-selector.component'; import { RoleSelectorComponent } from '../role-selector/role-selector.component'; import { NgIf } from '@angular/common'; -import {translate, TranslocoModule} from "@ngneat/transloco"; +import {translate, TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-invite-user', templateUrl: './invite-user.component.html', styleUrls: ['./invite-user.component.scss'], standalone: true, - imports: [NgIf, ReactiveFormsModule, RoleSelectorComponent, LibrarySelectorComponent, RestrictionSelectorComponent, ApiKeyComponent, TranslocoModule] + imports: [NgIf, ReactiveFormsModule, RoleSelectorComponent, LibrarySelectorComponent, RestrictionSelectorComponent, ApiKeyComponent, TranslocoDirective] }) export class InviteUserComponent implements OnInit { diff --git a/UI/Web/src/app/admin/library-selector/library-selector.component.ts b/UI/Web/src/app/admin/library-selector/library-selector.component.ts index 238b2ab33..e3a951dd2 100644 --- a/UI/Web/src/app/admin/library-selector/library-selector.component.ts +++ b/UI/Web/src/app/admin/library-selector/library-selector.component.ts @@ -5,14 +5,14 @@ import { Member } from 'src/app/_models/auth/member'; import { LibraryService } from 'src/app/_services/library.service'; import { SelectionModel } from 'src/app/typeahead/_components/typeahead.component'; import { NgIf, NgFor } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-library-selector', templateUrl: './library-selector.component.html', styleUrls: ['./library-selector.component.scss'], standalone: true, - imports: [NgIf, ReactiveFormsModule, FormsModule, NgFor, TranslocoModule] + imports: [NgIf, ReactiveFormsModule, FormsModule, NgFor, TranslocoDirective] }) export class LibrarySelectorComponent implements OnInit { diff --git a/UI/Web/src/app/admin/license/license.component.ts b/UI/Web/src/app/admin/license/license.component.ts index 5a2399677..6c560de6e 100644 --- a/UI/Web/src/app/admin/license/license.component.ts +++ b/UI/Web/src/app/admin/license/license.component.ts @@ -2,8 +2,6 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, - DestroyRef, - inject, OnInit } from '@angular/core'; import { FormControl, FormGroup, Validators, ReactiveFormsModule } from "@angular/forms"; @@ -15,7 +13,7 @@ import { LoadingComponent } from '../../shared/loading/loading.component'; import { NgbTooltip, NgbCollapse } from '@ng-bootstrap/ng-bootstrap'; import { NgIf } from '@angular/common'; import {environment} from "../../../environments/environment"; -import {translate, TranslocoModule} from "@ngneat/transloco"; +import {translate, TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-license', @@ -23,7 +21,7 @@ import {translate, TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./license.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, NgbTooltip, LoadingComponent, NgbCollapse, ReactiveFormsModule, TranslocoModule] + imports: [NgIf, NgbTooltip, LoadingComponent, NgbCollapse, ReactiveFormsModule, TranslocoDirective] }) export class LicenseComponent implements OnInit { diff --git a/UI/Web/src/app/admin/manage-alerts/manage-alerts.component.ts b/UI/Web/src/app/admin/manage-alerts/manage-alerts.component.ts index 37af22014..6274156bb 100644 --- a/UI/Web/src/app/admin/manage-alerts/manage-alerts.component.ts +++ b/UI/Web/src/app/admin/manage-alerts/manage-alerts.component.ts @@ -10,7 +10,7 @@ import { inject, DestroyRef } from '@angular/core'; -import { BehaviorSubject, Observable, Subject, combineLatest, filter, map, shareReplay, takeUntil } from 'rxjs'; +import { BehaviorSubject, Observable, filter, shareReplay } from 'rxjs'; import { SortEvent, SortableHeader, compare } from 'src/app/_single-module/table/_directives/sortable-header.directive'; import { KavitaMediaError } from '../_models/media-error'; import { ServerService } from 'src/app/_services/server.service'; @@ -20,7 +20,7 @@ import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { FilterPipe } from '../../pipe/filter.pipe'; import { LoadingComponent } from '../../shared/loading/loading.component'; import { NgIf, NgFor } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-manage-alerts', @@ -28,7 +28,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./manage-alerts.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [ReactiveFormsModule, NgIf, LoadingComponent, NgFor, FilterPipe, SortableHeader, TranslocoModule] + imports: [ReactiveFormsModule, NgIf, LoadingComponent, NgFor, FilterPipe, SortableHeader, TranslocoDirective] }) export class ManageAlertsComponent implements OnInit { diff --git a/UI/Web/src/app/admin/manage-logs/manage-logs.component.ts b/UI/Web/src/app/admin/manage-logs/manage-logs.component.ts index 4bb5e4e16..fd42e9283 100644 --- a/UI/Web/src/app/admin/manage-logs/manage-logs.component.ts +++ b/UI/Web/src/app/admin/manage-logs/manage-logs.component.ts @@ -1,6 +1,6 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { HubConnection, HubConnectionBuilder } from '@microsoft/signalr'; -import { BehaviorSubject, ReplaySubject, Subject, take } from 'rxjs'; +import { BehaviorSubject, take } from 'rxjs'; import { AccountService } from 'src/app/_services/account.service'; import { environment } from 'src/environments/environment'; import { VirtualScrollerModule } from '@iharbeck/ngx-virtual-scroller'; @@ -41,7 +41,7 @@ export class ManageLogsComponent implements OnInit, OnDestroy { .build(); console.log('Starting log connection'); - + this.hubConnection .start() .catch(err => console.error(err)); diff --git a/UI/Web/src/app/admin/manage-media-settings/manage-media-settings.component.ts b/UI/Web/src/app/admin/manage-media-settings/manage-media-settings.component.ts index 0cea2f175..62ff9094b 100644 --- a/UI/Web/src/app/admin/manage-media-settings/manage-media-settings.component.ts +++ b/UI/Web/src/app/admin/manage-media-settings/manage-media-settings.component.ts @@ -21,7 +21,7 @@ import {EncodeFormats} from '../_models/encode-format'; import {ManageScrobbleErrorsComponent} from '../manage-scrobble-errors/manage-scrobble-errors.component'; import {ManageAlertsComponent} from '../manage-alerts/manage-alerts.component'; import {NgFor, NgIf, NgTemplateOutlet} from '@angular/common'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; @Component({ selector: 'app-manage-media-settings', @@ -29,7 +29,7 @@ import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; styleUrls: ['./manage-media-settings.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, ReactiveFormsModule, NgbTooltip, NgTemplateOutlet, NgFor, NgbAccordionDirective, NgbAccordionItem, NgbAccordionHeader, NgbAccordionToggle, NgbAccordionButton, NgbCollapse, NgbAccordionCollapse, NgbAccordionBody, ManageAlertsComponent, ManageScrobbleErrorsComponent, TranslocoModule] + imports: [NgIf, ReactiveFormsModule, NgbTooltip, NgTemplateOutlet, NgFor, NgbAccordionDirective, NgbAccordionItem, NgbAccordionHeader, NgbAccordionToggle, NgbAccordionButton, NgbCollapse, NgbAccordionCollapse, NgbAccordionBody, ManageAlertsComponent, ManageScrobbleErrorsComponent, TranslocoDirective] }) export class ManageMediaSettingsComponent implements OnInit { diff --git a/UI/Web/src/app/admin/manage-system/manage-system.component.ts b/UI/Web/src/app/admin/manage-system/manage-system.component.ts index 5a76428af..db02a9fb4 100644 --- a/UI/Web/src/app/admin/manage-system/manage-system.component.ts +++ b/UI/Web/src/app/admin/manage-system/manage-system.component.ts @@ -7,14 +7,14 @@ import { SettingsService } from '../settings.service'; import {ServerInfoSlim} from '../_models/server-info'; import { ServerSettings } from '../_models/server-settings'; import { NgIf } from '@angular/common'; -import {translate, TranslocoModule} from "@ngneat/transloco"; +import {translate, TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-manage-system', templateUrl: './manage-system.component.html', styleUrls: ['./manage-system.component.scss'], standalone: true, - imports: [NgIf, TranslocoModule] + imports: [NgIf, TranslocoDirective] }) export class ManageSystemComponent implements OnInit { diff --git a/UI/Web/src/app/admin/role-selector/role-selector.component.ts b/UI/Web/src/app/admin/role-selector/role-selector.component.ts index 10663c4d9..c4d850a5c 100644 --- a/UI/Web/src/app/admin/role-selector/role-selector.component.ts +++ b/UI/Web/src/app/admin/role-selector/role-selector.component.ts @@ -3,10 +3,9 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; import { Member } from 'src/app/_models/auth/member'; import { User } from 'src/app/_models/user'; import { AccountService } from 'src/app/_services/account.service'; -import { MemberService } from 'src/app/_services/member.service'; import { ReactiveFormsModule, FormsModule } from '@angular/forms'; import { NgFor } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective,} from "@ngneat/transloco"; @Component({ selector: 'app-role-selector', @@ -14,7 +13,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./role-selector.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgFor, ReactiveFormsModule, FormsModule, TranslocoModule] + imports: [NgFor, ReactiveFormsModule, FormsModule, TranslocoDirective] }) export class RoleSelectorComponent implements OnInit { diff --git a/UI/Web/src/app/all-series/_components/all-series/all-series.component.ts b/UI/Web/src/app/all-series/_components/all-series/all-series.component.ts index 71f75bed5..17ea87219 100644 --- a/UI/Web/src/app/all-series/_components/all-series/all-series.component.ts +++ b/UI/Web/src/app/all-series/_components/all-series/all-series.component.ts @@ -5,13 +5,11 @@ import { EventEmitter, HostListener, inject, - OnDestroy, OnInit } from '@angular/core'; import { Title } from '@angular/platform-browser'; import { ActivatedRoute, Router } from '@angular/router'; -import { Subject } from 'rxjs'; -import { take, debounceTime, takeUntil } from 'rxjs/operators'; +import { take, debounceTime } from 'rxjs/operators'; import { BulkSelectionService } from 'src/app/cards/bulk-selection.service'; import { FilterSettings } from 'src/app/metadata-filter/filter-settings'; import { FilterUtilitiesService } from 'src/app/shared/_services/filter-utilities.service'; @@ -31,7 +29,7 @@ import { CardDetailLayoutComponent } from '../../../cards/card-detail-layout/car import { BulkOperationsComponent } from '../../../cards/bulk-operations/bulk-operations.component'; import { NgIf, DecimalPipe } from '@angular/common'; import { SideNavCompanionBarComponent } from '../../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @@ -41,7 +39,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./all-series.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SideNavCompanionBarComponent, NgIf, BulkOperationsComponent, CardDetailLayoutComponent, SeriesCardComponent, DecimalPipe, TranslocoModule] + imports: [SideNavCompanionBarComponent, NgIf, BulkOperationsComponent, CardDetailLayoutComponent, SeriesCardComponent, DecimalPipe, TranslocoDirective] }) export class AllSeriesComponent implements OnInit { diff --git a/UI/Web/src/app/announcements/_components/announcements/announcements.component.ts b/UI/Web/src/app/announcements/_components/announcements/announcements.component.ts index 509b9ec52..c4d2a7245 100644 --- a/UI/Web/src/app/announcements/_components/announcements/announcements.component.ts +++ b/UI/Web/src/app/announcements/_components/announcements/announcements.component.ts @@ -1,14 +1,14 @@ import { Component } from '@angular/core'; import { ChangelogComponent } from '../changelog/changelog.component'; import { SideNavCompanionBarComponent } from '../../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-announcements', templateUrl: './announcements.component.html', styleUrls: ['./announcements.component.scss'], standalone: true, - imports: [SideNavCompanionBarComponent, ChangelogComponent, TranslocoModule] + imports: [SideNavCompanionBarComponent, ChangelogComponent, TranslocoDirective] }) export class AnnouncementsComponent { diff --git a/UI/Web/src/app/announcements/_components/changelog/changelog.component.ts b/UI/Web/src/app/announcements/_components/changelog/changelog.component.ts index ab664bca8..f2f1fdcd1 100644 --- a/UI/Web/src/app/announcements/_components/changelog/changelog.component.ts +++ b/UI/Web/src/app/announcements/_components/changelog/changelog.component.ts @@ -4,14 +4,14 @@ import { ServerService } from 'src/app/_services/server.service'; import { LoadingComponent } from '../../../shared/loading/loading.component'; import { ReadMoreComponent } from '../../../shared/read-more/read-more.component'; import { NgFor, NgIf, DatePipe } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-changelog', templateUrl: './changelog.component.html', styleUrls: ['./changelog.component.scss'], standalone: true, - imports: [NgFor, NgIf, ReadMoreComponent, LoadingComponent, DatePipe, TranslocoModule] + imports: [NgFor, NgIf, ReadMoreComponent, LoadingComponent, DatePipe, TranslocoDirective] }) export class ChangelogComponent implements OnInit { diff --git a/UI/Web/src/app/app.component.ts b/UI/Web/src/app/app.component.ts index 28b731183..18ad91ebe 100644 --- a/UI/Web/src/app/app.component.ts +++ b/UI/Web/src/app/app.component.ts @@ -1,6 +1,6 @@ import {Component, DestroyRef, HostListener, inject, Inject, OnInit} from '@angular/core'; import { NavigationStart, Router, RouterOutlet } from '@angular/router'; -import {map, shareReplay, take} from 'rxjs/operators'; +import {map, pluck, shareReplay, take} from 'rxjs/operators'; import { AccountService } from './_services/account.service'; import { LibraryService } from './_services/library.service'; import { NavService } from './_services/nav.service'; @@ -12,7 +12,7 @@ import {ThemeService} from "./_services/theme.service"; import { SideNavComponent } from './sidenav/_components/side-nav/side-nav.component'; import {NavHeaderComponent} from "./nav/_components/nav-header/nav-header.component"; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; -import {TranslocoService} from "@ngneat/transloco"; +import {translate, TranslocoService} from "@ngneat/transloco"; @Component({ selector: 'app-root', @@ -51,15 +51,13 @@ export class AppComponent implements OnInit { return user.preferences.noTransitions; }), takeUntilDestroyed(this.destroyRef)); - // this.accountService.currentUser$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(user => { - // if (user && user.preferences.locale) { - // this.translocoService.setActiveLang(user.preferences.locale); - // } else { - // // If no user or locale is available, fallback to the default language ('en') - // const localStorageLocale = localStorage.getItem(accountService.localeKey) || 'en'; - // this.translocoService.setActiveLang(localStorageLocale); - // } - // }); + this.translocoService.events$.subscribe(event => { + if (event.type === 'translationLoadSuccess') { + console.log('Language has fully loaded!', translate('login.title')); + } + console.log('language event: ', event.type, translate('login.title')); + }); + } @HostListener('window:resize', ['$event']) diff --git a/UI/Web/src/app/book-reader/_components/book-line-overlay/book-line-overlay.component.ts b/UI/Web/src/app/book-reader/_components/book-line-overlay/book-line-overlay.component.ts index 383fc4b5c..38b047cfa 100644 --- a/UI/Web/src/app/book-reader/_components/book-line-overlay/book-line-overlay.component.ts +++ b/UI/Web/src/app/book-reader/_components/book-line-overlay/book-line-overlay.component.ts @@ -14,7 +14,7 @@ import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import {FormControl, FormGroup, ReactiveFormsModule, Validators} from "@angular/forms"; import {ReaderService} from "../../../_services/reader.service"; import {ToastrService} from "ngx-toastr"; -import {translate, TranslocoModule} from "@ngneat/transloco"; +import {translate, TranslocoDirective} from "@ngneat/transloco"; enum BookLineOverlayMode { None = 0, @@ -24,7 +24,7 @@ enum BookLineOverlayMode { @Component({ selector: 'app-book-line-overlay', standalone: true, - imports: [CommonModule, ReactiveFormsModule, TranslocoModule], + imports: [CommonModule, ReactiveFormsModule, TranslocoDirective], templateUrl: './book-line-overlay.component.html', styleUrls: ['./book-line-overlay.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/book-reader/_components/book-reader/book-reader.component.ts b/UI/Web/src/app/book-reader/_components/book-reader/book-reader.component.ts index 141a74f47..99b5a2880 100644 --- a/UI/Web/src/app/book-reader/_components/book-reader/book-reader.component.ts +++ b/UI/Web/src/app/book-reader/_components/book-reader/book-reader.component.ts @@ -51,7 +51,7 @@ import { PersonalTableOfContentsComponent, PersonalToCEvent } from "../personal-table-of-contents/personal-table-of-contents.component"; -import {translate, TranslocoModule} from "@ngneat/transloco"; +import {translate, TranslocoDirective} from "@ngneat/transloco"; enum TabID { @@ -102,7 +102,7 @@ const elementLevelStyles = ['line-height', 'font-family']; ]) ], standalone: true, - imports: [NgTemplateOutlet, DrawerComponent, NgIf, NgbProgressbar, NgbNav, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, ReaderSettingsComponent, TableOfContentsComponent, NgbNavOutlet, NgStyle, NgClass, NgbTooltip, BookLineOverlayComponent, PersonalTableOfContentsComponent, TranslocoModule] + imports: [NgTemplateOutlet, DrawerComponent, NgIf, NgbProgressbar, NgbNav, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, ReaderSettingsComponent, TableOfContentsComponent, NgbNavOutlet, NgStyle, NgClass, NgbTooltip, BookLineOverlayComponent, PersonalTableOfContentsComponent, TranslocoDirective] }) export class BookReaderComponent implements OnInit, AfterViewInit, OnDestroy { diff --git a/UI/Web/src/app/book-reader/_components/personal-table-of-contents/personal-table-of-contents.component.ts b/UI/Web/src/app/book-reader/_components/personal-table-of-contents/personal-table-of-contents.component.ts index 9a37508c9..476d7e559 100644 --- a/UI/Web/src/app/book-reader/_components/personal-table-of-contents/personal-table-of-contents.component.ts +++ b/UI/Web/src/app/book-reader/_components/personal-table-of-contents/personal-table-of-contents.component.ts @@ -13,7 +13,7 @@ import {ReaderService} from "../../../_services/reader.service"; import {PersonalToC} from "../../../_models/readers/personal-toc"; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import {NgbTooltip} from "@ng-bootstrap/ng-bootstrap"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; export interface PersonalToCEvent { pageNum: number; @@ -23,7 +23,7 @@ export interface PersonalToCEvent { @Component({ selector: 'app-personal-table-of-contents', standalone: true, - imports: [CommonModule, NgbTooltip, TranslocoModule], + imports: [CommonModule, NgbTooltip, TranslocoDirective], templateUrl: './personal-table-of-contents.component.html', styleUrls: ['./personal-table-of-contents.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/book-reader/_components/reader-settings/reader-settings.component.ts b/UI/Web/src/app/book-reader/_components/reader-settings/reader-settings.component.ts index 5bb6fd5ea..b4ea74806 100644 --- a/UI/Web/src/app/book-reader/_components/reader-settings/reader-settings.component.ts +++ b/UI/Web/src/app/book-reader/_components/reader-settings/reader-settings.component.ts @@ -26,7 +26,7 @@ import { BookWhiteTheme } from '../../_models/book-white-theme'; import { BookPaperTheme } from '../../_models/book-paper-theme'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { NgbAccordionDirective, NgbAccordionItem, NgbAccordionHeader, NgbAccordionToggle, NgbAccordionButton, NgbCollapse, NgbAccordionCollapse, NgbAccordionBody, NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; /** * Used for book reader. Do not use for other components @@ -90,7 +90,7 @@ const mobileBreakpointMarginOverride = 700; styleUrls: ['./reader-settings.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [ReactiveFormsModule, NgbAccordionDirective, NgbAccordionItem, NgbAccordionHeader, NgbAccordionToggle, NgbAccordionButton, NgbCollapse, NgbAccordionCollapse, NgbAccordionBody, NgFor, NgbTooltip, NgTemplateOutlet, NgIf, NgClass, NgStyle, TitleCasePipe, TranslocoModule] + imports: [ReactiveFormsModule, NgbAccordionDirective, NgbAccordionItem, NgbAccordionHeader, NgbAccordionToggle, NgbAccordionButton, NgbCollapse, NgbAccordionCollapse, NgbAccordionBody, NgFor, NgbTooltip, NgTemplateOutlet, NgIf, NgClass, NgStyle, TitleCasePipe, TranslocoDirective] }) export class ReaderSettingsComponent implements OnInit { /** diff --git a/UI/Web/src/app/book-reader/_components/table-of-contents/table-of-contents.component.ts b/UI/Web/src/app/book-reader/_components/table-of-contents/table-of-contents.component.ts index c20f43276..86d558ecc 100644 --- a/UI/Web/src/app/book-reader/_components/table-of-contents/table-of-contents.component.ts +++ b/UI/Web/src/app/book-reader/_components/table-of-contents/table-of-contents.component.ts @@ -1,7 +1,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; import { BookChapterItem } from '../../_models/book-chapter-item'; import { NgIf, NgFor } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-table-of-contents', @@ -9,7 +9,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./table-of-contents.component.scss'], changeDetection: ChangeDetectionStrategy.Default, standalone: true, - imports: [NgIf, NgFor, TranslocoModule] + imports: [NgIf, NgFor, TranslocoDirective] }) export class TableOfContentsComponent { diff --git a/UI/Web/src/app/bookmark/_components/bookmarks/bookmarks.component.ts b/UI/Web/src/app/bookmark/_components/bookmarks/bookmarks.component.ts index 6e1e3beeb..db559b4a1 100644 --- a/UI/Web/src/app/bookmark/_components/bookmarks/bookmarks.component.ts +++ b/UI/Web/src/app/bookmark/_components/bookmarks/bookmarks.component.ts @@ -31,7 +31,7 @@ import { CardItemComponent } from '../../../cards/card-item/card-item.component' import { CardDetailLayoutComponent } from '../../../cards/card-detail-layout/card-detail-layout.component'; import { BulkOperationsComponent } from '../../../cards/bulk-operations/bulk-operations.component'; import { SideNavCompanionBarComponent } from '../../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; @Component({ selector: 'app-bookmarks', @@ -39,7 +39,7 @@ import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; styleUrls: ['./bookmarks.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SideNavCompanionBarComponent, BulkOperationsComponent, CardDetailLayoutComponent, CardItemComponent, DecimalPipe, TranslocoModule] + imports: [SideNavCompanionBarComponent, BulkOperationsComponent, CardDetailLayoutComponent, CardItemComponent, DecimalPipe, TranslocoDirective] }) export class BookmarksComponent implements OnInit { diff --git a/UI/Web/src/app/cards/_modals/bulk-add-to-collection/bulk-add-to-collection.component.ts b/UI/Web/src/app/cards/_modals/bulk-add-to-collection/bulk-add-to-collection.component.ts index c31bc5ab5..25a591f85 100644 --- a/UI/Web/src/app/cards/_modals/bulk-add-to-collection/bulk-add-to-collection.component.ts +++ b/UI/Web/src/app/cards/_modals/bulk-add-to-collection/bulk-add-to-collection.component.ts @@ -18,12 +18,12 @@ import { ReadingList } from 'src/app/_models/reading-list'; import { CollectionTagService } from 'src/app/_services/collection-tag.service'; import {CommonModule} from "@angular/common"; import {FilterPipe} from "../../../pipe/filter.pipe"; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; @Component({ selector: 'app-bulk-add-to-collection', standalone: true, - imports: [CommonModule, ReactiveFormsModule, FilterPipe, NgbModalModule, TranslocoModule], + imports: [CommonModule, ReactiveFormsModule, FilterPipe, NgbModalModule, TranslocoDirective], templateUrl: './bulk-add-to-collection.component.html', styleUrls: ['./bulk-add-to-collection.component.scss'], encapsulation: ViewEncapsulation.None, // This is needed as per the bootstrap modal documentation to get styles to work. diff --git a/UI/Web/src/app/cards/_modals/edit-collection-tags/edit-collection-tags.component.ts b/UI/Web/src/app/cards/_modals/edit-collection-tags/edit-collection-tags.component.ts index a2c3c9ef6..583a09658 100644 --- a/UI/Web/src/app/cards/_modals/edit-collection-tags/edit-collection-tags.component.ts +++ b/UI/Web/src/app/cards/_modals/edit-collection-tags/edit-collection-tags.component.ts @@ -5,7 +5,6 @@ import { DestroyRef, inject, Input, - OnDestroy, OnInit } from '@angular/core'; import {FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from '@angular/forms'; @@ -19,7 +18,7 @@ import { NgbPagination, NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; import { ToastrService } from 'ngx-toastr'; -import { debounceTime, distinctUntilChanged, forkJoin, Subject, switchMap, takeUntil, tap } from 'rxjs'; +import { debounceTime, distinctUntilChanged, forkJoin, switchMap, tap } from 'rxjs'; import { ConfirmService } from 'src/app/shared/confirm.service'; import { Breakpoint, UtilityService } from 'src/app/shared/_services/utility.service'; import { SelectionModel } from 'src/app/typeahead/_components/typeahead.component'; @@ -34,7 +33,7 @@ import { UploadService } from 'src/app/_services/upload.service'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import {CommonModule} from "@angular/common"; import {CoverImageChooserComponent} from "../../cover-image-chooser/cover-image-chooser.component"; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; enum TabID { @@ -46,7 +45,7 @@ enum TabID { @Component({ selector: 'app-edit-collection-tags', standalone: true, - imports: [CommonModule, NgbNav, NgbNavItem, NgbNavLink, NgbNavContent, ReactiveFormsModule, FormsModule, NgbPagination, CoverImageChooserComponent, NgbNavOutlet, NgbTooltip, TranslocoModule], + imports: [CommonModule, NgbNav, NgbNavItem, NgbNavLink, NgbNavContent, ReactiveFormsModule, FormsModule, NgbPagination, CoverImageChooserComponent, NgbNavOutlet, NgbTooltip, TranslocoDirective], templateUrl: './edit-collection-tags.component.html', styleUrls: ['./edit-collection-tags.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/cards/_modals/edit-series-modal/edit-series-modal.component.html b/UI/Web/src/app/cards/_modals/edit-series-modal/edit-series-modal.component.html index a26896ff6..a3239db85 100644 --- a/UI/Web/src/app/cards/_modals/edit-series-modal/edit-series-modal.component.html +++ b/UI/Web/src/app/cards/_modals/edit-series-modal/edit-series-modal.component.html @@ -428,10 +428,10 @@
- {{t('added-title')}} {{volume.created | date: 'short'}} + {{t('added-title')}} {{volume.createdUtc | translocoDate: {dateStyle: 'short' } | defaultDate}}
- {{t('last-modified-title')}} {{volume.lastModified | date: 'short'}} + {{t('last-modified-title')}} {{volume.lastModifiedUtc | translocoDate: {dateStyle: 'short' } | defaultDate}}
diff --git a/UI/Web/src/app/cards/_modals/edit-series-modal/edit-series-modal.component.ts b/UI/Web/src/app/cards/_modals/edit-series-modal/edit-series-modal.component.ts index b0d8cb8ca..c2d3278d7 100644 --- a/UI/Web/src/app/cards/_modals/edit-series-modal/edit-series-modal.component.ts +++ b/UI/Web/src/app/cards/_modals/edit-series-modal/edit-series-modal.component.ts @@ -52,6 +52,8 @@ import {BytesPipe} from "../../../pipe/bytes.pipe"; import {ImageComponent} from "../../../shared/image/image.component"; import {DefaultValuePipe} from "../../../pipe/default-value.pipe"; import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDatePipe} from "@ngneat/transloco-locale"; +import {Volume} from "../../../_models/volume"; enum TabID { General = 0, @@ -66,31 +68,32 @@ enum TabID { @Component({ selector: 'app-edit-series-modal', standalone: true, - imports: [ - ReactiveFormsModule, - NgbNav, - NgbNavContent, - NgbNavItem, - NgbNavLink, - CommonModule, - TypeaheadComponent, - CoverImageChooserComponent, - EditSeriesRelationComponent, - SentenceCasePipe, - MangaFormatPipe, - DefaultDatePipe, - TimeAgoPipe, - TagBadgeComponent, - PublicationStatusPipe, - NgbTooltip, - BytesPipe, - ImageComponent, - NgbCollapse, - NgbNavOutlet, - DefaultValuePipe, - TranslocoModule, + imports: [ + ReactiveFormsModule, + NgbNav, + NgbNavContent, + NgbNavItem, + NgbNavLink, + CommonModule, + TypeaheadComponent, + CoverImageChooserComponent, + EditSeriesRelationComponent, + SentenceCasePipe, + MangaFormatPipe, + DefaultDatePipe, + TimeAgoPipe, + TagBadgeComponent, + PublicationStatusPipe, + NgbTooltip, + BytesPipe, + ImageComponent, + NgbCollapse, + NgbNavOutlet, + DefaultValuePipe, + TranslocoModule, + TranslocoDatePipe, - ], + ], templateUrl: './edit-series-modal.component.html', styleUrls: ['./edit-series-modal.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/cards/card-detail-drawer/card-detail-drawer.component.ts b/UI/Web/src/app/cards/card-detail-drawer/card-detail-drawer.component.ts index 54388d66d..e9ae32955 100644 --- a/UI/Web/src/app/cards/card-detail-drawer/card-detail-drawer.component.ts +++ b/UI/Web/src/app/cards/card-detail-drawer/card-detail-drawer.component.ts @@ -49,7 +49,7 @@ import {BytesPipe} from "../../pipe/bytes.pipe"; import {BadgeExpanderComponent} from "../../shared/badge-expander/badge-expander.component"; import {TagBadgeComponent} from "../../shared/tag-badge/tag-badge.component"; import {PersonBadgeComponent} from "../../shared/person-badge/person-badge.component"; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; enum TabID { General = 0, @@ -61,7 +61,7 @@ enum TabID { @Component({ selector: 'app-card-detail-drawer', standalone: true, - imports: [CommonModule, EntityTitleComponent, NgbNav, NgbNavItem, NgbNavLink, NgbNavContent, ImageComponent, ReadMoreComponent, EntityInfoCardsComponent, CoverImageChooserComponent, ChapterMetadataDetailComponent, CardActionablesComponent, DefaultDatePipe, BytesPipe, NgbNavOutlet, BadgeExpanderComponent, TagBadgeComponent, PersonBadgeComponent, TranslocoModule], + imports: [CommonModule, EntityTitleComponent, NgbNav, NgbNavItem, NgbNavLink, NgbNavContent, ImageComponent, ReadMoreComponent, EntityInfoCardsComponent, CoverImageChooserComponent, ChapterMetadataDetailComponent, CardActionablesComponent, DefaultDatePipe, BytesPipe, NgbNavOutlet, BadgeExpanderComponent, TagBadgeComponent, PersonBadgeComponent, TranslocoDirective], templateUrl: './card-detail-drawer.component.html', styleUrls: ['./card-detail-drawer.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/cards/card-detail-layout/card-detail-layout.component.ts b/UI/Web/src/app/cards/card-detail-layout/card-detail-layout.component.ts index 0b4f11fa5..deea0b2e3 100644 --- a/UI/Web/src/app/cards/card-detail-layout/card-detail-layout.component.ts +++ b/UI/Web/src/app/cards/card-detail-layout/card-detail-layout.component.ts @@ -34,12 +34,12 @@ import {LoadingComponent} from "../../shared/loading/loading.component"; import {CardActionablesComponent} from "../card-item/card-actionables/card-actionables.component"; import {NgbTooltip} from "@ng-bootstrap/ng-bootstrap"; import {MetadataFilterComponent} from "../../metadata-filter/metadata-filter.component"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-card-detail-layout', standalone: true, - imports: [CommonModule, LoadingComponent, VirtualScrollerModule, CardActionablesComponent, NgbTooltip, MetadataFilterComponent, TranslocoModule], + imports: [CommonModule, LoadingComponent, VirtualScrollerModule, CardActionablesComponent, NgbTooltip, MetadataFilterComponent, TranslocoDirective], templateUrl: './card-detail-layout.component.html', styleUrls: ['./card-detail-layout.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/cards/card-item/card-actionables/card-actionables.component.ts b/UI/Web/src/app/cards/card-item/card-actionables/card-actionables.component.ts index 429559505..ab9fa9ebd 100644 --- a/UI/Web/src/app/cards/card-item/card-actionables/card-actionables.component.ts +++ b/UI/Web/src/app/cards/card-item/card-actionables/card-actionables.component.ts @@ -5,12 +5,12 @@ import { AccountService } from 'src/app/_services/account.service'; import { Action, ActionItem } from 'src/app/_services/action-factory.service'; import {CommonModule} from "@angular/common"; import {DynamicListPipe} from "../../dynamic-list.pipe"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-card-actionables', standalone: true, - imports: [CommonModule, NgbDropdown, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, DynamicListPipe, TranslocoModule], + imports: [CommonModule, NgbDropdown, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, DynamicListPipe, TranslocoDirective], templateUrl: './card-actionables.component.html', styleUrls: ['./card-actionables.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/cards/chapter-metadata-detail/chapter-metadata-detail.component.ts b/UI/Web/src/app/cards/chapter-metadata-detail/chapter-metadata-detail.component.ts index f74bdaf0d..29a7a1027 100644 --- a/UI/Web/src/app/cards/chapter-metadata-detail/chapter-metadata-detail.component.ts +++ b/UI/Web/src/app/cards/chapter-metadata-detail/chapter-metadata-detail.component.ts @@ -3,12 +3,12 @@ import { ChapterMetadata } from 'src/app/_models/metadata/chapter-metadata'; import {CommonModule} from "@angular/common"; import {BadgeExpanderComponent} from "../../shared/badge-expander/badge-expander.component"; import {PersonBadgeComponent} from "../../shared/person-badge/person-badge.component"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-chapter-metadata-detail', standalone: true, - imports: [CommonModule, BadgeExpanderComponent, PersonBadgeComponent, TranslocoModule], + imports: [CommonModule, BadgeExpanderComponent, PersonBadgeComponent, TranslocoDirective], templateUrl: './chapter-metadata-detail.component.html', styleUrls: ['./chapter-metadata-detail.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/cards/cover-image-chooser/cover-image-chooser.component.html b/UI/Web/src/app/cards/cover-image-chooser/cover-image-chooser.component.html index 9c8bddf36..e239591e9 100644 --- a/UI/Web/src/app/cards/cover-image-chooser/cover-image-chooser.component.html +++ b/UI/Web/src/app/cards/cover-image-chooser/cover-image-chooser.component.html @@ -29,7 +29,7 @@
-
diff --git a/UI/Web/src/app/cards/download-indicator/download-indicator.component.ts b/UI/Web/src/app/cards/download-indicator/download-indicator.component.ts index cf09422f5..418655d6a 100644 --- a/UI/Web/src/app/cards/download-indicator/download-indicator.component.ts +++ b/UI/Web/src/app/cards/download-indicator/download-indicator.component.ts @@ -4,12 +4,12 @@ import { Download } from 'src/app/shared/_models/download'; import { DownloadEvent } from 'src/app/shared/_services/download.service'; import {CommonModule} from "@angular/common"; import {CircularLoaderComponent} from "../../shared/circular-loader/circular-loader.component"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-download-indicator', standalone: true, - imports: [CommonModule, CircularLoaderComponent, TranslocoModule], + imports: [CommonModule, CircularLoaderComponent, TranslocoDirective], templateUrl: './download-indicator.component.html', styleUrls: ['./download-indicator.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/cards/edit-series-relation/edit-series-relation.component.ts b/UI/Web/src/app/cards/edit-series-relation/edit-series-relation.component.ts index d53329e7e..950fca084 100644 --- a/UI/Web/src/app/cards/edit-series-relation/edit-series-relation.component.ts +++ b/UI/Web/src/app/cards/edit-series-relation/edit-series-relation.component.ts @@ -5,12 +5,11 @@ import { EventEmitter, inject, Input, - OnDestroy, OnInit, Output } from '@angular/core'; import {FormControl, ReactiveFormsModule} from '@angular/forms'; -import { map, Subject, Observable, of, firstValueFrom, takeUntil, ReplaySubject } from 'rxjs'; +import { map, Observable, of, firstValueFrom, ReplaySubject } from 'rxjs'; import { UtilityService } from 'src/app/shared/_services/utility.service'; import { TypeaheadSettings } from 'src/app/typeahead/_models/typeahead-settings'; import { SearchResult } from 'src/app/_models/search/search-result'; @@ -22,7 +21,7 @@ import { SearchService } from 'src/app/_services/search.service'; import { SeriesService } from 'src/app/_services/series.service'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import {TypeaheadComponent} from "../../typeahead/_components/typeahead.component"; -import {CommonModule, NgForOf, NgIf} from "@angular/common"; +import {CommonModule} from "@angular/common"; import {TranslocoModule} from "@ngneat/transloco"; import {RelationshipPipe} from "../../pipe/relationship.pipe"; diff --git a/UI/Web/src/app/cards/external-series-card/external-series-card.component.ts b/UI/Web/src/app/cards/external-series-card/external-series-card.component.ts index 0067369e4..5716206d0 100644 --- a/UI/Web/src/app/cards/external-series-card/external-series-card.component.ts +++ b/UI/Web/src/app/cards/external-series-card/external-series-card.component.ts @@ -11,12 +11,12 @@ import {RouterLinkActive} from "@angular/router"; import {ImageComponent} from "../../shared/image/image.component"; import {NgbProgressbar, NgbTooltip} from "@ng-bootstrap/ng-bootstrap"; import {ReactiveFormsModule} from "@angular/forms"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-external-series-card', standalone: true, - imports: [CommonModule, ImageComponent, NgbProgressbar, NgbTooltip, ReactiveFormsModule, RouterLinkActive, TranslocoModule], + imports: [CommonModule, ImageComponent, NgbProgressbar, NgbTooltip, ReactiveFormsModule, RouterLinkActive, TranslocoDirective], templateUrl: './external-series-card.component.html', styleUrls: ['./external-series-card.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/cards/list-item/list-item.component.ts b/UI/Web/src/app/cards/list-item/list-item.component.ts index 84be7dca7..c912b7100 100644 --- a/UI/Web/src/app/cards/list-item/list-item.component.ts +++ b/UI/Web/src/app/cards/list-item/list-item.component.ts @@ -26,12 +26,12 @@ import {DownloadIndicatorComponent} from "../download-indicator/download-indicat import {EntityInfoCardsComponent} from "../entity-info-cards/entity-info-cards.component"; import {CardActionablesComponent} from "../card-item/card-actionables/card-actionables.component"; import {NgbProgressbar, NgbTooltip} from "@ng-bootstrap/ng-bootstrap"; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; @Component({ selector: 'app-list-item', standalone: true, - imports: [CommonModule, ReadMoreComponent, ImageComponent, DownloadIndicatorComponent, EntityInfoCardsComponent, CardActionablesComponent, NgbProgressbar, NgbTooltip, TranslocoModule], + imports: [CommonModule, ReadMoreComponent, ImageComponent, DownloadIndicatorComponent, EntityInfoCardsComponent, CardActionablesComponent, NgbProgressbar, NgbTooltip, TranslocoDirective], templateUrl: './list-item.component.html', styleUrls: ['./list-item.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/cards/series-info-cards/series-info-cards.component.ts b/UI/Web/src/app/cards/series-info-cards/series-info-cards.component.ts index 84078d348..6475429ca 100644 --- a/UI/Web/src/app/cards/series-info-cards/series-info-cards.component.ts +++ b/UI/Web/src/app/cards/series-info-cards/series-info-cards.component.ts @@ -33,12 +33,12 @@ import {TimeAgoPipe} from "../../pipe/time-ago.pipe"; import {CompactNumberPipe} from "../../pipe/compact-number.pipe"; import {MangaFormatIconPipe} from "../../pipe/manga-format-icon.pipe"; import {NgbTooltip} from "@ng-bootstrap/ng-bootstrap"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-series-info-cards', standalone: true, - imports: [CommonModule, IconAndTitleComponent, AgeRatingPipe, DefaultValuePipe, LanguageNamePipe, PublicationStatusPipe, MangaFormatPipe, TimeAgoPipe, CompactNumberPipe, MangaFormatIconPipe, NgbTooltip, TranslocoModule], + imports: [CommonModule, IconAndTitleComponent, AgeRatingPipe, DefaultValuePipe, LanguageNamePipe, PublicationStatusPipe, MangaFormatPipe, TimeAgoPipe, CompactNumberPipe, MangaFormatIconPipe, NgbTooltip, TranslocoDirective], templateUrl: './series-info-cards.component.html', styleUrls: ['./series-info-cards.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/carousel/_components/carousel-reel/carousel-reel.component.ts b/UI/Web/src/app/carousel/_components/carousel-reel/carousel-reel.component.ts index 38c7155d5..fda368b17 100644 --- a/UI/Web/src/app/carousel/_components/carousel-reel/carousel-reel.component.ts +++ b/UI/Web/src/app/carousel/_components/carousel-reel/carousel-reel.component.ts @@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, Ev import { Swiper, SwiperEvents } from 'swiper/types'; import { SwiperModule } from 'swiper/angular'; import { NgIf, NgClass, NgFor, NgTemplateOutlet } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-carousel-reel', @@ -10,7 +10,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./carousel-reel.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, NgClass, SwiperModule, NgFor, NgTemplateOutlet, TranslocoModule] + imports: [NgIf, NgClass, SwiperModule, NgFor, NgTemplateOutlet, TranslocoDirective] }) export class CarouselReelComponent { diff --git a/UI/Web/src/app/collections/_components/all-collections/all-collections.component.ts b/UI/Web/src/app/collections/_components/all-collections/all-collections.component.ts index 7d45ca590..16a1b15e5 100644 --- a/UI/Web/src/app/collections/_components/all-collections/all-collections.component.ts +++ b/UI/Web/src/app/collections/_components/all-collections/all-collections.component.ts @@ -25,7 +25,7 @@ import { NgIf, AsyncPipe, DecimalPipe } from '@angular/common'; import { CardItemComponent } from '../../../cards/card-item/card-item.component'; import { CardDetailLayoutComponent } from '../../../cards/card-detail-layout/card-detail-layout.component'; import { SideNavCompanionBarComponent } from '../../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; @Component({ @@ -34,7 +34,7 @@ import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; styleUrls: ['./all-collections.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SideNavCompanionBarComponent, CardDetailLayoutComponent, CardItemComponent, NgIf, AsyncPipe, DecimalPipe, TranslocoModule] + imports: [SideNavCompanionBarComponent, CardDetailLayoutComponent, CardItemComponent, NgIf, AsyncPipe, DecimalPipe, TranslocoDirective] }) export class AllCollectionsComponent implements OnInit { diff --git a/UI/Web/src/app/collections/_components/collection-detail/collection-detail.component.ts b/UI/Web/src/app/collections/_components/collection-detail/collection-detail.component.ts index 8578631d9..19071cc27 100644 --- a/UI/Web/src/app/collections/_components/collection-detail/collection-detail.component.ts +++ b/UI/Web/src/app/collections/_components/collection-detail/collection-detail.component.ts @@ -47,7 +47,7 @@ import { SideNavCompanionBarComponent } from '../../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; @Component({ selector: 'app-collection-detail', @@ -55,7 +55,7 @@ import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; styleUrls: ['./collection-detail.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, SideNavCompanionBarComponent, CardActionablesComponent, NgStyle, ImageComponent, ReadMoreComponent, BulkOperationsComponent, CardDetailLayoutComponent, SeriesCardComponent, TranslocoModule] + imports: [NgIf, SideNavCompanionBarComponent, CardActionablesComponent, NgStyle, ImageComponent, ReadMoreComponent, BulkOperationsComponent, CardDetailLayoutComponent, SeriesCardComponent, TranslocoDirective] }) export class CollectionDetailComponent implements OnInit, AfterContentChecked { diff --git a/UI/Web/src/app/dashboard/_components/dashboard.component.ts b/UI/Web/src/app/dashboard/_components/dashboard.component.ts index c80f75fa6..8b1243dd3 100644 --- a/UI/Web/src/app/dashboard/_components/dashboard.component.ts +++ b/UI/Web/src/app/dashboard/_components/dashboard.component.ts @@ -30,7 +30,7 @@ import { SeriesCardComponent } from '../../cards/series-card/series-card.compone import { CarouselReelComponent } from '../../carousel/_components/carousel-reel/carousel-reel.component'; import { NgIf, AsyncPipe } from '@angular/common'; import { SideNavCompanionBarComponent } from '../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-dashboard', @@ -38,7 +38,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./dashboard.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SideNavCompanionBarComponent, NgIf, RouterLink, CarouselReelComponent, SeriesCardComponent, CardItemComponent, AsyncPipe, TranslocoModule] + imports: [SideNavCompanionBarComponent, NgIf, RouterLink, CarouselReelComponent, SeriesCardComponent, CardItemComponent, AsyncPipe, TranslocoDirective] }) export class DashboardComponent implements OnInit { diff --git a/UI/Web/src/app/library-detail/library-detail.component.ts b/UI/Web/src/app/library-detail/library-detail.component.ts index d34d111f5..fcf3d92bd 100644 --- a/UI/Web/src/app/library-detail/library-detail.component.ts +++ b/UI/Web/src/app/library-detail/library-detail.component.ts @@ -37,7 +37,7 @@ import { NgFor, NgIf, DecimalPipe } from '@angular/common'; import { NgbNav, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, NgbNavOutlet } from '@ng-bootstrap/ng-bootstrap'; import { CardActionablesComponent } from '../cards/card-item/card-actionables/card-actionables.component'; import { SideNavCompanionBarComponent } from '../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; @Component({ selector: 'app-library-detail', @@ -45,7 +45,7 @@ import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; styleUrls: ['./library-detail.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SideNavCompanionBarComponent, CardActionablesComponent, NgbNav, NgFor, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, NgIf, LibraryRecommendedComponent, CardDetailLayoutComponent, SeriesCardComponent, BulkOperationsComponent, NgbNavOutlet, DecimalPipe, SentenceCasePipe, TranslocoModule] + imports: [SideNavCompanionBarComponent, CardActionablesComponent, NgbNav, NgFor, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, NgIf, LibraryRecommendedComponent, CardDetailLayoutComponent, SeriesCardComponent, BulkOperationsComponent, NgbNavOutlet, DecimalPipe, SentenceCasePipe, TranslocoDirective] }) export class LibraryDetailComponent implements OnInit { diff --git a/UI/Web/src/app/library-detail/library-recommended/library-recommended.component.html b/UI/Web/src/app/library-detail/library-recommended/library-recommended.component.html index 9396c246e..d498dd87d 100644 --- a/UI/Web/src/app/library-detail/library-recommended/library-recommended.component.html +++ b/UI/Web/src/app/library-detail/library-recommended/library-recommended.component.html @@ -1,6 +1,5 @@ -

{{t('no-data')}} diff --git a/UI/Web/src/app/library-detail/library-recommended/library-recommended.component.ts b/UI/Web/src/app/library-detail/library-recommended/library-recommended.component.ts index bbd04142c..7405a4a74 100644 --- a/UI/Web/src/app/library-detail/library-recommended/library-recommended.component.ts +++ b/UI/Web/src/app/library-detail/library-recommended/library-recommended.component.ts @@ -16,7 +16,7 @@ import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { SeriesCardComponent } from '../../cards/series-card/series-card.component'; import { CarouselReelComponent } from '../../carousel/_components/carousel-reel/carousel-reel.component'; import { NgIf, AsyncPipe } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-library-recommended', @@ -24,7 +24,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./library-recommended.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, CarouselReelComponent, SeriesCardComponent, AsyncPipe, TranslocoModule] + imports: [NgIf, CarouselReelComponent, SeriesCardComponent, AsyncPipe, TranslocoDirective] }) export class LibraryRecommendedComponent implements OnInit { diff --git a/UI/Web/src/app/manga-reader/_components/double-renderer-no-cover/double-no-cover-renderer.component.ts b/UI/Web/src/app/manga-reader/_components/double-renderer-no-cover/double-no-cover-renderer.component.ts index 06763a6fb..94f57234d 100644 --- a/UI/Web/src/app/manga-reader/_components/double-renderer-no-cover/double-no-cover-renderer.component.ts +++ b/UI/Web/src/app/manga-reader/_components/double-renderer-no-cover/double-no-cover-renderer.component.ts @@ -7,18 +7,17 @@ import { inject, Inject, Input, - OnDestroy, OnInit, Output } from '@angular/core'; -import { Observable, of, Subject, map, takeUntil, tap, zip, shareReplay, filter, combineLatest } from 'rxjs'; +import { Observable, of, map, tap, shareReplay, filter, combineLatest } from 'rxjs'; import { PageSplitOption } from 'src/app/_models/preferences/page-split-option'; import { ReaderMode } from 'src/app/_models/preferences/reader-mode'; import { ReaderService } from 'src/app/_services/reader.service'; import { LayoutMode } from '../../_models/layout-mode'; import { FITTING_OPTION, PAGING_DIRECTION } from '../../_models/reader-enums'; import { ReaderSetting } from '../../_models/reader-setting'; -import { DEBUG_MODES, ImageRenderer } from '../../_models/renderer'; +import { DEBUG_MODES } from '../../_models/renderer'; import { ManagaReaderService } from '../../_service/managa-reader.service'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { SafeStylePipe } from '../../../pipe/safe-style.pipe'; diff --git a/UI/Web/src/app/manga-reader/_components/double-reverse-renderer/double-reverse-renderer.component.ts b/UI/Web/src/app/manga-reader/_components/double-reverse-renderer/double-reverse-renderer.component.ts index 02a0eda08..41ce7ea4c 100644 --- a/UI/Web/src/app/manga-reader/_components/double-reverse-renderer/double-reverse-renderer.component.ts +++ b/UI/Web/src/app/manga-reader/_components/double-reverse-renderer/double-reverse-renderer.component.ts @@ -7,11 +7,10 @@ import { inject, Inject, Input, - OnDestroy, OnInit, Output } from '@angular/core'; -import { Observable, of, Subject, map, takeUntil, tap, zip, shareReplay, filter, combineLatest } from 'rxjs'; +import { Observable, of, map, tap, shareReplay, filter, combineLatest } from 'rxjs'; import { PageSplitOption } from 'src/app/_models/preferences/page-split-option'; import { ReaderMode } from 'src/app/_models/preferences/reader-mode'; import { ReaderService } from 'src/app/_services/reader.service'; diff --git a/UI/Web/src/app/manga-reader/_components/infinite-scroller/infinite-scroller.component.ts b/UI/Web/src/app/manga-reader/_components/infinite-scroller/infinite-scroller.component.ts index d24d31a00..51c0d0f49 100644 --- a/UI/Web/src/app/manga-reader/_components/infinite-scroller/infinite-scroller.component.ts +++ b/UI/Web/src/app/manga-reader/_components/infinite-scroller/infinite-scroller.component.ts @@ -23,7 +23,7 @@ import { PAGING_DIRECTION } from '../../_models/reader-enums'; import { WebtoonImage } from '../../_models/webtoon-image'; import { ManagaReaderService } from '../../_service/managa-reader.service'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; /** * How much additional space should pass, past the original bottom of the document height before we trigger the next chapter load @@ -58,7 +58,7 @@ const enum DEBUG_MODES { styleUrls: ['./infinite-scroller.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, NgFor, AsyncPipe, TranslocoModule] + imports: [NgIf, NgFor, AsyncPipe, TranslocoDirective] }) export class InfiniteScrollerComponent implements OnInit, OnChanges, OnDestroy { diff --git a/UI/Web/src/app/manga-reader/_components/manga-reader/manga-reader.component.ts b/UI/Web/src/app/manga-reader/_components/manga-reader/manga-reader.component.ts index 68d148150..b909c0bb3 100644 --- a/UI/Web/src/app/manga-reader/_components/manga-reader/manga-reader.component.ts +++ b/UI/Web/src/app/manga-reader/_components/manga-reader/manga-reader.component.ts @@ -67,7 +67,7 @@ import { FittingIconPipe } from '../../_pipes/fitting-icon.pipe'; import { InfiniteScrollerComponent } from '../infinite-scroller/infinite-scroller.component'; import { SwipeDirective } from '../../../ng-swipe/ng-swipe.directive'; import { LoadingComponent } from '../../../shared/loading/loading.component'; -import {translate, TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {translate, TranslocoDirective, TranslocoService} from "@ngneat/transloco"; const PREFETCH_PAGES = 10; @@ -121,7 +121,7 @@ enum KeyDirection { ]) ], standalone: true, - imports: [NgStyle, NgIf, LoadingComponent, SwipeDirective, CanvasRendererComponent, SingleRendererComponent, DoubleRendererComponent, DoubleReverseRendererComponent, DoubleNoCoverRendererComponent, InfiniteScrollerComponent, NgxSliderModule, ReactiveFormsModule, NgFor, NgSwitch, NgSwitchCase, FittingIconPipe, ReaderModeIconPipe, FullscreenIconPipe, TranslocoModule] + imports: [NgStyle, NgIf, LoadingComponent, SwipeDirective, CanvasRendererComponent, SingleRendererComponent, DoubleRendererComponent, DoubleReverseRendererComponent, DoubleNoCoverRendererComponent, InfiniteScrollerComponent, NgxSliderModule, ReactiveFormsModule, NgFor, NgSwitch, NgSwitchCase, FittingIconPipe, ReaderModeIconPipe, FullscreenIconPipe, TranslocoDirective] }) export class MangaReaderComponent implements OnInit, AfterViewInit, OnDestroy { diff --git a/UI/Web/src/app/metadata-filter/metadata-filter.component.ts b/UI/Web/src/app/metadata-filter/metadata-filter.component.ts index 2ae9167e8..324dbdeb9 100644 --- a/UI/Web/src/app/metadata-filter/metadata-filter.component.ts +++ b/UI/Web/src/app/metadata-filter/metadata-filter.component.ts @@ -11,7 +11,7 @@ import { } from '@angular/core'; import { FormControl, FormGroup, Validators, ReactiveFormsModule, FormsModule } from '@angular/forms'; import { NgbCollapse, NgbTooltip, NgbRating } from '@ng-bootstrap/ng-bootstrap'; -import { distinctUntilChanged, forkJoin, map, Observable, of, ReplaySubject, Subject, takeUntil } from 'rxjs'; +import { distinctUntilChanged, forkJoin, map, Observable, of, ReplaySubject } from 'rxjs'; import { FilterUtilitiesService } from '../shared/_services/filter-utilities.service'; import { Breakpoint, UtilityService } from '../shared/_services/utility.service'; import { TypeaheadSettings } from '../typeahead/_models/typeahead-settings'; diff --git a/UI/Web/src/app/nav/_components/events-widget/events-widget.component.ts b/UI/Web/src/app/nav/_components/events-widget/events-widget.component.ts index 420540caa..d03c36144 100644 --- a/UI/Web/src/app/nav/_components/events-widget/events-widget.component.ts +++ b/UI/Web/src/app/nav/_components/events-widget/events-widget.component.ts @@ -26,7 +26,7 @@ import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { SentenceCasePipe } from '../../../pipe/sentence-case.pipe'; import { CircularLoaderComponent } from '../../../shared/circular-loader/circular-loader.component'; import { NgIf, NgClass, NgStyle, NgFor, AsyncPipe } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-nav-events-toggle', @@ -34,7 +34,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./events-widget.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, NgClass, NgbPopover, NgStyle, CircularLoaderComponent, NgFor, AsyncPipe, SentenceCasePipe, TranslocoModule] + imports: [NgIf, NgClass, NgbPopover, NgStyle, CircularLoaderComponent, NgFor, AsyncPipe, SentenceCasePipe, TranslocoDirective] }) export class EventsWidgetComponent implements OnInit, OnDestroy { @Input({required: true}) user!: User; diff --git a/UI/Web/src/app/nav/_components/grouped-typeahead/grouped-typeahead.component.ts b/UI/Web/src/app/nav/_components/grouped-typeahead/grouped-typeahead.component.ts index 9839c2c28..41ba22114 100644 --- a/UI/Web/src/app/nav/_components/grouped-typeahead/grouped-typeahead.component.ts +++ b/UI/Web/src/app/nav/_components/grouped-typeahead/grouped-typeahead.component.ts @@ -19,7 +19,7 @@ import { KEY_CODES } from 'src/app/shared/_services/utility.service'; import { SearchResultGroup } from 'src/app/_models/search/search-result-group'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { NgClass, NgIf, NgFor, NgTemplateOutlet } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-grouped-typeahead', @@ -27,7 +27,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./grouped-typeahead.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [ReactiveFormsModule, NgClass, NgIf, NgFor, NgTemplateOutlet, TranslocoModule] + imports: [ReactiveFormsModule, NgClass, NgIf, NgFor, NgTemplateOutlet, TranslocoDirective] }) export class GroupedTypeaheadComponent implements OnInit { /** diff --git a/UI/Web/src/app/nav/_components/nav-header/nav-header.component.ts b/UI/Web/src/app/nav/_components/nav-header/nav-header.component.ts index 42459ac01..8a381886a 100644 --- a/UI/Web/src/app/nav/_components/nav-header/nav-header.component.ts +++ b/UI/Web/src/app/nav/_components/nav-header/nav-header.component.ts @@ -34,7 +34,7 @@ import { EventsWidgetComponent } from '../events-widget/events-widget.component' import { SeriesFormatComponent } from '../../../shared/series-format/series-format.component'; import { ImageComponent } from '../../../shared/image/image.component'; import { GroupedTypeaheadComponent } from '../grouped-typeahead/grouped-typeahead.component'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-nav-header', @@ -42,7 +42,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./nav-header.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, RouterLink, RouterLinkActive, NgOptimizedImage, GroupedTypeaheadComponent, ImageComponent, SeriesFormatComponent, EventsWidgetComponent, NgbDropdown, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, AsyncPipe, PersonRolePipe, SentenceCasePipe, TranslocoModule] + imports: [NgIf, RouterLink, RouterLinkActive, NgOptimizedImage, GroupedTypeaheadComponent, ImageComponent, SeriesFormatComponent, EventsWidgetComponent, NgbDropdown, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, AsyncPipe, PersonRolePipe, SentenceCasePipe, TranslocoDirective] }) export class NavHeaderComponent implements OnInit { diff --git a/UI/Web/src/app/pdf-reader/_components/pdf-reader/pdf-reader.component.ts b/UI/Web/src/app/pdf-reader/_components/pdf-reader/pdf-reader.component.ts index ac2a9180c..b9396ea5d 100644 --- a/UI/Web/src/app/pdf-reader/_components/pdf-reader/pdf-reader.component.ts +++ b/UI/Web/src/app/pdf-reader/_components/pdf-reader/pdf-reader.component.ts @@ -9,7 +9,7 @@ import { import { ActivatedRoute, Router } from '@angular/router'; import { NgxExtendedPdfViewerService, PageViewModeType, ProgressBarEvent, NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer'; import { ToastrService } from 'ngx-toastr'; -import { Subject, take } from 'rxjs'; +import { take } from 'rxjs'; import { BookService } from 'src/app/book-reader/_services/book.service'; import { KEY_CODES } from 'src/app/shared/_services/utility.service'; import { Chapter } from 'src/app/_models/chapter'; @@ -21,7 +21,7 @@ import { SeriesService } from 'src/app/_services/series.service'; import { ThemeService } from 'src/app/_services/theme.service'; import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; import { NgIf, NgStyle, AsyncPipe } from '@angular/common'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; @Component({ selector: 'app-pdf-reader', @@ -29,7 +29,7 @@ import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; styleUrls: ['./pdf-reader.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, NgStyle, NgxExtendedPdfViewerModule, NgbTooltip, AsyncPipe, TranslocoModule] + imports: [NgIf, NgStyle, NgxExtendedPdfViewerModule, NgbTooltip, AsyncPipe, TranslocoDirective] }) export class PdfReaderComponent implements OnInit, OnDestroy { diff --git a/UI/Web/src/app/pipe/publication-status.pipe.ts b/UI/Web/src/app/pipe/publication-status.pipe.ts index b23b4ace3..f4d5a621d 100644 --- a/UI/Web/src/app/pipe/publication-status.pipe.ts +++ b/UI/Web/src/app/pipe/publication-status.pipe.ts @@ -1,4 +1,4 @@ -import {inject, Pipe, PipeTransform} from '@angular/core'; +import {Pipe, PipeTransform} from '@angular/core'; import { PublicationStatus } from '../_models/metadata/publication-status'; import {TranslocoService} from "@ngneat/transloco"; diff --git a/UI/Web/src/app/pipe/time-ago.pipe.ts b/UI/Web/src/app/pipe/time-ago.pipe.ts index 33a0aa18c..a66c255f5 100644 --- a/UI/Web/src/app/pipe/time-ago.pipe.ts +++ b/UI/Web/src/app/pipe/time-ago.pipe.ts @@ -1,4 +1,4 @@ -import {ChangeDetectorRef, inject, NgZone, OnDestroy, Pipe, PipeTransform} from '@angular/core'; +import {ChangeDetectorRef, NgZone, OnDestroy, Pipe, PipeTransform} from '@angular/core'; import {TranslocoService} from "@ngneat/transloco"; /** @@ -40,6 +40,11 @@ export class TimeAgoPipe implements PipeTransform, OnDestroy { private translocoService: TranslocoService) {} transform(value: string) { + + if (value === '' || value === null || value === undefined || value.split('T')[0] === '0001-01-01') { + return this.translocoService.translate('time-ago-pipe.never'); + } + this.removeTimer(); const d = new Date(value); const now = new Date(); diff --git a/UI/Web/src/app/reader-shared/_modals/shortcuts-modal/shortcuts-modal.component.ts b/UI/Web/src/app/reader-shared/_modals/shortcuts-modal/shortcuts-modal.component.ts index 214083d51..ffc526dbf 100644 --- a/UI/Web/src/app/reader-shared/_modals/shortcuts-modal/shortcuts-modal.component.ts +++ b/UI/Web/src/app/reader-shared/_modals/shortcuts-modal/shortcuts-modal.component.ts @@ -1,7 +1,7 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import {NgbActiveModal, NgbModalModule} from '@ng-bootstrap/ng-bootstrap'; import {CommonModule} from "@angular/common"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; export interface KeyboardShortcut { /** @@ -17,7 +17,7 @@ export interface KeyboardShortcut { @Component({ selector: 'app-shortcuts-modal', standalone: true, - imports: [CommonModule, NgbModalModule, TranslocoModule], + imports: [CommonModule, NgbModalModule, TranslocoDirective], templateUrl: './shortcuts-modal.component.html', styleUrls: ['./shortcuts-modal.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/reading-list/_components/draggable-ordered-list/draggable-ordered-list.component.ts b/UI/Web/src/app/reading-list/_components/draggable-ordered-list/draggable-ordered-list.component.ts index a924737d9..1a32ffa3a 100644 --- a/UI/Web/src/app/reading-list/_components/draggable-ordered-list/draggable-ordered-list.component.ts +++ b/UI/Web/src/app/reading-list/_components/draggable-ordered-list/draggable-ordered-list.component.ts @@ -1,8 +1,8 @@ import { CdkDragDrop, moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop'; -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, Output, TemplateRef, TrackByFunction, ViewChild } from '@angular/core'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, Output, TemplateRef, TrackByFunction } from '@angular/core'; import { VirtualScrollerModule } from '@iharbeck/ngx-virtual-scroller'; import { NgIf, NgFor, NgTemplateOutlet } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; export interface IndexUpdateEvent { fromPosition: number; @@ -21,7 +21,7 @@ export interface ItemRemoveEvent { styleUrls: ['./draggable-ordered-list.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, VirtualScrollerModule, NgFor, NgTemplateOutlet, CdkDropList, CdkDrag, CdkDragHandle, TranslocoModule] + imports: [NgIf, VirtualScrollerModule, NgFor, NgTemplateOutlet, CdkDropList, CdkDrag, CdkDragHandle, TranslocoDirective] }) export class DraggableOrderedListComponent { diff --git a/UI/Web/src/app/reading-list/_components/reading-list-detail/reading-list-detail.component.ts b/UI/Web/src/app/reading-list/_components/reading-list-detail/reading-list-detail.component.ts index da058c760..e57eb2b14 100644 --- a/UI/Web/src/app/reading-list/_components/reading-list-detail/reading-list-detail.component.ts +++ b/UI/Web/src/app/reading-list/_components/reading-list-detail/reading-list-detail.component.ts @@ -28,7 +28,7 @@ import { ImageComponent } from '../../../shared/image/image.component'; import { CardActionablesComponent } from '../../../cards/card-item/card-actionables/card-actionables.component'; import { NgIf, NgClass, AsyncPipe, DecimalPipe, DatePipe } from '@angular/common'; import { SideNavCompanionBarComponent } from '../../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; @Component({ selector: 'app-reading-list-detail', @@ -36,7 +36,7 @@ import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; styleUrls: ['./reading-list-detail.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SideNavCompanionBarComponent, NgIf, CardActionablesComponent, ImageComponent, NgbDropdown, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, ReadMoreComponent, BadgeExpanderComponent, PersonBadgeComponent, A11yClickDirective, LoadingComponent, DraggableOrderedListComponent, ReadingListItemComponent, NgClass, AsyncPipe, DecimalPipe, DatePipe, TranslocoModule] + imports: [SideNavCompanionBarComponent, NgIf, CardActionablesComponent, ImageComponent, NgbDropdown, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, ReadMoreComponent, BadgeExpanderComponent, PersonBadgeComponent, A11yClickDirective, LoadingComponent, DraggableOrderedListComponent, ReadingListItemComponent, NgClass, AsyncPipe, DecimalPipe, DatePipe, TranslocoDirective] }) export class ReadingListDetailComponent implements OnInit { items: Array = []; diff --git a/UI/Web/src/app/reading-list/_components/reading-list-item/reading-list-item.component.ts b/UI/Web/src/app/reading-list/_components/reading-list-item/reading-list-item.component.ts index 7b4cc8317..4a5d1fdc3 100644 --- a/UI/Web/src/app/reading-list/_components/reading-list-item/reading-list-item.component.ts +++ b/UI/Web/src/app/reading-list/_components/reading-list-item/reading-list-item.component.ts @@ -8,7 +8,7 @@ import { MangaFormatPipe } from '../../../pipe/manga-format.pipe'; import { NgbProgressbar } from '@ng-bootstrap/ng-bootstrap'; import { NgIf, DatePipe } from '@angular/common'; import { ImageComponent } from '../../../shared/image/image.component'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-reading-list-item', @@ -16,7 +16,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./reading-list-item.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [ImageComponent, NgIf, NgbProgressbar, DatePipe, MangaFormatPipe, MangaFormatIconPipe, TranslocoModule] + imports: [ImageComponent, NgIf, NgbProgressbar, DatePipe, MangaFormatPipe, MangaFormatIconPipe, TranslocoDirective] }) export class ReadingListItemComponent { diff --git a/UI/Web/src/app/reading-list/_components/reading-lists/reading-lists.component.ts b/UI/Web/src/app/reading-list/_components/reading-lists/reading-lists.component.ts index d2de8b475..3f99843db 100644 --- a/UI/Web/src/app/reading-list/_components/reading-lists/reading-lists.component.ts +++ b/UI/Web/src/app/reading-list/_components/reading-lists/reading-lists.component.ts @@ -18,7 +18,7 @@ import { CardDetailLayoutComponent } from '../../../cards/card-detail-layout/car import { NgIf, DecimalPipe } from '@angular/common'; import { CardActionablesComponent } from '../../../cards/card-item/card-actionables/card-actionables.component'; import { SideNavCompanionBarComponent } from '../../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; @Component({ selector: 'app-reading-lists', @@ -26,7 +26,7 @@ import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; styleUrls: ['./reading-lists.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SideNavCompanionBarComponent, CardActionablesComponent, NgIf, CardDetailLayoutComponent, CardItemComponent, DecimalPipe, TranslocoModule] + imports: [SideNavCompanionBarComponent, CardActionablesComponent, NgIf, CardDetailLayoutComponent, CardItemComponent, DecimalPipe, TranslocoDirective] }) export class ReadingListsComponent implements OnInit { @@ -36,7 +36,7 @@ export class ReadingListsComponent implements OnInit { isAdmin: boolean = false; jumpbarKeys: Array = []; actions: {[key: number]: Array>} = {}; - globalActions: Array> = [{action: Action.Import, title: 'Import CBL', children: [], requiresAdmin: true, callback: this.importCbl.bind(this)}]; + globalActions: Array> = [{action: Action.Import, title: 'import-cbl', children: [], requiresAdmin: true, callback: this.importCbl.bind(this)}]; translocoService = inject(TranslocoService); constructor(private readingListService: ReadingListService, public imageService: ImageService, private actionFactoryService: ActionFactoryService, diff --git a/UI/Web/src/app/reading-list/_components/step-tracker/step-tracker.component.ts b/UI/Web/src/app/reading-list/_components/step-tracker/step-tracker.component.ts index e8a69bfb9..4fbd6989e 100644 --- a/UI/Web/src/app/reading-list/_components/step-tracker/step-tracker.component.ts +++ b/UI/Web/src/app/reading-list/_components/step-tracker/step-tracker.component.ts @@ -1,5 +1,4 @@ -import { Component, Input, ChangeDetectionStrategy, OnInit, ChangeDetectorRef } from '@angular/core'; -import { BehaviorSubject, ReplaySubject } from 'rxjs'; +import { Component, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; import {CommonModule} from "@angular/common"; diff --git a/UI/Web/src/app/reading-list/_modals/add-to-list-modal/add-to-list-modal.component.ts b/UI/Web/src/app/reading-list/_modals/add-to-list-modal/add-to-list-modal.component.ts index 15c03b492..9495c6ce0 100644 --- a/UI/Web/src/app/reading-list/_modals/add-to-list-modal/add-to-list-modal.component.ts +++ b/UI/Web/src/app/reading-list/_modals/add-to-list-modal/add-to-list-modal.component.ts @@ -6,7 +6,7 @@ import { ReadingList } from 'src/app/_models/reading-list'; import { ReadingListService } from 'src/app/_services/reading-list.service'; import { FilterPipe } from '../../../pipe/filter.pipe'; import { NgIf, NgFor } from '@angular/common'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; export enum ADD_FLOW { Series = 0, @@ -21,7 +21,7 @@ export enum ADD_FLOW { templateUrl: './add-to-list-modal.component.html', styleUrls: ['./add-to-list-modal.component.scss'], standalone: true, - imports: [ReactiveFormsModule, NgIf, NgFor, FilterPipe, TranslocoModule] + imports: [ReactiveFormsModule, NgIf, NgFor, FilterPipe, TranslocoDirective] }) export class AddToListModalComponent implements OnInit, AfterViewInit { diff --git a/UI/Web/src/app/reading-list/_modals/edit-reading-list-modal/edit-reading-list-modal.component.ts b/UI/Web/src/app/reading-list/_modals/edit-reading-list-modal/edit-reading-list-modal.component.ts index 0b8f8192f..f9a9ce2ac 100644 --- a/UI/Web/src/app/reading-list/_modals/edit-reading-list-modal/edit-reading-list-modal.component.ts +++ b/UI/Web/src/app/reading-list/_modals/edit-reading-list-modal/edit-reading-list-modal.component.ts @@ -5,7 +5,6 @@ import { DestroyRef, inject, Input, - OnDestroy, OnInit } from '@angular/core'; import { FormGroup, FormControl, Validators, ReactiveFormsModule } from '@angular/forms'; @@ -21,7 +20,7 @@ import { UploadService } from 'src/app/_services/upload.service'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { CoverImageChooserComponent } from '../../../cards/cover-image-chooser/cover-image-chooser.component'; import { NgIf, NgTemplateOutlet, AsyncPipe } from '@angular/common'; -import {translate, TranslocoModule} from "@ngneat/transloco"; +import {translate, TranslocoDirective} from "@ngneat/transloco"; enum TabID { General = 'general-tab', @@ -34,7 +33,7 @@ enum TabID { styleUrls: ['./edit-reading-list-modal.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgbNav, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, ReactiveFormsModule, NgIf, NgbTooltip, NgTemplateOutlet, CoverImageChooserComponent, NgbNavOutlet, AsyncPipe, TranslocoModule] + imports: [NgbNav, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, ReactiveFormsModule, NgIf, NgbTooltip, NgTemplateOutlet, CoverImageChooserComponent, NgbNavOutlet, AsyncPipe, TranslocoDirective] }) export class EditReadingListModalComponent implements OnInit { diff --git a/UI/Web/src/app/reading-list/_modals/import-cbl-modal/import-cbl-modal.component.ts b/UI/Web/src/app/reading-list/_modals/import-cbl-modal/import-cbl-modal.component.ts index e8f4781eb..4d16b50e8 100644 --- a/UI/Web/src/app/reading-list/_modals/import-cbl-modal/import-cbl-modal.component.ts +++ b/UI/Web/src/app/reading-list/_modals/import-cbl-modal/import-cbl-modal.component.ts @@ -2,12 +2,7 @@ import {ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, injec import {FormControl, FormGroup, ReactiveFormsModule} from '@angular/forms'; import {FileUploadModule, FileUploadValidators} from '@iplab/ngx-file-upload'; import { - NgbAccordionBody, - NgbAccordionButton, - NgbAccordionCollapse, - NgbAccordionDirective, - NgbAccordionHeader, - NgbAccordionItem, NgbAccordionModule, NgbAccordionToggle, + NgbAccordionModule, NgbAccordionToggle, NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; import { ToastrService } from 'ngx-toastr'; @@ -21,7 +16,7 @@ import {CommonModule} from "@angular/common"; import {SafeHtmlPipe} from "../../../pipe/safe-html.pipe"; import {CblConflictReasonPipe} from "../../_pipes/cbl-conflict-reason.pipe"; import {CblImportResultPipe} from "../../_pipes/cbl-import-result.pipe"; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; interface FileStep { fileName: string; @@ -44,7 +39,7 @@ enum Step { FileUploadModule, NgbAccordionModule, SafeHtmlPipe, - CblConflictReasonPipe, ReactiveFormsModule, StepTrackerComponent, CblImportResultPipe, NgbAccordionToggle, TranslocoModule], + CblConflictReasonPipe, ReactiveFormsModule, StepTrackerComponent, CblImportResultPipe, NgbAccordionToggle, TranslocoDirective], templateUrl: './import-cbl-modal.component.html', styleUrls: ['./import-cbl-modal.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/registration/_components/confirm-email-change/confirm-email-change.component.ts b/UI/Web/src/app/registration/_components/confirm-email-change/confirm-email-change.component.ts index 1f46ed08e..ef7489760 100644 --- a/UI/Web/src/app/registration/_components/confirm-email-change/confirm-email-change.component.ts +++ b/UI/Web/src/app/registration/_components/confirm-email-change/confirm-email-change.component.ts @@ -6,7 +6,7 @@ import { NavService } from 'src/app/_services/nav.service'; import { ThemeService } from 'src/app/_services/theme.service'; import { NgIf } from '@angular/common'; import { SplashContainerComponent } from '../splash-container/splash-container.component'; -import {translate, TranslocoModule} from "@ngneat/transloco"; +import {translate, TranslocoDirective} from "@ngneat/transloco"; /** * This component just validates the email via API then redirects to login @@ -17,7 +17,7 @@ import {translate, TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./confirm-email-change.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SplashContainerComponent, NgIf, TranslocoModule] + imports: [SplashContainerComponent, NgIf, TranslocoDirective] }) export class ConfirmEmailChangeComponent implements OnInit { diff --git a/UI/Web/src/app/registration/_components/confirm-email/confirm-email.component.ts b/UI/Web/src/app/registration/_components/confirm-email/confirm-email.component.ts index 46ebd7839..b4b196f29 100644 --- a/UI/Web/src/app/registration/_components/confirm-email/confirm-email.component.ts +++ b/UI/Web/src/app/registration/_components/confirm-email/confirm-email.component.ts @@ -8,7 +8,7 @@ import { NavService } from 'src/app/_services/nav.service'; import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; import { NgIf, NgFor, NgTemplateOutlet } from '@angular/common'; import { SplashContainerComponent } from '../splash-container/splash-container.component'; -import {translate, TranslocoModule} from "@ngneat/transloco"; +import {translate, TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-confirm-email', @@ -16,7 +16,7 @@ import {translate, TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./confirm-email.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SplashContainerComponent, NgIf, NgFor, ReactiveFormsModule, NgbTooltip, NgTemplateOutlet, TranslocoModule] + imports: [SplashContainerComponent, NgIf, NgFor, ReactiveFormsModule, NgbTooltip, NgTemplateOutlet, TranslocoDirective] }) export class ConfirmEmailComponent { /** diff --git a/UI/Web/src/app/registration/_components/confirm-reset-password/confirm-reset-password.component.ts b/UI/Web/src/app/registration/_components/confirm-reset-password/confirm-reset-password.component.ts index db112512f..ae1918184 100644 --- a/UI/Web/src/app/registration/_components/confirm-reset-password/confirm-reset-password.component.ts +++ b/UI/Web/src/app/registration/_components/confirm-reset-password/confirm-reset-password.component.ts @@ -7,7 +7,7 @@ import { NavService } from 'src/app/_services/nav.service'; import { NgTemplateOutlet, NgIf } from '@angular/common'; import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; import { SplashContainerComponent } from '../splash-container/splash-container.component'; -import {translate, TranslocoModule} from "@ngneat/transloco"; +import {translate, TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-confirm-reset-password', @@ -15,7 +15,7 @@ import {translate, TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./confirm-reset-password.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SplashContainerComponent, ReactiveFormsModule, NgbTooltip, NgTemplateOutlet, NgIf, TranslocoModule] + imports: [SplashContainerComponent, ReactiveFormsModule, NgbTooltip, NgTemplateOutlet, NgIf, TranslocoDirective] }) export class ConfirmResetPasswordComponent { diff --git a/UI/Web/src/app/registration/_components/register/register.component.ts b/UI/Web/src/app/registration/_components/register/register.component.ts index e1695319c..1e5fe8688 100644 --- a/UI/Web/src/app/registration/_components/register/register.component.ts +++ b/UI/Web/src/app/registration/_components/register/register.component.ts @@ -8,7 +8,7 @@ import { MemberService } from 'src/app/_services/member.service'; import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; import { NgIf, NgTemplateOutlet } from '@angular/common'; import { SplashContainerComponent } from '../splash-container/splash-container.component'; -import {translate, TranslocoModule} from "@ngneat/transloco"; +import {translate, TranslocoDirective} from "@ngneat/transloco"; /** * This is exclusively used to register the first user on the server and nothing else @@ -19,7 +19,7 @@ import {translate, TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./register.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SplashContainerComponent, ReactiveFormsModule, NgIf, NgbTooltip, NgTemplateOutlet, TranslocoModule] + imports: [SplashContainerComponent, ReactiveFormsModule, NgIf, NgbTooltip, NgTemplateOutlet, TranslocoDirective] }) export class RegisterComponent { diff --git a/UI/Web/src/app/registration/_components/reset-password/reset-password.component.ts b/UI/Web/src/app/registration/_components/reset-password/reset-password.component.ts index 124cee73e..9d91b10a6 100644 --- a/UI/Web/src/app/registration/_components/reset-password/reset-password.component.ts +++ b/UI/Web/src/app/registration/_components/reset-password/reset-password.component.ts @@ -5,7 +5,7 @@ import { ToastrService } from 'ngx-toastr'; import { AccountService } from 'src/app/_services/account.service'; import { NgIf } from '@angular/common'; import { SplashContainerComponent } from '../splash-container/splash-container.component'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-reset-password', @@ -13,7 +13,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./reset-password.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SplashContainerComponent, ReactiveFormsModule, NgIf, TranslocoModule] + imports: [SplashContainerComponent, ReactiveFormsModule, NgIf, TranslocoDirective] }) export class ResetPasswordComponent { diff --git a/UI/Web/src/app/registration/registration.module.ts b/UI/Web/src/app/registration/registration.module.ts index e22bea8ed..f73617665 100644 --- a/UI/Web/src/app/registration/registration.module.ts +++ b/UI/Web/src/app/registration/registration.module.ts @@ -11,7 +11,7 @@ import { ConfirmResetPasswordComponent } from './_components/confirm-reset-passw import { RegisterComponent } from './_components/register/register.component'; import { ResetPasswordComponent } from './_components/reset-password/reset-password.component'; import { SplashContainerComponent } from './_components/splash-container/splash-container.component'; -import {TRANSLOCO_SCOPE, TranslocoModule} from "@ngneat/transloco"; +import {TranslocoModule} from "@ngneat/transloco"; diff --git a/UI/Web/src/app/registration/user-login/user-login.component.ts b/UI/Web/src/app/registration/user-login/user-login.component.ts index 068598aa4..cab985ebd 100644 --- a/UI/Web/src/app/registration/user-login/user-login.component.ts +++ b/UI/Web/src/app/registration/user-login/user-login.component.ts @@ -4,13 +4,12 @@ import { Router, RouterLink } from '@angular/router'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { ToastrService } from 'ngx-toastr'; import { take } from 'rxjs/operators'; -import { User } from '../../_models/user'; import { AccountService } from '../../_services/account.service'; import { MemberService } from '../../_services/member.service'; import { NavService } from '../../_services/nav.service'; import { NgIf } from '@angular/common'; import { SplashContainerComponent } from '../_components/splash-container/splash-container.component'; -import {TRANSLOCO_SCOPE, TranslocoModule} from "@ngneat/transloco"; +import {TRANSLOCO_SCOPE, TranslocoDirective} from "@ngneat/transloco"; @Component({ @@ -19,7 +18,7 @@ import {TRANSLOCO_SCOPE, TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./user-login.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SplashContainerComponent, NgIf, ReactiveFormsModule, RouterLink, TranslocoModule], + imports: [SplashContainerComponent, NgIf, ReactiveFormsModule, RouterLink, TranslocoDirective], providers: [ { provide: TRANSLOCO_SCOPE, diff --git a/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.ts b/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.ts index 653c2ddaa..f17615262 100644 --- a/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.ts +++ b/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.ts @@ -70,7 +70,7 @@ import { ImageComponent } from '../../../shared/image/image.component'; import { TagBadgeComponent } from '../../../shared/tag-badge/tag-badge.component'; import { CardActionablesComponent } from '../../../cards/card-item/card-actionables/card-actionables.component'; import { SideNavCompanionBarComponent } from '../../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; interface RelatedSeriesPair { series: Series; @@ -98,7 +98,7 @@ interface StoryLineItem { styleUrls: ['./series-detail.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, SideNavCompanionBarComponent, CardActionablesComponent, ReactiveFormsModule, NgStyle, TagBadgeComponent, ImageComponent, NgbTooltip, NgbProgressbar, NgbDropdown, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, SeriesMetadataDetailComponent, CarouselReelComponent, ReviewCardComponent, BulkOperationsComponent, NgbNav, NgbNavItem, NgbNavLink, NgbNavContent, VirtualScrollerModule, NgFor, CardItemComponent, ListItemComponent, EntityTitleComponent, SeriesCardComponent, ExternalSeriesCardComponent, ExternalListItemComponent, NgbNavOutlet, LoadingComponent, DecimalPipe, TranslocoModule] + imports: [NgIf, SideNavCompanionBarComponent, CardActionablesComponent, ReactiveFormsModule, NgStyle, TagBadgeComponent, ImageComponent, NgbTooltip, NgbProgressbar, NgbDropdown, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, SeriesMetadataDetailComponent, CarouselReelComponent, ReviewCardComponent, BulkOperationsComponent, NgbNav, NgbNavItem, NgbNavLink, NgbNavContent, VirtualScrollerModule, NgFor, CardItemComponent, ListItemComponent, EntityTitleComponent, SeriesCardComponent, ExternalSeriesCardComponent, ExternalListItemComponent, NgbNavOutlet, LoadingComponent, DecimalPipe, TranslocoDirective] }) export class SeriesDetailComponent implements OnInit, AfterContentChecked { diff --git a/UI/Web/src/app/series-detail/_components/series-metadata-detail/series-metadata-detail.component.ts b/UI/Web/src/app/series-detail/_components/series-metadata-detail/series-metadata-detail.component.ts index 784a3bfaf..ca7f9307f 100644 --- a/UI/Web/src/app/series-detail/_components/series-metadata-detail/series-metadata-detail.component.ts +++ b/UI/Web/src/app/series-detail/_components/series-metadata-detail/series-metadata-detail.component.ts @@ -20,7 +20,7 @@ import {NgbCollapse} from "@ng-bootstrap/ng-bootstrap"; import {SeriesInfoCardsComponent} from "../../../cards/series-info-cards/series-info-cards.component"; import {LibraryType} from "../../../_models/library"; import {MetadataDetailComponent} from "../metadata-detail/metadata-detail.component"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ @@ -28,7 +28,7 @@ import {TranslocoModule} from "@ngneat/transloco"; standalone: true, imports: [CommonModule, TagBadgeComponent, BadgeExpanderComponent, SafeHtmlPipe, ExternalRatingComponent, ReadMoreComponent, A11yClickDirective, PersonBadgeComponent, NgbCollapse, SeriesInfoCardsComponent, - MetadataDetailComponent, TranslocoModule], + MetadataDetailComponent, TranslocoDirective], templateUrl: './series-metadata-detail.component.html', styleUrls: ['./series-metadata-detail.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/series-detail/series-detail.module.ts b/UI/Web/src/app/series-detail/series-detail.module.ts index 363afce13..e8e55b47e 100644 --- a/UI/Web/src/app/series-detail/series-detail.module.ts +++ b/UI/Web/src/app/series-detail/series-detail.module.ts @@ -37,7 +37,6 @@ import { import { SideNavCompanionBarComponent } from "../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component"; -import {RouterLink, RouterModule} from "@angular/router"; @NgModule({ diff --git a/UI/Web/src/app/shared/_services/filter-utilities.service.ts b/UI/Web/src/app/shared/_services/filter-utilities.service.ts index 6708a6f6a..4b47e1006 100644 --- a/UI/Web/src/app/shared/_services/filter-utilities.service.ts +++ b/UI/Web/src/app/shared/_services/filter-utilities.service.ts @@ -1,8 +1,7 @@ import { Injectable } from '@angular/core'; -import { ActivatedRoute, ActivatedRouteSnapshot } from '@angular/router'; +import { ActivatedRouteSnapshot } from '@angular/router'; import { Pagination } from 'src/app/_models/pagination'; import { SeriesFilter, SortField } from 'src/app/_models/metadata/series-filter'; -import { SeriesService } from 'src/app/_services/series.service'; /** * Used to pass state between the filter and the url diff --git a/UI/Web/src/app/shared/badge-expander/badge-expander.component.ts b/UI/Web/src/app/shared/badge-expander/badge-expander.component.ts index f6abae892..b46892fb4 100644 --- a/UI/Web/src/app/shared/badge-expander/badge-expander.component.ts +++ b/UI/Web/src/app/shared/badge-expander/badge-expander.component.ts @@ -1,11 +1,11 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core'; import {CommonModule} from "@angular/common"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-badge-expander', standalone: true, - imports: [CommonModule, TranslocoModule], + imports: [CommonModule, TranslocoDirective], templateUrl: './badge-expander.component.html', styleUrls: ['./badge-expander.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/shared/circular-loader/circular-loader.component.ts b/UI/Web/src/app/shared/circular-loader/circular-loader.component.ts index 42b5b6f50..e55b2ad12 100644 --- a/UI/Web/src/app/shared/circular-loader/circular-loader.component.ts +++ b/UI/Web/src/app/shared/circular-loader/circular-loader.component.ts @@ -1,6 +1,6 @@ -import {ChangeDetectionStrategy, Component, importProvidersFrom, Input} from '@angular/core'; +import {ChangeDetectionStrategy, Component, Input} from '@angular/core'; import {CommonModule} from "@angular/common"; -import {NgCircleProgressModule, CircleProgressOptions } from "ng-circle-progress"; +import {NgCircleProgressModule } from "ng-circle-progress"; @Component({ selector: 'app-circular-loader', diff --git a/UI/Web/src/app/shared/confirm-dialog/confirm-dialog.component.ts b/UI/Web/src/app/shared/confirm-dialog/confirm-dialog.component.ts index 01de0b014..e3de949e7 100644 --- a/UI/Web/src/app/shared/confirm-dialog/confirm-dialog.component.ts +++ b/UI/Web/src/app/shared/confirm-dialog/confirm-dialog.component.ts @@ -4,12 +4,12 @@ import { ConfirmButton } from './_models/confirm-button'; import { ConfirmConfig } from './_models/confirm-config'; import {CommonModule} from "@angular/common"; import {SafeHtmlPipe} from "../../pipe/safe-html.pipe"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-confirm-dialog', standalone: true, - imports: [CommonModule, SafeHtmlPipe, TranslocoModule], + imports: [CommonModule, SafeHtmlPipe, TranslocoDirective], templateUrl: './confirm-dialog.component.html', styleUrls: ['./confirm-dialog.component.scss'] }) diff --git a/UI/Web/src/app/shared/drawer/drawer.component.ts b/UI/Web/src/app/shared/drawer/drawer.component.ts index cf1df442b..99d6411e8 100644 --- a/UI/Web/src/app/shared/drawer/drawer.component.ts +++ b/UI/Web/src/app/shared/drawer/drawer.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core'; import {CommonModule} from "@angular/common"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; export class DrawerOptions { /** @@ -12,7 +12,7 @@ export class DrawerOptions { @Component({ selector: 'app-drawer', standalone: true, - imports: [CommonModule, TranslocoModule], + imports: [CommonModule, TranslocoDirective], templateUrl: './drawer.component.html', styleUrls: ['./drawer.component.scss'], exportAs: "drawer", diff --git a/UI/Web/src/app/shared/loading/loading.component.ts b/UI/Web/src/app/shared/loading/loading.component.ts index 77bae7ac8..c153d8c5e 100644 --- a/UI/Web/src/app/shared/loading/loading.component.ts +++ b/UI/Web/src/app/shared/loading/loading.component.ts @@ -1,11 +1,11 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import {CommonModule} from "@angular/common"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-loading', standalone: true, - imports: [CommonModule, TranslocoModule], + imports: [CommonModule, TranslocoDirective], templateUrl: './loading.component.html', styleUrls: ['./loading.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/shared/read-more/read-more.component.ts b/UI/Web/src/app/shared/read-more/read-more.component.ts index 48c74b87b..a201e1a76 100644 --- a/UI/Web/src/app/shared/read-more/read-more.component.ts +++ b/UI/Web/src/app/shared/read-more/read-more.component.ts @@ -1,12 +1,12 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges } from '@angular/core'; import {CommonModule} from "@angular/common"; import {SafeHtmlPipe} from "../../pipe/safe-html.pipe"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-read-more', standalone: true, - imports: [CommonModule, SafeHtmlPipe, TranslocoModule], + imports: [CommonModule, SafeHtmlPipe, TranslocoDirective], templateUrl: './read-more.component.html', styleUrls: ['./read-more.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/shared/update-notification/update-notification-modal.component.ts b/UI/Web/src/app/shared/update-notification/update-notification-modal.component.ts index 603b458cd..b4f875517 100644 --- a/UI/Web/src/app/shared/update-notification/update-notification-modal.component.ts +++ b/UI/Web/src/app/shared/update-notification/update-notification-modal.component.ts @@ -3,14 +3,13 @@ import {NgbActiveModal, NgbModalModule} from '@ng-bootstrap/ng-bootstrap'; import { UpdateVersionEvent } from 'src/app/_models/events/update-version-event'; import {CommonModule} from "@angular/common"; import {SafeHtmlPipe} from "../../pipe/safe-html.pipe"; -import {TranslocoModule} from "@ngneat/transloco"; - +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-update-notification-modal', standalone: true, - imports: [CommonModule, NgbModalModule, SafeHtmlPipe, TranslocoModule], + imports: [CommonModule, NgbModalModule, SafeHtmlPipe, TranslocoDirective], templateUrl: './update-notification-modal.component.html', styleUrls: ['./update-notification-modal.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component.ts b/UI/Web/src/app/sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component.ts index 68511236f..619700dbb 100644 --- a/UI/Web/src/app/sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component.ts +++ b/UI/Web/src/app/sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component.ts @@ -4,19 +4,17 @@ import { EventEmitter, inject, Input, - OnDestroy, OnInit, Output, TemplateRef } from '@angular/core'; import {NgbOffcanvas, NgbTooltip} from '@ng-bootstrap/ng-bootstrap'; -import { Subject, takeUntil } from 'rxjs'; import { Breakpoint, UtilityService } from 'src/app/shared/_services/utility.service'; import { NavService } from 'src/app/_services/nav.service'; import { ToggleService } from 'src/app/_services/toggle.service'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import {CommonModule} from "@angular/common"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; /** * This should go on all pages which have the side nav present and is not Settings related. @@ -25,7 +23,7 @@ import {TranslocoModule} from "@ngneat/transloco"; @Component({ selector: 'app-side-nav-companion-bar', standalone: true, - imports: [CommonModule, NgbTooltip, TranslocoModule], + imports: [CommonModule, NgbTooltip, TranslocoDirective], templateUrl: './side-nav-companion-bar.component.html', styleUrls: ['./side-nav-companion-bar.component.scss'] }) diff --git a/UI/Web/src/app/sidenav/_components/side-nav/side-nav.component.ts b/UI/Web/src/app/sidenav/_components/side-nav/side-nav.component.ts index 0ae5d5832..cf6f80983 100644 --- a/UI/Web/src/app/sidenav/_components/side-nav/side-nav.component.ts +++ b/UI/Web/src/app/sidenav/_components/side-nav/side-nav.component.ts @@ -8,7 +8,7 @@ import { } from '@angular/core'; import { NavigationEnd, Router } from '@angular/router'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; -import {filter, map, shareReplay, startWith, take, tap} from 'rxjs/operators'; +import {filter, map, shareReplay, take} from 'rxjs/operators'; import { ImportCblModalComponent } from 'src/app/reading-list/_modals/import-cbl-modal/import-cbl-modal.component'; import { ImageService } from 'src/app/_services/image.service'; import { EVENTS, MessageHubService } from 'src/app/_services/message-hub.service'; @@ -26,12 +26,12 @@ import {SideNavItemComponent} from "../side-nav-item/side-nav-item.component"; import {CardActionablesComponent} from "../../../cards/card-item/card-actionables/card-actionables.component"; import {FilterPipe} from "../../../pipe/filter.pipe"; import {FormsModule} from "@angular/forms"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-side-nav', standalone: true, - imports: [CommonModule, SideNavItemComponent, CardActionablesComponent, FilterPipe, FormsModule, TranslocoModule], + imports: [CommonModule, SideNavItemComponent, CardActionablesComponent, FilterPipe, FormsModule, TranslocoDirective], templateUrl: './side-nav.component.html', styleUrls: ['./side-nav.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/statistics/_components/_modals/generic-list-modal/generic-list-modal.component.ts b/UI/Web/src/app/statistics/_components/_modals/generic-list-modal/generic-list-modal.component.ts index a95ef4f18..849f16096 100644 --- a/UI/Web/src/app/statistics/_components/_modals/generic-list-modal/generic-list-modal.component.ts +++ b/UI/Web/src/app/statistics/_components/_modals/generic-list-modal/generic-list-modal.component.ts @@ -1,16 +1,16 @@ -import { Component, EventEmitter, Input } from '@angular/core'; +import { Component, Input } from '@angular/core'; import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; import { FilterPipe } from '../../../../pipe/filter.pipe'; import { NgIf, NgFor } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-generic-list-modal', templateUrl: './generic-list-modal.component.html', styleUrls: ['./generic-list-modal.component.scss'], standalone: true, - imports: [ReactiveFormsModule, NgIf, NgFor, FilterPipe, TranslocoModule] + imports: [ReactiveFormsModule, NgIf, NgFor, FilterPipe, TranslocoDirective] }) export class GenericListModalComponent { @Input() items: Array = []; diff --git a/UI/Web/src/app/statistics/_components/day-breakdown/day-breakdown.component.ts b/UI/Web/src/app/statistics/_components/day-breakdown/day-breakdown.component.ts index 7a8740b77..afd3b8ab3 100644 --- a/UI/Web/src/app/statistics/_components/day-breakdown/day-breakdown.component.ts +++ b/UI/Web/src/app/statistics/_components/day-breakdown/day-breakdown.component.ts @@ -8,7 +8,7 @@ import {StatCount} from '../../_models/stat-count'; import {DayOfWeekPipe} from '../../_pipes/day-of-week.pipe'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { AsyncPipe } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-day-breakdown', @@ -16,7 +16,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./day-breakdown.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [BarChartModule, AsyncPipe, TranslocoModule] + imports: [BarChartModule, AsyncPipe, TranslocoDirective] }) export class DayBreakdownComponent { diff --git a/UI/Web/src/app/statistics/_components/file-breakdown-stats/file-breakdown-stats.component.ts b/UI/Web/src/app/statistics/_components/file-breakdown-stats/file-breakdown-stats.component.ts index 8d8ebb7c2..40339a2e0 100644 --- a/UI/Web/src/app/statistics/_components/file-breakdown-stats/file-breakdown-stats.component.ts +++ b/UI/Web/src/app/statistics/_components/file-breakdown-stats/file-breakdown-stats.component.ts @@ -7,7 +7,7 @@ import { ViewChildren } from '@angular/core'; import { FormControl, ReactiveFormsModule } from '@angular/forms'; -import { LegendPosition, PieChartModule } from '@swimlane/ngx-charts'; +import { PieChartModule } from '@swimlane/ngx-charts'; import { Observable, BehaviorSubject, combineLatest, map, shareReplay } from 'rxjs'; import { StatisticsService } from 'src/app/_services/statistics.service'; import { SortableHeader, SortEvent, compare } from 'src/app/_single-module/table/_directives/sortable-header.directive'; @@ -19,7 +19,7 @@ import { BytesPipe } from '../../../pipe/bytes.pipe'; import { SortableHeader as SortableHeader_1 } from '../../../_single-module/table/_directives/sortable-header.directive'; import { NgIf, NgFor, AsyncPipe, DecimalPipe } from '@angular/common'; import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; export interface StackedBarChartDataItem { name: string, @@ -32,7 +32,7 @@ export interface StackedBarChartDataItem { styleUrls: ['./file-breakdown-stats.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgbTooltip, ReactiveFormsModule, NgIf, PieChartModule, SortableHeader_1, NgFor, AsyncPipe, DecimalPipe, BytesPipe, MangaFormatPipe, TranslocoModule] + imports: [NgbTooltip, ReactiveFormsModule, NgIf, PieChartModule, SortableHeader_1, NgFor, AsyncPipe, DecimalPipe, BytesPipe, MangaFormatPipe, TranslocoDirective] }) export class FileBreakdownStatsComponent { diff --git a/UI/Web/src/app/statistics/_components/manga-format-stats/manga-format-stats.component.ts b/UI/Web/src/app/statistics/_components/manga-format-stats/manga-format-stats.component.ts index 6e8e0a195..62760ec62 100644 --- a/UI/Web/src/app/statistics/_components/manga-format-stats/manga-format-stats.component.ts +++ b/UI/Web/src/app/statistics/_components/manga-format-stats/manga-format-stats.component.ts @@ -16,7 +16,7 @@ import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { SortableHeader as SortableHeader_1 } from '../../../_single-module/table/_directives/sortable-header.directive'; import { NgIf, NgFor, AsyncPipe, DecimalPipe } from '@angular/common'; import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-manga-format-stats', @@ -24,7 +24,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./manga-format-stats.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgbTooltip, ReactiveFormsModule, NgIf, PieChartModule, SortableHeader_1, NgFor, AsyncPipe, DecimalPipe, TranslocoModule] + imports: [NgbTooltip, ReactiveFormsModule, NgIf, PieChartModule, SortableHeader_1, NgFor, AsyncPipe, DecimalPipe, TranslocoDirective] }) export class MangaFormatStatsComponent { diff --git a/UI/Web/src/app/statistics/_components/publication-status-stats/publication-status-stats.component.ts b/UI/Web/src/app/statistics/_components/publication-status-stats/publication-status-stats.component.ts index f1613672c..b33b51dea 100644 --- a/UI/Web/src/app/statistics/_components/publication-status-stats/publication-status-stats.component.ts +++ b/UI/Web/src/app/statistics/_components/publication-status-stats/publication-status-stats.component.ts @@ -7,7 +7,7 @@ import { ViewChildren } from '@angular/core'; import { FormControl, ReactiveFormsModule } from '@angular/forms'; -import { LegendPosition, PieChartModule } from '@swimlane/ngx-charts'; +import { PieChartModule } from '@swimlane/ngx-charts'; import { Observable, map, combineLatest, BehaviorSubject } from 'rxjs'; import { StatisticsService } from 'src/app/_services/statistics.service'; import { compare, SortableHeader, SortEvent } from 'src/app/_single-module/table/_directives/sortable-header.directive'; @@ -15,7 +15,7 @@ import { PieDataItem } from '../../_models/pie-data-item'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { SortableHeader as SortableHeader_1 } from '../../../_single-module/table/_directives/sortable-header.directive'; import { NgIf, NgFor, AsyncPipe, DecimalPipe } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-publication-status-stats', @@ -23,7 +23,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./publication-status-stats.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [ReactiveFormsModule, NgIf, PieChartModule, SortableHeader_1, NgFor, AsyncPipe, DecimalPipe, TranslocoModule] + imports: [ReactiveFormsModule, NgIf, PieChartModule, SortableHeader_1, NgFor, AsyncPipe, DecimalPipe, TranslocoDirective] }) export class PublicationStatusStatsComponent { diff --git a/UI/Web/src/app/statistics/_components/reading-activity/reading-activity.component.ts b/UI/Web/src/app/statistics/_components/reading-activity/reading-activity.component.ts index 9cf55f0c2..04d64eb9b 100644 --- a/UI/Web/src/app/statistics/_components/reading-activity/reading-activity.component.ts +++ b/UI/Web/src/app/statistics/_components/reading-activity/reading-activity.component.ts @@ -1,6 +1,6 @@ -import {ChangeDetectionStrategy, Component, DestroyRef, inject, Input, OnDestroy, OnInit} from '@angular/core'; +import {ChangeDetectionStrategy, Component, DestroyRef, inject, Input, OnInit} from '@angular/core'; import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; -import { filter, map, Observable, of, shareReplay, Subject, switchMap, takeUntil } from 'rxjs'; +import { filter, map, Observable, of, shareReplay, switchMap } from 'rxjs'; import { MangaFormatPipe } from 'src/app/pipe/manga-format.pipe'; import { Member } from 'src/app/_models/auth/member'; import { MemberService } from 'src/app/_services/member.service'; @@ -10,7 +10,7 @@ import { TimePeriods } from '../top-readers/top-readers.component'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { LineChartModule } from '@swimlane/ngx-charts'; import { NgIf, NgFor, AsyncPipe } from '@angular/common'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; const options: Intl.DateTimeFormatOptions = { month: "short", day: "numeric" }; @@ -20,7 +20,7 @@ const options: Intl.DateTimeFormatOptions = { month: "short", day: "numeric" }; styleUrls: ['./reading-activity.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [ReactiveFormsModule, NgIf, NgFor, LineChartModule, AsyncPipe, TranslocoModule] + imports: [ReactiveFormsModule, NgIf, NgFor, LineChartModule, AsyncPipe, TranslocoDirective] }) export class ReadingActivityComponent implements OnInit { /** diff --git a/UI/Web/src/app/statistics/_components/server-stats/server-stats.component.ts b/UI/Web/src/app/statistics/_components/server-stats/server-stats.component.ts index d8d46cce6..e803e2fce 100644 --- a/UI/Web/src/app/statistics/_components/server-stats/server-stats.component.ts +++ b/UI/Web/src/app/statistics/_components/server-stats/server-stats.component.ts @@ -23,7 +23,7 @@ import { TopReadersComponent } from '../top-readers/top-readers.component'; import { StatListComponent } from '../stat-list/stat-list.component'; import { IconAndTitleComponent } from '../../../shared/icon-and-title/icon-and-title.component'; import { NgIf, AsyncPipe, DecimalPipe } from '@angular/common'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; @Component({ selector: 'app-server-stats', @@ -33,7 +33,7 @@ import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; standalone: true, imports: [NgIf, IconAndTitleComponent, StatListComponent, TopReadersComponent, FileBreakdownStatsComponent, PublicationStatusStatsComponent, ReadingActivityComponent, DayBreakdownComponent, AsyncPipe, DecimalPipe, - CompactNumberPipe, TimeDurationPipe, BytesPipe, TranslocoModule] + CompactNumberPipe, TimeDurationPipe, BytesPipe, TranslocoDirective] }) export class ServerStatsComponent { diff --git a/UI/Web/src/app/statistics/_components/stat-list/stat-list.component.ts b/UI/Web/src/app/statistics/_components/stat-list/stat-list.component.ts index c8607e1a1..940dba71b 100644 --- a/UI/Web/src/app/statistics/_components/stat-list/stat-list.component.ts +++ b/UI/Web/src/app/statistics/_components/stat-list/stat-list.component.ts @@ -1,12 +1,11 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; -import { PieData } from '@swimlane/ngx-charts'; import { Observable } from 'rxjs'; import { PieDataItem } from '../../_models/pie-data-item'; import { CompactNumberPipe } from '../../../pipe/compact-number.pipe'; import { ImageComponent } from '../../../shared/image/image.component'; import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; import { NgIf, NgFor, NgClass, AsyncPipe } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-stat-list', @@ -14,7 +13,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./stat-list.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, NgbTooltip, NgFor, NgClass, ImageComponent, AsyncPipe, CompactNumberPipe, TranslocoModule] + imports: [NgIf, NgbTooltip, NgFor, NgClass, ImageComponent, AsyncPipe, CompactNumberPipe, TranslocoDirective] }) export class StatListComponent { diff --git a/UI/Web/src/app/statistics/_components/top-readers/top-readers.component.ts b/UI/Web/src/app/statistics/_components/top-readers/top-readers.component.ts index 6f6975dee..bc78e3c17 100644 --- a/UI/Web/src/app/statistics/_components/top-readers/top-readers.component.ts +++ b/UI/Web/src/app/statistics/_components/top-readers/top-readers.component.ts @@ -12,7 +12,7 @@ import { StatisticsService } from 'src/app/_services/statistics.service'; import { TopUserRead } from '../../_models/top-reads'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { NgFor, AsyncPipe } from '@angular/common'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; export const TimePeriods: Array<{title: string, value: number}> = [{title: 'this-week', value: new Date().getDay() || 1}, @@ -28,7 +28,7 @@ export const TimePeriods: Array<{title: string, value: number}> = styleUrls: ['./top-readers.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [ReactiveFormsModule, NgFor, AsyncPipe, TranslocoModule] + imports: [ReactiveFormsModule, NgFor, AsyncPipe, TranslocoDirective] }) export class TopReadersComponent implements OnInit { diff --git a/UI/Web/src/app/statistics/_components/user-stats-info-cards/user-stats-info-cards.component.ts b/UI/Web/src/app/statistics/_components/user-stats-info-cards/user-stats-info-cards.component.ts index b4df09dc7..1df48f227 100644 --- a/UI/Web/src/app/statistics/_components/user-stats-info-cards/user-stats-info-cards.component.ts +++ b/UI/Web/src/app/statistics/_components/user-stats-info-cards/user-stats-info-cards.component.ts @@ -6,9 +6,9 @@ import { TimeAgoPipe } from '../../../pipe/time-ago.pipe'; import { TimeDurationPipe } from '../../../pipe/time-duration.pipe'; import { DecimalPipe } from '@angular/common'; import { IconAndTitleComponent } from '../../../shared/icon-and-title/icon-and-title.component'; -import {TranslocoModule} from "@ngneat/transloco"; import {AccountService} from "../../../_services/account.service"; import {CompactNumberPipe} from "../../../pipe/compact-number.pipe"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-user-stats-info-cards', @@ -16,7 +16,7 @@ import {CompactNumberPipe} from "../../../pipe/compact-number.pipe"; styleUrls: ['./user-stats-info-cards.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [IconAndTitleComponent, DecimalPipe, CompactNumberPipe, TimeDurationPipe, TimeAgoPipe, TranslocoModule] + imports: [IconAndTitleComponent, DecimalPipe, CompactNumberPipe, TimeDurationPipe, TimeAgoPipe, TranslocoDirective] }) export class UserStatsInfoCardsComponent { diff --git a/UI/Web/src/app/statistics/_components/user-stats/user-stats.component.ts b/UI/Web/src/app/statistics/_components/user-stats/user-stats.component.ts index 40e3af2cf..fadc58511 100644 --- a/UI/Web/src/app/statistics/_components/user-stats/user-stats.component.ts +++ b/UI/Web/src/app/statistics/_components/user-stats/user-stats.component.ts @@ -4,10 +4,9 @@ import { Component, DestroyRef, inject, - OnDestroy, OnInit } from '@angular/core'; -import { map, Observable, shareReplay, Subject, takeUntil } from 'rxjs'; +import { map, Observable, shareReplay } from 'rxjs'; import { FilterUtilitiesService } from 'src/app/shared/_services/filter-utilities.service'; import { UserReadStatistics } from 'src/app/statistics/_models/user-read-statistics'; import { StatisticsService } from 'src/app/_services/statistics.service'; diff --git a/UI/Web/src/app/typeahead/_components/typeahead.component.ts b/UI/Web/src/app/typeahead/_components/typeahead.component.ts index b96c9ff53..06a5b1ae0 100644 --- a/UI/Web/src/app/typeahead/_components/typeahead.component.ts +++ b/UI/Web/src/app/typeahead/_components/typeahead.component.ts @@ -19,13 +19,13 @@ import { ViewChild } from '@angular/core'; import {FormControl, FormGroup, ReactiveFormsModule} from '@angular/forms'; -import { Observable, ReplaySubject, Subject } from 'rxjs'; -import { auditTime, filter, map, shareReplay, switchMap, take, takeUntil, tap } from 'rxjs/operators'; +import { Observable, ReplaySubject } from 'rxjs'; +import { auditTime, filter, map, shareReplay, switchMap, take, tap } from 'rxjs/operators'; import { KEY_CODES } from 'src/app/shared/_services/utility.service'; import { SelectionCompareFn, TypeaheadSettings } from '../_models/typeahead-settings'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import {TagBadgeComponent} from "../../shared/tag-badge/tag-badge.component"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; /** @@ -153,7 +153,7 @@ const ANIMATION_SPEED = 200; @Component({ selector: 'app-typeahead', standalone: true, - imports: [CommonModule, TagBadgeComponent, ReactiveFormsModule, TranslocoModule], + imports: [CommonModule, TagBadgeComponent, ReactiveFormsModule, TranslocoDirective], templateUrl: './typeahead.component.html', styleUrls: ['./typeahead.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/UI/Web/src/app/user-settings/anilist-key/anilist-key.component.ts b/UI/Web/src/app/user-settings/anilist-key/anilist-key.component.ts index b82a242cf..955e7fe15 100644 --- a/UI/Web/src/app/user-settings/anilist-key/anilist-key.component.ts +++ b/UI/Web/src/app/user-settings/anilist-key/anilist-key.component.ts @@ -4,8 +4,6 @@ import { Component, DestroyRef, inject, - Input, - OnChanges, OnInit } from '@angular/core'; import { FormControl, FormGroup, Validators, ReactiveFormsModule } from "@angular/forms"; @@ -14,7 +12,7 @@ import {ScrobbleProvider, ScrobblingService} from "../../_services/scrobbling.se import {AccountService} from "../../_services/account.service"; import { NgbTooltip, NgbCollapse } from '@ng-bootstrap/ng-bootstrap'; import { NgIf, NgOptimizedImage } from '@angular/common'; -import {translate, TranslocoModule} from "@ngneat/transloco"; +import {translate, TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-anilist-key', @@ -22,7 +20,7 @@ import {translate, TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./anilist-key.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, NgOptimizedImage, NgbTooltip, NgbCollapse, ReactiveFormsModule, TranslocoModule] + imports: [NgIf, NgOptimizedImage, NgbTooltip, NgbCollapse, ReactiveFormsModule, TranslocoDirective] }) export class AnilistKeyComponent implements OnInit { diff --git a/UI/Web/src/app/user-settings/api-key/api-key.component.ts b/UI/Web/src/app/user-settings/api-key/api-key.component.ts index d80eb95fc..7b85899b1 100644 --- a/UI/Web/src/app/user-settings/api-key/api-key.component.ts +++ b/UI/Web/src/app/user-settings/api-key/api-key.component.ts @@ -14,7 +14,7 @@ import {Clipboard} from '@angular/cdk/clipboard'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; import { NgIf } from '@angular/common'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; @Component({ selector: 'app-api-key', @@ -22,7 +22,7 @@ import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; styleUrls: ['./api-key.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, NgbTooltip, TranslocoModule] + imports: [NgIf, NgbTooltip, TranslocoDirective] }) export class ApiKeyComponent implements OnInit { diff --git a/UI/Web/src/app/user-settings/change-age-restriction/change-age-restriction.component.ts b/UI/Web/src/app/user-settings/change-age-restriction/change-age-restriction.component.ts index b807b4ec2..0d66736ef 100644 --- a/UI/Web/src/app/user-settings/change-age-restriction/change-age-restriction.component.ts +++ b/UI/Web/src/app/user-settings/change-age-restriction/change-age-restriction.component.ts @@ -17,7 +17,7 @@ import { AgeRatingPipe } from '../../pipe/age-rating.pipe'; import { RestrictionSelectorComponent } from '../restriction-selector/restriction-selector.component'; import { NgbCollapse } from '@ng-bootstrap/ng-bootstrap'; import { NgIf, AsyncPipe } from '@angular/common'; -import {translate, TranslocoModule} from "@ngneat/transloco"; +import {translate, TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-change-age-restriction', @@ -25,7 +25,7 @@ import {translate, TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./change-age-restriction.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, NgbCollapse, RestrictionSelectorComponent, AsyncPipe, AgeRatingPipe, TranslocoModule] + imports: [NgIf, NgbCollapse, RestrictionSelectorComponent, AsyncPipe, AgeRatingPipe, TranslocoDirective] }) export class ChangeAgeRestrictionComponent implements OnInit { diff --git a/UI/Web/src/app/user-settings/change-email/change-email.component.ts b/UI/Web/src/app/user-settings/change-email/change-email.component.ts index b4a32d612..8f5528c9d 100644 --- a/UI/Web/src/app/user-settings/change-email/change-email.component.ts +++ b/UI/Web/src/app/user-settings/change-email/change-email.component.ts @@ -1,7 +1,7 @@ import {ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject, OnInit} from '@angular/core'; import { FormControl, FormGroup, Validators, ReactiveFormsModule } from '@angular/forms'; import {ToastrService} from 'ngx-toastr'; -import {Observable, of, shareReplay, take} from 'rxjs'; +import {shareReplay, take} from 'rxjs'; import {UpdateEmailResponse} from 'src/app/_models/auth/update-email-response'; import {User} from 'src/app/_models/user'; import {AccountService} from 'src/app/_services/account.service'; @@ -9,7 +9,7 @@ import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { ApiKeyComponent } from '../api-key/api-key.component'; import { NgbTooltip, NgbCollapse } from '@ng-bootstrap/ng-bootstrap'; import { NgIf, NgFor } from '@angular/common'; -import {translate, TranslocoModule} from "@ngneat/transloco"; +import {translate, TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-change-email', @@ -17,7 +17,7 @@ import {translate, TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./change-email.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, NgbTooltip, NgbCollapse, NgFor, ReactiveFormsModule, ApiKeyComponent, TranslocoModule] + imports: [NgIf, NgbTooltip, NgbCollapse, NgFor, ReactiveFormsModule, ApiKeyComponent, TranslocoDirective] }) export class ChangeEmailComponent implements OnInit { diff --git a/UI/Web/src/app/user-settings/change-password/change-password.component.ts b/UI/Web/src/app/user-settings/change-password/change-password.component.ts index 97363be12..b0fba4c42 100644 --- a/UI/Web/src/app/user-settings/change-password/change-password.component.ts +++ b/UI/Web/src/app/user-settings/change-password/change-password.component.ts @@ -9,13 +9,13 @@ import { } from '@angular/core'; import { FormControl, FormGroup, Validators, ReactiveFormsModule } from '@angular/forms'; import { ToastrService } from 'ngx-toastr'; -import { map, Observable, of, shareReplay, Subject, take, takeUntil } from 'rxjs'; +import { map, Observable, of, shareReplay, take } from 'rxjs'; import { User } from 'src/app/_models/user'; import { AccountService } from 'src/app/_services/account.service'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { NgbCollapse } from '@ng-bootstrap/ng-bootstrap'; import { NgIf, NgFor, AsyncPipe } from '@angular/common'; -import {translate, TranslocoModule} from "@ngneat/transloco"; +import {translate, TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-change-password', @@ -23,7 +23,7 @@ import {translate, TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./change-password.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, NgbCollapse, NgFor, ReactiveFormsModule, AsyncPipe, TranslocoModule] + imports: [NgIf, NgbCollapse, NgFor, ReactiveFormsModule, AsyncPipe, TranslocoDirective] }) export class ChangePasswordComponent implements OnInit, OnDestroy { diff --git a/UI/Web/src/app/user-settings/manage-devices/manage-devices.component.ts b/UI/Web/src/app/user-settings/manage-devices/manage-devices.component.ts index 0b058b26e..24c68595b 100644 --- a/UI/Web/src/app/user-settings/manage-devices/manage-devices.component.ts +++ b/UI/Web/src/app/user-settings/manage-devices/manage-devices.component.ts @@ -8,7 +8,7 @@ import { SentenceCasePipe } from '../../pipe/sentence-case.pipe'; import { NgIf, NgFor } from '@angular/common'; import { EditDeviceComponent } from '../edit-device/edit-device.component'; import { NgbCollapse } from '@ng-bootstrap/ng-bootstrap'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-manage-devices', @@ -16,7 +16,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./manage-devices.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgbCollapse, EditDeviceComponent, NgIf, NgFor, SentenceCasePipe, DevicePlatformPipe, TranslocoModule] + imports: [NgbCollapse, EditDeviceComponent, NgIf, NgFor, SentenceCasePipe, DevicePlatformPipe, TranslocoDirective] }) export class ManageDevicesComponent implements OnInit, OnDestroy { diff --git a/UI/Web/src/app/user-settings/theme-manager/theme-manager.component.ts b/UI/Web/src/app/user-settings/theme-manager/theme-manager.component.ts index 8fd6ae3d1..7b3571bd5 100644 --- a/UI/Web/src/app/user-settings/theme-manager/theme-manager.component.ts +++ b/UI/Web/src/app/user-settings/theme-manager/theme-manager.component.ts @@ -8,14 +8,14 @@ import { import { ToastrService } from 'ngx-toastr'; import { distinctUntilChanged, take } from 'rxjs'; import { ThemeService } from 'src/app/_services/theme.service'; -import { SiteTheme, ThemeProvider } from 'src/app/_models/preferences/site-theme'; +import { SiteTheme } from 'src/app/_models/preferences/site-theme'; import { User } from 'src/app/_models/user'; import { AccountService } from 'src/app/_services/account.service'; import {takeUntilDestroyed} from "@angular/core/rxjs-interop"; import { SiteThemeProviderPipe } from '../_pipes/site-theme-provider.pipe'; import { SentenceCasePipe } from '../../pipe/sentence-case.pipe'; import { NgIf, NgFor, AsyncPipe } from '@angular/common'; -import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {TranslocoDirective, TranslocoService} from "@ngneat/transloco"; @Component({ selector: 'app-theme-manager', @@ -23,7 +23,7 @@ import {TranslocoModule, TranslocoService} from "@ngneat/transloco"; styleUrls: ['./theme-manager.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [NgIf, NgFor, AsyncPipe, SentenceCasePipe, SiteThemeProviderPipe, TranslocoModule] + imports: [NgIf, NgFor, AsyncPipe, SentenceCasePipe, SiteThemeProviderPipe, TranslocoDirective] }) export class ThemeManagerComponent { diff --git a/UI/Web/src/app/user-settings/user-holds/user-holds.component.ts b/UI/Web/src/app/user-settings/user-holds/user-holds.component.ts index dec5cd68f..3915ed3b7 100644 --- a/UI/Web/src/app/user-settings/user-holds/user-holds.component.ts +++ b/UI/Web/src/app/user-settings/user-holds/user-holds.component.ts @@ -11,12 +11,12 @@ import { NgbAccordionDirective, NgbAccordionHeader, NgbAccordionItem } from "@ng-bootstrap/ng-bootstrap"; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ selector: 'app-user-holds', standalone: true, - imports: [CommonModule, ScrobbleEventTypePipe, NgbAccordionDirective, NgbAccordionCollapse, NgbAccordionBody, NgbAccordionItem, NgbAccordionHeader, TranslocoModule], + imports: [CommonModule, ScrobbleEventTypePipe, NgbAccordionDirective, NgbAccordionCollapse, NgbAccordionBody, NgbAccordionItem, NgbAccordionHeader, TranslocoDirective], templateUrl: './user-holds.component.html', styleUrls: ['./user-holds.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/UI/Web/src/app/user-settings/user-preferences/user-preferences.component.ts b/UI/Web/src/app/user-settings/user-preferences/user-preferences.component.ts index bd25d0dbc..357e3431a 100644 --- a/UI/Web/src/app/user-settings/user-preferences/user-preferences.component.ts +++ b/UI/Web/src/app/user-settings/user-preferences/user-preferences.component.ts @@ -48,7 +48,7 @@ import { NgbNav, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavContent, NgbAccor import { SideNavCompanionBarComponent } from '../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component'; import {LocalizationService} from "../../_services/localization.service"; import {Language} from "../../_models/metadata/language"; -import {translate, TranslocoModule, TranslocoService} from "@ngneat/transloco"; +import {translate, TranslocoDirective, TranslocoService} from "@ngneat/transloco"; enum AccordionPanelID { ImageReader = 'image-reader', @@ -73,10 +73,10 @@ enum FragmentID { styleUrls: ['./user-preferences.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SideNavCompanionBarComponent, NgbNav, NgFor, NgbNavItem, NgbNavItemRole, NgbNavLink, RouterLink, NgbNavContent, NgIf, ChangeEmailComponent, - ChangePasswordComponent, ChangeAgeRestrictionComponent, AnilistKeyComponent, ReactiveFormsModule, NgbAccordionDirective, NgbAccordionItem, NgbAccordionHeader, - NgbAccordionToggle, NgbAccordionButton, NgbCollapse, NgbAccordionCollapse, NgbAccordionBody, NgbTooltip, NgTemplateOutlet, ColorPickerModule, ApiKeyComponent, - ThemeManagerComponent, ManageDevicesComponent, UserStatsComponent, UserScrobbleHistoryComponent, UserHoldsComponent, NgbNavOutlet, TitleCasePipe, SentenceCasePipe, TranslocoModule] + imports: [SideNavCompanionBarComponent, NgbNav, NgFor, NgbNavItem, NgbNavItemRole, NgbNavLink, RouterLink, NgbNavContent, NgIf, ChangeEmailComponent, + ChangePasswordComponent, ChangeAgeRestrictionComponent, AnilistKeyComponent, ReactiveFormsModule, NgbAccordionDirective, NgbAccordionItem, NgbAccordionHeader, + NgbAccordionToggle, NgbAccordionButton, NgbCollapse, NgbAccordionCollapse, NgbAccordionBody, NgbTooltip, NgTemplateOutlet, ColorPickerModule, ApiKeyComponent, + ThemeManagerComponent, ManageDevicesComponent, UserStatsComponent, UserScrobbleHistoryComponent, UserHoldsComponent, NgbNavOutlet, TitleCasePipe, SentenceCasePipe, TranslocoDirective] }) export class UserPreferencesComponent implements OnInit, OnDestroy { diff --git a/UI/Web/src/app/want-to-read/_components/want-to-read/want-to-read.component.ts b/UI/Web/src/app/want-to-read/_components/want-to-read/want-to-read.component.ts index 7120ab974..6f2eb945a 100644 --- a/UI/Web/src/app/want-to-read/_components/want-to-read/want-to-read.component.ts +++ b/UI/Web/src/app/want-to-read/_components/want-to-read/want-to-read.component.ts @@ -36,7 +36,7 @@ import { SeriesCardComponent } from '../../../cards/series-card/series-card.comp import { CardDetailLayoutComponent } from '../../../cards/card-detail-layout/card-detail-layout.component'; import { BulkOperationsComponent } from '../../../cards/bulk-operations/bulk-operations.component'; import { SideNavCompanionBarComponent } from '../../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component'; -import {TranslocoModule} from "@ngneat/transloco"; +import {TranslocoDirective} from "@ngneat/transloco"; @Component({ @@ -45,7 +45,7 @@ import {TranslocoModule} from "@ngneat/transloco"; styleUrls: ['./want-to-read.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [SideNavCompanionBarComponent, NgStyle, BulkOperationsComponent, CardDetailLayoutComponent, SeriesCardComponent, NgIf, DecimalPipe, TranslocoModule] + imports: [SideNavCompanionBarComponent, NgStyle, BulkOperationsComponent, CardDetailLayoutComponent, SeriesCardComponent, NgIf, DecimalPipe, TranslocoDirective] }) export class WantToReadComponent implements OnInit, AfterContentChecked { diff --git a/UI/Web/src/assets/langs/en.json b/UI/Web/src/assets/langs/en.json index 0ca67efc9..7d96cbea0 100644 --- a/UI/Web/src/assets/langs/en.json +++ b/UI/Web/src/assets/langs/en.json @@ -418,6 +418,7 @@ }, "time-ago-pipe": { + "never": "Never", "just-now": "just now", "min-ago": "a minute ago", "mins-ago": "{{value}} minutes ago", @@ -1251,7 +1252,7 @@ "more-in-genre": "More In {{genre}}", "rediscover": "Rediscover", "highly-rated": "Highly Rated", - "quick-catchups": "Quick Catchups", + "quick-catchups": "Quick Catch-ups", "quick-reads": "Quick Reads", "on-deck": "{{dashboard.on-deck-title}}" }, @@ -1570,7 +1571,7 @@ "format-title": "Format:", "created-title": "Created:", "last-read-title": "Last Read:", - "last-added-title": "Last Added To:", + "last-added-title": "Last Item Added:", "last-scanned-title": "Last Scanned:", "folder-path-title": "Folder Path:", "publication-status-title": "Publication Status:", diff --git a/UI/Web/src/httpLoader.ts b/UI/Web/src/httpLoader.ts index c473f3f3f..7529a0ed3 100644 --- a/UI/Web/src/httpLoader.ts +++ b/UI/Web/src/httpLoader.ts @@ -1,6 +1,7 @@ import {Injectable} from "@angular/core"; import {HttpClient} from "@angular/common/http"; -import {Translation, TRANSLOCO_LOADER, TranslocoLoader} from "@ngneat/transloco"; +import {Translation, TranslocoLoader} from "@ngneat/transloco"; +import {tap} from "rxjs/operators"; @Injectable({ providedIn: 'root' }) @@ -9,9 +10,7 @@ export class HttpLoader implements TranslocoLoader { getTranslation(langPath: string) { const tokens = langPath.split('/'); - return this.http.get(`assets/langs/${tokens[tokens.length - 1]}.json`); - + return this.http.get(`assets/langs/${tokens[tokens.length - 1]}.json`) + .pipe(tap(d => console.log('translations: ', d))); } } - -export const translocoLoader = { provide: TRANSLOCO_LOADER, useClass: HttpLoader }; diff --git a/UI/Web/src/main.ts b/UI/Web/src/main.ts index 8e52ff2b8..4d7684332 100644 --- a/UI/Web/src/main.ts +++ b/UI/Web/src/main.ts @@ -2,7 +2,7 @@ import { APP_INITIALIZER, ApplicationConfig, importProvidersFrom, - isDevMode, + } from '@angular/core'; import { AppComponent } from './app/app.component'; import { NgCircleProgressModule } from 'ng-circle-progress'; @@ -34,12 +34,14 @@ export function preloadUser(userService: AccountService, transloco: TranslocoSer return function() { return userService.currentUser$.pipe(switchMap((user) => { if (user && user.preferences.locale) { + console.log('preloaded locale: ', user.preferences.locale) transloco.setActiveLang(user.preferences.locale); return transloco.load(user.preferences.locale) } // If no user or locale is available, fallback to the default language ('en') const localStorageLocale = localStorage.getItem(AccountService.localeKey) || 'en'; + console.log('preloaded locale: ', localStorageLocale) transloco.setActiveLang(localStorageLocale); return transloco.load(localStorageLocale) })).subscribe(); @@ -91,9 +93,6 @@ const translocoOptions = { missingHandler: { useFallbackTranslation: true, allowEmpty: false, - }, - flatten: { - aot: !isDevMode() } } }; diff --git a/openapi.json b/openapi.json index 4cc9151a6..84c86013b 100644 --- a/openapi.json +++ b/openapi.json @@ -7,7 +7,7 @@ "name": "GPL-3.0", "url": "https://github.com/Kareadita/Kavita/blob/develop/LICENSE" }, - "version": "0.7.6.10" + "version": "0.7.6.11" }, "servers": [ { @@ -12040,6 +12040,11 @@ "type": "string", "format": "date-time" }, + "created": { + "type": "string", + "description": "When chapter was created in local server time", + "format": "date-time" + }, "releaseDate": { "type": "string", "description": "When the chapter was released.", @@ -17667,12 +17672,22 @@ "type": "integer", "format": "int32" }, - "lastModified": { + "lastModifiedUtc": { + "type": "string", + "format": "date-time" + }, + "createdUtc": { "type": "string", "format": "date-time" }, "created": { "type": "string", + "description": "When chapter was created in local server time", + "format": "date-time" + }, + "lastModified": { + "type": "string", + "description": "When chapter was last modified in local server time", "format": "date-time" }, "seriesId": {