-
Notifications
You must be signed in to change notification settings - Fork 512
Expand file tree
/
Copy pathchat-example-data.ts
More file actions
133 lines (114 loc) · 4.04 KB
/
Copy pathchat-example-data.ts
File metadata and controls
133 lines (114 loc) · 4.04 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/* tslint:disable:max-line-length */
import { User } from '../user/user.model';
import { Thread } from '../thread/thread.model';
import { Message } from '../message/message.model';
import { MessagesService } from '../message/messages.service';
import { ThreadsService } from '../thread/threads.service';
import { UsersService } from '../user/users.service';
import * as moment from 'moment';
// the person using the app is Juliet
const me: User = new User('Juliet', 'assets/images/avatars/female-avatar-1.png');
const ladycap: User = new User('Lady Capulet', 'assets/images/avatars/female-avatar-2.png');
const echo: User = new User('Echo Bot', 'assets/images/avatars/male-avatar-1.png');
const rev: User = new User('Reverse Bot', 'assets/images/avatars/female-avatar-4.png');
const wait: User = new User('Waiting Bot', 'assets/images/avatars/male-avatar-2.png');
const tLadycap: Thread = new Thread('tLadycap', ladycap.name, ladycap.avatarSrc);
const tEcho: Thread = new Thread('tEcho', echo.name, echo.avatarSrc);
const tRev: Thread = new Thread('tRev', rev.name, rev.avatarSrc);
const tWait: Thread = new Thread('tWait', wait.name, wait.avatarSrc);
const initialMessages: Array<Message> = [
new Message({
author: me,
sentAt: moment().subtract(45, 'minutes').toDate(),
text: 'Yet let me weep for such a feeling loss.',
thread: tLadycap
}),
new Message({
author: ladycap,
sentAt: moment().subtract(20, 'minutes').toDate(),
text: 'So shall you feel the loss, but not the friend which you weep for.',
thread: tLadycap
}),
new Message({
author: echo,
sentAt: moment().subtract(1, 'minutes').toDate(),
text: `I\'ll echo whatever you send me`,
thread: tEcho
}),
new Message({
author: rev,
sentAt: moment().subtract(3, 'minutes').toDate(),
text: `I\'ll reverse whatever you send me`,
thread: tRev
}),
new Message({
author: wait,
sentAt: moment().subtract(4, 'minutes').toDate(),
text: `I\'ll wait however many seconds you send to me before responding. Try sending '3'`,
thread: tWait
}),
];
export class ChatExampleData {
static init(messagesService: MessagesService,
threadsService: ThreadsService,
UsersService: UsersService): void {
// TODO make `messages` hot
messagesService.messages.subscribe(() => ({}));
// set "Juliet" as the current user
UsersService.setCurrentUser(me);
// create the initial messages
initialMessages.map( (message: Message) => messagesService.addMessage(message) );
threadsService.setCurrentThread(tEcho);
this.setupBots(messagesService);
}
static setupBots(messagesService: MessagesService): void {
// echo bot
messagesService.messagesForThreadUser(tEcho, echo)
.forEach( (message: Message): void => {
messagesService.addMessage(
new Message({
author: echo,
text: message.text,
thread: tEcho
})
);
},
null);
// reverse bot
messagesService.messagesForThreadUser(tRev, rev)
.forEach( (message: Message): void => {
messagesService.addMessage(
new Message({
author: rev,
text: message.text.split('').reverse().join(''),
thread: tRev
})
);
},
null);
// waiting bot
messagesService.messagesForThreadUser(tWait, wait)
.forEach( (message: Message): void => {
let waitTime: number = parseInt(message.text, 10);
let reply: string;
if (isNaN(waitTime)) {
waitTime = 0;
reply = `I didn\'t understand ${message.text}. Try sending me a number`;
} else {
reply = `I waited ${waitTime} seconds to send you this.`;
}
setTimeout(
() => {
messagesService.addMessage(
new Message({
author: wait,
text: reply,
thread: tWait
})
);
},
waitTime * 1000);
},
null);
}
}