Ajouter une variable booléenne à une fonction qui traite un flux d'Observable
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:
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:
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:
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?