@glissandoo/lib 1.126.0 → 1.128.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/functions/event.d.ts +13 -0
- package/functions/group.d.ts +1 -0
- package/functions/groupPlayer.d.ts +6 -0
- package/functions/index.d.ts +3 -0
- package/functions/index.js +3 -0
- package/functions/regions.js +3 -0
- package/functions/user.d.ts +1 -0
- package/helpers/appScenes.d.ts +1 -0
- package/helpers/appScenes.js +1 -0
- package/helpers/errors.d.ts +5 -0
- package/helpers/errors.js +5 -0
- package/helpers/plans.d.ts +2 -0
- package/helpers/plans.js +5 -1
- package/lang/ca.json +2 -0
- package/lang/de.json +2 -0
- package/lang/en.json +2 -0
- package/lang/es.json +2 -0
- package/lang/eu.json +2 -0
- package/lang/fr.json +2 -0
- package/lang/gl.json +2 -0
- package/lang/it.json +2 -0
- package/lang/nl.json +2 -0
- package/lang/pt.json +2 -0
- package/models/Evento/Player/basic.d.ts +0 -1
- package/models/Evento/Player/basic.js +0 -3
- package/models/Evento/Player/index.d.ts +0 -1
- package/models/Evento/Player/index.js +0 -3
- package/models/Evento/index.d.ts +3 -0
- package/models/Evento/index.js +10 -0
- package/models/Evento/types.d.ts +2 -0
- package/models/Evento/types.js +1 -0
- package/models/Group/Player/index.d.ts +2 -0
- package/models/Group/Player/index.js +6 -0
- package/models/Group/index.d.ts +16 -2
- package/models/Group/index.js +20 -3
- package/models/Group/types.d.ts +26 -4
- package/models/Group/types.js +9 -1
- package/models/Notification/types.d.ts +1 -0
- package/models/Notification/types.js +1 -0
- package/models/Partnership/index.d.ts +1 -1
- package/models/Partnership/types.d.ts +17 -3
- package/package.json +1 -1
package/functions/event.d.ts
CHANGED
|
@@ -10,6 +10,19 @@ export declare namespace EventoFbFunctionsTypes {
|
|
|
10
10
|
Future = "future",
|
|
11
11
|
All = "all"
|
|
12
12
|
}
|
|
13
|
+
export interface RefreshGuestInviteCodeParams {
|
|
14
|
+
eventId: string;
|
|
15
|
+
}
|
|
16
|
+
export interface RefreshGuestInviteCodeResult {
|
|
17
|
+
code: string;
|
|
18
|
+
}
|
|
19
|
+
export interface VerifyGuestInviteCodeParams {
|
|
20
|
+
eventId: string;
|
|
21
|
+
code: string;
|
|
22
|
+
}
|
|
23
|
+
export interface VerifyGuestInviteCodeResult {
|
|
24
|
+
alreadyJoined: boolean;
|
|
25
|
+
}
|
|
13
26
|
export interface PublishParams {
|
|
14
27
|
type: EventType;
|
|
15
28
|
displayName: string | null;
|
package/functions/group.d.ts
CHANGED
|
@@ -69,6 +69,7 @@ export declare namespace GroupFbFunctionsTypes {
|
|
|
69
69
|
interface GetByIdResult extends GroupBasicData {
|
|
70
70
|
id: string;
|
|
71
71
|
instruments: GroupData['instruments'];
|
|
72
|
+
customFields: GroupData['customFields'];
|
|
72
73
|
}
|
|
73
74
|
interface GetByInvitationLinkParams {
|
|
74
75
|
invitationLink: string;
|
|
@@ -36,6 +36,7 @@ export declare namespace GroupPlayerFbFunctionsTypes {
|
|
|
36
36
|
groupId: string;
|
|
37
37
|
mainInstrument: InstrumentId;
|
|
38
38
|
instruments: InstrumentId[];
|
|
39
|
+
customFields?: Record<string, string | number | boolean | null>;
|
|
39
40
|
}
|
|
40
41
|
type JoinGroupResult = void;
|
|
41
42
|
interface LeaveParams {
|
|
@@ -47,6 +48,11 @@ export declare namespace GroupPlayerFbFunctionsTypes {
|
|
|
47
48
|
userIds: string[];
|
|
48
49
|
}
|
|
49
50
|
type RemoveResult = void;
|
|
51
|
+
interface PromoteGuestParams {
|
|
52
|
+
groupId: string;
|
|
53
|
+
userId: string;
|
|
54
|
+
}
|
|
55
|
+
type PromoteGuestResult = void;
|
|
50
56
|
interface UpdateInstrumentsParams {
|
|
51
57
|
playerId?: string;
|
|
52
58
|
groupId: string;
|
package/functions/index.d.ts
CHANGED
|
@@ -62,6 +62,8 @@ export declare enum FbFunctionName {
|
|
|
62
62
|
EventoMyPayments = "event-myPayments",
|
|
63
63
|
EventPublish = "event-publish",
|
|
64
64
|
EventRemove = "event-remove",
|
|
65
|
+
EventRefreshGuestInviteCode = "event-refreshGuestInviteCode",
|
|
66
|
+
EventVerifyGuestInviteCode = "event-verifyGuestInviteCode",
|
|
65
67
|
EventRepertoryDownload = "eventRepertory-download",
|
|
66
68
|
EventRepertoryDownloadPdf = "eventRepertory-downloadPdf",
|
|
67
69
|
EventRepertoryEdit = "eventRepertory-edit",
|
|
@@ -106,6 +108,7 @@ export declare enum FbFunctionName {
|
|
|
106
108
|
GroupPlayerLinkFakeAccount = "groupPlayer-linkFakeAccount",
|
|
107
109
|
GroupPlayerOnUpdate = "groupPlayer-onUpdate",
|
|
108
110
|
GroupPlayerRemove = "groupPlayer-remove",
|
|
111
|
+
GroupPlayerPromoteGuest = "groupPlayer-promoteGuest",
|
|
109
112
|
GroupPlayerEditFakeInfo = "groupPlayer-editFakeInfo",
|
|
110
113
|
GroupPlayerSetPermissions = "groupPlayer-updatePermis",
|
|
111
114
|
GroupPlayerUpdateInstruments = "groupPlayer-updateInstruments",
|
package/functions/index.js
CHANGED
|
@@ -66,6 +66,8 @@ var FbFunctionName;
|
|
|
66
66
|
FbFunctionName["EventoMyPayments"] = "event-myPayments";
|
|
67
67
|
FbFunctionName["EventPublish"] = "event-publish";
|
|
68
68
|
FbFunctionName["EventRemove"] = "event-remove";
|
|
69
|
+
FbFunctionName["EventRefreshGuestInviteCode"] = "event-refreshGuestInviteCode";
|
|
70
|
+
FbFunctionName["EventVerifyGuestInviteCode"] = "event-verifyGuestInviteCode";
|
|
69
71
|
FbFunctionName["EventRepertoryDownload"] = "eventRepertory-download";
|
|
70
72
|
FbFunctionName["EventRepertoryDownloadPdf"] = "eventRepertory-downloadPdf";
|
|
71
73
|
FbFunctionName["EventRepertoryEdit"] = "eventRepertory-edit";
|
|
@@ -110,6 +112,7 @@ var FbFunctionName;
|
|
|
110
112
|
FbFunctionName["GroupPlayerLinkFakeAccount"] = "groupPlayer-linkFakeAccount";
|
|
111
113
|
FbFunctionName["GroupPlayerOnUpdate"] = "groupPlayer-onUpdate";
|
|
112
114
|
FbFunctionName["GroupPlayerRemove"] = "groupPlayer-remove";
|
|
115
|
+
FbFunctionName["GroupPlayerPromoteGuest"] = "groupPlayer-promoteGuest";
|
|
113
116
|
FbFunctionName["GroupPlayerEditFakeInfo"] = "groupPlayer-editFakeInfo";
|
|
114
117
|
FbFunctionName["GroupPlayerSetPermissions"] = "groupPlayer-updatePermis";
|
|
115
118
|
FbFunctionName["GroupPlayerUpdateInstruments"] = "groupPlayer-updateInstruments";
|
package/functions/regions.js
CHANGED
|
@@ -73,6 +73,8 @@ const regionByFunctions = {
|
|
|
73
73
|
[index_1.FbFunctionName.EventoMyPayments]: GCloudRegions.EuropeWest6,
|
|
74
74
|
[index_1.FbFunctionName.EventPublish]: GCloudRegions.UsCentral1,
|
|
75
75
|
[index_1.FbFunctionName.EventRemove]: GCloudRegions.UsCentral1,
|
|
76
|
+
[index_1.FbFunctionName.EventRefreshGuestInviteCode]: GCloudRegions.EuropeWest6,
|
|
77
|
+
[index_1.FbFunctionName.EventVerifyGuestInviteCode]: GCloudRegions.EuropeWest6,
|
|
76
78
|
[index_1.FbFunctionName.EventRepertoryDownload]: GCloudRegions.EuropeWest6,
|
|
77
79
|
[index_1.FbFunctionName.EventRepertoryDownloadPdf]: GCloudRegions.EuropeWest6,
|
|
78
80
|
[index_1.FbFunctionName.EventRepertoryEdit]: GCloudRegions.UsCentral1,
|
|
@@ -118,6 +120,7 @@ const regionByFunctions = {
|
|
|
118
120
|
[index_1.FbFunctionName.GroupPlayerLeave]: GCloudRegions.UsCentral1,
|
|
119
121
|
[index_1.FbFunctionName.GroupPlayerOnUpdate]: GCloudRegions.UsCentral1,
|
|
120
122
|
[index_1.FbFunctionName.GroupPlayerRemove]: GCloudRegions.UsCentral1,
|
|
123
|
+
[index_1.FbFunctionName.GroupPlayerPromoteGuest]: GCloudRegions.EuropeWest6,
|
|
121
124
|
[index_1.FbFunctionName.GroupPlayerSetPermissions]: GCloudRegions.EuropeWest6,
|
|
122
125
|
[index_1.FbFunctionName.GroupPlayerUpdateInstruments]: GCloudRegions.UsCentral1,
|
|
123
126
|
[index_1.FbFunctionName.GroupPaymentCreate]: GCloudRegions.EuropeWest6,
|
package/functions/user.d.ts
CHANGED
package/helpers/appScenes.d.ts
CHANGED
|
@@ -78,6 +78,7 @@ export declare enum AppScenes {
|
|
|
78
78
|
Join = "Join",
|
|
79
79
|
JoinImageProfile = "AddProfileImage",
|
|
80
80
|
JoinInstrument = "SelectGroupInstrument",
|
|
81
|
+
JoinCompleteProfile = "JoinCompleteProfile",
|
|
81
82
|
JoinView = "JoinView",
|
|
82
83
|
Login = "Login",
|
|
83
84
|
GroupPaymentDetail = "GroupPaymentDetail",
|
package/helpers/appScenes.js
CHANGED
|
@@ -82,6 +82,7 @@ var AppScenes;
|
|
|
82
82
|
AppScenes["Join"] = "Join";
|
|
83
83
|
AppScenes["JoinImageProfile"] = "AddProfileImage";
|
|
84
84
|
AppScenes["JoinInstrument"] = "SelectGroupInstrument";
|
|
85
|
+
AppScenes["JoinCompleteProfile"] = "JoinCompleteProfile";
|
|
85
86
|
AppScenes["JoinView"] = "JoinView";
|
|
86
87
|
AppScenes["Login"] = "Login";
|
|
87
88
|
AppScenes["GroupPaymentDetail"] = "GroupPaymentDetail";
|
package/helpers/errors.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare enum HttpsErrorMessages {
|
|
|
8
8
|
InvalidGroupPartnership = "error.group.partnership",
|
|
9
9
|
InvalidAdminGroup = "error.group.noAdmin",
|
|
10
10
|
InvalidPermissionsGroup = "error.group.noPermissions",
|
|
11
|
+
GuestCannotBeAdmin = "error.group.guestCannotBeAdmin",
|
|
11
12
|
InvalidAdminAction = "error.federation.admin",
|
|
12
13
|
InvalidLinkInvitation = "groupPlayer.join.linkNoValid",
|
|
13
14
|
InvalidJoinPlayer = "groupPlayer.join.isPlayer",
|
|
@@ -20,6 +21,10 @@ export declare enum HttpsErrorMessages {
|
|
|
20
21
|
InvalidEventPlayer = "error.event.noPlayer",
|
|
21
22
|
InvalidMaxNumberEvents = "error.event.maxEventsPublish",
|
|
22
23
|
InvalidMaxCapacityEvent = "error.event.capacityCompleted",
|
|
24
|
+
EventInvitationLinkNotActive = "error.event.invitationLinkNotActive",
|
|
25
|
+
EventNotAcceptingJoins = "error.event.notAcceptingJoins",
|
|
26
|
+
EventGuestsLimitReached = "error.event.guestsLimitReached",
|
|
27
|
+
EventInvitationCodeInvalid = "error.event.invitationCodeInvalid",
|
|
23
28
|
InvalidScoreNotByInstrumentsEventRepertory = "error.eventRepertory.scoreNotByInstruments",
|
|
24
29
|
InvalidUser = "error.user.noValid",
|
|
25
30
|
InvalidSuperAdmin = "error.superadmin.noValid",
|
package/helpers/errors.js
CHANGED
|
@@ -9,6 +9,7 @@ var HttpsErrorMessages;
|
|
|
9
9
|
HttpsErrorMessages["InvalidGroupPartnership"] = "error.group.partnership";
|
|
10
10
|
HttpsErrorMessages["InvalidAdminGroup"] = "error.group.noAdmin";
|
|
11
11
|
HttpsErrorMessages["InvalidPermissionsGroup"] = "error.group.noPermissions";
|
|
12
|
+
HttpsErrorMessages["GuestCannotBeAdmin"] = "error.group.guestCannotBeAdmin";
|
|
12
13
|
HttpsErrorMessages["InvalidAdminAction"] = "error.federation.admin";
|
|
13
14
|
HttpsErrorMessages["InvalidLinkInvitation"] = "groupPlayer.join.linkNoValid";
|
|
14
15
|
HttpsErrorMessages["InvalidJoinPlayer"] = "groupPlayer.join.isPlayer";
|
|
@@ -21,6 +22,10 @@ var HttpsErrorMessages;
|
|
|
21
22
|
HttpsErrorMessages["InvalidEventPlayer"] = "error.event.noPlayer";
|
|
22
23
|
HttpsErrorMessages["InvalidMaxNumberEvents"] = "error.event.maxEventsPublish";
|
|
23
24
|
HttpsErrorMessages["InvalidMaxCapacityEvent"] = "error.event.capacityCompleted";
|
|
25
|
+
HttpsErrorMessages["EventInvitationLinkNotActive"] = "error.event.invitationLinkNotActive";
|
|
26
|
+
HttpsErrorMessages["EventNotAcceptingJoins"] = "error.event.notAcceptingJoins";
|
|
27
|
+
HttpsErrorMessages["EventGuestsLimitReached"] = "error.event.guestsLimitReached";
|
|
28
|
+
HttpsErrorMessages["EventInvitationCodeInvalid"] = "error.event.invitationCodeInvalid";
|
|
24
29
|
HttpsErrorMessages["InvalidScoreNotByInstrumentsEventRepertory"] = "error.eventRepertory.scoreNotByInstruments";
|
|
25
30
|
HttpsErrorMessages["InvalidUser"] = "error.user.noValid";
|
|
26
31
|
HttpsErrorMessages["InvalidSuperAdmin"] = "error.superadmin.noValid";
|
package/helpers/plans.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export declare enum PlanPeriod {
|
|
|
11
11
|
Monthly = "monthly"
|
|
12
12
|
}
|
|
13
13
|
export declare const membersPerPlan: Record<PlansGroup, number>;
|
|
14
|
+
export declare const MAX_GUESTS_PER_EVENT = 10;
|
|
15
|
+
export declare const GUEST_INVITE_CODE_LENGTH = 6;
|
|
14
16
|
export declare const pricesPerPlan: Record<PlanPeriod, Record<PlansGroup, number>>;
|
|
15
17
|
export declare const planGroupTiers: {
|
|
16
18
|
min: number;
|
package/helpers/plans.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.planGroupTiers = exports.pricesPerPlan = exports.membersPerPlan = exports.PlanPeriod = exports.PlansGroup = void 0;
|
|
3
|
+
exports.planGroupTiers = exports.pricesPerPlan = exports.GUEST_INVITE_CODE_LENGTH = exports.MAX_GUESTS_PER_EVENT = exports.membersPerPlan = exports.PlanPeriod = exports.PlansGroup = void 0;
|
|
4
4
|
var PlansGroup;
|
|
5
5
|
(function (PlansGroup) {
|
|
6
6
|
PlansGroup["Piano"] = "piano";
|
|
@@ -23,6 +23,10 @@ exports.membersPerPlan = {
|
|
|
23
23
|
[PlansGroup.Fortissimo]: 100,
|
|
24
24
|
[PlansGroup.Tutti]: 1000,
|
|
25
25
|
};
|
|
26
|
+
// Max reinforcements (guests) allowed per event, independent of the plan tier.
|
|
27
|
+
exports.MAX_GUESTS_PER_EVENT = 10;
|
|
28
|
+
// Number of digits of the event guest invitation code.
|
|
29
|
+
exports.GUEST_INVITE_CODE_LENGTH = 6;
|
|
26
30
|
exports.pricesPerPlan = {
|
|
27
31
|
[PlanPeriod.Monthly]: {
|
|
28
32
|
[PlansGroup.Piano]: 0,
|
package/lang/ca.json
CHANGED
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
"communication.newComment.text": "{string:user.0.displayName} ha deixat un comentari en una publicació",
|
|
28
28
|
"communication.newComment.title": "💬 Nou comentari",
|
|
29
29
|
"event": "Esdeveniment",
|
|
30
|
+
"event.guest.joined.text": "{string:user.0.displayName} s'ha unit com a reforç a {string:event.0.displayName}",
|
|
31
|
+
"event.guest.joined.title": "🎺 Nou reforç",
|
|
30
32
|
"group.delete.text": "El grup {string:group.0.displayName} ha sigut eliminat",
|
|
31
33
|
"group.delete.title": "Grup eliminat",
|
|
32
34
|
"group.onboarding.attendance.text": "Qui està disponible per a l'assaig? 😍 Descobreix-ho amb llistes senzilles d'assistència 🙋♀️",
|
package/lang/de.json
CHANGED
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
"communication.newComment.text": "{string:user.0.displayName} hat einen Kommentar zu einem Beitrag hinterlassen",
|
|
28
28
|
"communication.newComment.title": "💬 Neuer Kommentar",
|
|
29
29
|
"event": "Veranstaltung",
|
|
30
|
+
"event.guest.joined.text": "{string:user.0.displayName} ist {string:event.0.displayName} als Verstärkung beigetreten",
|
|
31
|
+
"event.guest.joined.title": "🎺 Neue Verstärkung",
|
|
30
32
|
"group.delete.text": "Die Gruppe {string:group.0.displayName} wurde gelöscht",
|
|
31
33
|
"group.delete.title": "Gruppe gelöscht",
|
|
32
34
|
"group.onboarding.attendance.text": "Wer ist bei der Probe verfügbar? 😍 Erfahre es über einfache Anwesenheitslisten 🙋♀️",
|
package/lang/en.json
CHANGED
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
"communication.newComment.text": "{string:user.0.displayName} left a comment on a post",
|
|
28
28
|
"communication.newComment.title": "💬 New comment",
|
|
29
29
|
"event": "Event",
|
|
30
|
+
"event.guest.joined.text": "{string:user.0.displayName} has joined {string:event.0.displayName} as a reinforcement",
|
|
31
|
+
"event.guest.joined.title": "🎺 New reinforcement",
|
|
30
32
|
"group.delete.text": "The group {string:group.0.displayName} has been deleted",
|
|
31
33
|
"group.delete.title": "Group deleted",
|
|
32
34
|
"group.onboarding.attendance.text": "Who's available for rehearsal? 😍 Find out through simple attendance lists 🙋♀️",
|
package/lang/es.json
CHANGED
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
"communication.newComment.text": "{string:user.0.displayName} ha dejado un comentario en una publicación",
|
|
28
28
|
"communication.newComment.title": "💬 Nuevo comentario",
|
|
29
29
|
"event": "Evento",
|
|
30
|
+
"event.guest.joined.text": "{string:user.0.displayName} se ha unido como refuerzo a {string:event.0.displayName}",
|
|
31
|
+
"event.guest.joined.title": "🎺 Nuevo refuerzo",
|
|
30
32
|
"group.delete.text": "El grupo {string:group.0.displayName} ha sido eliminado",
|
|
31
33
|
"group.delete.title": "Grupo eliminado",
|
|
32
34
|
"group.onboarding.attendance.text": "¿Quién está disponible para el ensayo? 😍 Descúbrelo a través de listas sencillas de asistencia 🙋♀️",
|
package/lang/eu.json
CHANGED
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
"communication.newComment.text": "{string:user.0.displayName} erabiltzaileak iruzkin bat utzi du argitalpen batean",
|
|
28
28
|
"communication.newComment.title": "💬 Iruzkin berria",
|
|
29
29
|
"event": "Ekitaldia",
|
|
30
|
+
"event.guest.joined.text": "{string:user.0.displayName} indargarri gisa batu da {string:event.0.displayName} ekitaldira",
|
|
31
|
+
"event.guest.joined.title": "🎺 Indargarri berria",
|
|
30
32
|
"group.delete.text": "{string:group.0.displayName} taldea ezabatu da",
|
|
31
33
|
"group.delete.title": "Taldea ezabatuta",
|
|
32
34
|
"group.onboarding.attendance.text": "Nork parte har dezake entseguan? 😍 Ezagutu erantzun sinpleekin 🙋♀️",
|
package/lang/fr.json
CHANGED
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
"communication.newComment.text": "{string:user.0.displayName} a laissé un commentaire sur une publication",
|
|
28
28
|
"communication.newComment.title": "💬 Nouveau commentaire",
|
|
29
29
|
"event": "Événement",
|
|
30
|
+
"event.guest.joined.text": "{string:user.0.displayName} a rejoint {string:event.0.displayName} en renfort",
|
|
31
|
+
"event.guest.joined.title": "🎺 Nouveau renfort",
|
|
30
32
|
"group.delete.text": "Le groupe {string:group.0.displayName} a été supprimé",
|
|
31
33
|
"group.delete.title": "Groupe supprimé",
|
|
32
34
|
"group.onboarding.attendance.text": "Qui est disponible pour la répétition ? 😍 Découvrez-le grâce à des listes de présence simples 🙋♀️",
|
package/lang/gl.json
CHANGED
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
"communication.newComment.text": "{string:user.0.displayName} deixou un comentario nunha publicación",
|
|
28
28
|
"communication.newComment.title": "💬 Novo comentario",
|
|
29
29
|
"event": "Evento",
|
|
30
|
+
"event.guest.joined.text": "{string:user.0.displayName} uniuse como reforzo a {string:event.0.displayName}",
|
|
31
|
+
"event.guest.joined.title": "🎺 Novo reforzo",
|
|
30
32
|
"group.delete.text": "O grupo {string:group.0.displayName} foi eliminado",
|
|
31
33
|
"group.delete.title": "Grupo eliminado",
|
|
32
34
|
"group.onboarding.attendance.text": "¿Quen está dispoñible para o ensaio? 😍 Descúbreo con listas sinxelas de asistencia 🙋♀️",
|
package/lang/it.json
CHANGED
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
"communication.newComment.text": "{string:user.0.displayName} ha lasciato un commento su un post",
|
|
28
28
|
"communication.newComment.title": "💬 Nuovo commento",
|
|
29
29
|
"event": "Evento",
|
|
30
|
+
"event.guest.joined.text": "{string:user.0.displayName} si è unito a {string:event.0.displayName} come rinforzo",
|
|
31
|
+
"event.guest.joined.title": "🎺 Nuovo rinforzo",
|
|
30
32
|
"group.delete.text": "Il gruppo {string:group.0.displayName} è stato eliminato",
|
|
31
33
|
"group.delete.title": "Gruppo eliminato",
|
|
32
34
|
"group.onboarding.attendance.text": "Chi è disponibile per la prova? 😍 Scoprilo tramite semplici liste di presenza 🙋♀️",
|
package/lang/nl.json
CHANGED
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
"communication.newComment.text": "{string:user.0.displayName} heeft een reactie achtergelaten op een bericht",
|
|
28
28
|
"communication.newComment.title": "💬 Nieuwe reactie",
|
|
29
29
|
"event": "Evenement",
|
|
30
|
+
"event.guest.joined.text": "{string:user.0.displayName} heeft zich als versterking bij {string:event.0.displayName} aangesloten",
|
|
31
|
+
"event.guest.joined.title": "🎺 Nieuwe versterking",
|
|
30
32
|
"group.delete.text": "De groep {string:group.0.displayName} is verwijderd",
|
|
31
33
|
"group.delete.title": "Groep verwijderd",
|
|
32
34
|
"group.onboarding.attendance.text": "Wie is beschikbaar voor de repetitie? 😍 Ontdek het via eenvoudige aanwezigheidslijsten 🙋♀️",
|
package/lang/pt.json
CHANGED
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
"communication.newComment.text": "{string:user.0.displayName} deixou um comentário em uma publicação",
|
|
28
28
|
"communication.newComment.title": "💬 Novo comentário",
|
|
29
29
|
"event": "Evento",
|
|
30
|
+
"event.guest.joined.text": "{string:user.0.displayName} juntou-se a {string:event.0.displayName} como reforço",
|
|
31
|
+
"event.guest.joined.title": "🎺 Novo reforço",
|
|
30
32
|
"group.delete.text": "O grupo {string:group.0.displayName} foi excluído",
|
|
31
33
|
"group.delete.title": "Grupo excluído",
|
|
32
34
|
"group.onboarding.attendance.text": "Quem está disponível para o ensaio? 😍 Descubra por meio de listas simples de presença 🙋♀️",
|
|
@@ -12,7 +12,6 @@ export default class EventoPlayerBasic {
|
|
|
12
12
|
get photoURL(): string;
|
|
13
13
|
get mainInstrument(): import("../../../helpers/instruments").InstrumentId;
|
|
14
14
|
get isGuest(): boolean;
|
|
15
|
-
get isGroupPlayer(): boolean;
|
|
16
15
|
get status(): EventPlayerStatus | null;
|
|
17
16
|
get reason(): import("./types").EventPlayerReason | null;
|
|
18
17
|
get note(): string | null;
|
|
@@ -9,7 +9,6 @@ export default class EventoPlayer extends PlayerBasic<EventPlayerData> {
|
|
|
9
9
|
get eventId(): string;
|
|
10
10
|
get status(): EventPlayerStatus | null;
|
|
11
11
|
get isGuest(): boolean;
|
|
12
|
-
get isGroupPlayer(): boolean;
|
|
13
12
|
get isConfirmed(): boolean;
|
|
14
13
|
get isDeclined(): boolean;
|
|
15
14
|
get isPending(): boolean;
|
package/models/Evento/index.d.ts
CHANGED
|
@@ -26,10 +26,13 @@ export default class Evento extends EventoPromoter<EventData> {
|
|
|
26
26
|
get playerIds(): string[];
|
|
27
27
|
get players(): Record<string, import("./types").EventPlayerBasicData>;
|
|
28
28
|
get playersCount(): number;
|
|
29
|
+
get guestIds(): string[];
|
|
30
|
+
get guestsCount(): number;
|
|
29
31
|
get repertory(): Record<string, import("./types").EventThemeBasicData>;
|
|
30
32
|
get repertoryIds(): string[];
|
|
31
33
|
get repertoryCount(): number;
|
|
32
34
|
get activeInvitationLink(): boolean;
|
|
35
|
+
get guestInviteCode(): string | null;
|
|
33
36
|
get invitationLink(): string;
|
|
34
37
|
get shortDynamicLink(): string;
|
|
35
38
|
get deletedAt(): FirebaseFirestore.Timestamp | null;
|
package/models/Evento/index.js
CHANGED
|
@@ -62,6 +62,13 @@ class Evento extends promoter_1.default {
|
|
|
62
62
|
get playersCount() {
|
|
63
63
|
return this.data.playerIds.length;
|
|
64
64
|
}
|
|
65
|
+
// Ids of reinforcements (guests) currently participating in this event.
|
|
66
|
+
get guestIds() {
|
|
67
|
+
return this.playerIds.filter((playerId) => this.players[playerId]?.isGuest === true);
|
|
68
|
+
}
|
|
69
|
+
get guestsCount() {
|
|
70
|
+
return this.guestIds.length;
|
|
71
|
+
}
|
|
65
72
|
get repertory() {
|
|
66
73
|
return this.data.repertory || {};
|
|
67
74
|
}
|
|
@@ -74,6 +81,9 @@ class Evento extends promoter_1.default {
|
|
|
74
81
|
get activeInvitationLink() {
|
|
75
82
|
return this.data.activeInvitationLink || false;
|
|
76
83
|
}
|
|
84
|
+
get guestInviteCode() {
|
|
85
|
+
return this.data.guestInviteCode || null;
|
|
86
|
+
}
|
|
77
87
|
get invitationLink() {
|
|
78
88
|
const link = `https://glissandoo.com/joinevent/${this.id}`;
|
|
79
89
|
if (lang_1.LanguagesTypes.ES === this.lang) {
|
package/models/Evento/types.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export declare enum EventHistoryAction {
|
|
|
23
23
|
EditReminders = "edit_reminders",
|
|
24
24
|
PlayerAdd = "player_add",
|
|
25
25
|
PlayerRemove = "player_remove",
|
|
26
|
+
GuestJoined = "guest_joined",
|
|
26
27
|
PlayerStatusChange = "player_status_change",
|
|
27
28
|
RepertoireAdd = "repertoire_add",
|
|
28
29
|
RepertoireRemove = "repertoire_remove",
|
|
@@ -158,6 +159,7 @@ export interface EventData extends EventPromoterData {
|
|
|
158
159
|
repertory: Record<string, EventThemeBasicData>;
|
|
159
160
|
relEvents: string[];
|
|
160
161
|
activeInvitationLink: boolean;
|
|
162
|
+
guestInviteCode: string | null;
|
|
161
163
|
shortDynamicLink: string | null;
|
|
162
164
|
invitationLink: string | null;
|
|
163
165
|
notifyAt: Timestamp;
|
package/models/Evento/types.js
CHANGED
|
@@ -18,6 +18,7 @@ var EventHistoryAction;
|
|
|
18
18
|
EventHistoryAction["EditReminders"] = "edit_reminders";
|
|
19
19
|
EventHistoryAction["PlayerAdd"] = "player_add";
|
|
20
20
|
EventHistoryAction["PlayerRemove"] = "player_remove";
|
|
21
|
+
EventHistoryAction["GuestJoined"] = "guest_joined";
|
|
21
22
|
EventHistoryAction["PlayerStatusChange"] = "player_status_change";
|
|
22
23
|
EventHistoryAction["RepertoireAdd"] = "repertoire_add";
|
|
23
24
|
EventHistoryAction["RepertoireRemove"] = "repertoire_remove";
|
|
@@ -14,6 +14,8 @@ export default class GroupPlayer extends UserExtended<GroupPlayerData> {
|
|
|
14
14
|
get instrumentsLastUpdatedBy(): string | null;
|
|
15
15
|
get role(): GroupPlayerRole;
|
|
16
16
|
get isAdmin(): boolean;
|
|
17
|
+
get isGuest(): boolean;
|
|
18
|
+
get isMember(): boolean;
|
|
17
19
|
get permissions(): import("../types").AdminPermissions[];
|
|
18
20
|
get joinedAt(): FirebaseFirestore.Timestamp;
|
|
19
21
|
get leavedAt(): FirebaseFirestore.Timestamp | null;
|
|
@@ -38,6 +38,12 @@ class GroupPlayer extends extended_1.default {
|
|
|
38
38
|
get isAdmin() {
|
|
39
39
|
return this.role === types_1.GroupPlayerRole.Admin;
|
|
40
40
|
}
|
|
41
|
+
get isGuest() {
|
|
42
|
+
return this.role === types_1.GroupPlayerRole.Guest;
|
|
43
|
+
}
|
|
44
|
+
get isMember() {
|
|
45
|
+
return !this.isGuest;
|
|
46
|
+
}
|
|
41
47
|
get permissions() {
|
|
42
48
|
return this.data.permissions || [];
|
|
43
49
|
}
|
package/models/Group/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export default class Group extends GroupBasic<GroupData> {
|
|
|
10
10
|
constructor(doc: DocumentModel, lang?: LanguagesTypes);
|
|
11
11
|
get owner(): DocumentReference;
|
|
12
12
|
get playerIds(): string[];
|
|
13
|
-
get players(): Record<string, import("
|
|
13
|
+
get players(): Record<string, import("./types").GroupPlayerBasicData>;
|
|
14
14
|
get playersCount(): number;
|
|
15
15
|
get description(): string | null;
|
|
16
16
|
get addresses(): import("./types").GroupAddressData[];
|
|
@@ -36,8 +36,22 @@ export default class Group extends GroupBasic<GroupData> {
|
|
|
36
36
|
get currency(): string;
|
|
37
37
|
get currencySymbol(): string;
|
|
38
38
|
get activePlayers(): string[];
|
|
39
|
+
get guestIds(): string[];
|
|
40
|
+
get activeMembers(): string[];
|
|
41
|
+
isGuestPlayer: (userId: string) => boolean;
|
|
39
42
|
get playersList(): {
|
|
40
43
|
id: string;
|
|
44
|
+
isGuest?: boolean | undefined;
|
|
45
|
+
mainInstrument: import("../../helpers/instruments").InstrumentId;
|
|
46
|
+
username: string;
|
|
47
|
+
name: string;
|
|
48
|
+
lastname: string;
|
|
49
|
+
displayName: string;
|
|
50
|
+
photoURL: string;
|
|
51
|
+
}[];
|
|
52
|
+
get membersList(): {
|
|
53
|
+
id: string;
|
|
54
|
+
isGuest?: boolean | undefined;
|
|
41
55
|
mainInstrument: import("../../helpers/instruments").InstrumentId;
|
|
42
56
|
username: string;
|
|
43
57
|
name: string;
|
|
@@ -74,7 +88,7 @@ export default class Group extends GroupBasic<GroupData> {
|
|
|
74
88
|
last: number;
|
|
75
89
|
};
|
|
76
90
|
get metadata(): Record<string, string>;
|
|
77
|
-
getPlayer: (userId: string) => import("
|
|
91
|
+
getPlayer: (userId: string) => import("./types").GroupPlayerBasicData | null;
|
|
78
92
|
isAdmin: (userId: string) => boolean;
|
|
79
93
|
isPlayer: (userId: string) => boolean;
|
|
80
94
|
/** @deprecated use isUpgradeRequired */
|
package/models/Group/index.js
CHANGED
|
@@ -17,6 +17,9 @@ const types_1 = require("./types");
|
|
|
17
17
|
class Group extends basic_1.default {
|
|
18
18
|
constructor(doc, lang = lang_1.defaultLocale) {
|
|
19
19
|
super(doc, lang);
|
|
20
|
+
this.isGuestPlayer = (userId) => {
|
|
21
|
+
return this.players[userId]?.isGuest === true;
|
|
22
|
+
};
|
|
20
23
|
this.getPlayer = (userId) => {
|
|
21
24
|
return userId in this.players ? this.players[userId] : null;
|
|
22
25
|
};
|
|
@@ -118,6 +121,15 @@ class Group extends basic_1.default {
|
|
|
118
121
|
get activePlayers() {
|
|
119
122
|
return Object.keys(this.players);
|
|
120
123
|
}
|
|
124
|
+
// Reinforcements (guests) are members at the data level but excluded from
|
|
125
|
+
// plan limits and the normal member flows.
|
|
126
|
+
get guestIds() {
|
|
127
|
+
return this.activePlayers.filter((playerId) => this.players[playerId]?.isGuest === true);
|
|
128
|
+
}
|
|
129
|
+
// Regular members, excluding guests. Use this for plan limit calculations.
|
|
130
|
+
get activeMembers() {
|
|
131
|
+
return this.activePlayers.filter((playerId) => this.players[playerId]?.isGuest !== true);
|
|
132
|
+
}
|
|
121
133
|
get playersList() {
|
|
122
134
|
const players = this.activePlayers.map((playerId) => ({
|
|
123
135
|
...this.players[playerId],
|
|
@@ -125,6 +137,11 @@ class Group extends basic_1.default {
|
|
|
125
137
|
}));
|
|
126
138
|
return (0, orders_1.orderByInstruments)(players, 'mainInstrument', this.instrumentsIds);
|
|
127
139
|
}
|
|
140
|
+
// Ordered list of regular members (excludes guests). Use for member
|
|
141
|
+
// selection, rosters/templates and group-wide communications.
|
|
142
|
+
get membersList() {
|
|
143
|
+
return this.playersList.filter((player) => !this.players[player.id]?.isGuest);
|
|
144
|
+
}
|
|
128
145
|
get isActive() {
|
|
129
146
|
return this.exists && !this.deletedAt;
|
|
130
147
|
}
|
|
@@ -210,18 +227,18 @@ class Group extends basic_1.default {
|
|
|
210
227
|
/** @deprecated use isUpgradeRequired */
|
|
211
228
|
get isExpiredTrial() {
|
|
212
229
|
const isOutDateTrial = (0, date_fns_1.isPast)(this.trialEndAt);
|
|
213
|
-
const members = this.
|
|
230
|
+
const members = this.activeMembers.length;
|
|
214
231
|
const isAboveMembersLimitPlanFree = members > plans_1.membersPerPlan[plans_1.PlansGroup.Piano];
|
|
215
232
|
return this.status !== types_1.GroupStatus.Premium && isOutDateTrial && isAboveMembersLimitPlanFree;
|
|
216
233
|
}
|
|
217
234
|
get isOutOfMembersLimit() {
|
|
218
|
-
const members = this.
|
|
235
|
+
const members = this.activeMembers.length;
|
|
219
236
|
return members > plans_1.membersPerPlan[this.planId];
|
|
220
237
|
}
|
|
221
238
|
get isUpgradePlanRequired() {
|
|
222
239
|
const graceMembers = 4;
|
|
223
240
|
const planMembers = plans_1.membersPerPlan[this.planId] + graceMembers;
|
|
224
|
-
const members = this.
|
|
241
|
+
const members = this.activeMembers.length;
|
|
225
242
|
return members > planMembers;
|
|
226
243
|
}
|
|
227
244
|
get firstAnswerAt() {
|
package/models/Group/types.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare enum GroupHistoryAction {
|
|
|
16
16
|
MemberRemove = "member_remove",
|
|
17
17
|
MemberInstrumentChange = "member_instrument_change",
|
|
18
18
|
MemberPermissionsChange = "member_permissions_change",
|
|
19
|
+
GuestPromoted = "guest_promoted",
|
|
19
20
|
TemplateCreated = "template_created",
|
|
20
21
|
TemplateDeleted = "template_deleted",
|
|
21
22
|
TemplateEdited = "template_edited",
|
|
@@ -38,6 +39,12 @@ export declare enum GroupCustomFieldType {
|
|
|
38
39
|
LINK = "link",
|
|
39
40
|
PARAGRAPH = "paragraph"
|
|
40
41
|
}
|
|
42
|
+
export declare enum GroupCustomFieldMemberAccess {
|
|
43
|
+
Private = "private",
|
|
44
|
+
ReadOnly = "readOnly",
|
|
45
|
+
Editable = "editable",
|
|
46
|
+
Required = "required"
|
|
47
|
+
}
|
|
41
48
|
export interface GroupCustomFieldOption {
|
|
42
49
|
id: string;
|
|
43
50
|
value: string;
|
|
@@ -45,9 +52,21 @@ export interface GroupCustomFieldOption {
|
|
|
45
52
|
export interface GroupCustomField {
|
|
46
53
|
label: string;
|
|
47
54
|
type: GroupCustomFieldType;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Member-facing access level. Single source of truth for visibility,
|
|
57
|
+
* editability and join-time enforcement.
|
|
58
|
+
*/
|
|
59
|
+
memberAccess?: GroupCustomFieldMemberAccess;
|
|
60
|
+
/**
|
|
61
|
+
* @deprecated Superseded by `memberAccess`. Only retained so the one-off
|
|
62
|
+
* backfill can derive `memberAccess` from legacy documents.
|
|
63
|
+
*/
|
|
64
|
+
required?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* @deprecated Superseded by `memberAccess`. Only retained so the one-off
|
|
67
|
+
* backfill can derive `memberAccess` from legacy documents.
|
|
68
|
+
*/
|
|
69
|
+
allowEditByMember?: boolean;
|
|
51
70
|
placeholder: string | null;
|
|
52
71
|
options: GroupCustomFieldOption[];
|
|
53
72
|
order: number;
|
|
@@ -148,6 +167,9 @@ export interface GroupTemplateData {
|
|
|
148
167
|
export interface AGroupTemplateData extends GroupTemplateData {
|
|
149
168
|
id: string;
|
|
150
169
|
}
|
|
170
|
+
export interface GroupPlayerBasicData extends PlayerBasicData {
|
|
171
|
+
isGuest?: boolean;
|
|
172
|
+
}
|
|
151
173
|
export interface GroupAlgoliaData extends Omit<GroupBasicData, 'location'> {
|
|
152
174
|
objectID: string;
|
|
153
175
|
_geoloc: {
|
|
@@ -241,7 +263,7 @@ export interface AGroupEventQuestion extends GroupEventQuestion {
|
|
|
241
263
|
export type GroupInstruments = Partial<Record<DefaultInstrumentId, DefaultGroupInstrument>> & Record<CustomInstrumentId, CustomGroupInstrument>;
|
|
242
264
|
export interface GroupData extends GroupBasicData {
|
|
243
265
|
playerIds: string[];
|
|
244
|
-
players: Record<string,
|
|
266
|
+
players: Record<string, GroupPlayerBasicData>;
|
|
245
267
|
templates: Record<string, GroupTemplateData>;
|
|
246
268
|
administrators: string[];
|
|
247
269
|
adminPermissions: Record<string, AdminPermissions[]>;
|
package/models/Group/types.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GroupRepertoireTagDefault = exports.GroupRepertoireTagReserved = exports.SocialNetwork = exports.GroupModulePlan = exports.GroupModuleId = exports.GroupStatus = exports.GroupConfigShowAttendanceToMembers = exports.GroupConfigSitesKey = exports.GroupConfigKey = exports.AdminPermissions = exports.GroupCustomFieldType = exports.GroupHistoryAction = void 0;
|
|
3
|
+
exports.GroupRepertoireTagDefault = exports.GroupRepertoireTagReserved = exports.SocialNetwork = exports.GroupModulePlan = exports.GroupModuleId = exports.GroupStatus = exports.GroupConfigShowAttendanceToMembers = exports.GroupConfigSitesKey = exports.GroupConfigKey = exports.AdminPermissions = exports.GroupCustomFieldMemberAccess = exports.GroupCustomFieldType = exports.GroupHistoryAction = void 0;
|
|
4
4
|
var GroupHistoryAction;
|
|
5
5
|
(function (GroupHistoryAction) {
|
|
6
6
|
GroupHistoryAction["Created"] = "created";
|
|
@@ -11,6 +11,7 @@ var GroupHistoryAction;
|
|
|
11
11
|
GroupHistoryAction["MemberRemove"] = "member_remove";
|
|
12
12
|
GroupHistoryAction["MemberInstrumentChange"] = "member_instrument_change";
|
|
13
13
|
GroupHistoryAction["MemberPermissionsChange"] = "member_permissions_change";
|
|
14
|
+
GroupHistoryAction["GuestPromoted"] = "guest_promoted";
|
|
14
15
|
GroupHistoryAction["TemplateCreated"] = "template_created";
|
|
15
16
|
GroupHistoryAction["TemplateDeleted"] = "template_deleted";
|
|
16
17
|
GroupHistoryAction["TemplateEdited"] = "template_edited";
|
|
@@ -35,6 +36,13 @@ var GroupCustomFieldType;
|
|
|
35
36
|
GroupCustomFieldType["LINK"] = "link";
|
|
36
37
|
GroupCustomFieldType["PARAGRAPH"] = "paragraph";
|
|
37
38
|
})(GroupCustomFieldType = exports.GroupCustomFieldType || (exports.GroupCustomFieldType = {}));
|
|
39
|
+
var GroupCustomFieldMemberAccess;
|
|
40
|
+
(function (GroupCustomFieldMemberAccess) {
|
|
41
|
+
GroupCustomFieldMemberAccess["Private"] = "private";
|
|
42
|
+
GroupCustomFieldMemberAccess["ReadOnly"] = "readOnly";
|
|
43
|
+
GroupCustomFieldMemberAccess["Editable"] = "editable";
|
|
44
|
+
GroupCustomFieldMemberAccess["Required"] = "required";
|
|
45
|
+
})(GroupCustomFieldMemberAccess = exports.GroupCustomFieldMemberAccess || (exports.GroupCustomFieldMemberAccess = {}));
|
|
38
46
|
var AdminPermissions;
|
|
39
47
|
(function (AdminPermissions) {
|
|
40
48
|
AdminPermissions["Owner"] = "owner";
|
|
@@ -18,6 +18,7 @@ export declare enum NotificationActions {
|
|
|
18
18
|
BadgePlayedWorksUpLevel = "badgePlayedWorks.upLevel",
|
|
19
19
|
CommunicationCreate = "communication.create",
|
|
20
20
|
CommunicationNewComment = "communication.newComment",
|
|
21
|
+
EventGuestJoined = "event.guest.joined",
|
|
21
22
|
GroupDelete = "group.delete",
|
|
22
23
|
GroupPlayersAdd = "group.players.add",
|
|
23
24
|
GroupPlayersJoin = "group.players.join",
|
|
@@ -15,6 +15,7 @@ var NotificationActions;
|
|
|
15
15
|
NotificationActions["BadgePlayedWorksUpLevel"] = "badgePlayedWorks.upLevel";
|
|
16
16
|
NotificationActions["CommunicationCreate"] = "communication.create";
|
|
17
17
|
NotificationActions["CommunicationNewComment"] = "communication.newComment";
|
|
18
|
+
NotificationActions["EventGuestJoined"] = "event.guest.joined";
|
|
18
19
|
NotificationActions["GroupDelete"] = "group.delete";
|
|
19
20
|
NotificationActions["GroupPlayersAdd"] = "group.players.add";
|
|
20
21
|
NotificationActions["GroupPlayersJoin"] = "group.players.join";
|
|
@@ -27,7 +27,7 @@ export default class Partnership extends PartnershipBasic<PartnershipData> {
|
|
|
27
27
|
get boardMembers(): import("../../helpers/types").BoardMemberItem[];
|
|
28
28
|
get boardDocuments(): import("../../helpers/types").BoardDocumentItem[];
|
|
29
29
|
get language(): import("../../lang").LanguagesTypes;
|
|
30
|
-
get customFields(): Record<string, import("
|
|
30
|
+
get customFields(): Record<string, import("./types").PartnershipCustomField>;
|
|
31
31
|
get customFieldsList(): APartnershipCustomField[];
|
|
32
32
|
get tags(): Record<string, import("./types").PartnershipTag>;
|
|
33
33
|
get tagsList(): APartnershipTag[];
|
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
import { DocumentReference, Timestamp } from '@google-cloud/firestore';
|
|
2
2
|
import { AdminItem, BasicAddressData, BoardDocumentItem, BoardMemberItem } from '../../helpers/types';
|
|
3
3
|
import { LanguagesTypes } from '../../lang';
|
|
4
|
-
import {
|
|
5
|
-
export
|
|
6
|
-
|
|
4
|
+
import { GroupCustomFieldOption, GroupCustomFieldType } from '../Group/types';
|
|
5
|
+
export interface PartnershipCustomField {
|
|
6
|
+
label: string;
|
|
7
|
+
type: GroupCustomFieldType;
|
|
8
|
+
required: boolean;
|
|
9
|
+
private?: boolean;
|
|
10
|
+
placeholder: string | null;
|
|
11
|
+
options: GroupCustomFieldOption[];
|
|
12
|
+
order: number;
|
|
13
|
+
createdAt: Timestamp;
|
|
14
|
+
updatedAt: Timestamp;
|
|
15
|
+
createdBy: string;
|
|
16
|
+
updatedBy: string;
|
|
17
|
+
}
|
|
18
|
+
export interface APartnershipCustomField extends PartnershipCustomField {
|
|
19
|
+
id: string;
|
|
20
|
+
}
|
|
7
21
|
export interface PartnershipTag {
|
|
8
22
|
label: string;
|
|
9
23
|
order: number;
|