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:
Joseph Milazzo 2021-09-30 07:11:18 -07:00 committed by GitHub
parent 4c536bade6
commit 04e1051ec9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 25 additions and 16 deletions

View File

@ -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);
} }
}), }),

View File

@ -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 => {

View File

@ -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 {

View File

@ -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();

View File

@ -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);
} }