@sendbird/sendbird-platform-sdk-typescript 2.1.2 → 2.1.5

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.
@@ -133,6 +133,8 @@ models/UpdateExtraDataInAMessageResponse.ts
133
133
  models/UpdatePushPreferencesForAChannelRequest.ts
134
134
  models/UpdatePushPreferencesForAChannelResponse.ts
135
135
  models/UpdatePushPreferencesRequest.ts
136
+ models/UpdatePushPreferencesRequestDndSchedulesInner.ts
137
+ models/UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner.ts
136
138
  models/UpdatePushPreferencesResponse.ts
137
139
  models/UpdateSpecificUserMetadataRequest.ts
138
140
  models/UpdateUserMetadataRequest.ts
@@ -114,6 +114,8 @@ export * from './UpdateExtraDataInAMessageResponse';
114
114
  export * from './UpdatePushPreferencesForAChannelRequest';
115
115
  export * from './UpdatePushPreferencesForAChannelResponse';
116
116
  export * from './UpdatePushPreferencesRequest';
117
+ export * from './UpdatePushPreferencesRequestDndSchedulesInner';
118
+ export * from './UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner';
117
119
  export * from './UpdatePushPreferencesResponse';
118
120
  export * from './UpdateSpecificUserMetadataRequest';
119
121
  export * from './UpdateUserMetadataRequest';
@@ -243,6 +245,8 @@ import { UpdateExtraDataInAMessageResponse } from './UpdateExtraDataInAMessageRe
243
245
  import { UpdatePushPreferencesForAChannelRequest, UpdatePushPreferencesForAChannelRequestPushTriggerOptionEnum } from './UpdatePushPreferencesForAChannelRequest';
244
246
  import { UpdatePushPreferencesForAChannelResponse } from './UpdatePushPreferencesForAChannelResponse';
245
247
  import { UpdatePushPreferencesRequest } from './UpdatePushPreferencesRequest';
248
+ import { UpdatePushPreferencesRequestDndSchedulesInner, UpdatePushPreferencesRequestDndSchedulesInnerDayOfWeekEnum } from './UpdatePushPreferencesRequestDndSchedulesInner';
249
+ import { UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner } from './UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner';
246
250
  import { UpdatePushPreferencesResponse } from './UpdatePushPreferencesResponse';
247
251
  import { UpdateSpecificUserMetadataRequest } from './UpdateSpecificUserMetadataRequest';
248
252
  import { UpdateUserMetadataRequest } from './UpdateUserMetadataRequest';
@@ -314,6 +318,7 @@ let enumsMap: Set<string> = new Set<string>([
314
318
  "UpdateCountPreferenceOfAChannelRequestCountPreferenceEnum",
315
319
  "UpdateCountPreferenceOfChannelByUrlResponseCountPreferenceEnum",
316
320
  "UpdatePushPreferencesForAChannelRequestPushTriggerOptionEnum",
321
+ "UpdatePushPreferencesRequestDndSchedulesInnerDayOfWeekEnum",
317
322
  "ViewCountPreferenceOfAChannelResponseCountPreferenceEnum",
318
323
  ]);
319
324
 
