Small Tweaks before Release (#2571)

Co-authored-by: charles <30816317+charles7668@users.noreply.github.com>
This commit is contained in:
Joe Milazzo 2024-01-07 08:15:00 -06:00 committed by GitHub
parent 95a186e252
commit 1d56f5a0a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 43 additions and 71 deletions

View File

@ -1,42 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: needs-triage
assignees: ''
---
**If this is a feature request, request [here](https://feats.kavitareader.com/) instead. Feature requests will be deleted from Github.**
Please put as much information as possible to help me understand your issue. OS, browser, version are very important!
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS, Docker]
- Browser [e.g. chrome, safari]
- Version [e.g. 22] (can be found on Server Settings -> System tab)
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

View File

@ -11,7 +11,7 @@ body:
- type: markdown - type: markdown
attributes: attributes:
value: | value: |
If you have a feature request, please go to our [Feature Requests](https://feats.kavitareader.com) page. If you have a feature request, please submit on [Github Discussions](https://github.com/Kareadita/Kavita/discussions/2529).
- type: textarea - type: textarea
id: what-happened id: what-happened
attributes: attributes:
@ -34,7 +34,7 @@ body:
id: version id: version
attributes: attributes:
label: Version label: Version
description: What version of our software are you running? description: What version are you running?
placeholder: Can be found by going to Server Settings > System placeholder: Can be found by going to Server Settings > System
value: "" value: ""
validations: validations:
@ -61,7 +61,7 @@ body:
- type: dropdown - type: dropdown
id: desktop-browsers id: desktop-browsers
attributes: attributes:
label: If issue being seen on Desktop, what browsers are you seeing the problem on? label: If issue being seen in the UI, what browsers are you seeing the problem on?
multiple: true multiple: true
options: options:
- Firefox - Firefox
@ -79,7 +79,7 @@ body:
- type: dropdown - type: dropdown
id: mobile-browsers id: mobile-browsers
attributes: attributes:
label: If issue being seen on Mobile, what browsers are you seeing the problem on? label: If issue being seen on UI, what browsers are you seeing the problem on?
multiple: true multiple: true
options: options:
- Firefox - Firefox
@ -97,7 +97,7 @@ body:
attributes: attributes:
label: Additional Notes label: Additional Notes
description: Any other information about the issue not covered in this form? description: Any other information about the issue not covered in this form?
placeholder: e.g. Running Kavita on a raspberry pi placeholder: e.g. Running Kavita on a raspberry pi, updating from X version, using LSIO container, etc
value: "" value: ""
validations: validations:
required: true required: true

View File

@ -354,15 +354,6 @@ public class SettingsController : BaseApiController
{ {
setting.Value = updateSettingsDto.EnableFolderWatching + string.Empty; setting.Value = updateSettingsDto.EnableFolderWatching + string.Empty;
_unitOfWork.SettingsRepository.Update(setting); _unitOfWork.SettingsRepository.Update(setting);
if (updateSettingsDto.EnableFolderWatching)
{
await _libraryWatcher.StartWatching();
}
else
{
_libraryWatcher.StopWatching();
}
} }
} }
@ -378,6 +369,15 @@ public class SettingsController : BaseApiController
_directoryService.CopyDirectoryToDirectory(originalBookmarkDirectory, bookmarkDirectory); _directoryService.CopyDirectoryToDirectory(originalBookmarkDirectory, bookmarkDirectory);
_directoryService.ClearAndDeleteDirectory(originalBookmarkDirectory); _directoryService.ClearAndDeleteDirectory(originalBookmarkDirectory);
} }
if (updateSettingsDto.EnableFolderWatching)
{
await _libraryWatcher.StartWatching();
}
else
{
_libraryWatcher.StopWatching();
}
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -385,6 +385,7 @@ public class UserRepository : IUserRepository
return await _context.AppUserDashboardStream return await _context.AppUserDashboardStream
.Include(d => d.SmartFilter) .Include(d => d.SmartFilter)
.Where(d => d.SmartFilter != null && d.SmartFilter.Id == filterId) .Where(d => d.SmartFilter != null && d.SmartFilter.Id == filterId)
.AsSplitQuery()
.ToListAsync(); .ToListAsync();
} }
@ -408,6 +409,7 @@ public class UserRepository : IUserRepository
Order = d.Order, Order = d.Order,
Visible = d.Visible Visible = d.Visible
}) })
.AsSplitQuery()
.ToListAsync(); .ToListAsync();
var libraryIds = sideNavStreams.Where(d => d.StreamType == SideNavStreamType.Library) var libraryIds = sideNavStreams.Where(d => d.StreamType == SideNavStreamType.Library)

