Skip to content

Commit feac8a5

Browse files
committed
chore(release): v4.0.0-beta.5
1 parent d59d79f commit feac8a5

File tree

3 files changed

+155
-44
lines changed

3 files changed

+155
-44
lines changed

changelog.md

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,39 @@
1+
<a name="4.0.0-beta.5"></a>
2+
3+
# [4.0.0-beta.5](https://github.com/leancloud/js-realtime-sdk/compare/v4.0.0-beta.4...v4.0.0-beta.5) (2018-04-13)
4+
5+
### Bug Fixes
6+
7+
* 修复了多个导致切换用户时连接状态异常的问题。
8+
9+
### Features
10+
11+
* 支持按照富媒体消息类型查询历史消息。`Conversation#queryMessages` 方法增加了 `type` 参数用于指定查询的消息的类型
12+
13+
<details>
14+
<summary>示例</summary>
15+
16+
```js
17+
// 限定查询图片消息
18+
conversation
19+
.queryMessage({
20+
type: ImageMessage.TYPE,
21+
})
22+
.then(console.log)
23+
.catch(console.error);
24+
```
25+
26+
</details>
27+
28+
* 新增枚举 `Event`。SDK 派发的事件的名称是全小写风格的字符串。当事件的名称由多个单词组成时,全小写风格的命名会很难辩识(例如 `unreadmessagescountupdate`)。SDK 现在提供了事件常量枚举 `Event`,你可以使用 `Event.UNREAD_MESSAGES_COUNT_UPDATE` 来代替 `unreadmessagescountupdate` 了。
29+
* 引入了更加可靠的通知机制。在断线期间发生的 `INVITED``KICKED` 事件,现在会在断线重连成功后收到。
30+
31+
### BREAKING CHANGES
32+
33+
* 不再支持下列运行环境(SDK 应该仍能在这些环境下工作,但我们不再对其进行测试了):
34+
* Chrome < 45
35+
* iOS < 9.3
36+
137
<a name="4.0.0-beta.4"></a>
238

339
# 4.0.0-beta.4 (2018-02-06)
@@ -144,8 +180,8 @@
144180

145181
* 初始化 `Realtime` 现在需要 `appKey` 参数。
146182

147-
<details>
148-
<summary>示例</summary>
183+
<details>
184+
<summary>示例</summary>
149185

150186
```diff
151187
const realtime = new Realtime({
@@ -154,12 +190,12 @@
154190
});
155191
```
156192

157-
</details>
193+
</details>
158194

159195
* 现在所有异步 API 的异常都是以异步的方式抛出。我们还更新了 API 文档,标出了 API 的异步属性。
160196

161-
<details>
162-
<summary>示例</summary>
197+
<details>
198+
<summary>示例</summary>
163199

164200
```javascript
165201
// before
@@ -175,13 +211,13 @@
175211
});
176212
```
177213

178-
</details>
214+
</details>
179215