@@ -433,6 +438,8 @@ let typeMap: {[index: string]: any} = {
433
438
  "UpdatePushPreferencesForAChannelRequest": UpdatePushPreferencesForAChannelRequest,
434
439
  "UpdatePushPreferencesForAChannelResponse": UpdatePushPreferencesForAChannelResponse,
435
440
  "UpdatePushPreferencesRequest": UpdatePushPreferencesRequest,
441
+ "UpdatePushPreferencesRequestDndSchedulesInner": UpdatePushPreferencesRequestDndSchedulesInner,
442
+ "UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner": UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner,
436
443
  "UpdatePushPreferencesResponse": UpdatePushPreferencesResponse,
437
444
  "UpdateSpecificUserMetadataRequest": UpdateSpecificUserMetadataRequest,
438
445
  "UpdateUserMetadataRequest": UpdateUserMetadataRequest,
@@ -11,6 +11,7 @@
11
11
  */
12
12
 
13
13
  import { SendbirdPushTriggerOption } from './SendbirdPushTriggerOption';
14
+ import { UpdatePushPreferencesRequestDndSchedulesInner } from './UpdatePushPreferencesRequestDndSchedulesInner';
14
15
  import { HttpFile } from '../http/http';
15
16
 
16
17
  export class UpdatePushPreferencesRequest {
@@ -28,6 +29,7 @@ export class UpdatePushPreferencesRequest {
28
29
  'startHour'?: number;
29
30
  'startMin'?: number;
30
31
  'timezone'?: string;
32
+ 'dndSchedules'?: Array<UpdatePushPreferencesRequestDndSchedulesInner>;
31
33
 
32
34
  static readonly discriminator: string | undefined = undefined;
33
35
 
@@ -115,6 +117,12 @@ export class UpdatePushPreferencesRequest {
115
117
  "baseName": "timezone",
116
118
  "type": "string",
117
119
  "format": ""
120
+ },
121
+ {
122
+ "name": "dndSchedules",
123
+ "baseName": "dnd_schedules",
124
+ "type": "Array<UpdatePushPreferencesRequestDndSchedulesInner>",
125
+ "format": ""
118
126
  } ];
119
127
 
120
128
  static getAttributeTypeMap() {
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Sendbird Platform SDK
3
+ * Sendbird Platform API SDK [https://sendbird.com/docs/chat/v3/platform-api/getting-started/prepare-to-use-api](https://sendbird.com/docs/chat/v3/platform-api/getting-started/prepare-to-use-api) Contact Support: Name: Sendbird Email: [support@sendbird.com](https://mailto:support@sendbird.com)
4
+ *
5
+ * OpenAPI spec version: 1.0.0
6
+ * Contact: support@sendbird.com
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+
13
+ import { UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner } from './UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner';
14
+ import { HttpFile } from '../http/http';
15
+
16
+ export class UpdatePushPreferencesRequestDndSchedulesInner {
17
+ 'dayOfWeek'?: UpdatePushPreferencesRequestDndSchedulesInnerDayOfWeekEnum;
18
+ 'timeWindows'?: Array<UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner>;
19
+
20
+ static readonly discriminator: string | undefined = undefined;
21
+
22
+ static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [
23
+ {
24
+ "name": "dayOfWeek",
25
+ "baseName": "day_of_week",
26
+ "type": "UpdatePushPreferencesRequestDndSchedulesInnerDayOfWeekEnum",
27
+ "format": ""
28
+ },
29
+ {
30
+ "name": "timeWindows",
31
+ "baseName": "time_windows",
32
+ "type": "Array<UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner>",
33
+ "format": ""
34
+ } ];
35
+
36
+ static getAttributeTypeMap() {
37
+ return UpdatePushPreferencesRequestDndSchedulesInner.attributeTypeMap;
38
+ }
39
+
40
+ public constructor() {
41
+ }
42
+ }
43
+
44
+
45
+ export type UpdatePushPreferencesRequestDndSchedulesInnerDayOfWeekEnum = "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday" ;
46
+
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Sendbird Platform SDK
3
+ * Sendbird Platform API SDK [https://sendbird.com/docs/chat/v3/platform-api/getting-started/prepare-to-use-api](https://sendbird.com/docs/chat/v3/platform-api/getting-started/prepare-to-use-api) Contact Support: Name: Sendbird Email: [support@sendbird.com](https://mailto:support@sendbird.com)
4
+ *
5
+ * OpenAPI spec version: 1.0.0
6
+ * Contact: support@sendbird.com
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+
13
+ import { HttpFile } from '../http/http';
14
+
15
+ export class UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner {
16
+ 'startHour'?: number;
17
+ 'startMin'?: number;
18
+ 'endHour'?: number;
19
+ 'endMin'?: number;
20
+
21
+ static readonly discriminator: string | undefined = undefined;
22
+
23
+ static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [
24
+ {
25
+ "name": "startHour",
26
+ "baseName": "start_hour",
27
+ "type": "number",
28
+ "format": ""
29
+ },
30
+ {
31
+ "name": "startMin",
32
+ "baseName": "start_min",
33
+ "type": "number",
34
+ "format": ""
35
+ },
36
+ {
37
+ "name": "endHour",
38
+ "baseName": "end_hour",
39
+ "type": "number",
40
+ "format": ""
41
+ },
42
+ {
43
+ "name": "endMin",
44
+ "baseName": "end_min",
45
+ "type": "number",
46
+ "format": ""
47
+ } ];
48
+
49
+ static getAttributeTypeMap() {
50
+ return UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner.attributeTypeMap;
51
+ }
52
+
53
+ public constructor() {
54
+ }
55
+ }
56
+
@@ -11,6 +11,7 @@
11
11
  */
12
12
 
13
13
  import { SendbirdPushTriggerOption } from './SendbirdPushTriggerOption';
14
+ import { UpdatePushPreferencesRequestDndSchedulesInner } from './UpdatePushPreferencesRequestDndSchedulesInner';
14
15
  import { HttpFile } from '../http/http';
15
16
 
16
17
  export class UpdatePushPreferencesResponse {
@@ -28,6 +29,7 @@ export class UpdatePushPreferencesResponse {
28
29
  'startHour'?: number;
29
30
  'startMin'?: number;
30
31
  'timezone'?: string;
32
+ 'dndSchedules'?: Array<UpdatePushPreferencesRequestDndSchedulesInner>;
31
33
 
32
34
  static readonly discriminator: string | undefined = undefined;
33
35
 
@@ -115,6 +117,12 @@ export class UpdatePushPreferencesResponse {
115
117
  "baseName": "timezone",
116
118
  "type": "string",
117
119
  "format": ""
120
+ },
121
+ {
122
+ "name": "dndSchedules",
123
+ "baseName": "dnd_schedules",
124
+ "type": "Array<UpdatePushPreferencesRequestDndSchedulesInner>",
125
+ "format": ""
118
126
  } ];
119
127
 
120
128
  static getAttributeTypeMap() {
@@ -11,6 +11,7 @@
11
11
  */
12
12
 
13
13
  import { SendbirdPushTriggerOption } from './SendbirdPushTriggerOption';
14
+ import { UpdatePushPreferencesRequestDndSchedulesInner } from './UpdatePushPreferencesRequestDndSchedulesInner';
14
15
  import { HttpFile } from '../http/http';
15
16
 
16
17
  export class ViewPushPreferencesResponse {
@@ -28,6 +29,7 @@ export class ViewPushPreferencesResponse {
28
29
  'startHour'?: number;
29
30
  'startMin'?: number;
30
31
  'timezone'?: string;
32
+ 'dndSchedules'?: Array<UpdatePushPreferencesRequestDndSchedulesInner>;
31
33
 
32
34
  static readonly discriminator: string | undefined = undefined;
33
35
 
@@ -115,6 +117,12 @@ export class ViewPushPreferencesResponse {
115
117
  "baseName": "timezone",
116
118
  "type": "string",
117
119
  "format": ""
120
+ },
121
+ {
122
+ "name": "dndSchedules",
123
+ "baseName": "dnd_schedules",
124
+ "type": "Array<UpdatePushPreferencesRequestDndSchedulesInner>",
125
+ "format": ""
118
126
  } ];
119
127
 
120
128
  static getAttributeTypeMap() {
package/models/all.ts CHANGED
@@ -114,6 +114,8 @@ export * from './UpdateExtraDataInAMessageResponse'
114
114
  export * from './UpdatePushPreferencesForAChannelRequest'
115
115
  export * from './UpdatePushPreferencesForAChannelResponse'
116
116
  export * from './UpdatePushPreferencesRequest'
117
+ export * from './UpdatePushPreferencesRequestDndSchedulesInner'
118
+ export * from './UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner'
117
119
  export * from './UpdatePushPreferencesResponse'
118
120
  export * from './UpdateSpecificUserMetadataRequest'
119
121
  export * from './UpdateUserMetadataRequest'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendbird/sendbird-platform-sdk-typescript",
3
- "version": "2.1.2",
3
+ "version": "2.1.5",
4
4
  "description": "OpenAPI client for sendbird-platform-sdk-typescript",
5
5
  "author": "OpenAPI-Generator Contributors",
6
6
  "repository": {
@@ -110,6 +110,155 @@ describe("User API", () => {
110
110
  expect(typeof response.timezone).toBe("string");
111
111
  });
112
112
 
113
+ it("call updatePushPreferences with dndSchedules and verify response", async () => {
114
+ // 1) 사전 초기화
115
+ await userApi.updatePushPreferences({
116
+ apiToken: API_TOKEN,
117
+ userId: MASTER_USER_ID,
118
+ updatePushPreferencesRequest: { dndSchedules: [] },
119
+ });
120
+
121
+ // 2) dndSchedules 설정 (자정을 넘기는 윈도우 포함)
122
+ // 서버는 자정 넘는 윈도우를 자동 분할:
123
+ // monday 22:00~07:00 → monday 22:00~23:59 + tuesday 00:00~07:00
124
+ // friday 23:30~06:00 → friday 23:30~23:59 + saturday 00:00~06:00
125
+ const response = await userApi.updatePushPreferences({
126
+ apiToken: API_TOKEN,
127
+ userId: MASTER_USER_ID,
128
+ updatePushPreferencesRequest: {
129
+ dndSchedules: [
130
+ {
131
+ dayOfWeek: "monday",
132
+ timeWindows: [
133
+ { startHour: 22, startMin: 0, endHour: 7, endMin: 0 },
134
+ ],
135
+ },
136
+ {
137
+ dayOfWeek: "friday",
138
+ timeWindows: [
139
+ { startHour: 23, startMin: 30, endHour: 6, endMin: 0 },
140
+ { startHour: 12, startMin: 0, endHour: 13, endMin: 0 },
141
+ ],
142
+ },
143
+ ],
144
+ },
145
+ });
146
+
147
+ // 3) 응답 검증 - 서버가 자정 넘는 윈도우를 분할하므로 4개 스케줄 반환
148
+ expect(response).toHaveProperty("dndSchedules");
149
+ expect(Array.isArray(response.dndSchedules)).toBe(true);
150
+ expect(response.dndSchedules!.length).toBe(4);
151
+
152
+ // monday: 22:00~23:59 (분할된 앞부분)
153
+ const monday = response.dndSchedules!.find((s) => s.dayOfWeek === "monday");
154
+ expect(monday).toBeDefined();
155
+ expect(monday!.timeWindows![0].startHour).toBe(22);
156
+ expect(monday!.timeWindows![0].endHour).toBe(23);
157
+ expect(monday!.timeWindows![0].endMin).toBe(59);
158
+
159
+ // tuesday: 00:00~07:00 (분할된 뒷부분)
160
+ const tuesday = response.dndSchedules!.find((s) => s.dayOfWeek === "tuesday");
161
+ expect(tuesday).toBeDefined();
162
+ expect(tuesday!.timeWindows![0].startHour).toBe(0);
163
+ expect(tuesday!.timeWindows![0].endHour).toBe(7);
164
+
165
+ // friday: 23:30~23:59 (분할), 12:00~13:00 (그대로)
166
+ const friday = response.dndSchedules!.find((s) => s.dayOfWeek === "friday");
167
+ expect(friday).toBeDefined();
168
+ expect(friday!.timeWindows!.length).toBe(2);
169
+
170
+ // saturday: 00:00~06:00 (friday 23:30~06:00의 분할된 뒷부분)
171
+ const saturday = response.dndSchedules!.find((s) => s.dayOfWeek === "saturday");
172
+ expect(saturday).toBeDefined();
173
+ expect(saturday!.timeWindows![0].startHour).toBe(0);
174
+ expect(saturday!.timeWindows![0].endHour).toBe(6);
175
+
176
+ // 4) GET으로 재확인
177
+ const view = await userApi.viewPushPreferences({
178
+ apiToken: API_TOKEN,
179
+ userId: MASTER_USER_ID,
180
+ });
181
+ expect(view).toHaveProperty("dndSchedules");
182
+ expect(Array.isArray(view.dndSchedules)).toBe(true);
183
+ expect(view.dndSchedules!.length).toBe(4);
184
+
185
+ // 5) 원상 복원
186
+ await userApi.updatePushPreferences({
187
+ apiToken: API_TOKEN,
188
+ userId: MASTER_USER_ID,
189
+ updatePushPreferencesRequest: {
190
+ dndSchedules: [],
191
+ },
192
+ });
193
+ });
194
+
195
+ it("call updatePushPreferences with single day dndSchedule", async () => {
196
+ // 단일 요일 설정
197
+ const response = await userApi.updatePushPreferences({
198
+ apiToken: API_TOKEN,
199
+ userId: MASTER_USER_ID,
200
+ updatePushPreferencesRequest: {
201
+ dndSchedules: [
202
+ {
203
+ dayOfWeek: "wednesday",
204
+ timeWindows: [
205
+ { startHour: 0, startMin: 0, endHour: 6, endMin: 30 },
206
+ ],
207
+ },
208
+ ],
209
+ },
210
+ });
211
+
212
+ expect(response).toHaveProperty("dndSchedules");
213
+ expect(response.dndSchedules!.length).toBe(1);
214
+ expect(response.dndSchedules![0].dayOfWeek).toBe("wednesday");
215
+ expect(response.dndSchedules![0].timeWindows!.length).toBe(1);
216
+ expect(response.dndSchedules![0].timeWindows![0].startHour).toBe(0);
217
+ expect(response.dndSchedules![0].timeWindows![0].startMin).toBe(0);
218
+ expect(response.dndSchedules![0].timeWindows![0].endHour).toBe(6);
219
+ expect(response.dndSchedules![0].timeWindows![0].endMin).toBe(30);
220
+
221
+ // 정리
222
+ await userApi.updatePushPreferences({
223
+ apiToken: API_TOKEN,
224
+ userId: MASTER_USER_ID,
225
+ updatePushPreferencesRequest: {
226
+ dndSchedules: [],
227
+ },
228
+ });
229
+ });
230
+
231
+ it("call updatePushPreferences with empty dndSchedules to clear", async () => {
232
+ // 먼저 스케줄 설정
233
+ await userApi.updatePushPreferences({
234
+ apiToken: API_TOKEN,
235
+ userId: MASTER_USER_ID,
236
+ updatePushPreferencesRequest: {
237
+ dndSchedules: [
238
+ {
239
+ dayOfWeek: "sunday",
240
+ timeWindows: [
241
+ { startHour: 22, startMin: 0, endHour: 8, endMin: 0 },
242
+ ],
243
+ },
244
+ ],
245
+ },
246
+ });
247
+
248
+ // 빈 배열로 초기화
249
+ const response = await userApi.updatePushPreferences({
250
+ apiToken: API_TOKEN,
251
+ userId: MASTER_USER_ID,
252
+ updatePushPreferencesRequest: {
253
+ dndSchedules: [],
254
+ },
255
+ });
256
+
257
+ expect(response).toHaveProperty("dndSchedules");
258
+ expect(Array.isArray(response.dndSchedules)).toBe(true);
259
+ expect(response.dndSchedules!.length).toBe(0);
260
+ });
261
+
113
262
  it("call removeARegistrationOrDeviceTokenWhenUnregisteringASpecificToken after addARegistrationOrDeviceToken", async () => {
114
263
  const TOKEN_TYPE = "GCM";
115
264
  const TEST_GCM_TOKEN = "dummy-token-123";
@@ -118,6 +118,8 @@ import { UpdateExtraDataInAMessageResponse } from '../models/UpdateExtraDataInAM
118
118
  import { UpdatePushPreferencesForAChannelRequest } from '../models/UpdatePushPreferencesForAChannelRequest';
119
119
  import { UpdatePushPreferencesForAChannelResponse } from '../models/UpdatePushPreferencesForAChannelResponse';
120
120
  import { UpdatePushPreferencesRequest } from '../models/UpdatePushPreferencesRequest';
121
+ import { UpdatePushPreferencesRequestDndSchedulesInner } from '../models/UpdatePushPreferencesRequestDndSchedulesInner';
122
+ import { UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner } from '../models/UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner';
121
123
  import { UpdatePushPreferencesResponse } from '../models/UpdatePushPreferencesResponse';
122
124
  import { UpdateSpecificUserMetadataRequest } from '../models/UpdateSpecificUserMetadataRequest';
123
125
  import { UpdateUserMetadataRequest } from '../models/UpdateUserMetadataRequest';
@@ -119,6 +119,8 @@ import { UpdateExtraDataInAMessageResponse } from '../models/UpdateExtraDataInAM
119
119
  import { UpdatePushPreferencesForAChannelRequest } from '../models/UpdatePushPreferencesForAChannelRequest';
120
120
  import { UpdatePushPreferencesForAChannelResponse } from '../models/UpdatePushPreferencesForAChannelResponse';
121
121
  import { UpdatePushPreferencesRequest } from '../models/UpdatePushPreferencesRequest';
122
+ import { UpdatePushPreferencesRequestDndSchedulesInner } from '../models/UpdatePushPreferencesRequestDndSchedulesInner';
123
+ import { UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner } from '../models/UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner';
122
124
  import { UpdatePushPreferencesResponse } from '../models/UpdatePushPreferencesResponse';
123
125
  import { UpdateSpecificUserMetadataRequest } from '../models/UpdateSpecificUserMetadataRequest';
124
126
  import { UpdateUserMetadataRequest } from '../models/UpdateUserMetadataRequest';
@@ -118,6 +118,8 @@ import { UpdateExtraDataInAMessageResponse } from '../models/UpdateExtraDataInAM
118
118
  import { UpdatePushPreferencesForAChannelRequest } from '../models/UpdatePushPreferencesForAChannelRequest';
119
119
  import { UpdatePushPreferencesForAChannelResponse } from '../models/UpdatePushPreferencesForAChannelResponse';
120
120
  import { UpdatePushPreferencesRequest } from '../models/UpdatePushPreferencesRequest';
121
+ import { UpdatePushPreferencesRequestDndSchedulesInner } from '../models/UpdatePushPreferencesRequestDndSchedulesInner';
122
+ import { UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner } from '../models/UpdatePushPreferencesRequestDndSchedulesInnerTimeWindowsInner';
121
123
  import { UpdatePushPreferencesResponse } from '../models/UpdatePushPreferencesResponse';
122
124
  import { UpdateSpecificUserMetadataRequest } from '../models/UpdateSpecificUserMetadataRequest';
123
125
  import { UpdateUserMetadataRequest } from '../models/UpdateUserMetadataRequest';
File without changes
File without changes