mirror of
https://github.com/Raghu-Ch/angular-challenges.git
synced 2026-02-10 12:53:03 -05:00
fix(challenge29): challenge 29
This commit is contained in:
@@ -6,19 +6,19 @@ export type User = {
|
||||
name: string;
|
||||
};
|
||||
|
||||
export type Ticket = {
|
||||
export interface BaseTicket {
|
||||
id: number;
|
||||
description: string;
|
||||
assigneeId: number | null;
|
||||
completed: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
export type TicketUser = {
|
||||
id: number;
|
||||
description: string;
|
||||
export interface Ticket extends BaseTicket {
|
||||
assigneeId: number | null;
|
||||
}
|
||||
|
||||
export interface TicketUser extends BaseTicket {
|
||||
assignee: string;
|
||||
completed: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
function randomDelay() {
|
||||
return Math.random() * 1000;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Injectable, inject } from '@angular/core';
|
||||
import {
|
||||
ComponentStore,
|
||||
OnStateInit,
|
||||
OnStoreInit,
|
||||
tapResponse,
|
||||
} from '@ngrx/component-store';
|
||||
import { pipe } from 'rxjs';
|
||||
@@ -27,7 +28,7 @@ const initialState: TicketState = {
|
||||
@Injectable()
|
||||
export class TicketStore
|
||||
extends ComponentStore<TicketState>
|
||||
implements OnStateInit
|
||||
implements OnStoreInit, OnStateInit
|
||||
{
|
||||
readonly users$ = this.select((state) => state.users);
|
||||
readonly error$ = this.select((state) => state.error);
|
||||
@@ -35,15 +36,11 @@ export class TicketStore
|
||||
private readonly ticketsInput$ = this.select((state) => state.tickets);
|
||||
private readonly search$ = this.select((state) => state.search);
|
||||
|
||||
constructor(private backend: BackendService) {
|
||||
super(initialState);
|
||||
}
|
||||
|
||||
private readonly ticketsUsers$ = this.select(
|
||||
this.users$,
|
||||
this.ticketsInput$,
|
||||
(users, tickets) =>
|
||||
users
|
||||
users && users.length > 0
|
||||
? tickets.map((ticket) => ({
|
||||
...ticket,
|
||||
assignee:
|
||||
@@ -78,6 +75,17 @@ export class TicketStore
|
||||
search,
|
||||
}));
|
||||
|
||||
private backend = inject(BackendService);
|
||||
|
||||
ngrxOnStoreInit() {
|
||||
this.setState(initialState);
|
||||
}
|
||||
|
||||
ngrxOnStateInit() {
|
||||
this.loadTickets();
|
||||
this.loadUsers();
|
||||
}
|
||||
|
||||
readonly loadTickets = this.effect<void>(
|
||||
pipe(
|
||||
tap(() => this.patchState({ loading: true, error: '' })),
|
||||
@@ -159,9 +167,4 @@ export class TicketStore
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
ngrxOnStateInit() {
|
||||
this.loadTickets();
|
||||
this.loadUsers();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user