180216
* 为了更好的隔离服务,我们为每个应用提供了独立的域名。对于小程序用户,请前往 [《小程序域名白名单配置》](https://leancloud.cn/docs/weapp-domains.html) 更新域名白名单。
181217
* 移除了 v3 中被标记为废弃的 API,包括:
182218

183-
<details>
184-
<summary>移除 API 列表</summary>
219+
<details>
220+
<summary>移除 API 列表</summary>
185221

186222
* `IMClient`
187223
* `#markAllAsRead` 方法
@@ -194,10 +230,11 @@
194230
* `ConversationQuery`
195231
* `#withLastMessages` 方法
196232
* `Message`
233+
197234
* `needReceipt``transient` 属性
198235
* `#setNeedReceipt``#setTransient` 方法
199236

200-
</details>
237+
</details>
201238

202239
### Features
203240

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "leancloud-realtime",
3-
"version": "4.0.0-beta.4",
3+
"version": "4.0.0-beta.5",
44
"description": "LeanCloud Realtime Message JavaScript SDK",
55
"main": "./dist/realtime.js",
66
"jsnext:main": "./src/index.js",

realtime.d.ts

Lines changed: 108 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,47 @@
1-
declare module LeanCloudRealtime {
1+
declare namespace LeanCloudRealtime {
22
interface AVUser {
33
getSessionToken(): string;
44
}
55

66
interface SignatureResult {
7-
signature: string,
8-
timestamp: number,
9-
nonce: string,
7+
signature: string;
8+
timestamp: number;
9+
nonce: string;
1010
}
1111
type SignatureFactoryResult = Promise<SignatureResult> | SignatureResult;
1212

1313
export class Realtime extends EventEmitter {
14-
constructor(options: { appId: string, appKey: string, region?: string, pushOfflineMessages?: boolean, noBinary?: boolean, ssl?: boolean, server?: string|{RTMRouter: string, api: string}, RTMServers?: string|string[], plugins?: Array<Plugin> });
14+
constructor(options: {
15+
appId: string;
16+
appKey: string;
17+
region?: string;
18+
pushOfflineMessages?: boolean;
19+
noBinary?: boolean;
20+
ssl?: boolean;
21+
server?: string | { RTMRouter: string; api: string };
22+
RTMServers?: string | string[];
23+
plugins?: Array<Plugin>;
24+
});
1525
createIMClient(
16-
client: string|AVUser,
26+
client: string | AVUser,
1727
options?: {
18-
signatureFactory?: (clientId: string) => SignatureFactoryResult,
19-
conversationSignatureFactory?: (clientId: string, conversationId: string, targetIds: string[], action: string) => SignatureFactoryResult,
20-
blacklistSignatureFactory?: (clientId: string, conversationId: string, targetIds: string[], action: string) => SignatureFactoryResult,
21-
tag?: string,
22-
isReconnect?: boolean,
28+
signatureFactory?: (clientId: string) => SignatureFactoryResult;
29+
conversationSignatureFactory?: (
30+
clientId: string,
31+
conversationId: string,
32+
targetIds: string[],
33+
action: string
34+
) => SignatureFactoryResult;
35+
blacklistSignatureFactory?: (
36+
clientId: string,
37+
conversationId: string,
38+
targetIds: string[],
39+
action: string
40+
) => SignatureFactoryResult;
41+
tag?: string;
42+
isReconnect?: boolean;
2343
},
24-
tag?: string,
44+
tag?: string
2545
): Promise<IMClient>;
2646
static defineConversationProperty(prop: string, descriptor?: Object);
2747
register(messageClass: AVMessage[]);
@@ -31,14 +51,28 @@ declare module LeanCloudRealtime {
3151
class IMClient extends EventEmitter {
3252
id: string;
3353
close(): Promise<void>;
34-
createConversation(options: { members?: string[], name?: string, transient?: boolean, unique?: boolean, [key: string]: any }): Promise<ConversationBase>;
35-
createChatRoom(options: { name?: string, [key: string]: any }): Promise<ChatRoom>;
36-
createTemporaryConversation(options: { members?: string[], ttl?: number }): Promise<TemporaryConversation>;
54+
createConversation(options: {
55+
members?: string[];
56+
name?: string;
57+
transient?: boolean;
58+
unique?: boolean;
59+
[key: string]: any;
60+
}): Promise<ConversationBase>;
61+
createChatRoom(options: {
62+
name?: string;
63+
[key: string]: any;
64+
}): Promise<ChatRoom>;
65+
createTemporaryConversation(options: {
66+
members?: string[];
67+
ttl?: number;
68+
}): Promise<TemporaryConversation>;
3769
getConversation(id: string, noCache?: boolean): Promise<ConversationBase>;
3870
getQuery(): ConversationQuery<PresistentConversation>;
3971
getServiceConversationQuery(): ConversationQuery<ServiceConversation>;
4072
getChatRoomQuery(): ConversationQuery<ChatRoom>;
41-
markAllAsRead(conversations: ConversationBase[]): Promise<Array<ConversationBase>>;
73+
markAllAsRead(
74+
conversations: ConversationBase[]
75+
): Promise<Array<ConversationBase>>;
4276
ping(clientIds: string[]): Promise<Array<string>>;
4377
parseMessage(json: Object): Promise<AVMessage>;
4478
parseConversation(json: Object): Promise<ConversationBase>;
@@ -74,8 +108,8 @@ declare module LeanCloudRealtime {
74108
withMembers(peerIds: string[], includeSelf: boolean): this;
75109
}
76110
/**
77-
* 对话
78-
*/
111+
* 对话
112+
*/
79113
class ConversationBase extends EventEmitter {
80114
id: string;
81115
lastMessage?: Message;
@@ -87,13 +121,46 @@ declare module LeanCloudRealtime {
87121
readonly unreadMessagesMentioned: Boolean;
88122
[key: string]: any;
89123
// constructor();
90-
createMessagesIterator(option: { limit?: number, beforeTime?: Date, beforeMessageId?: string });
124+
createMessagesIterator(option: {
125+
limit?: number;
126+
beforeTime?: Date;
127+
beforeMessageId?: string;
128+
});
91129
read(): Promise<this>;
92130
fetchReceiptTimestamps(): Promise<this>;
93-
queryMessages(options: { beforeTime?: Date, beforeMessageId?: string, afterTime?: Date, afterMessageId?: string, limit?: number, type: number }): Promise<Array<Message>>;
94-
queryMessages(options: { startTime?: Date, startMessageId?: string, startClosed?: boolean, endTime?: Date, endMessageId?: string, endClosed?: boolean, limit?: number, type: number, direction?: MessageQueryDirection }): Promise<Array<Message>>;
95-
send<T extends Message>(message: T, options?: { pushData?: Object, priority?: MessagePriority, receipt?: boolean, transient?: boolean, will?: boolean }): Promise<T>;
96-
update<T extends Message>(message: MessagePointer, newMessage: T): Promise<T>;
131+
queryMessages(options: {
132+
beforeTime?: Date;
133+
beforeMessageId?: string;
134+
afterTime?: Date;
135+
afterMessageId?: string;
136+
limit?: number;
137+
type: number;
138+
}): Promise<Array<Message>>;
139+
queryMessages(options: {
140+
startTime?: Date;
141+
startMessageId?: string;
142+
startClosed?: boolean;
143+
endTime?: Date;
144+
endMessageId?: string;
145+
endClosed?: boolean;
146+
limit?: number;
147+
type: number;
148+
direction?: MessageQueryDirection;
149+
}): Promise<Array<Message>>;
150+
send<T extends Message>(
151+
message: T,
152+
options?: {
153+
pushData?: Object;
154+
priority?: MessagePriority;
155+
receipt?: boolean;
156+
transient?: boolean;
157+
will?: boolean;
158+
}
159+
): Promise<T>;
160+
update<T extends Message>(
161+
message: MessagePointer,
162+
newMessage: T
163+
): Promise<T>;
97164
recall(message: MessagePointer): Promise<RecalledMessage>;
98165
count(): Promise<number>;
99166
toJSON(): Object;
@@ -142,13 +209,20 @@ declare module LeanCloudRealtime {
142209
remove(clientIds: string[]): Promise<PartiallySuccess>;
143210
muteMembers(clientIds: string[]): Promise<PartiallySuccess>;
144211
unmuteMembers(clientIds: string[]): Promise<PartiallySuccess>;
145-
queryMutedMembers(options?: PagedQueryParams): Promise<PagedResults<string>>;
212+
queryMutedMembers(
213+
options?: PagedQueryParams
214+
): Promise<PagedResults<string>>;
146215
blockMembers(clientIds: string[]): Promise<PartiallySuccess>;
147216
unblockMembers(clientIds: string[]): Promise<PartiallySuccess>;
148-
queryBlockedMembers(options?: PagedQueryParams): Promise<PagedResults<string>>;
217+
queryBlockedMembers(
218+
options?: PagedQueryParams
219+
): Promise<PagedResults<string>>;
149220
getAllMemberInfo(): Promise<ConversationMemberInfo[]>;
150221
getMemberInfo(memberId: string): Promise<ConversationMemberInfo>;
151-
updateMemberRole(memberId: string, role: ConversationMemberRole): Promise<this>;
222+
updateMemberRole(
223+
memberId: string,
224+
role: ConversationMemberRole
225+
): Promise<this>;
152226
}
153227

154228
export class Conversation extends PresistentConversation {}
@@ -176,7 +250,7 @@ declare module LeanCloudRealtime {
176250
toJSON(): Object;
177251
}
178252

179-
type MessagePointer = Message | {id: string, timestamp: Date|number};
253+
type MessagePointer = Message | { id: string; timestamp: Date | number };
180254

181255
type Payload = Object | String | ArrayBuffer;
182256

@@ -214,7 +288,7 @@ declare module LeanCloudRealtime {
214288

215289
// 富媒体消息
216290
export class TypedMessage extends Message {
217-
static type: number;
291+
static TYPE: number;
218292
attributes: Object;
219293
text: string;
220294
readonly summary: string;
@@ -239,10 +313,10 @@ declare module LeanCloudRealtime {
239313
}
240314

241315
interface Middleware<T> {
242-
(target: T): T
316+
(target: T): T;
243317
}
244318
interface Decorator<T> {
245-
(target: T): void
319+
(target: T): void;
246320
}
247321

248322
export interface Plugin {
@@ -300,7 +374,7 @@ declare module LeanCloudRealtime {
300374
INVALID_MESSAGING_TARGET,
301375
MESSAGE_REJECTED_BY_APP,
302376
}
303-
377+
304378
export enum Event {
305379
DISCONNECT,
306380
RECONNECT,
@@ -310,7 +384,7 @@ declare module LeanCloudRealtime {
310384
ONLINE,
311385

312386
RECONNECT_ERROR,
313-
387+
314388
INVITED,
315389
KICKED,
316390
MEMBERS_JOINED,
@@ -338,8 +412,8 @@ declare module LeanCloudRealtime {
338412
INFO_UPDATED,
339413
}
340414

341-
export function messageType(type: number): Function
342-
export function messageField(fields: string[]): Function
415+
export function messageType(type: number): Function;
416+
export function messageField(fields: string[]): Function;
343417
}
344418

345419
export = LeanCloudRealtime;

0 commit comments

Comments
 (0)