View File

@ -108,6 +108,7 @@ public class StatisticService : IStatisticService
.Join(_context.Chapter, p => p.ChapterId, c => c.Id, .Join(_context.Chapter, p => p.ChapterId, c => c.Id,
(p, c) => new (p, c) => new
{ {
// TODO: See if this can be done in the DB layer
AverageReadingHours = Math.Min((float) p.PagesRead / (float) c.Pages, 1.0) * AverageReadingHours = Math.Min((float) p.PagesRead / (float) c.Pages, 1.0) *
((float) c.AvgHoursToRead) ((float) c.AvgHoursToRead)
}) })

View File

@ -52,7 +52,7 @@ install methods and platforms.
[https://wiki.kavitareader.com/en/install](https://wiki.kavitareader.com/en/install) [https://wiki.kavitareader.com/en/install](https://wiki.kavitareader.com/en/install)
## Feature Requests ## Feature Requests
Got a great idea? Throw it up on our [Feature Request site](https://feats.kavitareader.com/), [Feature Discord Channel](https://discord.com/channels/821879810934439936/1164375153493422122) or vote on another idea. Please check the [Project Board](https://github.com/Kareadita/Kavita/projects?type=classic) first for a list of planned features before you submit an idea. Got a great idea? Throw it up on [Discussions](https://github.com/Kareadita/Kavita/discussions/2529) or vote on another idea. Please check the [Project Board](https://github.com/Kareadita/Kavita/projects?type=classic) first for a list of planned features before you submit an idea.
## Notice ## Notice
Kavita is being actively developed and should be considered beta software until the 1.0 release. Kavita is being actively developed and should be considered beta software until the 1.0 release.
@ -61,7 +61,8 @@ vision. You may lose data and have to restart. The Kavita team strives to avoid
## Donate ## Donate
If you like Kavita, have gotten good use out of it, or feel like you want to say thanks with a few bucks, feel free to donate. Money will go towards If you like Kavita, have gotten good use out of it, or feel like you want to say thanks with a few bucks, feel free to donate. Money will go towards
expenses related to Kavita. Back us through [OpenCollective](https://opencollective.com/Kavita#backer). You can also use [Paypal](https://www.paypal.com/paypalme/majora2007?locale.x=en_US), however your name will not show below. expenses related to Kavita. Back us through [OpenCollective](https://opencollective.com/Kavita#backer). You can also use [Paypal](https://www.paypal.com/paypalme/majora2007?locale.x=en_US), however your name will not show below. Kavita+ is also an
option which provides funding and you get a benefit.
## Kavita+ ## Kavita+
[Kavita+](https://wiki.kavitareader.com/en/kavita-plus) is a paid subscription that offers premium features that otherwise wouldn't be feasible to include in Kavita. It is ran and operated by majora2007, the creator and developer of Kavita. [Kavita+](https://wiki.kavitareader.com/en/kavita-plus) is a paid subscription that offers premium features that otherwise wouldn't be feasible to include in Kavita. It is ran and operated by majora2007, the creator and developer of Kavita.
@ -109,10 +110,9 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
Thank you to [<img src="/Logo/jetbrains.svg" alt="" width="32"> JetBrains](http://www.jetbrains.com/) for providing us with free licenses to their great tools. Thank you to [<img src="/Logo/jetbrains.svg" alt="" width="32"> JetBrains](http://www.jetbrains.com/) for providing us with free licenses to their great tools.
* [<img src="/Logo/rider.svg" alt="" width="32"> Rider](http://www.jetbrains.com/rider/) * [<img src="/Logo/rider.svg" alt="" width="32"> Rider](http://www.jetbrains.com/rider/)
* [<img src="/Logo/dottrace.svg" alt="" width="32"> dotTrace](http://www.jetbrains.com/dottrace/)
### License ### License
* [GNU GPL v3](http://www.gnu.org/licenses/gpl.html) * [GNU GPL v3](http://www.gnu.org/licenses/gpl.html)
* Copyright 2020-2023 * Copyright 2020-2024

View File

@ -70,8 +70,15 @@
<input id="email" type="email" class="form-control" formControlName="email" autocomplete="off"/> <input id="email" type="email" class="form-control" formControlName="email" autocomplete="off"/>
</div> </div>
<div class="form-group mb-3"> <div class="form-group mb-3">
<label for="discordId">{{t('activate-discordId-label')}}</label><i class="fa fa-circle-info ms-1" aria-hidden="true" [ngbTooltip]="t('activate-discordId-tooltip')"></i> <label for="discordId">{{t('activate-discordId-label')}}</label>
<input id="discordId" type="text" class="form-control" formControlName="discordId" autocomplete="off"/> <i class="fa fa-circle-info ms-1" aria-hidden="true" [ngbTooltip]="t('activate-discordId-tooltip')"></i>
<a class="ms-1" href="https://wiki.kavitareader.com/en/kavita-plus#discord-id" target="_blank" rel="noopener noreferrer">Help</a>
<input id="discordId" type="text" class="form-control" formControlName="discordId" autocomplete="off" [class.is-invalid]="formGroup.get('discordId')?.invalid && formGroup.get('discordId')?.touched"/>
<div id="inviteForm-validations" class="invalid-feedback" *ngIf="formGroup.dirty || formGroup.touched">
<div *ngIf="formGroup.get('discordId')?.errors?.pattern">
{{t('discord-validation')}}
</div>
</div>
</div> </div>
</form> </form>
<div class="col-auto d-flex d-md-block justify-content-sm-center text-md-end mb-3"> <div class="col-auto d-flex d-md-block justify-content-sm-center text-md-end mb-3">
@ -80,7 +87,7 @@
{{t('activate-delete')}} {{t('activate-delete')}}
</button> </button>
<button type="button" class="flex-fill btn btn-danger me-1" aria-describedby="license-key-header" <button type="button" class="flex-fill btn btn-danger me-1" aria-describedby="license-key-header"
[ngbTooltip]="t('activate-reset--tooltip')" [ngbTooltip]="t('activate-reset-tooltip')"
[disabled]="!formGroup.get('email')?.value || !formGroup.get('licenseKey')?.value" (click)="resetLicense()"> [disabled]="!formGroup.get('email')?.value || !formGroup.get('licenseKey')?.value" (click)="resetLicense()">
{{t('activate-reset')}} {{t('activate-reset')}}
</button> </button>

View File

@ -48,7 +48,7 @@ export class LicenseComponent implements OnInit {
ngOnInit(): void { ngOnInit(): void {
this.formGroup.addControl('licenseKey', new FormControl('', [Validators.required])); this.formGroup.addControl('licenseKey', new FormControl('', [Validators.required]));
this.formGroup.addControl('email', new FormControl('', [Validators.required])); this.formGroup.addControl('email', new FormControl('', [Validators.required]));
this.formGroup.addControl('discordId', new FormControl('', [])); this.formGroup.addControl('discordId', new FormControl('', [Validators.pattern(/\d+/)]));
this.accountService.hasAnyLicense().subscribe(res => { this.accountService.hasAnyLicense().subscribe(res => {
this.hasLicense = res; this.hasLicense = res;
this.cdRef.markForCheck(); this.cdRef.markForCheck();

View File

@ -94,7 +94,7 @@ export class ManageEmailSettingsComponent implements OnInit {
const result = results[0] as EmailTestResult; const result = results[0] as EmailTestResult;
if (result.successful) { if (result.successful) {
const version = ('. Kavita Email: ' + results[1] ? 'v' + results[1] : ''); const version = ('. Kavita Email: ' + results[1] ? 'v' + results[1] : '');
this.toastr.success(translate('toasts.email-service-reachable') + version); this.toastr.success(translate('toasts.email-service-reachable') + ' - ' + version);
} else { } else {
this.toastr.error(translate('toasts.email-service-unresponsive') + result.errorMessage.split('(')[0]); this.toastr.error(translate('toasts.email-service-unresponsive') + result.errorMessage.split('(')[0]);
} }

View File

@ -1608,7 +1608,8 @@ export class MangaReaderComponent implements OnInit, AfterViewInit, OnDestroy {
if (this.bookmarkMode) return; if (this.bookmarkMode) return;
const pageNum = this.pageNum; const pageNum = this.pageNum;
const isDouble = Math.max(this.canvasRenderer.getBookmarkPageCount(), this.singleRenderer.getBookmarkPageCount(), // if canvasRenderer and doubleRenderer is undefined, then we are in webtoon mode
const isDouble = this.canvasRenderer !== undefined && this.doubleRenderer !== undefined && Math.max(this.canvasRenderer.getBookmarkPageCount(), this.singleRenderer.getBookmarkPageCount(),
this.doubleRenderer.getBookmarkPageCount(), this.doubleReverseRenderer.getBookmarkPageCount(), this.doubleNoCoverRenderer.getBookmarkPageCount()) > 1; this.doubleRenderer.getBookmarkPageCount(), this.doubleReverseRenderer.getBookmarkPageCount(), this.doubleNoCoverRenderer.getBookmarkPageCount()) > 1;
if (this.CurrentPageBookmarked) { if (this.CurrentPageBookmarked) {
@ -1617,6 +1618,7 @@ export class MangaReaderComponent implements OnInit, AfterViewInit, OnDestroy {
forkJoin(apis).pipe(take(1)).subscribe(() => { forkJoin(apis).pipe(take(1)).subscribe(() => {
delete this.bookmarks[pageNum]; delete this.bookmarks[pageNum];
if (isDouble) delete this.bookmarks[pageNum + 1]; if (isDouble) delete this.bookmarks[pageNum + 1];
this.cdRef.detectChanges();
}); });
} else { } else {
let apis = [this.readerService.bookmark(this.seriesId, this.volumeId, this.chapterId, pageNum)]; let apis = [this.readerService.bookmark(this.seriesId, this.volumeId, this.chapterId, pageNum)];
@ -1624,6 +1626,7 @@ export class MangaReaderComponent implements OnInit, AfterViewInit, OnDestroy {
forkJoin(apis).pipe(take(1)).subscribe(() => { forkJoin(apis).pipe(take(1)).subscribe(() => {
this.bookmarks[pageNum] = 1; this.bookmarks[pageNum] = 1;
if (isDouble) this.bookmarks[pageNum + 1] = 1; if (isDouble) this.bookmarks[pageNum + 1] = 1;
this.cdRef.detectChanges();
}); });
} }

View File

@ -594,11 +594,12 @@
"activate-description": "Enter the License Key and Email used to register with Stripe", "activate-description": "Enter the License Key and Email used to register with Stripe",
"activate-license-label": "License Key", "activate-license-label": "License Key",
"activate-email-label": "{{common.email}}", "activate-email-label": "{{common.email}}",
"activate-discordId-label": "Discord UserId", "activate-discordId-label": "Discord User Id",
"activate-discordId-tooltip": "Link your Discord Account with Kavita+. This grants you access to hidden channels to help shape Kavita", "activate-discordId-tooltip": "Link your Discord Account with Kavita+. This grants you access to hidden channels to help shape Kavita.",
"discord-validation": "This is not a valid Discord User Id. Your user id is not your discord username.",
"activate-delete": "{{common.delete}}", "activate-delete": "{{common.delete}}",
"activate-reset": "{{common.reset}}", "activate-reset": "{{common.reset}}",
"activate-reset--tooltip": "Untie your license with this server. Requires both License and Email.", "activate-reset-tooltip": "Untie your license with this server. Requires both License and Email.",
"activate-save": "{{common.save}}" "activate-save": "{{common.save}}"
}, },

View File

@ -7,7 +7,7 @@
"name": "GPL-3.0", "name": "GPL-3.0",
"url": "https://github.com/Kareadita/Kavita/blob/develop/LICENSE" "url": "https://github.com/Kareadita/Kavita/blob/develop/LICENSE"
}, },
"version": "0.7.11.11" "version": "0.7.11.12"
}, },
"servers": [ "servers": [
{ {