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.

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();
}
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
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);
    });
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
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);
}
}
Savez-vous comment ajouter une variable qui indiquerait si l'ID donné existe déjà ou non?