J'ai une fonction qui prend un ID en paramètre (threadId). Il traite le flux de la variable threads pour savoir si cette ID correspond à un thread.
Ensuite, j'inscris ce flux threads pour connaître le thread correspondant s'il existe. S'il existe, j'ajoute le nouveau message à ce thread:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 getThreadFromSubscription(threadId: string): Observable<Thread> { return this.threads .filter((threadDictionary: { [key: string]: Thread }) => { return Object.keys(threadDictionary).some((key) => threadDictionary[key].id === threadId); }) .map((threadDictionary: { [key: string]: Thread }) => { for (let key in threadDictionary) { if (threadDictionary[key].id === threadId) { return threadDictionary[key]; } } }).first(); }
J'aimerais ajouter une variable booléenne à cette fonction afin de savoir si le thread correspondant à l'ID donnée existe déjà ou non. La variable 'newThread' sera égale à true si le thread correspondant n'existe pas. J'ai essayé cela, mais lorsque le threadID n'existe pas, cela ne fonctionne pas. Ma variable booléenne 'newThread' n'est pas définie à true:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 this.getThreadFromSubscription(objMessage.id) .subscribe ((thread: Thread) => { console.log("id: tRev"); if(thread!== undefined) { objMessage.thread = thread; } objMessage.date = moment().toDate(); const newMessage = new Message(objMessage); thread.messages = Observable.of([newMessage]); thread.messages.last().subscribe((message) => { [thread.lastMessage] = message; }); this.addMessage(newMessage); });
Savez-vous comment ajouter une variable qui indiquerait si l'ID donné existe déjà ou non?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 addNewMessage(objMessage: any) : void { this.getThreadFromSubscription(objMessage.id) .subscribe((thread: Thread) => { if(thread !== undefined) { this.newThread = false; } else { this.newThread = true; } }); if(this.newThread === false ) { this.getThreadFromSubscription(objMessage.id) .subscribe ((thread: Thread) => { console.log("id: tRev"); if(thread!== undefined) { objMessage.thread = thread; } objMessage.date = moment().toDate(); const newMessage = new Message(objMessage); thread.messages = Observable.of([newMessage]); thread.messages.last().subscribe((message) => { [thread.lastMessage] = message; }); this.addMessage(newMessage); }); } else { console.log("id: flo"); const flo: User = new User(objMessage.author, objMessage.site); const newThread: Thread = new Thread(objMessage.id, [flo]); const newMessage = new Message(objMessage); objMessage.date = moment().toDate(); newThread.messages = Observable.of([newMessage]); newThread.messages.last().subscribe((message) => { [newThread.lastMessage] = message; }); objMessage.thread = newThread; this.addMessage(newMessage); this.addThread(newThread); } }
Partager