mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-07-09 03:04:19 -04:00
Fixed a circular reference. Touched up long press on card items for mobile devices to now be so sensitive for triggering selection code. (#609)
This commit is contained in:
parent
4c536bade6
commit
04e1051ec9
@ -51,7 +51,7 @@ export class AccountService implements OnDestroy {
|
|||||||
const user = response;
|
const user = response;
|
||||||
if (user) {
|
if (user) {
|
||||||
this.setCurrentUser(user);
|
this.setCurrentUser(user);
|
||||||
this.messageHub.createHubConnection(user);
|
this.messageHub.createHubConnection(user, this.hasAdminRole(user));
|
||||||
this.presenceHub.createHubConnection(user);
|
this.presenceHub.createHubConnection(user);
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
@ -4,14 +4,12 @@ import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
|
|||||||
import { User } from '@sentry/angular';
|
import { User } from '@sentry/angular';
|
||||||
import { ToastrService } from 'ngx-toastr';
|
import { ToastrService } from 'ngx-toastr';
|
||||||
import { ReplaySubject } from 'rxjs';
|
import { ReplaySubject } from 'rxjs';
|
||||||
import { take } from 'rxjs/operators';
|
|
||||||
import { environment } from 'src/environments/environment';
|
import { environment } from 'src/environments/environment';
|
||||||
import { UpdateNotificationModalComponent } from '../shared/update-notification/update-notification-modal.component';
|
import { UpdateNotificationModalComponent } from '../shared/update-notification/update-notification-modal.component';
|
||||||
import { RefreshMetadataEvent } from '../_models/events/refresh-metadata-event';
|
import { RefreshMetadataEvent } from '../_models/events/refresh-metadata-event';
|
||||||
import { ScanLibraryEvent } from '../_models/events/scan-library-event';
|
import { ScanLibraryEvent } from '../_models/events/scan-library-event';
|
||||||
import { ScanSeriesEvent } from '../_models/events/scan-series-event';
|
import { ScanSeriesEvent } from '../_models/events/scan-series-event';
|
||||||
import { SeriesAddedEvent } from '../_models/events/series-added-event';
|
import { SeriesAddedEvent } from '../_models/events/series-added-event';
|
||||||
import { AccountService } from './account.service';
|
|
||||||
|
|
||||||
export enum EVENTS {
|
export enum EVENTS {
|
||||||
UpdateAvailable = 'UpdateAvailable',
|
UpdateAvailable = 'UpdateAvailable',
|
||||||
@ -44,15 +42,13 @@ export class MessageHubService {
|
|||||||
|
|
||||||
isAdmin: boolean = false;
|
isAdmin: boolean = false;
|
||||||
|
|
||||||
constructor(private modalService: NgbModal, private toastr: ToastrService, private accountService: AccountService) {
|
constructor(private modalService: NgbModal, private toastr: ToastrService) {
|
||||||
this.accountService.currentUser$.pipe(take(1)).subscribe(user => {
|
|
||||||
if (user) {
|
|
||||||
this.isAdmin = this.accountService.hasAdminRole(user);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
createHubConnection(user: User) {
|
createHubConnection(user: User, isAdmin: boolean) {
|
||||||
|
this.isAdmin = isAdmin;
|
||||||
|
|
||||||
this.hubConnection = new HubConnectionBuilder()
|
this.hubConnection = new HubConnectionBuilder()
|
||||||
.withUrl(this.hubUrl + 'messages', {
|
.withUrl(this.hubUrl + 'messages', {
|
||||||
accessTokenFactory: () => user.token
|
accessTokenFactory: () => user.token
|
||||||
@ -82,9 +78,6 @@ export class MessageHubService {
|
|||||||
payload: resp.body
|
payload: resp.body
|
||||||
});
|
});
|
||||||
this.scanLibrary.emit(resp.body);
|
this.scanLibrary.emit(resp.body);
|
||||||
// if ((resp.body as ScanLibraryEvent).stage === 'complete') {
|
|
||||||
// this.toastr.
|
|
||||||
// }
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.hubConnection.on(EVENTS.SeriesAdded, resp => {
|
this.hubConnection.on(EVENTS.SeriesAdded, resp => {
|
||||||
|
@ -47,7 +47,7 @@ export class AppComponent implements OnInit {
|
|||||||
|
|
||||||
if (user) {
|
if (user) {
|
||||||
this.navService.setDarkMode(user.preferences.siteDarkMode);
|
this.navService.setDarkMode(user.preferences.siteDarkMode);
|
||||||
this.messageHub.createHubConnection(user);
|
this.messageHub.createHubConnection(user, this.accountService.hasAdminRole(user));
|
||||||
this.presenceHub.createHubConnection(user);
|
this.presenceHub.createHubConnection(user);
|
||||||
this.libraryService.getLibraryNames().pipe(take(1)).subscribe(() => {/* No Operation */});
|
this.libraryService.getLibraryNames().pipe(take(1)).subscribe(() => {/* No Operation */});
|
||||||
} else {
|
} else {
|
||||||
|
@ -120,14 +120,31 @@ export class CardItemComponent implements OnInit, OnDestroy {
|
|||||||
|
|
||||||
|
|
||||||
prevTouchTime: number = 0;
|
prevTouchTime: number = 0;
|
||||||
|
prevOffset: number = 0;
|
||||||
@HostListener('touchstart', ['$event'])
|
@HostListener('touchstart', ['$event'])
|
||||||
onTouchStart(event: TouchEvent) {
|
onTouchStart(event: TouchEvent) {
|
||||||
|
const verticalOffset = (window.pageYOffset
|
||||||
|
|| document.documentElement.scrollTop
|
||||||
|
|| document.body.scrollTop || 0);
|
||||||
|
|
||||||
this.prevTouchTime = event.timeStamp;
|
this.prevTouchTime = event.timeStamp;
|
||||||
|
this.prevOffset = verticalOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
@HostListener('touchend', ['$event'])
|
@HostListener('touchend', ['$event'])
|
||||||
onTouchEnd(event: TouchEvent) {
|
onTouchEnd(event: TouchEvent) {
|
||||||
if (event.timeStamp - this.prevTouchTime >= 200) {
|
const delta = event.timeStamp - this.prevTouchTime;
|
||||||
|
const verticalOffset = (window.pageYOffset
|
||||||
|
|| document.documentElement.scrollTop
|
||||||
|
|| document.body.scrollTop || 0);
|
||||||
|
|
||||||
|
if (verticalOffset != this.prevOffset) {
|
||||||
|
this.prevTouchTime = 0;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (delta >= 300 && delta <= 1000) {
|
||||||
this.handleSelection();
|
this.handleSelection();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
@ -41,7 +41,6 @@ export class ReadingListsComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
performAction(action: ActionItem<any>, readingList: ReadingList) {
|
performAction(action: ActionItem<any>, readingList: ReadingList) {
|
||||||
// TODO: Try to move performAction into the actionables component. (have default handler in the component, allow for overridding to pass additional context)
|
|
||||||
if (typeof action.callback === 'function') {
|
if (typeof action.callback === 'function') {
|
||||||
action.callback(action.action, readingList);
|
action.callback(action.action, readingList);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user