@foxford/sdk 8.0.1 → 8.1.0
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/api.d.cts +4 -19
- package/api.d.ts +4 -19
- package/api.js.flow +3 -26
- package/entities.cjs +557 -7
- package/entities.d.cts +524 -7
- package/entities.d.ts +524 -7
- package/entities.js +557 -7
- package/entities.js.flow +564 -7
- package/index.cjs +557 -7
- package/index.d.cts +697 -185
- package/index.d.ts +697 -185
- package/index.js +557 -7
- package/index.js.flow +817 -263
- package/package.json +5 -3
- package/plugins/autocomplete-email.d.cts +1 -1
- package/plugins/confirm-phone.d.cts +1 -1
- package/plugins/types-sRHKQ8xU.d.cts +1269 -0
- package/plugins/types-sRHKQ8xU.d.ts +1269 -0
- package/types-3Yq2Uj51.d.cts +33 -0
- package/types-BrKJGAOa.d.ts +33 -0
package/entities.d.cts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
import { U as UserInterests } from './types-3Yq2Uj51.cjs';
|
|
2
|
+
import './antibot.cjs';
|
|
3
|
+
import '@foxford/services';
|
|
4
|
+
import '@foxford/types';
|
|
5
|
+
|
|
1
6
|
type PupilRole = '11 класс' | '10 класс' | '9 класс' | '8 класс' | '7 класс' | '6 класс' | '5 класс' | '4 класс' | '3 класс' | '2 класс' | '1 класс';
|
|
2
7
|
type UserRole = 'Ученик' | 'Репетитор' | 'Учитель' | 'Родитель' | 'Выпускник' | 'Дошкольник' | PupilRole;
|
|
8
|
+
type LeaderboardAccessState = 'unavailable' | 'available' | 'vacation' | 'disabled';
|
|
9
|
+
type LeaderboardReadinessState = 'changeable_course_selection' | 'ready' | 'unready' | 'waiting_course_selection';
|
|
10
|
+
type LearningGoalsAccessState = 'enabled' | 'disabled' | 'optional' | 'required';
|
|
3
11
|
interface UserDTO {
|
|
4
12
|
id: null | number;
|
|
5
13
|
email: string;
|
|
@@ -110,79 +118,556 @@ interface UserDTO {
|
|
|
110
118
|
startsAt: null | string;
|
|
111
119
|
yearName: string;
|
|
112
120
|
} | null;
|
|
121
|
+
/** Текущий интерес посетителя — та же форма, что у `GET /api/user/user_interest`, но из профиля. */
|
|
122
|
+
currentInterest: UserInterests | null;
|
|
123
|
+
/** До какой даты открыт приём в домашнюю школу. */
|
|
124
|
+
admissionFinishesOn: null | string;
|
|
125
|
+
/** Посетитель пришёл из Алгоритмики. */
|
|
126
|
+
algoritmika: boolean;
|
|
127
|
+
bonusesPageVisited: boolean;
|
|
128
|
+
canChangeSchoolInfo: boolean;
|
|
129
|
+
externshipDemoAccessActive: boolean;
|
|
130
|
+
/** Экстернат ждёт оплаты: когда закроется доступ и по какому договору. */
|
|
131
|
+
externshipPaymentRequired: {
|
|
132
|
+
accessClosingDate: string;
|
|
133
|
+
contractId: number;
|
|
134
|
+
} | null;
|
|
135
|
+
externshipPromoHeaderOn: boolean;
|
|
136
|
+
hasExamProgressAccess: boolean;
|
|
137
|
+
hasYearlyRecapAccess: boolean;
|
|
138
|
+
isAttestationSchoolManager: null | boolean;
|
|
139
|
+
isMentor: boolean;
|
|
140
|
+
isXpStreakAvailable: boolean;
|
|
141
|
+
leaderboard: {
|
|
142
|
+
accessState: LeaderboardAccessState;
|
|
143
|
+
readinessState: LeaderboardReadinessState;
|
|
144
|
+
} | null;
|
|
145
|
+
leaderboardAccessState: LeaderboardAccessState;
|
|
146
|
+
learningGoalsAccessState: LearningGoalsAccessState;
|
|
147
|
+
/** Мессенджеры, на которые подписан посетитель; `null` — бэкенд не считал. */
|
|
148
|
+
messengerSubscriptions: null | string[];
|
|
149
|
+
needToPromoteRenewalWithCoach: boolean;
|
|
150
|
+
nextYearCoursesBannerAvailable: boolean;
|
|
151
|
+
passwordSet: null | boolean;
|
|
152
|
+
referralCode: null | string;
|
|
153
|
+
targetActionsOnboardingAvailable: boolean;
|
|
113
154
|
}
|
|
114
155
|
|
|
115
156
|
declare class User {
|
|
116
157
|
private readonly props;
|
|
117
158
|
private readonly isDefault;
|
|
118
159
|
private constructor();
|
|
160
|
+
/**
|
|
161
|
+
* Идентификатор посетителя на бэкенде.
|
|
162
|
+
*
|
|
163
|
+
* @returns Число либо `null` у гостя.
|
|
164
|
+
*/
|
|
119
165
|
get id(): UserDTO['id'];
|
|
166
|
+
/**
|
|
167
|
+
* Почта посетителя.
|
|
168
|
+
*
|
|
169
|
+
* @returns Строка; пустая, если почты нет.
|
|
170
|
+
*/
|
|
120
171
|
get email(): UserDTO['email'];
|
|
172
|
+
/**
|
|
173
|
+
* Имя.
|
|
174
|
+
*
|
|
175
|
+
* @returns Строка; пустая, если не заполнено.
|
|
176
|
+
*/
|
|
121
177
|
get firstName(): UserDTO['firstName'];
|
|
178
|
+
/**
|
|
179
|
+
* Отчество.
|
|
180
|
+
*
|
|
181
|
+
* @returns Строка; пустая, если не заполнено.
|
|
182
|
+
*/
|
|
122
183
|
get middleName(): UserDTO['middleName'];
|
|
184
|
+
/**
|
|
185
|
+
* Фамилия.
|
|
186
|
+
*
|
|
187
|
+
* @returns Строка; пустая, если не заполнено.
|
|
188
|
+
*/
|
|
123
189
|
get lastName(): UserDTO['lastName'];
|
|
190
|
+
/**
|
|
191
|
+
* Полное имя, каким его собрал бэкенд.
|
|
192
|
+
*
|
|
193
|
+
* @returns Строка; пустая у гостя.
|
|
194
|
+
*/
|
|
124
195
|
get fullName(): UserDTO['fullName'];
|
|
196
|
+
/**
|
|
197
|
+
* Короткое имя для обращения в интерфейсе.
|
|
198
|
+
*
|
|
199
|
+
* @returns Строка; пустая у гостя.
|
|
200
|
+
*/
|
|
125
201
|
get shortName(): UserDTO['shortName'];
|
|
202
|
+
/**
|
|
203
|
+
* Когда заведён профиль.
|
|
204
|
+
*
|
|
205
|
+
* @returns Дата ISO либо `null` у гостя.
|
|
206
|
+
*/
|
|
126
207
|
get createdAt(): UserDTO['createdAt'];
|
|
208
|
+
/**
|
|
209
|
+
* Часовой пояс посетителя.
|
|
210
|
+
*
|
|
211
|
+
* @returns Имя пояса либо `null`, если не задан.
|
|
212
|
+
*/
|
|
127
213
|
get timezone(): UserDTO['timezone'];
|
|
214
|
+
/**
|
|
215
|
+
* Локаль интерфейса.
|
|
216
|
+
*
|
|
217
|
+
* @returns Код локали либо `null`, если не задана.
|
|
218
|
+
*/
|
|
128
219
|
get locale(): UserDTO['locale'];
|
|
220
|
+
/**
|
|
221
|
+
* Класс посетителя: id, порядковый номер, имя и транслит.
|
|
222
|
+
*
|
|
223
|
+
* @returns Объект класса; у гостя поля `null` и пустые строки.
|
|
224
|
+
*/
|
|
129
225
|
get grade(): UserDTO['grade'];
|
|
226
|
+
/**
|
|
227
|
+
* Телефон посетителя.
|
|
228
|
+
*
|
|
229
|
+
* @returns Строка либо `null`, если не указан.
|
|
230
|
+
*/
|
|
130
231
|
get phone(): UserDTO['phone'];
|
|
232
|
+
/**
|
|
233
|
+
* Адрес аватара.
|
|
234
|
+
*
|
|
235
|
+
* @returns Строка; пустая, если аватара нет.
|
|
236
|
+
*/
|
|
131
237
|
get avatarUrl(): UserDTO['avatarUrl'];
|
|
238
|
+
/**
|
|
239
|
+
* Посетитель — родитель.
|
|
240
|
+
*
|
|
241
|
+
* @returns `true`, если роль родительская.
|
|
242
|
+
*/
|
|
132
243
|
get isParent(): UserDTO['isParent'];
|
|
244
|
+
/**
|
|
245
|
+
* Посетитель — выпускник.
|
|
246
|
+
*
|
|
247
|
+
* @returns `true`, если школу закончил.
|
|
248
|
+
*/
|
|
133
249
|
get isGraduated(): UserDTO['isGraduated'];
|
|
250
|
+
/**
|
|
251
|
+
* Класс подтверждён посетителем.
|
|
252
|
+
*
|
|
253
|
+
* @returns `true`, если класс проверен.
|
|
254
|
+
*/
|
|
134
255
|
get gradeChecked(): UserDTO['gradeChecked'];
|
|
256
|
+
/**
|
|
257
|
+
* Тип учётной записи на бэкенде.
|
|
258
|
+
*
|
|
259
|
+
* @returns `pupil`, `agent` либо `null` у гостя.
|
|
260
|
+
*/
|
|
135
261
|
get type(): UserDTO['type'];
|
|
262
|
+
/**
|
|
263
|
+
* Посетитель — репетитор.
|
|
264
|
+
*
|
|
265
|
+
* @returns `true`, если роль репетитора.
|
|
266
|
+
*/
|
|
136
267
|
get isCoach(): UserDTO['isCoach'];
|
|
268
|
+
/**
|
|
269
|
+
* Ведёт мини-группы.
|
|
270
|
+
*
|
|
271
|
+
* @returns `true`, если ведёт.
|
|
272
|
+
*/
|
|
137
273
|
get isMiniGroupTeacher(): UserDTO['isMiniGroupTeacher'];
|
|
274
|
+
/**
|
|
275
|
+
* Репетитор экстерната.
|
|
276
|
+
*
|
|
277
|
+
* @returns `true`, если ведёт экстернат.
|
|
278
|
+
*/
|
|
138
279
|
get isExternshipCoach(): UserDTO['isExternshipCoach'];
|
|
280
|
+
/**
|
|
281
|
+
* Посетитель — учитель.
|
|
282
|
+
*
|
|
283
|
+
* @returns `true`, если роль учителя.
|
|
284
|
+
*/
|
|
139
285
|
get isAgent(): UserDTO['isAgent'];
|
|
286
|
+
/**
|
|
287
|
+
* Посетитель — методист.
|
|
288
|
+
*
|
|
289
|
+
* @returns `true`, если методист.
|
|
290
|
+
*/
|
|
140
291
|
get methodist(): UserDTO['methodist'];
|
|
292
|
+
/**
|
|
293
|
+
* Почтовый адрес: страна, регион, город, улица, дом.
|
|
294
|
+
*
|
|
295
|
+
* @returns Объект адреса либо `null`, если не заполнен.
|
|
296
|
+
*/
|
|
141
297
|
get address(): UserDTO['address'];
|
|
298
|
+
/**
|
|
299
|
+
* Привязанные соцсети.
|
|
300
|
+
*
|
|
301
|
+
* @returns Список провайдеров с идентификаторами; пустой, если привязок нет.
|
|
302
|
+
*/
|
|
142
303
|
get socialNets(): UserDTO['socialNets'];
|
|
304
|
+
/**
|
|
305
|
+
* Логин в Skype.
|
|
306
|
+
*
|
|
307
|
+
* @returns Строка либо `null`.
|
|
308
|
+
*/
|
|
143
309
|
get skype(): UserDTO['skype'];
|
|
310
|
+
/**
|
|
311
|
+
* Настройки интерфейса: показанные подсказки и скрытые баннеры.
|
|
312
|
+
*
|
|
313
|
+
* @returns Объект флагов либо `undefined`, если бэкенд их не прислал.
|
|
314
|
+
*/
|
|
144
315
|
get settings(): UserDTO['settings'];
|
|
316
|
+
/**
|
|
317
|
+
* Бонусный счёт: подарочные и реальные бонусы.
|
|
318
|
+
*
|
|
319
|
+
* @returns Объект с суммами.
|
|
320
|
+
*/
|
|
145
321
|
get bonus(): UserDTO['bonus'];
|
|
322
|
+
/**
|
|
323
|
+
* Сумма бонусов на счёте.
|
|
324
|
+
*
|
|
325
|
+
* @returns Число.
|
|
326
|
+
*/
|
|
146
327
|
get bonusAmount(): UserDTO['bonusAmount'];
|
|
328
|
+
/**
|
|
329
|
+
* Есть действующие покупки.
|
|
330
|
+
*
|
|
331
|
+
* @returns `true`, если есть.
|
|
332
|
+
*/
|
|
147
333
|
get hasActivePurchases(): UserDTO['hasActivePurchases'];
|
|
334
|
+
/**
|
|
335
|
+
* Остались попытки пробных экзаменов.
|
|
336
|
+
*
|
|
337
|
+
* @returns `true`, если остались.
|
|
338
|
+
*/
|
|
148
339
|
get hasAttemptsSolveExamRehearsals(): UserDTO['hasAttemptsSolveExamRehearsals'];
|
|
340
|
+
/**
|
|
341
|
+
* Есть закладки.
|
|
342
|
+
*
|
|
343
|
+
* @returns `true`, если есть.
|
|
344
|
+
*/
|
|
149
345
|
get hasBookmarks(): UserDTO['hasBookmarks'];
|
|
346
|
+
/**
|
|
347
|
+
* Метки посетителя на бэкенде.
|
|
348
|
+
*
|
|
349
|
+
* @returns Список строк либо `null`.
|
|
350
|
+
*/
|
|
150
351
|
get tags(): UserDTO['tags'];
|
|
352
|
+
/**
|
|
353
|
+
* Шаблон корзины.
|
|
354
|
+
*
|
|
355
|
+
* @returns Число либо `null`.
|
|
356
|
+
*/
|
|
151
357
|
get cartTemplateId(): UserDTO['cartTemplateId'];
|
|
358
|
+
/**
|
|
359
|
+
* Сколько позиций в корзине.
|
|
360
|
+
*
|
|
361
|
+
* @returns Число.
|
|
362
|
+
*/
|
|
152
363
|
get cartItemsCount(): UserDTO['cartItemsCount'];
|
|
364
|
+
/**
|
|
365
|
+
* Онбординг пройден.
|
|
366
|
+
*
|
|
367
|
+
* @returns `true`, если пройден.
|
|
368
|
+
*/
|
|
153
369
|
get onboardingFinished(): UserDTO['onboardingFinished'];
|
|
370
|
+
/**
|
|
371
|
+
* Когда пройден онбординг.
|
|
372
|
+
*
|
|
373
|
+
* @returns Дата ISO либо `null`, пока не пройден.
|
|
374
|
+
*/
|
|
154
375
|
get onboardingFinishedAt(): UserDTO['onboardingFinishedAt'];
|
|
376
|
+
/**
|
|
377
|
+
* Почта подтверждена.
|
|
378
|
+
*
|
|
379
|
+
* @returns `true`, если подтверждена.
|
|
380
|
+
*/
|
|
155
381
|
get emailConfirmed(): UserDTO['emailConfirmed'];
|
|
382
|
+
/**
|
|
383
|
+
* Телефон подтверждён.
|
|
384
|
+
*
|
|
385
|
+
* @returns `true`, если подтверждён.
|
|
386
|
+
*/
|
|
156
387
|
get phoneConfirmed(): UserDTO['phoneConfirmed'];
|
|
388
|
+
/**
|
|
389
|
+
* Почта выдумана бэкендом при регистрации без почты.
|
|
390
|
+
*
|
|
391
|
+
* @returns `true`, если почта ненастоящая.
|
|
392
|
+
*/
|
|
157
393
|
get fakeEmail(): UserDTO['fakeEmail'];
|
|
394
|
+
/**
|
|
395
|
+
* Посетитель заведён бэкендом без его участия (например, по заявке).
|
|
396
|
+
*
|
|
397
|
+
* @returns `true`, если учётная запись ненастоящая.
|
|
398
|
+
*/
|
|
158
399
|
get fakeUser(): UserDTO['fakeUser'];
|
|
400
|
+
/**
|
|
401
|
+
* Профиль дополнен данными после регистрации.
|
|
402
|
+
*
|
|
403
|
+
* @returns `true`, если дополнен.
|
|
404
|
+
*/
|
|
159
405
|
get profileEnriched(): UserDTO['profileEnriched'];
|
|
406
|
+
/**
|
|
407
|
+
* Идентификатор итогов года.
|
|
408
|
+
*
|
|
409
|
+
* @returns Строка либо `null`, если итогов нет.
|
|
410
|
+
*/
|
|
160
411
|
get recapUuid(): UserDTO['recapUuid'];
|
|
412
|
+
/**
|
|
413
|
+
* Дисциплины, которые изучает посетитель.
|
|
414
|
+
*
|
|
415
|
+
* @returns Список id; пустой, если не выбраны.
|
|
416
|
+
*/
|
|
161
417
|
get disciplineIds(): UserDTO['disciplineIds'];
|
|
418
|
+
/**
|
|
419
|
+
* Настройки приватности.
|
|
420
|
+
*
|
|
421
|
+
* @returns Объект с флагом публичного профиля.
|
|
422
|
+
*/
|
|
162
423
|
get privacy(): UserDTO['privacy'];
|
|
424
|
+
/**
|
|
425
|
+
* Телефон родителя.
|
|
426
|
+
*
|
|
427
|
+
* @returns Строка либо `null`.
|
|
428
|
+
*/
|
|
163
429
|
get parentPhone(): UserDTO['parentPhone'];
|
|
430
|
+
/**
|
|
431
|
+
* Телефон родителя подтверждён.
|
|
432
|
+
*
|
|
433
|
+
* @returns `true`, если подтверждён.
|
|
434
|
+
*/
|
|
164
435
|
get parentPhoneConfirmed(): UserDTO['parentPhoneConfirmed'];
|
|
436
|
+
/**
|
|
437
|
+
* Посетитель что-то покупал.
|
|
438
|
+
*
|
|
439
|
+
* @returns `true`, `false` либо `null`, если бэкенд не считал.
|
|
440
|
+
*/
|
|
165
441
|
get isCustomer(): UserDTO['isCustomer'];
|
|
442
|
+
/**
|
|
443
|
+
* Доступны многодневные серии занятий.
|
|
444
|
+
*
|
|
445
|
+
* @returns `true`, если доступны.
|
|
446
|
+
*/
|
|
166
447
|
get hasAccessToMultiDaysStreaks(): UserDTO['hasAccessToMultiDaysStreaks'];
|
|
448
|
+
/**
|
|
449
|
+
* Ученик начальной школы.
|
|
450
|
+
*
|
|
451
|
+
* @returns `true`, если начальная школа.
|
|
452
|
+
*/
|
|
167
453
|
get isElementaryPupil(): UserDTO['isElementaryPupil'];
|
|
454
|
+
/**
|
|
455
|
+
* Токен для канала уведомлений по WebSocket.
|
|
456
|
+
*
|
|
457
|
+
* @returns Строка либо `null`, если канала нет.
|
|
458
|
+
*/
|
|
168
459
|
get webSocketNotificationsJwt(): UserDTO['webSocketNotificationsJwt'];
|
|
460
|
+
/**
|
|
461
|
+
* Доступны аттестационные листы.
|
|
462
|
+
*
|
|
463
|
+
* @returns `true`, если доступны.
|
|
464
|
+
*/
|
|
169
465
|
get hasAccessToAttestationSheets(): UserDTO['hasAccessToAttestationSheets'];
|
|
466
|
+
/**
|
|
467
|
+
* Посетитель учится в экстернате.
|
|
468
|
+
*
|
|
469
|
+
* @returns `true`, если экстернат.
|
|
470
|
+
*/
|
|
170
471
|
get externshipUser(): UserDTO['externshipUser'];
|
|
472
|
+
/**
|
|
473
|
+
* Есть оплаченные договоры экстерната.
|
|
474
|
+
*
|
|
475
|
+
* @returns `true`, если есть.
|
|
476
|
+
*/
|
|
171
477
|
get hasPurchasedExternshipContracts(): UserDTO['hasPurchasedExternshipContracts'];
|
|
478
|
+
/**
|
|
479
|
+
* Доступна аттестация экстерната.
|
|
480
|
+
*
|
|
481
|
+
* @returns `true`, если доступна.
|
|
482
|
+
*/
|
|
172
483
|
get hasExternshipAttestationAccess(): UserDTO['hasExternshipAttestationAccess'];
|
|
484
|
+
/**
|
|
485
|
+
* Профиль в разделе социализации.
|
|
486
|
+
*
|
|
487
|
+
* @returns Объект с id и состоянием либо `null`, если профиля нет.
|
|
488
|
+
*/
|
|
173
489
|
get socializationProfile(): UserDTO['socializationProfile'];
|
|
490
|
+
/**
|
|
491
|
+
* Когда заканчивается бесплатный доступ.
|
|
492
|
+
*
|
|
493
|
+
* @returns Дата ISO либо `null`, если доступа нет.
|
|
494
|
+
*/
|
|
174
495
|
get freeAccessFinishesAt(): UserDTO['freeAccessFinishesAt'];
|
|
496
|
+
/**
|
|
497
|
+
* В комнате начальной школы есть непросмотренные новинки.
|
|
498
|
+
*
|
|
499
|
+
* @returns `true`, если есть; `undefined`, если бэкенд не прислал.
|
|
500
|
+
*/
|
|
175
501
|
get hasUnseenRoomFeatures(): UserDTO['hasUnseenRoomFeatures'];
|
|
502
|
+
/**
|
|
503
|
+
* Покупал договоры экстерната.
|
|
504
|
+
*
|
|
505
|
+
* @returns `true`, если покупал.
|
|
506
|
+
*/
|
|
176
507
|
get purchaseAnyExternshipContracts(): UserDTO['purchaseAnyExternshipContracts'];
|
|
508
|
+
/**
|
|
509
|
+
* Связан с экстернатом: ученик, родитель либо репетитор.
|
|
510
|
+
*
|
|
511
|
+
* @returns `true`, если связан; `undefined`, если бэкенд не прислал.
|
|
512
|
+
*/
|
|
177
513
|
get hasExternshipRelation(): UserDTO['hasExternshipRelation'];
|
|
514
|
+
/**
|
|
515
|
+
* Есть действующий договор экстерната.
|
|
516
|
+
*
|
|
517
|
+
* @returns `true`, если есть; `undefined`, если бэкенд не прислал.
|
|
518
|
+
*/
|
|
178
519
|
get hasExternshipActiveContract(): UserDTO['hasExternshipActiveContract'];
|
|
520
|
+
/**
|
|
521
|
+
* Можно продлить договор домашней школы.
|
|
522
|
+
*
|
|
523
|
+
* @returns `true`, если можно; `undefined`, если бэкенд не прислал.
|
|
524
|
+
*/
|
|
179
525
|
get canProlongateContract(): UserDTO['canProlongateContract'];
|
|
526
|
+
/**
|
|
527
|
+
* Окно пролонгации договора: даты, скидка, заголовок следующего года.
|
|
528
|
+
*
|
|
529
|
+
* @returns Объект окна, `null` либо `undefined`, если окна нет.
|
|
530
|
+
*/
|
|
180
531
|
get prolongation(): UserDTO['prolongation'];
|
|
532
|
+
/**
|
|
533
|
+
* Текущий интерес посетителя: класс, дисциплина, уровень, формат и причина. Та же форма, что у `GET /api/user/user_interest`, но из профиля, без похода.
|
|
534
|
+
*
|
|
535
|
+
* @returns Объект интереса либо `null`, если бэкенд не считал.
|
|
536
|
+
*/
|
|
537
|
+
get currentInterest(): UserDTO['currentInterest'];
|
|
538
|
+
/**
|
|
539
|
+
* До какой даты открыт приём в домашнюю школу.
|
|
540
|
+
*
|
|
541
|
+
* @returns Дата либо `null`, если приём не идёт.
|
|
542
|
+
*/
|
|
543
|
+
get admissionFinishesOn(): UserDTO['admissionFinishesOn'];
|
|
544
|
+
/**
|
|
545
|
+
* Посетитель пришёл из Алгоритмики — партнёрский вход с другой площадки.
|
|
546
|
+
*
|
|
547
|
+
* @returns `true`, если из Алгоритмики.
|
|
548
|
+
*/
|
|
549
|
+
get algoritmika(): UserDTO['algoritmika'];
|
|
550
|
+
/**
|
|
551
|
+
* Страница бонусов уже открывалась — подсказки на ней больше не показываются.
|
|
552
|
+
*
|
|
553
|
+
* @returns `true`, если открывалась.
|
|
554
|
+
*/
|
|
555
|
+
get bonusesPageVisited(): UserDTO['bonusesPageVisited'];
|
|
556
|
+
/**
|
|
557
|
+
* Посетителю разрешено менять школу и класс в профиле.
|
|
558
|
+
*
|
|
559
|
+
* @returns `true`, если разрешено.
|
|
560
|
+
*/
|
|
561
|
+
get canChangeSchoolInfo(): UserDTO['canChangeSchoolInfo'];
|
|
562
|
+
/**
|
|
563
|
+
* Идёт демо-доступ к экстернату.
|
|
564
|
+
*
|
|
565
|
+
* @returns `true`, пока демо активно.
|
|
566
|
+
*/
|
|
567
|
+
get externshipDemoAccessActive(): UserDTO['externshipDemoAccessActive'];
|
|
568
|
+
/**
|
|
569
|
+
* Экстернат ждёт оплаты: когда закроется доступ и по какому договору.
|
|
570
|
+
*
|
|
571
|
+
* @returns Объект с датой и id договора либо `null`, если долга нет.
|
|
572
|
+
*/
|
|
573
|
+
get externshipPaymentRequired(): UserDTO['externshipPaymentRequired'];
|
|
574
|
+
/**
|
|
575
|
+
* Показывать промо-шапку экстерната.
|
|
576
|
+
*
|
|
577
|
+
* @returns `true`, если показывать.
|
|
578
|
+
*/
|
|
579
|
+
get externshipPromoHeaderOn(): UserDTO['externshipPromoHeaderOn'];
|
|
580
|
+
/**
|
|
581
|
+
* Доступен раздел прогресса подготовки к экзаменам.
|
|
582
|
+
*
|
|
583
|
+
* @returns `true`, если доступен.
|
|
584
|
+
*/
|
|
585
|
+
get hasExamProgressAccess(): UserDTO['hasExamProgressAccess'];
|
|
586
|
+
/**
|
|
587
|
+
* Доступны итоги года; их адрес — `recapUuid`.
|
|
588
|
+
*
|
|
589
|
+
* @returns `true`, если доступны.
|
|
590
|
+
*/
|
|
591
|
+
get hasYearlyRecapAccess(): UserDTO['hasYearlyRecapAccess'];
|
|
592
|
+
/**
|
|
593
|
+
* Управляет аттестационной школой.
|
|
594
|
+
*
|
|
595
|
+
* @returns `true`, `false` либо `null`, если бэкенд не считал.
|
|
596
|
+
*/
|
|
597
|
+
get isAttestationSchoolManager(): UserDTO['isAttestationSchoolManager'];
|
|
598
|
+
/**
|
|
599
|
+
* Посетитель — наставник.
|
|
600
|
+
*
|
|
601
|
+
* @returns `true`, если наставник.
|
|
602
|
+
*/
|
|
603
|
+
get isMentor(): UserDTO['isMentor'];
|
|
604
|
+
/**
|
|
605
|
+
* Доступна серия ежедневных занятий с опытом (XP-стрик).
|
|
606
|
+
*
|
|
607
|
+
* @returns `true`, если доступна.
|
|
608
|
+
*/
|
|
609
|
+
get isXpStreakAvailable(): UserDTO['isXpStreakAvailable'];
|
|
610
|
+
/**
|
|
611
|
+
* Таблица лидеров: доступна ли посетителю и готов ли он к ней (выбор курса).
|
|
612
|
+
*
|
|
613
|
+
* @returns Объект состояний либо `null`, если посетитель вне программы.
|
|
614
|
+
*/
|
|
615
|
+
get leaderboard(): UserDTO['leaderboard'];
|
|
616
|
+
/**
|
|
617
|
+
* Состояние доступа к таблице лидеров.
|
|
618
|
+
*
|
|
619
|
+
* @returns `unavailable`, `available`, `vacation` либо `disabled`.
|
|
620
|
+
*/
|
|
621
|
+
get leaderboardAccessState(): UserDTO['leaderboardAccessState'];
|
|
622
|
+
/**
|
|
623
|
+
* Как устроены учебные цели у посетителя.
|
|
624
|
+
*
|
|
625
|
+
* @returns `enabled`, `disabled`, `optional` либо `required`.
|
|
626
|
+
*/
|
|
627
|
+
get learningGoalsAccessState(): UserDTO['learningGoalsAccessState'];
|
|
628
|
+
/**
|
|
629
|
+
* Мессенджеры, на которые посетитель подписан на уведомления.
|
|
630
|
+
*
|
|
631
|
+
* @returns Список либо `null`, если бэкенд не считал.
|
|
632
|
+
*/
|
|
633
|
+
get messengerSubscriptions(): UserDTO['messengerSubscriptions'];
|
|
634
|
+
/**
|
|
635
|
+
* Пора предлагать продление занятий с репетитором.
|
|
636
|
+
*
|
|
637
|
+
* @returns `true`, если пора.
|
|
638
|
+
*/
|
|
639
|
+
get needToPromoteRenewalWithCoach(): UserDTO['needToPromoteRenewalWithCoach'];
|
|
640
|
+
/**
|
|
641
|
+
* Показывать баннер курсов следующего учебного года.
|
|
642
|
+
*
|
|
643
|
+
* @returns `true`, если показывать.
|
|
644
|
+
*/
|
|
645
|
+
get nextYearCoursesBannerAvailable(): UserDTO['nextYearCoursesBannerAvailable'];
|
|
646
|
+
/**
|
|
647
|
+
* Пароль задан — вход не только через код или соцсеть.
|
|
648
|
+
*
|
|
649
|
+
* @returns `true`, `false` либо `null`, если бэкенд не считал.
|
|
650
|
+
*/
|
|
651
|
+
get passwordSet(): UserDTO['passwordSet'];
|
|
652
|
+
/**
|
|
653
|
+
* Реферальный код для программы «приведи друга».
|
|
654
|
+
*
|
|
655
|
+
* @returns Строка либо `null`, если код не выдан.
|
|
656
|
+
*/
|
|
657
|
+
get referralCode(): UserDTO['referralCode'];
|
|
658
|
+
/**
|
|
659
|
+
* Доступен онбординг целевых действий.
|
|
660
|
+
*
|
|
661
|
+
* @returns `true`, если доступен.
|
|
662
|
+
*/
|
|
663
|
+
get targetActionsOnboardingAvailable(): UserDTO['targetActionsOnboardingAvailable'];
|
|
181
664
|
/**
|
|
182
665
|
* Идёт ли сейчас окно пролонгации договора домашней школы.
|
|
183
666
|
*
|
|
184
667
|
* Границы включаются: последний день окна ещё считается пролонгацией. Не заданная граница
|
|
185
668
|
* означает, что окна нет вовсе, а не что оно бесконечно.
|
|
669
|
+
*
|
|
670
|
+
* @returns `true`, если сегодня внутри окна включительно
|
|
186
671
|
*/
|
|
187
672
|
isProlongationBetweenDates(): boolean;
|
|
188
673
|
/**
|
|
@@ -193,11 +678,18 @@ declare class User {
|
|
|
193
678
|
* @returns клонированный объект
|
|
194
679
|
*/
|
|
195
680
|
private static deepClone;
|
|
681
|
+
/**
|
|
682
|
+
* Гость — сущность с умолчаниями всех полей и признаком `isDefaultUser()`.
|
|
683
|
+
*
|
|
684
|
+
* @returns Новая сущность на каждый вызов: умолчания общие на процесс, копия своя.
|
|
685
|
+
*/
|
|
196
686
|
static createDefault(): User;
|
|
197
687
|
/**
|
|
198
688
|
* Форма посетителя по умолчанию ДАННЫМИ — гость со всеми полями: тому, кто отдаёт `UserDTO`
|
|
199
689
|
* наружу (хост — приложениям), нужна полная форма, а не сущность с методами. Своя копия на
|
|
200
690
|
* вызов: умолчания общие на процесс, и правка чужой копии их не тронет.
|
|
691
|
+
*
|
|
692
|
+
* @returns Новая копия умолчаний на каждый вызов
|
|
201
693
|
*/
|
|
202
694
|
static defaultDto(): UserDTO;
|
|
203
695
|
/**
|
|
@@ -207,6 +699,13 @@ declare class User {
|
|
|
207
699
|
* @returns санитизированная строка
|
|
208
700
|
*/
|
|
209
701
|
private static sanitizeString;
|
|
702
|
+
/**
|
|
703
|
+
* Сущность из профиля бэкенда (`UserDTO` в camelCase): строковые поля чистятся от null-байтов
|
|
704
|
+
* и пробелов по краям, остальное берётся как есть.
|
|
705
|
+
*
|
|
706
|
+
* @param input - Профиль в форме `UserDTO`
|
|
707
|
+
* @returns Сущность над копией профиля: исходный объект не трогается
|
|
708
|
+
*/
|
|
210
709
|
static fromApi(input: unknown): User;
|
|
211
710
|
/**
|
|
212
711
|
* Санитизирует данные пользователя
|
|
@@ -215,30 +714,48 @@ declare class User {
|
|
|
215
714
|
* @returns санитизированные данные
|
|
216
715
|
*/
|
|
217
716
|
private static sanitizeUserData;
|
|
717
|
+
/**
|
|
718
|
+
* Сущность собрана из умолчаний (`createDefault`), а не из профиля бэкенда.
|
|
719
|
+
*
|
|
720
|
+
* @returns `true` у гостя по умолчанию
|
|
721
|
+
*/
|
|
218
722
|
isDefaultUser(): boolean;
|
|
723
|
+
/**
|
|
724
|
+
* Посетитель вошёл — у него есть идентификатор на бэкенде.
|
|
725
|
+
*
|
|
726
|
+
* @returns `true`, если `id` задан и положителен
|
|
727
|
+
*/
|
|
219
728
|
isLoggedIn(): boolean;
|
|
220
729
|
private static getGradeString;
|
|
221
730
|
/**
|
|
222
|
-
*
|
|
731
|
+
* Роль либо класс словом — для подписи в интерфейсе.
|
|
223
732
|
*
|
|
224
|
-
* @returns
|
|
733
|
+
* @returns «Дошкольник» для нулевого класса, «Выпускник» без класса, иначе класс («5 класс»)
|
|
225
734
|
*/
|
|
226
735
|
getPupilRole(): UserRole;
|
|
227
736
|
/**
|
|
228
|
-
*
|
|
229
|
-
*
|
|
737
|
+
* Роль словом — по флагам профиля, первый совпавший: репетитор, учитель, родитель.
|
|
738
|
+
*
|
|
739
|
+
* @returns «Репетитор», «Учитель», «Родитель», иначе роль ученика из `getPupilRole()`
|
|
230
740
|
*/
|
|
231
741
|
getRole: () => UserRole;
|
|
232
742
|
/**
|
|
233
|
-
*
|
|
234
|
-
*
|
|
235
|
-
* @
|
|
743
|
+
* Фамилия с инициалами имени и отчества — подпись в списках.
|
|
744
|
+
*
|
|
745
|
+
* @returns Строка вида «Пупкин В. И.»; без отчества — «Пупкин В.»
|
|
236
746
|
*/
|
|
237
747
|
getInitials: () => string;
|
|
748
|
+
/**
|
|
749
|
+
* Профиль строкой JSON — для печати в документ и передачи по сети.
|
|
750
|
+
*
|
|
751
|
+
* @returns JSON полей сущности
|
|
752
|
+
*/
|
|
238
753
|
toJson(): string;
|
|
239
754
|
/**
|
|
240
755
|
* Посетитель данными — то, что едет по сети и в состояние: сущность с методами не
|
|
241
756
|
* сериализуется. Своя копия на вызов: сущность неизменяема, и правка копии её не тронет.
|
|
757
|
+
*
|
|
758
|
+
* @returns Копия полей сущности данными
|
|
242
759
|
*/
|
|
243
760
|
toDto(): UserDTO;
|
|
244
761
|
}
|