@vendasta/meetings 1.9.1 → 1.10.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/esm2020/lib/_internal/interfaces/index.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/meeting-host.interface.mjs +1 -1
- package/esm2020/lib/_internal/meeting-host.api.service.mjs +7 -2
- package/esm2020/lib/_internal/objects/index.mjs +2 -2
- package/esm2020/lib/_internal/objects/meeting-guest.mjs +2 -2
- package/esm2020/lib/_internal/objects/meeting-host.mjs +157 -25
- package/esm2020/lib/host/host.service.mjs +14 -2
- package/esm2020/lib/index.mjs +1 -1
- package/esm2020/lib/shared/index.mjs +2 -1
- package/esm2020/lib/shared/meeting-stats.mjs +17 -0
- package/fesm2015/vendasta-meetings.mjs +189 -23
- package/fesm2015/vendasta-meetings.mjs.map +1 -1
- package/fesm2020/vendasta-meetings.mjs +189 -23
- package/fesm2020/vendasta-meetings.mjs.map +1 -1
- package/lib/_internal/interfaces/index.d.ts +1 -1
- package/lib/_internal/interfaces/meeting-host.interface.d.ts +27 -7
- package/lib/_internal/meeting-host.api.service.d.ts +3 -2
- package/lib/_internal/objects/index.d.ts +1 -1
- package/lib/_internal/objects/meeting-guest.d.ts +1 -1
- package/lib/_internal/objects/meeting-host.d.ts +44 -15
- package/lib/host/host.service.d.ts +6 -1
- package/lib/index.d.ts +1 -1
- package/lib/shared/index.d.ts +1 -0
- package/lib/shared/meeting-stats.d.ts +17 -0
- package/package.json +1 -1
|
@@ -7391,10 +7391,13 @@ class EventTypeSummary {
|
|
|
7391
7391
|
return toReturn;
|
|
7392
7392
|
}
|
|
7393
7393
|
}
|
|
7394
|
-
class
|
|
7394
|
+
class ListBookedMeetingsRequestFilters {
|
|
7395
7395
|
static fromProto(proto) {
|
|
7396
|
-
let m = new
|
|
7396
|
+
let m = new ListBookedMeetingsRequestFilters();
|
|
7397
7397
|
m = Object.assign(m, proto);
|
|
7398
|
+
if (proto.timeSpan) {
|
|
7399
|
+
m.timeSpan = DateRange.fromProto(proto.timeSpan);
|
|
7400
|
+
}
|
|
7398
7401
|
return m;
|
|
7399
7402
|
}
|
|
7400
7403
|
constructor(kwargs) {
|
|
@@ -7405,22 +7408,25 @@ class ListAvailabilityRequestFilters {
|
|
|
7405
7408
|
}
|
|
7406
7409
|
toApiJson() {
|
|
7407
7410
|
const toReturn = {};
|
|
7411
|
+
if (typeof this.meetingTypeIds !== 'undefined') {
|
|
7412
|
+
toReturn['meetingTypeIds'] = this.meetingTypeIds;
|
|
7413
|
+
}
|
|
7408
7414
|
if (typeof this.hostId !== 'undefined') {
|
|
7409
7415
|
toReturn['hostId'] = this.hostId;
|
|
7410
7416
|
}
|
|
7411
|
-
if (typeof this.
|
|
7412
|
-
toReturn['
|
|
7417
|
+
if (typeof this.timeSpan !== 'undefined' && this.timeSpan !== null) {
|
|
7418
|
+
toReturn['timeSpan'] = 'toApiJson' in this.timeSpan ? this.timeSpan.toApiJson() : this.timeSpan;
|
|
7419
|
+
}
|
|
7420
|
+
if (typeof this.userIds !== 'undefined') {
|
|
7421
|
+
toReturn['userIds'] = this.userIds;
|
|
7413
7422
|
}
|
|
7414
7423
|
return toReturn;
|
|
7415
7424
|
}
|
|
7416
7425
|
}
|
|
7417
|
-
class
|
|
7426
|
+
class ListAvailabilityRequestFilters {
|
|
7418
7427
|
static fromProto(proto) {
|
|
7419
|
-
let m = new
|
|
7428
|
+
let m = new ListAvailabilityRequestFilters();
|
|
7420
7429
|
m = Object.assign(m, proto);
|
|
7421
|
-
if (proto.timeSpan) {
|
|
7422
|
-
m.timeSpan = DateRange.fromProto(proto.timeSpan);
|
|
7423
|
-
}
|
|
7424
7430
|
return m;
|
|
7425
7431
|
}
|
|
7426
7432
|
constructor(kwargs) {
|
|
@@ -7431,17 +7437,11 @@ class ListBookedMeetingsRequestFilters {
|
|
|
7431
7437
|
}
|
|
7432
7438
|
toApiJson() {
|
|
7433
7439
|
const toReturn = {};
|
|
7434
|
-
if (typeof this.meetingTypeIds !== 'undefined') {
|
|
7435
|
-
toReturn['meetingTypeIds'] = this.meetingTypeIds;
|
|
7436
|
-
}
|
|
7437
7440
|
if (typeof this.hostId !== 'undefined') {
|
|
7438
7441
|
toReturn['hostId'] = this.hostId;
|
|
7439
7442
|
}
|
|
7440
|
-
if (typeof this.
|
|
7441
|
-
toReturn['
|
|
7442
|
-
}
|
|
7443
|
-
if (typeof this.userIds !== 'undefined') {
|
|
7444
|
-
toReturn['userIds'] = this.userIds;
|
|
7443
|
+
if (typeof this.meetingTypeId !== 'undefined') {
|
|
7444
|
+
toReturn['meetingTypeId'] = this.meetingTypeId;
|
|
7445
7445
|
}
|
|
7446
7446
|
return toReturn;
|
|
7447
7447
|
}
|
|
@@ -7673,6 +7673,109 @@ class GetHostsForCalendarResponse {
|
|
|
7673
7673
|
return toReturn;
|
|
7674
7674
|
}
|
|
7675
7675
|
}
|
|
7676
|
+
class GetMeetingStatsRequest {
|
|
7677
|
+
static fromProto(proto) {
|
|
7678
|
+
let m = new GetMeetingStatsRequest();
|
|
7679
|
+
m = Object.assign(m, proto);
|
|
7680
|
+
if (proto.timeSpan) {
|
|
7681
|
+
m.timeSpan = DateRange.fromProto(proto.timeSpan);
|
|
7682
|
+
}
|
|
7683
|
+
if (proto.timeZone) {
|
|
7684
|
+
m.timeZone = TimeZone.fromProto(proto.timeZone);
|
|
7685
|
+
}
|
|
7686
|
+
return m;
|
|
7687
|
+
}
|
|
7688
|
+
constructor(kwargs) {
|
|
7689
|
+
if (!kwargs) {
|
|
7690
|
+
return;
|
|
7691
|
+
}
|
|
7692
|
+
Object.assign(this, kwargs);
|
|
7693
|
+
}
|
|
7694
|
+
toApiJson() {
|
|
7695
|
+
const toReturn = {};
|
|
7696
|
+
if (typeof this.timeSpan !== 'undefined' && this.timeSpan !== null) {
|
|
7697
|
+
toReturn['timeSpan'] = 'toApiJson' in this.timeSpan ? this.timeSpan.toApiJson() : this.timeSpan;
|
|
7698
|
+
}
|
|
7699
|
+
if (typeof this.timeZone !== 'undefined' && this.timeZone !== null) {
|
|
7700
|
+
toReturn['timeZone'] = 'toApiJson' in this.timeZone ? this.timeZone.toApiJson() : this.timeZone;
|
|
7701
|
+
}
|
|
7702
|
+
if (typeof this.businessId !== 'undefined') {
|
|
7703
|
+
toReturn['businessId'] = this.businessId;
|
|
7704
|
+
}
|
|
7705
|
+
return toReturn;
|
|
7706
|
+
}
|
|
7707
|
+
}
|
|
7708
|
+
class GetMeetingStatsResponse {
|
|
7709
|
+
static fromProto(proto) {
|
|
7710
|
+
let m = new GetMeetingStatsResponse();
|
|
7711
|
+
m = Object.assign(m, proto);
|
|
7712
|
+
if (proto.totalMeetingsScheduled) {
|
|
7713
|
+
m.totalMeetingsScheduled = parseInt(proto.totalMeetingsScheduled, 10);
|
|
7714
|
+
}
|
|
7715
|
+
if (proto.previousTotalMeetingsScheduled) {
|
|
7716
|
+
m.previousTotalMeetingsScheduled = parseInt(proto.previousTotalMeetingsScheduled, 10);
|
|
7717
|
+
}
|
|
7718
|
+
if (proto.dailyMeetingsScheduled) {
|
|
7719
|
+
m.dailyMeetingsScheduled = proto.dailyMeetingsScheduled.map(MeetingStatPoint.fromProto);
|
|
7720
|
+
}
|
|
7721
|
+
if (proto.totalMeetingsCancelled) {
|
|
7722
|
+
m.totalMeetingsCancelled = parseInt(proto.totalMeetingsCancelled, 10);
|
|
7723
|
+
}
|
|
7724
|
+
if (proto.totalMeetingsRescheduled) {
|
|
7725
|
+
m.totalMeetingsRescheduled = parseInt(proto.totalMeetingsRescheduled, 10);
|
|
7726
|
+
}
|
|
7727
|
+
if (proto.totalAbandonedCarts) {
|
|
7728
|
+
m.totalAbandonedCarts = parseInt(proto.totalAbandonedCarts, 10);
|
|
7729
|
+
}
|
|
7730
|
+
if (proto.totalCalendarDisconnected) {
|
|
7731
|
+
m.totalCalendarDisconnected = parseInt(proto.totalCalendarDisconnected, 10);
|
|
7732
|
+
}
|
|
7733
|
+
if (proto.totalBookedByAiChat) {
|
|
7734
|
+
m.totalBookedByAiChat = parseInt(proto.totalBookedByAiChat, 10);
|
|
7735
|
+
}
|
|
7736
|
+
if (proto.totalBookedByAiVoice) {
|
|
7737
|
+
m.totalBookedByAiVoice = parseInt(proto.totalBookedByAiVoice, 10);
|
|
7738
|
+
}
|
|
7739
|
+
return m;
|
|
7740
|
+
}
|
|
7741
|
+
constructor(kwargs) {
|
|
7742
|
+
if (!kwargs) {
|
|
7743
|
+
return;
|
|
7744
|
+
}
|
|
7745
|
+
Object.assign(this, kwargs);
|
|
7746
|
+
}
|
|
7747
|
+
toApiJson() {
|
|
7748
|
+
const toReturn = {};
|
|
7749
|
+
if (typeof this.totalMeetingsScheduled !== 'undefined') {
|
|
7750
|
+
toReturn['totalMeetingsScheduled'] = this.totalMeetingsScheduled;
|
|
7751
|
+
}
|
|
7752
|
+
if (typeof this.previousTotalMeetingsScheduled !== 'undefined') {
|
|
7753
|
+
toReturn['previousTotalMeetingsScheduled'] = this.previousTotalMeetingsScheduled;
|
|
7754
|
+
}
|
|
7755
|
+
if (typeof this.dailyMeetingsScheduled !== 'undefined' && this.dailyMeetingsScheduled !== null) {
|
|
7756
|
+
toReturn['dailyMeetingsScheduled'] = 'toApiJson' in this.dailyMeetingsScheduled ? this.dailyMeetingsScheduled.toApiJson() : this.dailyMeetingsScheduled;
|
|
7757
|
+
}
|
|
7758
|
+
if (typeof this.totalMeetingsCancelled !== 'undefined') {
|
|
7759
|
+
toReturn['totalMeetingsCancelled'] = this.totalMeetingsCancelled;
|
|
7760
|
+
}
|
|
7761
|
+
if (typeof this.totalMeetingsRescheduled !== 'undefined') {
|
|
7762
|
+
toReturn['totalMeetingsRescheduled'] = this.totalMeetingsRescheduled;
|
|
7763
|
+
}
|
|
7764
|
+
if (typeof this.totalAbandonedCarts !== 'undefined') {
|
|
7765
|
+
toReturn['totalAbandonedCarts'] = this.totalAbandonedCarts;
|
|
7766
|
+
}
|
|
7767
|
+
if (typeof this.totalCalendarDisconnected !== 'undefined') {
|
|
7768
|
+
toReturn['totalCalendarDisconnected'] = this.totalCalendarDisconnected;
|
|
7769
|
+
}
|
|
7770
|
+
if (typeof this.totalBookedByAiChat !== 'undefined') {
|
|
7771
|
+
toReturn['totalBookedByAiChat'] = this.totalBookedByAiChat;
|
|
7772
|
+
}
|
|
7773
|
+
if (typeof this.totalBookedByAiVoice !== 'undefined') {
|
|
7774
|
+
toReturn['totalBookedByAiVoice'] = this.totalBookedByAiVoice;
|
|
7775
|
+
}
|
|
7776
|
+
return toReturn;
|
|
7777
|
+
}
|
|
7778
|
+
}
|
|
7676
7779
|
class GetMeetingTypesForCalendarsRequest {
|
|
7677
7780
|
static fromProto(proto) {
|
|
7678
7781
|
let m = new GetMeetingTypesForCalendarsRequest();
|
|
@@ -9088,6 +9191,35 @@ class Meeting {
|
|
|
9088
9191
|
return toReturn;
|
|
9089
9192
|
}
|
|
9090
9193
|
}
|
|
9194
|
+
class MeetingStatPoint {
|
|
9195
|
+
static fromProto(proto) {
|
|
9196
|
+
let m = new MeetingStatPoint();
|
|
9197
|
+
m = Object.assign(m, proto);
|
|
9198
|
+
if (proto.date) {
|
|
9199
|
+
m.date = new Date(proto.date);
|
|
9200
|
+
}
|
|
9201
|
+
if (proto.count) {
|
|
9202
|
+
m.count = parseInt(proto.count, 10);
|
|
9203
|
+
}
|
|
9204
|
+
return m;
|
|
9205
|
+
}
|
|
9206
|
+
constructor(kwargs) {
|
|
9207
|
+
if (!kwargs) {
|
|
9208
|
+
return;
|
|
9209
|
+
}
|
|
9210
|
+
Object.assign(this, kwargs);
|
|
9211
|
+
}
|
|
9212
|
+
toApiJson() {
|
|
9213
|
+
const toReturn = {};
|
|
9214
|
+
if (typeof this.date !== 'undefined' && this.date !== null) {
|
|
9215
|
+
toReturn['date'] = 'toApiJson' in this.date ? this.date.toApiJson() : this.date;
|
|
9216
|
+
}
|
|
9217
|
+
if (typeof this.count !== 'undefined') {
|
|
9218
|
+
toReturn['count'] = this.count;
|
|
9219
|
+
}
|
|
9220
|
+
return toReturn;
|
|
9221
|
+
}
|
|
9222
|
+
}
|
|
9091
9223
|
class MeetingTypeList {
|
|
9092
9224
|
static fromProto(proto) {
|
|
9093
9225
|
let m = new MeetingTypeList();
|
|
@@ -9111,9 +9243,9 @@ class MeetingTypeList {
|
|
|
9111
9243
|
return toReturn;
|
|
9112
9244
|
}
|
|
9113
9245
|
}
|
|
9114
|
-
class
|
|
9246
|
+
class HostBookBatchMeetingRequestMetadataEntry {
|
|
9115
9247
|
static fromProto(proto) {
|
|
9116
|
-
let m = new
|
|
9248
|
+
let m = new HostBookBatchMeetingRequestMetadataEntry();
|
|
9117
9249
|
m = Object.assign(m, proto);
|
|
9118
9250
|
return m;
|
|
9119
9251
|
}
|
|
@@ -9134,9 +9266,9 @@ class UpdateMeetingMetadataRequestMetadataEntry {
|
|
|
9134
9266
|
return toReturn;
|
|
9135
9267
|
}
|
|
9136
9268
|
}
|
|
9137
|
-
class
|
|
9269
|
+
class MeetingMetadataEntry {
|
|
9138
9270
|
static fromProto(proto) {
|
|
9139
|
-
let m = new
|
|
9271
|
+
let m = new MeetingMetadataEntry();
|
|
9140
9272
|
m = Object.assign(m, proto);
|
|
9141
9273
|
return m;
|
|
9142
9274
|
}
|
|
@@ -9157,9 +9289,9 @@ class HostBookBatchMeetingRequestMetadataEntry {
|
|
|
9157
9289
|
return toReturn;
|
|
9158
9290
|
}
|
|
9159
9291
|
}
|
|
9160
|
-
class
|
|
9292
|
+
class UpdateMeetingMetadataRequestMetadataEntry {
|
|
9161
9293
|
static fromProto(proto) {
|
|
9162
|
-
let m = new
|
|
9294
|
+
let m = new UpdateMeetingMetadataRequestMetadataEntry();
|
|
9163
9295
|
m = Object.assign(m, proto);
|
|
9164
9296
|
return m;
|
|
9165
9297
|
}
|
|
@@ -10435,6 +10567,11 @@ class MeetingHostApiService {
|
|
|
10435
10567
|
return this.http.post(this._host + "/meetings.v1.MeetingHost/ListBookedMeetingsV2", request.toApiJson(), this.apiOptions())
|
|
10436
10568
|
.pipe(map(resp => ListBookedMeetingsV2Response.fromProto(resp)));
|
|
10437
10569
|
}
|
|
10570
|
+
getMeetingStats(r) {
|
|
10571
|
+
const request = (r.toApiJson) ? r : new GetMeetingStatsRequest(r);
|
|
10572
|
+
return this.http.post(this._host + "/meetings.v1.MeetingHost/GetMeetingStats", request.toApiJson(), this.apiOptions())
|
|
10573
|
+
.pipe(map(resp => GetMeetingStatsResponse.fromProto(resp)));
|
|
10574
|
+
}
|
|
10438
10575
|
cancelMeeting(r) {
|
|
10439
10576
|
const request = (r.toApiJson) ? r : new CancelMeetingRequest(r);
|
|
10440
10577
|
return this.http.post(this._host + "/meetings.v1.MeetingHost/CancelMeeting", request.toApiJson(), { ...this.apiOptions(), observe: 'response' });
|
|
@@ -11187,6 +11324,23 @@ var MeetingSourceOrigin;
|
|
|
11187
11324
|
MeetingSourceOrigin["SalesCenter"] = "sales-center";
|
|
11188
11325
|
})(MeetingSourceOrigin || (MeetingSourceOrigin = {}));
|
|
11189
11326
|
|
|
11327
|
+
function meetingStatsFromApi(resp) {
|
|
11328
|
+
return {
|
|
11329
|
+
totalMeetingsScheduled: resp.totalMeetingsScheduled || 0,
|
|
11330
|
+
previousTotalMeetingsScheduled: resp.previousTotalMeetingsScheduled || 0,
|
|
11331
|
+
dailyMeetingsScheduled: (resp.dailyMeetingsScheduled || []).map((point) => ({
|
|
11332
|
+
date: point.date,
|
|
11333
|
+
count: point.count || 0,
|
|
11334
|
+
})),
|
|
11335
|
+
totalMeetingsCancelled: resp.totalMeetingsCancelled || 0,
|
|
11336
|
+
totalMeetingsRescheduled: resp.totalMeetingsRescheduled || 0,
|
|
11337
|
+
totalAbandonedCarts: resp.totalAbandonedCarts || 0,
|
|
11338
|
+
totalCalendarDisconnected: resp.totalCalendarDisconnected || 0,
|
|
11339
|
+
totalBookedByAiChat: resp.totalBookedByAiChat || 0,
|
|
11340
|
+
totalBookedByAiVoice: resp.totalBookedByAiVoice || 0,
|
|
11341
|
+
};
|
|
11342
|
+
}
|
|
11343
|
+
|
|
11190
11344
|
class GuestService {
|
|
11191
11345
|
constructor(guestAPIService) {
|
|
11192
11346
|
this.guestAPIService = guestAPIService;
|
|
@@ -11725,6 +11879,18 @@ class HostService {
|
|
|
11725
11879
|
hostCancelBatchMeeting(req) {
|
|
11726
11880
|
return this.hostAPIService.hostCancelBatchMeeting(req).pipe(mapTo(null));
|
|
11727
11881
|
}
|
|
11882
|
+
// getMeetingStats returns aggregated meeting statistics for the host, backing the
|
|
11883
|
+
// "My Meetings" dashboard card. timeSpan must be expressed in the caller's time zone;
|
|
11884
|
+
// timeZone is used to bucket meetings into days and to align the comparison period.
|
|
11885
|
+
getMeetingStats(req) {
|
|
11886
|
+
return this.hostAPIService
|
|
11887
|
+
.getMeetingStats({
|
|
11888
|
+
timeSpan: req.timeSpan,
|
|
11889
|
+
timeZone: req.timeZone,
|
|
11890
|
+
businessId: req.businessId,
|
|
11891
|
+
})
|
|
11892
|
+
.pipe(map((resp) => meetingStatsFromApi(resp)));
|
|
11893
|
+
}
|
|
11728
11894
|
// hostListBatchAvailableTimeSlots returns valid chain start times for a
|
|
11729
11895
|
// multi-service host booking. Each slot is the start of the first meeting
|
|
11730
11896
|
// in the chain.
|