@smart-link/im-base 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/REMAD.md +2 -0
- package/dist/DBAdapter.d.ts +60 -0
- package/dist/DBAdapter.js +151 -0
- package/dist/DBAdapter.js.map +1 -0
- package/dist/ImManager.d.ts +116 -0
- package/dist/ImManager.js +400 -0
- package/dist/ImManager.js.map +1 -0
- package/dist/api/api.config.d.ts +35 -0
- package/dist/api/api.config.js +40 -0
- package/dist/api/api.config.js.map +1 -0
- package/dist/api/index.d.ts +32 -0
- package/dist/api/index.js +29 -0
- package/dist/api/index.js.map +1 -0
- package/dist/constants.d.ts +192 -0
- package/dist/constants.js +181 -0
- package/dist/constants.js.map +1 -0
- package/dist/db/indexdb/index.d.ts +82 -0
- package/dist/db/indexdb/index.js +591 -0
- package/dist/db/indexdb/index.js.map +1 -0
- package/dist/db/indexdb/indexdb.config.d.ts +18 -0
- package/dist/db/indexdb/indexdb.config.js +117 -0
- package/dist/db/indexdb/indexdb.config.js.map +1 -0
- package/dist/db/sqlite/index.d.ts +65 -0
- package/dist/db/sqlite/index.js +687 -0
- package/dist/db/sqlite/index.js.map +1 -0
- package/dist/db/sqlite/scripts/db-script-1.0.0.d.ts +2 -0
- package/dist/db/sqlite/scripts/db-script-1.0.0.js +77 -0
- package/dist/db/sqlite/scripts/db-script-1.0.0.js.map +1 -0
- package/dist/db/sqlite/scripts/db-script-1.0.1.d.ts +2 -0
- package/dist/db/sqlite/scripts/db-script-1.0.1.js +7 -0
- package/dist/db/sqlite/scripts/db-script-1.0.1.js.map +1 -0
- package/dist/db/sqlite/sqlite.config.d.ts +11 -0
- package/dist/db/sqlite/sqlite.config.js +24 -0
- package/dist/db/sqlite/sqlite.config.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/interface.d.ts +386 -0
- package/dist/interface.js +3 -0
- package/dist/interface.js.map +1 -0
- package/dist/locales/en/im.d.ts +3 -0
- package/dist/locales/en/im.js +305 -0
- package/dist/locales/en/im.js.map +1 -0
- package/dist/locales/index.d.ts +4 -0
- package/dist/locales/index.js +28 -0
- package/dist/locales/index.js.map +1 -0
- package/dist/locales/lao/im.d.ts +3 -0
- package/dist/locales/lao/im.js +305 -0
- package/dist/locales/lao/im.js.map +1 -0
- package/dist/locales/zh/im.d.ts +303 -0
- package/dist/locales/zh/im.js +307 -0
- package/dist/locales/zh/im.js.map +1 -0
- package/dist/slice/call/call.action.d.ts +1 -0
- package/dist/slice/call/call.action.js +518 -0
- package/dist/slice/call/call.action.js.map +1 -0
- package/dist/slice/call/call.slice.d.ts +29 -0
- package/dist/slice/call/call.slice.js +107 -0
- package/dist/slice/call/call.slice.js.map +1 -0
- package/dist/slice/collection/collection.action.d.ts +4 -0
- package/dist/slice/collection/collection.action.js +28 -0
- package/dist/slice/collection/collection.action.js.map +1 -0
- package/dist/slice/collection/collection.slice.d.ts +10 -0
- package/dist/slice/collection/collection.slice.js +33 -0
- package/dist/slice/collection/collection.slice.js.map +1 -0
- package/dist/slice/collection/index.d.ts +8 -0
- package/dist/slice/collection/index.js +30 -0
- package/dist/slice/collection/index.js.map +1 -0
- package/dist/slice/conversation/conversation.action.d.ts +47 -0
- package/dist/slice/conversation/conversation.action.js +507 -0
- package/dist/slice/conversation/conversation.action.js.map +1 -0
- package/dist/slice/conversation/conversation.slice.d.ts +39 -0
- package/dist/slice/conversation/conversation.slice.js +79 -0
- package/dist/slice/conversation/conversation.slice.js.map +1 -0
- package/dist/slice/conversation/index.d.ts +60 -0
- package/dist/slice/conversation/index.js +30 -0
- package/dist/slice/conversation/index.js.map +1 -0
- package/dist/slice/forward/forward.action.d.ts +8 -0
- package/dist/slice/forward/forward.action.js +100 -0
- package/dist/slice/forward/forward.action.js.map +1 -0
- package/dist/slice/forward/forward.slice.d.ts +17 -0
- package/dist/slice/forward/forward.slice.js +29 -0
- package/dist/slice/forward/forward.slice.js.map +1 -0
- package/dist/slice/forward/index.d.ts +11 -0
- package/dist/slice/forward/index.js +30 -0
- package/dist/slice/forward/index.js.map +1 -0
- package/dist/slice/getState.d.ts +8 -0
- package/dist/slice/getState.js +12 -0
- package/dist/slice/getState.js.map +1 -0
- package/dist/slice/group/group.action.d.ts +2 -0
- package/dist/slice/group/group.action.js +24 -0
- package/dist/slice/group/group.action.js.map +1 -0
- package/dist/slice/group/group.slice.d.ts +10 -0
- package/dist/slice/group/group.slice.js +33 -0
- package/dist/slice/group/group.slice.js.map +1 -0
- package/dist/slice/group/index.d.ts +8 -0
- package/dist/slice/group/index.js +32 -0
- package/dist/slice/group/index.js.map +1 -0
- package/dist/slice/index.d.ts +28 -0
- package/dist/slice/index.js +60 -0
- package/dist/slice/index.js.map +1 -0
- package/dist/slice/message/index.d.ts +47 -0
- package/dist/slice/message/index.js +31 -0
- package/dist/slice/message/index.js.map +1 -0
- package/dist/slice/message/message.action.d.ts +16 -0
- package/dist/slice/message/message.action.js +269 -0
- package/dist/slice/message/message.action.js.map +1 -0
- package/dist/slice/message/message.panel.action.d.ts +23 -0
- package/dist/slice/message/message.panel.action.js +234 -0
- package/dist/slice/message/message.panel.action.js.map +1 -0
- package/dist/slice/message/message.slice.d.ts +66 -0
- package/dist/slice/message/message.slice.js +119 -0
- package/dist/slice/message/message.slice.js.map +1 -0
- package/dist/slice/setting/index.d.ts +20 -0
- package/dist/slice/setting/index.js +31 -0
- package/dist/slice/setting/index.js.map +1 -0
- package/dist/slice/setting/setting.action.d.ts +8 -0
- package/dist/slice/setting/setting.action.js +94 -0
- package/dist/slice/setting/setting.action.js.map +1 -0
- package/dist/slice/setting/setting.slice.d.ts +18 -0
- package/dist/slice/setting/setting.slice.js +64 -0
- package/dist/slice/setting/setting.slice.js.map +1 -0
- package/dist/socket/emitter-call.d.ts +1 -0
- package/dist/socket/emitter-call.js +290 -0
- package/dist/socket/emitter-call.js.map +1 -0
- package/dist/socket/emitter-message.d.ts +15 -0
- package/dist/socket/emitter-message.js +341 -0
- package/dist/socket/emitter-message.js.map +1 -0
- package/dist/socket/listener/busi-notify.d.ts +3 -0
- package/dist/socket/listener/busi-notify.js +49 -0
- package/dist/socket/listener/busi-notify.js.map +1 -0
- package/dist/socket/listener/c2c.d.ts +5 -0
- package/dist/socket/listener/c2c.js +95 -0
- package/dist/socket/listener/c2c.js.map +1 -0
- package/dist/socket/listener/c2g.d.ts +4 -0
- package/dist/socket/listener/c2g.js +35 -0
- package/dist/socket/listener/c2g.js.map +1 -0
- package/dist/socket/listener/conversation.d.ts +3 -0
- package/dist/socket/listener/conversation.js +83 -0
- package/dist/socket/listener/conversation.js.map +1 -0
- package/dist/socket/listener/group-operate.d.ts +13 -0
- package/dist/socket/listener/group-operate.js +102 -0
- package/dist/socket/listener/group-operate.js.map +1 -0
- package/dist/socket/listener/index.d.ts +33 -0
- package/dist/socket/listener/index.js +33 -0
- package/dist/socket/listener/index.js.map +1 -0
- package/dist/socket/listener/one-2-one-call.d.ts +1 -0
- package/dist/socket/listener/one-2-one-call.js +200 -0
- package/dist/socket/listener/one-2-one-call.js.map +1 -0
- package/dist/socket/listener/session.d.ts +8 -0
- package/dist/socket/listener/session.js +91 -0
- package/dist/socket/listener/session.js.map +1 -0
- package/dist/socket/message-handler.d.ts +27 -0
- package/dist/socket/message-handler.js +436 -0
- package/dist/socket/message-handler.js.map +1 -0
- package/dist/socket/sync-subscribe.d.ts +8 -0
- package/dist/socket/sync-subscribe.js +408 -0
- package/dist/socket/sync-subscribe.js.map +1 -0
- package/dist/utils/carousel-lock.d.ts +7 -0
- package/dist/utils/carousel-lock.js +35 -0
- package/dist/utils/carousel-lock.js.map +1 -0
- package/dist/utils/conversation.d.ts +9 -0
- package/dist/utils/conversation.js +58 -0
- package/dist/utils/conversation.js.map +1 -0
- package/dist/utils/file.d.ts +3 -0
- package/dist/utils/file.js +53 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/guid.d.ts +1 -0
- package/dist/utils/guid.js +15 -0
- package/dist/utils/guid.js.map +1 -0
- package/dist/utils/message.d.ts +14 -0
- package/dist/utils/message.js +242 -0
- package/dist/utils/message.js.map +1 -0
- package/dist/utils/request.d.ts +41 -0
- package/dist/utils/request.js +72 -0
- package/dist/utils/request.js.map +1 -0
- package/dist/utils/time.d.ts +6 -0
- package/dist/utils/time.js +45 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/url.d.ts +1 -0
- package/dist/utils/url.js +22 -0
- package/dist/utils/url.js.map +1 -0
- package/dist/utils/version.d.ts +1 -0
- package/dist/utils/version.js +15 -0
- package/dist/utils/version.js.map +1 -0
- package/package.json +35 -0
@@ -0,0 +1,687 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
const lodash_1 = require("lodash");
|
16
|
+
const conversation_1 = require("../../utils/conversation");
|
17
|
+
const message_1 = require("../../utils/message");
|
18
|
+
const version_1 = require("../../utils/version");
|
19
|
+
const sqlite_config_1 = __importDefault(require("./sqlite.config"));
|
20
|
+
const constants_1 = require("../../constants");
|
21
|
+
const createVersionTableSql = 'CREATE TABLE IF NOT EXISTS T_SCRIPT_VERSION( currentVersion VARCHAR )';
|
22
|
+
const selectCurrentVersionSql = 'SELECT currentVersion FROM T_SCRIPT_VERSION';
|
23
|
+
const updateVersionSql = 'UPDATE T_SCRIPT_VERSION SET currentVersion=?';
|
24
|
+
const insertVersionSql = 'insert into T_SCRIPT_VERSION values(?)';
|
25
|
+
class SqliteStorage {
|
26
|
+
constructor(dbConstructor) {
|
27
|
+
this.dbConstructor = dbConstructor;
|
28
|
+
}
|
29
|
+
createStores(userId) {
|
30
|
+
var _a;
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
32
|
+
this.dbConstructor.enablePromise(true);
|
33
|
+
this.db = yield this.dbConstructor.openDatabase({
|
34
|
+
name: sqlite_config_1.default.dbName + '_' + userId + '_' + sqlite_config_1.default.dbVersion + '.db',
|
35
|
+
});
|
36
|
+
console.log('open db: ', (_a = this.db) === null || _a === void 0 ? void 0 : _a.dbname);
|
37
|
+
yield this.updateLatestVersion();
|
38
|
+
});
|
39
|
+
}
|
40
|
+
updateLatestVersion() {
|
41
|
+
var _a, _b, _c;
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
43
|
+
const dbScriptVersions = sqlite_config_1.default.dbScriptVersions;
|
44
|
+
if (dbScriptVersions.length === 0) {
|
45
|
+
console.warn('updateScriptToLatest error! no dbScriptVersions');
|
46
|
+
return;
|
47
|
+
}
|
48
|
+
const latestVersion = dbScriptVersions[dbScriptVersions.length - 1];
|
49
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql(createVersionTableSql));
|
50
|
+
const [version] = yield this.queryList(selectCurrentVersionSql);
|
51
|
+
console.log('currentVersion: ', version);
|
52
|
+
if (!version) {
|
53
|
+
// 执行所有版本的脚本
|
54
|
+
yield this.executeScripts(dbScriptVersions.reduce((acc, cur) => acc.concat(cur.value), []));
|
55
|
+
// 插入最新版本记录
|
56
|
+
yield ((_b = this.db) === null || _b === void 0 ? void 0 : _b.executeSql(insertVersionSql, [latestVersion.key]));
|
57
|
+
}
|
58
|
+
else {
|
59
|
+
if (version.currentVersion !== latestVersion.key) {
|
60
|
+
// 执行所有新版本的脚本
|
61
|
+
yield this.executeScripts(dbScriptVersions
|
62
|
+
.filter(item => (0, version_1.isLaterVersion)(item.key, version.currentVersion))
|
63
|
+
.reduce((acc, cur) => acc.concat(cur.value), []));
|
64
|
+
// 更新记录最新版本
|
65
|
+
yield ((_c = this.db) === null || _c === void 0 ? void 0 : _c.executeSql(updateVersionSql, [latestVersion.key]));
|
66
|
+
}
|
67
|
+
}
|
68
|
+
});
|
69
|
+
}
|
70
|
+
// 头像操作-----start
|
71
|
+
getAvatar(id) {
|
72
|
+
return __awaiter(this, void 0, void 0, function* () {
|
73
|
+
const [avatar] = yield this.queryList('SELECT * FROM T_AVATARS WHERE avatarsId=?', [id]);
|
74
|
+
return avatar;
|
75
|
+
});
|
76
|
+
}
|
77
|
+
insertAvatar(avatar) {
|
78
|
+
return __awaiter(this, void 0, void 0, function* () {
|
79
|
+
yield this.db.executeSql('INSERT INTO T_AVATARS VALUES (?, ?)', [avatar.avatarsId, avatar.url]);
|
80
|
+
});
|
81
|
+
}
|
82
|
+
updateAvatar(avatar) {
|
83
|
+
return __awaiter(this, void 0, void 0, function* () {
|
84
|
+
yield this.db.executeSql('UPDATE T_AVATARS SET url=? WHERE avatarsId=?', [avatar.url, avatar.avatarsId]);
|
85
|
+
});
|
86
|
+
}
|
87
|
+
selectAvatar() {
|
88
|
+
return this.queryList('Select * FROM T_AVATARS', []);
|
89
|
+
}
|
90
|
+
// 头像操作-----end
|
91
|
+
// 消息收藏操作----start
|
92
|
+
insertCollection(collection) {
|
93
|
+
var _a;
|
94
|
+
return __awaiter(this, void 0, void 0, function* () {
|
95
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql('INSERT INTO T_COLLECTION VALUES (?, ?, ?, ?, ?, ?, ?, ?)', [
|
96
|
+
collection.messageSeq,
|
97
|
+
collection.conversationId,
|
98
|
+
collection.conversationName,
|
99
|
+
collection.payloadType,
|
100
|
+
collection.messageTime,
|
101
|
+
collection.searchText,
|
102
|
+
collection.collectTime,
|
103
|
+
JSON.stringify(collection.payload),
|
104
|
+
]));
|
105
|
+
});
|
106
|
+
}
|
107
|
+
isCollection(messageSeq) {
|
108
|
+
return __awaiter(this, void 0, void 0, function* () {
|
109
|
+
const [collection] = yield this.queryList('SELECT * FROM T_COLLECTION WHERE messageSeq=?', [
|
110
|
+
messageSeq,
|
111
|
+
]);
|
112
|
+
return !!collection;
|
113
|
+
});
|
114
|
+
}
|
115
|
+
selectCollections(keyword) {
|
116
|
+
return __awaiter(this, void 0, void 0, function* () {
|
117
|
+
const results = yield this.queryList('SELECT * FROM T_COLLECTION WHERE searchText LIKE ? ORDER BY collectTime DESC', [`%${keyword}%`]);
|
118
|
+
return results.map(item => {
|
119
|
+
try {
|
120
|
+
item.payload = JSON.parse(item.payload);
|
121
|
+
}
|
122
|
+
catch (e) {
|
123
|
+
item.payload = {};
|
124
|
+
}
|
125
|
+
return item;
|
126
|
+
});
|
127
|
+
});
|
128
|
+
}
|
129
|
+
// 消息收藏操作----end
|
130
|
+
// 会话操作----start
|
131
|
+
cleanConversations() {
|
132
|
+
var _a;
|
133
|
+
return __awaiter(this, void 0, void 0, function* () {
|
134
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql('DELETE FROM T_CONVERSATION'));
|
135
|
+
});
|
136
|
+
}
|
137
|
+
selectConversations() {
|
138
|
+
return __awaiter(this, void 0, void 0, function* () {
|
139
|
+
const data = yield this.executeQuery('T_CONVERSATION', { order: 'enableTop desc,time desc' });
|
140
|
+
return data.map(conversation_1.conversationMap);
|
141
|
+
});
|
142
|
+
}
|
143
|
+
selectConversationByType(type) {
|
144
|
+
return __awaiter(this, void 0, void 0, function* () {
|
145
|
+
const data = yield this.executeQuery('T_CONVERSATION', {
|
146
|
+
order: 'enableTop desc,time desc',
|
147
|
+
cond: { type },
|
148
|
+
});
|
149
|
+
return data.map(conversation_1.conversationMap);
|
150
|
+
});
|
151
|
+
}
|
152
|
+
selectConversationById(id) {
|
153
|
+
return __awaiter(this, void 0, void 0, function* () {
|
154
|
+
const [conversation] = yield this.queryList('SELECT * FROM T_CONVERSATION WHERE id=?', [id]);
|
155
|
+
return conversation ? (0, conversation_1.conversationMap)(conversation) : null;
|
156
|
+
});
|
157
|
+
}
|
158
|
+
insertConversation(conversation) {
|
159
|
+
var _a;
|
160
|
+
return __awaiter(this, void 0, void 0, function* () {
|
161
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql('insert into T_CONVERSATION values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', [
|
162
|
+
conversation.id,
|
163
|
+
conversation.type,
|
164
|
+
conversation.name,
|
165
|
+
conversation.avatars,
|
166
|
+
conversation.text,
|
167
|
+
conversation.enableNoDisturb,
|
168
|
+
conversation.enableTop,
|
169
|
+
conversation.time,
|
170
|
+
conversation.draftText,
|
171
|
+
conversation.errorText,
|
172
|
+
conversation.lastMessageSeq,
|
173
|
+
conversation.unreadCount,
|
174
|
+
conversation.showName,
|
175
|
+
conversation.imageBackground,
|
176
|
+
JSON.stringify(conversation.tipsList ? conversation.tipsList : []),
|
177
|
+
conversation.memberTotalCount || 0,
|
178
|
+
]));
|
179
|
+
});
|
180
|
+
}
|
181
|
+
updateConversationById(conversation) {
|
182
|
+
var _a;
|
183
|
+
return __awaiter(this, void 0, void 0, function* () {
|
184
|
+
const data = yield this.selectConversationById(conversation.id);
|
185
|
+
if (data) {
|
186
|
+
Object.assign(data, conversation);
|
187
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql(`update T_CONVERSATION set
|
188
|
+
type = ?,
|
189
|
+
name = ?,
|
190
|
+
avatars = ?,
|
191
|
+
text = ?,
|
192
|
+
enableNoDisturb = ?,
|
193
|
+
enableTop = ?,
|
194
|
+
time = ?,
|
195
|
+
draftText = ?,
|
196
|
+
errorText = ?,
|
197
|
+
lastMessageSeq = ?,
|
198
|
+
unreadCount = ?,
|
199
|
+
imageBackground = ?,
|
200
|
+
tipsList = ?,
|
201
|
+
memberTotalCount = ?
|
202
|
+
where id = ?`, [
|
203
|
+
data.type,
|
204
|
+
data.name,
|
205
|
+
data.avatars,
|
206
|
+
data.text,
|
207
|
+
data.enableNoDisturb,
|
208
|
+
data.enableTop,
|
209
|
+
data.time,
|
210
|
+
data.draftText,
|
211
|
+
data.errorText,
|
212
|
+
data.lastMessageSeq,
|
213
|
+
data.unreadCount,
|
214
|
+
data.imageBackground,
|
215
|
+
JSON.stringify(data.tipsList),
|
216
|
+
data.memberTotalCount,
|
217
|
+
data.id,
|
218
|
+
]));
|
219
|
+
}
|
220
|
+
});
|
221
|
+
}
|
222
|
+
deleteConversation(id) {
|
223
|
+
return __awaiter(this, void 0, void 0, function* () {
|
224
|
+
yield this.db.executeSql('delete from T_CONVERSATION where id=?', [id]);
|
225
|
+
});
|
226
|
+
}
|
227
|
+
// 会话操作----end
|
228
|
+
// 消息操作----start
|
229
|
+
insertMessage(message) {
|
230
|
+
var _a;
|
231
|
+
return __awaiter(this, void 0, void 0, function* () {
|
232
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql('insert into T_MESSAGE values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', [
|
233
|
+
message.messageSeq,
|
234
|
+
message.messageTime,
|
235
|
+
message.messageStatus,
|
236
|
+
message.conversationId,
|
237
|
+
message.conversationType,
|
238
|
+
message.messageFrom,
|
239
|
+
message.messageFromName,
|
240
|
+
message.messageTo,
|
241
|
+
message.messageToName,
|
242
|
+
message.isMyMessage,
|
243
|
+
message.payloadType,
|
244
|
+
JSON.stringify(message.payload),
|
245
|
+
message.searchText,
|
246
|
+
message.busiNotifyType,
|
247
|
+
JSON.stringify(message.receiptBackList || []),
|
248
|
+
]));
|
249
|
+
});
|
250
|
+
}
|
251
|
+
insertMessageEmitting(message) {
|
252
|
+
var _a;
|
253
|
+
return __awaiter(this, void 0, void 0, function* () {
|
254
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql('insert into T_MESSAGE_EMITTING values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', [
|
255
|
+
message.messageSeq,
|
256
|
+
message.messageTime,
|
257
|
+
message.messageStatus,
|
258
|
+
message.conversationId,
|
259
|
+
message.conversationType,
|
260
|
+
message.messageFrom,
|
261
|
+
message.messageFromName,
|
262
|
+
message.messageTo,
|
263
|
+
message.messageToName,
|
264
|
+
message.isMyMessage,
|
265
|
+
message.payloadType,
|
266
|
+
JSON.stringify(message.payload),
|
267
|
+
message.searchText,
|
268
|
+
message.busiNotifyType,
|
269
|
+
JSON.stringify(message.receiptBackList || []),
|
270
|
+
]));
|
271
|
+
});
|
272
|
+
}
|
273
|
+
updateMessageEmitting(message) {
|
274
|
+
var _a;
|
275
|
+
return __awaiter(this, void 0, void 0, function* () {
|
276
|
+
const [data] = yield this.selectMessageEmitting({ messageSeq: message.messageSeq }, false);
|
277
|
+
if (data) {
|
278
|
+
Object.assign(data, message);
|
279
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql(`update T_MESSAGE_EMITTING set
|
280
|
+
messageTime = ?,
|
281
|
+
messageStatus = ?,
|
282
|
+
conversationId = ?,
|
283
|
+
conversationType = ?,
|
284
|
+
messageFrom = ?,
|
285
|
+
messageFromName = ?,
|
286
|
+
messageTo = ?,
|
287
|
+
messageToName = ?,
|
288
|
+
isMyMessage = ?,
|
289
|
+
payloadType = ?,
|
290
|
+
payload = ?,
|
291
|
+
searchText = ?,
|
292
|
+
busiNotifyType =?,
|
293
|
+
receiptBackList = ?
|
294
|
+
where messageSeq = ?`, [
|
295
|
+
data.messageTime,
|
296
|
+
data.messageStatus,
|
297
|
+
data.conversationId,
|
298
|
+
data.conversationType,
|
299
|
+
data.messageFrom,
|
300
|
+
data.messageFromName,
|
301
|
+
data.messageTo,
|
302
|
+
data.messageToName,
|
303
|
+
data.isMyMessage,
|
304
|
+
data.payloadType,
|
305
|
+
data.payload,
|
306
|
+
data.searchText,
|
307
|
+
data.busiNotifyType,
|
308
|
+
data.receiptBackList,
|
309
|
+
data.messageSeq,
|
310
|
+
]));
|
311
|
+
}
|
312
|
+
});
|
313
|
+
}
|
314
|
+
deleteMessageEmittingByPK(messageSeq) {
|
315
|
+
var _a;
|
316
|
+
return __awaiter(this, void 0, void 0, function* () {
|
317
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql('delete from T_MESSAGE_EMITTING where messageSeq=?', [messageSeq]));
|
318
|
+
});
|
319
|
+
}
|
320
|
+
deleteMessageEmittingByPKBatch(messageSeqs) {
|
321
|
+
var _a;
|
322
|
+
return __awaiter(this, void 0, void 0, function* () {
|
323
|
+
const cond = messageSeqs.map(() => '?').join();
|
324
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql(`delete from T_MESSAGE_EMITTING where messageSeq in (${cond})`, messageSeqs));
|
325
|
+
});
|
326
|
+
}
|
327
|
+
selectConversationMessageCount(keyword) {
|
328
|
+
const sql = `select conversationId,count(*) count from T_MESSAGE where messageStatus != 'undo' and searchText like '%${keyword}%' and conversationType in(?,?) group by conversationId`;
|
329
|
+
return this.queryList(sql, [
|
330
|
+
constants_1.ConversationType.C2C,
|
331
|
+
constants_1.ConversationType.C2G,
|
332
|
+
]);
|
333
|
+
}
|
334
|
+
selectMessageEmitting(cond, map = true) {
|
335
|
+
return __awaiter(this, void 0, void 0, function* () {
|
336
|
+
const data = yield this.executeQuery('T_MESSAGE_EMITTING', {
|
337
|
+
cond,
|
338
|
+
order: 'messageTime DESC',
|
339
|
+
});
|
340
|
+
return map ? data.map(message_1.messageMap) : data;
|
341
|
+
});
|
342
|
+
}
|
343
|
+
selectMessage(cond, map) {
|
344
|
+
return __awaiter(this, void 0, void 0, function* () {
|
345
|
+
const {} = cond;
|
346
|
+
const data = yield this.executeQuery('T_MESSAGE', {
|
347
|
+
cond,
|
348
|
+
order: 'messageSeq DESC',
|
349
|
+
limit: 15,
|
350
|
+
offset: 0,
|
351
|
+
});
|
352
|
+
return map ? data.map(message_1.messageMap) : data;
|
353
|
+
});
|
354
|
+
}
|
355
|
+
selectBeforeMessages(cond, after = false) {
|
356
|
+
return __awaiter(this, void 0, void 0, function* () {
|
357
|
+
const { keyword, busiNotifyType, conversationId, messageSeq, include, limit } = cond;
|
358
|
+
let sql = 'select * from T_MESSAGE WHERE 1=1';
|
359
|
+
const params = [];
|
360
|
+
if (include) {
|
361
|
+
sql += ` and messageSeq ${after ? '>=' : '<='} ? `;
|
362
|
+
params.push(messageSeq);
|
363
|
+
}
|
364
|
+
else {
|
365
|
+
sql += ` and messageSeq ${after ? '>' : '<'} ? `;
|
366
|
+
params.push(messageSeq);
|
367
|
+
}
|
368
|
+
if (keyword && keyword !== '') {
|
369
|
+
sql += ` and searchText like '%${keyword}%' `;
|
370
|
+
params.push(keyword);
|
371
|
+
}
|
372
|
+
if (conversationId) {
|
373
|
+
sql += ' and conversationId = ? ';
|
374
|
+
params.push(conversationId);
|
375
|
+
}
|
376
|
+
if (busiNotifyType) {
|
377
|
+
sql += ' and busiNotifyType = ? ';
|
378
|
+
params.push(busiNotifyType);
|
379
|
+
}
|
380
|
+
sql += ' order by messageTime desc LIMIT ? ';
|
381
|
+
params.push(limit);
|
382
|
+
const data = yield this.queryList(sql, params);
|
383
|
+
return data.map(message_1.messageMap);
|
384
|
+
});
|
385
|
+
}
|
386
|
+
selectAfterMessages(cond) {
|
387
|
+
return __awaiter(this, void 0, void 0, function* () {
|
388
|
+
const data = yield this.selectBeforeMessages(cond, true);
|
389
|
+
return data.reverse();
|
390
|
+
});
|
391
|
+
}
|
392
|
+
selectRangeMessage(cond) {
|
393
|
+
return __awaiter(this, void 0, void 0, function* () {
|
394
|
+
const sql = 'SELECT * FROM T_MESSAGE WHERE conversationId = ? AND messageSeq < ? AND messageSeq >= ? ORDER BY messageTime DESC';
|
395
|
+
const data = yield this.queryList(sql, [
|
396
|
+
cond.conversationId,
|
397
|
+
cond.messageSeqBegin,
|
398
|
+
cond.messageSeqEnd,
|
399
|
+
]);
|
400
|
+
return data.map(message_1.messageMap);
|
401
|
+
});
|
402
|
+
}
|
403
|
+
selectMessageForBackup(cond) {
|
404
|
+
return __awaiter(this, void 0, void 0, function* () {
|
405
|
+
let sql = 'select * from T_MESSAGE where 1 = 1 ';
|
406
|
+
const param = [];
|
407
|
+
if (cond.messageSeq) {
|
408
|
+
sql += ' and messageSeq > ?';
|
409
|
+
param.push(cond.messageSeq);
|
410
|
+
}
|
411
|
+
sql += ' order by messageSeq desc limit ? offset ?';
|
412
|
+
param.push(...[cond.limit, cond.offset]);
|
413
|
+
const list = yield this.queryList(sql, param);
|
414
|
+
let lastMessageSeq = '';
|
415
|
+
const data = list.map(item => {
|
416
|
+
const newItem = (0, message_1.messageMap)(item);
|
417
|
+
if (newItem.payload.localPath) {
|
418
|
+
// 清除本地文件目录
|
419
|
+
newItem.payload.localPath = undefined;
|
420
|
+
}
|
421
|
+
lastMessageSeq = newItem.messageSeq;
|
422
|
+
return JSON.stringify(newItem);
|
423
|
+
});
|
424
|
+
return {
|
425
|
+
data,
|
426
|
+
lastMessageSeq,
|
427
|
+
};
|
428
|
+
});
|
429
|
+
}
|
430
|
+
countMessageAfterSeq(messageSeq) {
|
431
|
+
return __awaiter(this, void 0, void 0, function* () {
|
432
|
+
let sql = 'select count(*) as count from T_MESSAGE';
|
433
|
+
const param = [];
|
434
|
+
if (messageSeq) {
|
435
|
+
sql += ' where messageSeq > ?';
|
436
|
+
param.push(messageSeq);
|
437
|
+
}
|
438
|
+
const [item] = yield this.queryList(sql, param);
|
439
|
+
return (item === null || item === void 0 ? void 0 : item.count) || 0;
|
440
|
+
});
|
441
|
+
}
|
442
|
+
existMessage(messageSeq) {
|
443
|
+
return __awaiter(this, void 0, void 0, function* () {
|
444
|
+
const sql = 'select messageSeq from T_MESSAGE where messageSeq = ?';
|
445
|
+
const list = yield this.queryList(sql, [messageSeq]);
|
446
|
+
return list.length > 0;
|
447
|
+
});
|
448
|
+
}
|
449
|
+
deleteMessageByPK(messageSeq) {
|
450
|
+
var _a;
|
451
|
+
return __awaiter(this, void 0, void 0, function* () {
|
452
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql('delete from T_MESSAGE where messageSeq = ?', [messageSeq]));
|
453
|
+
});
|
454
|
+
}
|
455
|
+
deleteMessageByPKBatch(messageSeqs) {
|
456
|
+
var _a;
|
457
|
+
return __awaiter(this, void 0, void 0, function* () {
|
458
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql(`delete from T_MESSAGE where messageSeq in (${messageSeqs.map(() => '?').join()})`, messageSeqs));
|
459
|
+
});
|
460
|
+
}
|
461
|
+
updateMessageStatus(message) {
|
462
|
+
var _a;
|
463
|
+
return __awaiter(this, void 0, void 0, function* () {
|
464
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql('update T_MESSAGE set messageStatus = ? where messageSeq = ?', [
|
465
|
+
message.messageStatus,
|
466
|
+
message.messageSeq,
|
467
|
+
]));
|
468
|
+
});
|
469
|
+
}
|
470
|
+
updateMessage(message) {
|
471
|
+
var _a;
|
472
|
+
return __awaiter(this, void 0, void 0, function* () {
|
473
|
+
const [data] = yield this.selectMessage({ messageSeq: message.messageSeq }, true);
|
474
|
+
if (data) {
|
475
|
+
Object.assign(data, message);
|
476
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql(`update T_MESSAGE set
|
477
|
+
messageTime = ?,
|
478
|
+
messageStatus = ?,
|
479
|
+
conversationId = ?,
|
480
|
+
conversationType = ?,
|
481
|
+
messageFrom = ?,
|
482
|
+
messageFromName = ?,
|
483
|
+
messageTo = ?,
|
484
|
+
messageToName = ?,
|
485
|
+
isMyMessage = ?,
|
486
|
+
payloadType = ?,
|
487
|
+
payload = ?,
|
488
|
+
searchText = ?,
|
489
|
+
busiNotifyType =?,
|
490
|
+
receiptBackList = ?
|
491
|
+
where messageSeq = ?`, [
|
492
|
+
data.messageTime,
|
493
|
+
data.messageStatus,
|
494
|
+
data.conversationId,
|
495
|
+
data.conversationType,
|
496
|
+
data.messageFrom,
|
497
|
+
data.messageFromName,
|
498
|
+
data.messageTo,
|
499
|
+
data.messageToName,
|
500
|
+
data.isMyMessage,
|
501
|
+
data.payloadType,
|
502
|
+
JSON.stringify(data.payload),
|
503
|
+
data.searchText,
|
504
|
+
data.busiNotifyType,
|
505
|
+
JSON.stringify(data.receiptBackList || []),
|
506
|
+
data.messageSeq,
|
507
|
+
]));
|
508
|
+
}
|
509
|
+
});
|
510
|
+
}
|
511
|
+
searchMessages(cond) {
|
512
|
+
return __awaiter(this, void 0, void 0, function* () {
|
513
|
+
const { keyword, conversationId, busiNotifyType, payloadType, limit, offset, order = ' messageSeq desc' } = cond;
|
514
|
+
const data = yield this.executeQuery('T_MESSAGE', {
|
515
|
+
cond: {
|
516
|
+
conversationId,
|
517
|
+
payloadType,
|
518
|
+
busiNotifyType,
|
519
|
+
},
|
520
|
+
like: keyword ? { key: 'searchText', value: keyword } : undefined,
|
521
|
+
notEqual: {
|
522
|
+
messageStatus: 'undo',
|
523
|
+
},
|
524
|
+
order: order || ' messageSeq desc',
|
525
|
+
limit,
|
526
|
+
offset,
|
527
|
+
});
|
528
|
+
return data.map(message_1.messageMap);
|
529
|
+
});
|
530
|
+
}
|
531
|
+
addReceiptBackList(messageSeq, receiptBack) {
|
532
|
+
return __awaiter(this, void 0, void 0, function* () {
|
533
|
+
const [data] = yield this.selectMessage({ messageSeq }, true);
|
534
|
+
if (data) {
|
535
|
+
data.receiptBackList = data.receiptBackList || [];
|
536
|
+
data.receiptBackList = [
|
537
|
+
...(data.receiptBackList || []).filter(item => item.receiptBackMessageStatus !== receiptBack.receiptBackMessageStatus),
|
538
|
+
receiptBack,
|
539
|
+
];
|
540
|
+
yield this.db.executeSql('UPDATE T_MESSAGE SET receiptBackList = ? WHERE messageSeq = ?', [
|
541
|
+
JSON.stringify(data.receiptBackList),
|
542
|
+
data.messageSeq,
|
543
|
+
]);
|
544
|
+
return data;
|
545
|
+
}
|
546
|
+
});
|
547
|
+
}
|
548
|
+
deleteConversationMessageEmitting(conversationId) {
|
549
|
+
var _a;
|
550
|
+
return __awaiter(this, void 0, void 0, function* () {
|
551
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql('delete from T_MESSAGE_EMITTING where conversationId = ?', [conversationId]));
|
552
|
+
});
|
553
|
+
}
|
554
|
+
deleteConversationMessage(conversationId) {
|
555
|
+
var _a;
|
556
|
+
return __awaiter(this, void 0, void 0, function* () {
|
557
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql('delete from T_MESSAGE where conversationId = ?', [conversationId]));
|
558
|
+
});
|
559
|
+
}
|
560
|
+
updateMyMessageStatus({ conversationId, messageFrom, messageStatus }) {
|
561
|
+
return __awaiter(this, void 0, void 0, function* () {
|
562
|
+
yield this.db.executeSql('update T_MESSAGE SET messageStatus = ? WHERE conversationId = ? and messageFrom = ?', [messageStatus, conversationId, messageFrom]);
|
563
|
+
});
|
564
|
+
}
|
565
|
+
// 消息操作----end
|
566
|
+
// 资源操作----start
|
567
|
+
insertResource(resource) {
|
568
|
+
var _a;
|
569
|
+
return __awaiter(this, void 0, void 0, function* () {
|
570
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql('insert into T_RESOURCE values (?,?)', [resource.url, resource.localPath]));
|
571
|
+
});
|
572
|
+
}
|
573
|
+
selectResource(cond) {
|
574
|
+
return this.executeQuery('T_RESOURCE', {
|
575
|
+
cond,
|
576
|
+
});
|
577
|
+
}
|
578
|
+
updateResource(resource) {
|
579
|
+
var _a;
|
580
|
+
return __awaiter(this, void 0, void 0, function* () {
|
581
|
+
const [old] = yield this.queryList('select * from T_RESOURCE where url = ?', [resource.url]);
|
582
|
+
if (old) {
|
583
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql('update T_RESOURCE set localPath = ? where url = ?', [
|
584
|
+
resource.localPath,
|
585
|
+
resource.url,
|
586
|
+
]));
|
587
|
+
}
|
588
|
+
else {
|
589
|
+
yield this.insertResource(resource);
|
590
|
+
}
|
591
|
+
});
|
592
|
+
}
|
593
|
+
// 资源操作----end
|
594
|
+
// 消息订阅----start
|
595
|
+
selectSubscribeMessageSeq(cond) {
|
596
|
+
return this.executeQuery('T_SUBSCRIBE_MESSAGE_SEQ', {
|
597
|
+
cond,
|
598
|
+
});
|
599
|
+
}
|
600
|
+
insertOrUpdateSubscribeMessageSeq(subscribe) {
|
601
|
+
var _a, _b;
|
602
|
+
return __awaiter(this, void 0, void 0, function* () {
|
603
|
+
const [data] = yield this.selectSubscribeMessageSeq({ subscribeId: subscribe.subscribeId });
|
604
|
+
if (data) {
|
605
|
+
if (data.lastMessageSeq > subscribe.lastMessageSeq) {
|
606
|
+
return;
|
607
|
+
}
|
608
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql('update T_SUBSCRIBE_MESSAGE_SEQ set lastMessageSeq = ? where subscribeId = ?', [
|
609
|
+
subscribe.lastMessageSeq,
|
610
|
+
subscribe.subscribeId,
|
611
|
+
]));
|
612
|
+
}
|
613
|
+
else {
|
614
|
+
yield ((_b = this.db) === null || _b === void 0 ? void 0 : _b.executeSql('insert into T_SUBSCRIBE_MESSAGE_SEQ values (?,?)', [
|
615
|
+
subscribe.subscribeId,
|
616
|
+
subscribe.lastMessageSeq,
|
617
|
+
]));
|
618
|
+
}
|
619
|
+
});
|
620
|
+
}
|
621
|
+
deleteSubscribeMessageSeq(subscribeId) {
|
622
|
+
var _a;
|
623
|
+
return __awaiter(this, void 0, void 0, function* () {
|
624
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql('delete from T_SUBSCRIBE_MESSAGE_SEQ where subscribeId = ?', [subscribeId]));
|
625
|
+
});
|
626
|
+
}
|
627
|
+
// 消息订阅----end
|
628
|
+
queryList(sql, params) {
|
629
|
+
var _a;
|
630
|
+
return __awaiter(this, void 0, void 0, function* () {
|
631
|
+
const result = yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql(sql, params));
|
632
|
+
if (Array.isArray(result)) {
|
633
|
+
return result[0].rows.raw();
|
634
|
+
}
|
635
|
+
return [];
|
636
|
+
});
|
637
|
+
}
|
638
|
+
executeQuery(table, query) {
|
639
|
+
const { cond = {}, notEqual = {}, like, limit, offset, order } = query;
|
640
|
+
let sql = `SELECT * FROM ${table} where 1 = 1`;
|
641
|
+
const params = [];
|
642
|
+
Object.keys(notEqual).forEach(key => {
|
643
|
+
sql += ` and COALESCE(${key}, '') != '${notEqual[key]}' `;
|
644
|
+
});
|
645
|
+
if (like && like.key && like.value.trim()) {
|
646
|
+
sql += ` and ${like.key} like '%${like.value}%'`;
|
647
|
+
}
|
648
|
+
Object.keys(cond).forEach(key => {
|
649
|
+
if ((0, lodash_1.isEmpty)(cond[key])) {
|
650
|
+
return;
|
651
|
+
}
|
652
|
+
sql += ' and ' + key + ' = ? ';
|
653
|
+
params.push(cond[key]);
|
654
|
+
});
|
655
|
+
if (order) {
|
656
|
+
sql += ' order by ' + order;
|
657
|
+
}
|
658
|
+
if (limit || limit === 0) {
|
659
|
+
sql += ' LIMIT ? ';
|
660
|
+
params.push(limit);
|
661
|
+
}
|
662
|
+
if (offset || offset === 0) {
|
663
|
+
sql += ' OFFSET ? ';
|
664
|
+
params.push(offset);
|
665
|
+
}
|
666
|
+
console.log('query: ', sql, 'params: ', params);
|
667
|
+
return this.queryList(sql, params);
|
668
|
+
}
|
669
|
+
executeScripts(scripts) {
|
670
|
+
var _a;
|
671
|
+
return __awaiter(this, void 0, void 0, function* () {
|
672
|
+
for (const script of scripts) {
|
673
|
+
yield ((_a = this.db) === null || _a === void 0 ? void 0 : _a.executeSql(script));
|
674
|
+
}
|
675
|
+
});
|
676
|
+
}
|
677
|
+
close() {
|
678
|
+
var _a;
|
679
|
+
(_a = this.db) === null || _a === void 0 ? void 0 : _a.close(() => {
|
680
|
+
console.log('close db');
|
681
|
+
}, e => {
|
682
|
+
console.log('close db error', e);
|
683
|
+
});
|
684
|
+
}
|
685
|
+
}
|
686
|
+
exports.default = SqliteStorage;
|
687
|
+
//# sourceMappingURL=index.js.map
|