-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathChat.h
86 lines (66 loc) · 2.13 KB
/
Chat.h
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
#ifndef __Chat_h__
#define __Chat_h__
#include "Arduino.h"
#include <UniversalTelegramBot.h>
#include "Defs.h"
#define KEEP_TIMESTAMP false
#define UPDATE_TIMESTAMP true
#define CHAT_CACHE_SIZE 10
#define CHAT_NONE -1
class ChatSet;
class Chat
{
protected:
ChatSet *chatSet;
int wearerIndex;
int holderIndex;
int botIndex;
String name;
String telegramId;
unsigned long lastMessageTime;
bool isHolderChat;
public:
Chat() : chatSet(NULL), wearerIndex(-1), holderIndex(-1), botIndex(-1), lastMessageTime(0), isHolderChat(false) {}
void SetChatSet(ChatSet *cs) { chatSet = cs; }
String GetName() { return name; }
void SetName(String n) { name = n; }
String GetId() { return telegramId; }
void SetId(String i) { telegramId = i; }
bool IsHolderChat() { return isHolderChat; }
String IsHolderChatStr() { return isHolderChat ? "true" : "false"; }
void SetHolderChat(bool is=true) { isHolderChat = is; }
void SetHolderChatStr(String isHChat) { isHolderChat = (isHChat == "true"); }
unsigned long LastMessageTime() { return lastMessageTime; }
void SetLastMessageTime(unsigned int now) { lastMessageTime = now; }
};
class ChatGroup : public Chat
{
public:
ChatGroup() {}
};
class ChatSet
{
protected:
int count;
int holderChatIndex;
Chat chat[CHAT_CACHE_SIZE];
unsigned long lastMessageTime;
public:
ChatSet() : count(0), holderChatIndex(CHAT_NONE) {}
int GetCount() { return count; }
Chat * GetChat(int i) { return &chat[i]; }
Chat * GetChatFromIndex(int i);
Chat * GetChatFromId(String id);
Chat * SearchHolderChat();
int GetIndexFromId(String id);
Chat * GetHolderChat() { if (holderChatIndex >= 0) return GetChatFromIndex(holderChatIndex); else return SearchHolderChat(); }
int GetHolderChatIndex() { return holderChatIndex; }
String GetHolderChatName() { return chat[holderChatIndex].GetName(); }
void SetHolderChatIndex(int i) { holderChatIndex = i; }
int AddChat(String id, String name="", bool isHolderChat=false);
unsigned long LastMessageTime() { return lastMessageTime; }
void SetLastMessageTime(unsigned long now) { lastMessageTime = now; }
String GetChatsInfo();
};
#endif
//