@bash-app/bash-common 30.377.0 → 30.381.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/dist/__tests__/locationShare.test.js +22 -1
- package/dist/__tests__/locationShare.test.js.map +1 -1
- package/dist/bashFeedTypes.d.ts +24 -0
- package/dist/bashFeedTypes.d.ts.map +1 -1
- package/dist/locationShare.d.ts +15 -0
- package/dist/locationShare.d.ts.map +1 -1
- package/dist/locationShare.js +46 -0
- package/dist/locationShare.js.map +1 -1
- package/package.json +1 -1
- package/prisma/schema.prisma +4 -0
- package/src/__tests__/locationShare.test.ts +29 -0
- package/src/bashFeedTypes.ts +17 -0
- package/src/locationShare.ts +73 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { computeLocationShareExpiresAt, isLocationShareCrewMember, isLocationShareEventParticipant, isLocationShareLiveBookingStatus, isLocationShareLiveTaskStatus, LOCATION_SHARE_BOOKING_STATUSES, LOCATION_SHARE_DEFAULT_TTL_MS, LOCATION_SHARE_GRACE_MS, LOCATION_SHARE_START_FALLBACK_MS, LOCATION_SHARE_TASK_STATUSES, } from "../locationShare.js";
|
|
1
|
+
import { computeLocationShareExpiresAt, isLocationShareCrewMember, isLocationShareEventParticipant, isLocationShareLiveBookingStatus, isLocationShareLiveTaskStatus, LOCATION_SHARE_BOOKING_STATUSES, LOCATION_SHARE_DEFAULT_TTL_MS, LOCATION_SHARE_GRACE_MS, LOCATION_SHARE_START_FALLBACK_MS, LOCATION_SHARE_TASK_STATUSES, mergeLocationShareViewer, sortLocationShareViewers, } from "../locationShare.js";
|
|
2
2
|
describe("locationShare helpers", () => {
|
|
3
3
|
describe("isLocationShareCrewMember", () => {
|
|
4
4
|
it("allows the creator", () => {
|
|
@@ -70,5 +70,26 @@ describe("locationShare helpers", () => {
|
|
|
70
70
|
expect(expires.getTime()).toBe(now.getTime() + LOCATION_SHARE_DEFAULT_TTL_MS);
|
|
71
71
|
});
|
|
72
72
|
});
|
|
73
|
+
describe("mergeLocationShareViewer", () => {
|
|
74
|
+
const teaser = (id) => ({ id });
|
|
75
|
+
it("keeps Host over Task for the same person", () => {
|
|
76
|
+
const byUserId = new Map();
|
|
77
|
+
mergeLocationShareViewer(byUserId, teaser("u1"), "Task");
|
|
78
|
+
mergeLocationShareViewer(byUserId, teaser("u1"), "Host");
|
|
79
|
+
expect(byUserId.get("u1")?.role).toBe("Host");
|
|
80
|
+
});
|
|
81
|
+
it("ignores a missing user", () => {
|
|
82
|
+
const byUserId = new Map();
|
|
83
|
+
mergeLocationShareViewer(byUserId, null, "Host");
|
|
84
|
+
expect(byUserId.size).toBe(0);
|
|
85
|
+
});
|
|
86
|
+
it("sorts Host before hired providers", () => {
|
|
87
|
+
const sorted = sortLocationShareViewers([
|
|
88
|
+
{ userId: "b", role: "Provider", user: teaser("b") },
|
|
89
|
+
{ userId: "a", role: "Host", user: teaser("a") },
|
|
90
|
+
]);
|
|
91
|
+
expect(sorted.map((v) => v.role)).toEqual(["Host", "Provider"]);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
73
94
|
});
|
|
74
95
|
//# sourceMappingURL=locationShare.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locationShare.test.js","sourceRoot":"","sources":["../../src/__tests__/locationShare.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,+BAA+B,EAC/B,gCAAgC,EAChC,6BAA6B,EAC7B,+BAA+B,EAC/B,6BAA6B,EAC7B,uBAAuB,EACvB,gCAAgC,EAChC,4BAA4B,
|
|
1
|
+
{"version":3,"file":"locationShare.test.js","sourceRoot":"","sources":["../../src/__tests__/locationShare.test.ts"],"names":[],"mappings":"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"}
|
package/dist/bashFeedTypes.d.ts
CHANGED
|
@@ -100,6 +100,30 @@ export type PostWithDetailsForEnrich = PostWithDetails & {
|
|
|
100
100
|
ratings?: unknown;
|
|
101
101
|
reposts?: unknown;
|
|
102
102
|
};
|
|
103
|
+
/**
|
|
104
|
+
* The caller's own single in-progress draft (`GET/PUT /bashfeed/draft`) - a private editing
|
|
105
|
+
* view, not a public feed card, so it's intentionally lighter than `PostWithDetails` (no
|
|
106
|
+
* user/likes/counts to load for a post nobody else can see yet).
|
|
107
|
+
*/
|
|
108
|
+
export interface BashFeedDraftView {
|
|
109
|
+
id: string;
|
|
110
|
+
bashId: string | null;
|
|
111
|
+
serviceId: string | null;
|
|
112
|
+
content: string | null;
|
|
113
|
+
mediaIds: string[];
|
|
114
|
+
mediaUrls: string[];
|
|
115
|
+
isAnonymous: boolean;
|
|
116
|
+
bash: {
|
|
117
|
+
id: string;
|
|
118
|
+
title: string | null;
|
|
119
|
+
coverPhoto: string | null;
|
|
120
|
+
} | null;
|
|
121
|
+
service: {
|
|
122
|
+
id: string;
|
|
123
|
+
serviceName: string | null;
|
|
124
|
+
coverPhoto: string | null;
|
|
125
|
+
} | null;
|
|
126
|
+
}
|
|
103
127
|
/**
|
|
104
128
|
* Minimum shape the feed ranking algorithm reads (Prisma includes / `PostWithDetails` satisfy this).
|
|
105
129
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bashFeedTypes.d.ts","sourceRoot":"","sources":["../src/bashFeedTypes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bashFeedTypes.d.ts","sourceRoot":"","sources":["../src/bashFeedTypes.ts"],"names":[],"mappings":"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"}
|
package/dist/locationShare.d.ts
CHANGED
|
@@ -111,4 +111,19 @@ export type LocationShareSessionListItem = Prisma.LocationShareSessionGetPayload
|
|
|
111
111
|
select: typeof LOCATION_SHARE_SESSION_LIST_SELECT;
|
|
112
112
|
}>;
|
|
113
113
|
export type LocationShareMySession = Pick<LocationShareSessionListItem, "id" | "bashEventId" | "userId" | "status" | "startedAt" | "expiresAt" | "stoppedAt" | "lastLat" | "lastLng" | "lastAccuracyM" | "lastUpdatedAt">;
|
|
114
|
+
/** Why this person can see live location on the bash. */
|
|
115
|
+
export declare const LOCATION_SHARE_VIEWER_ROLES: readonly ["Host", "Organizer", "CoHost", "Promoter", "Task", "Provider"];
|
|
116
|
+
export type LocationShareViewerRole = (typeof LOCATION_SHARE_VIEWER_ROLES)[number];
|
|
117
|
+
/** Host-facing labels — access copy, not promoter voice. */
|
|
118
|
+
export declare const LOCATION_SHARE_VIEWER_ROLE_LABEL: Record<LocationShareViewerRole, string>;
|
|
119
|
+
export type LocationShareViewer = {
|
|
120
|
+
userId: string;
|
|
121
|
+
role: LocationShareViewerRole;
|
|
122
|
+
user: Prisma.UserGetPayload<{
|
|
123
|
+
select: typeof LOCATION_SHARE_SESSION_USER_SELECT;
|
|
124
|
+
}>;
|
|
125
|
+
};
|
|
126
|
+
/** Keep the highest-rank role when the same person qualifies more than once. */
|
|
127
|
+
export declare function mergeLocationShareViewer(byUserId: Map<string, LocationShareViewer>, user: LocationShareViewer["user"] | null | undefined, role: LocationShareViewerRole): void;
|
|
128
|
+
export declare function sortLocationShareViewers(viewers: LocationShareViewer[]): LocationShareViewer[];
|
|
114
129
|
//# sourceMappingURL=locationShare.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locationShare.d.ts","sourceRoot":"","sources":["../src/locationShare.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAI7C,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,QAAqB,CAAC;AAE1D,yDAAyD;AACzD,eAAO,MAAM,6BAA6B,QAAsB,CAAC;AAEjE,uDAAuD;AACvD,eAAO,MAAM,gCAAgC,QAAsB,CAAC;AAEpE,eAAO,MAAM,mBAAmB;;;;CAItB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAC7B,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAEjE,+DAA+D;AAC/D,eAAO,MAAM,4BAA4B,iDAI/B,CAAC;AAEX,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhD,oEAAoE;AACpE,eAAO,MAAM,+BAA+B,oCAGlC,CAAC;AAEX,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,MAAM,IAAI,uBAAuB,CAKnC;AAED,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,MAAM,IAAI,0BAA0B,CAKtC;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACjC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAC3B,WAAW,CAAC,EAAE;IACZ,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B,GAAG,IAAI,GACP,OAAO,CAOT;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACjC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAC3B,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE;QACZ,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QAC7B,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;KAC3B,GAAG,IAAI,CAAC;IACT,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qFAAqF;IACrF,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GACA,OAAO,CAYT;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE;IACJ,aAAa,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;CACpC,EACD,GAAG,GAAE,IAAiB,GACrB,IAAI,CAUN;AAED,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;CAElB,CAAC;AAE9B,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAaF,CAAC;AAE9C,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC,8BAA8B,CAAC;IAC/E,MAAM,EAAE,OAAO,kCAAkC,CAAC;CACnD,CAAC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,4BAA4B,EAC1B,IAAI,GACJ,aAAa,GACb,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,WAAW,GACX,WAAW,GACX,SAAS,GACT,SAAS,GACT,eAAe,GACf,eAAe,CAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"locationShare.d.ts","sourceRoot":"","sources":["../src/locationShare.ts"],"names":[],"mappings":"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"}
|
package/dist/locationShare.js
CHANGED
|
@@ -92,4 +92,50 @@ export const LOCATION_SHARE_SESSION_LIST_SELECT = {
|
|
|
92
92
|
lastUpdatedAt: true,
|
|
93
93
|
user: { select: LOCATION_SHARE_SESSION_USER_SELECT },
|
|
94
94
|
};
|
|
95
|
+
/** Why this person can see live location on the bash. */
|
|
96
|
+
export const LOCATION_SHARE_VIEWER_ROLES = [
|
|
97
|
+
"Host",
|
|
98
|
+
"Organizer",
|
|
99
|
+
"CoHost",
|
|
100
|
+
"Promoter",
|
|
101
|
+
"Task",
|
|
102
|
+
"Provider",
|
|
103
|
+
];
|
|
104
|
+
const LOCATION_SHARE_VIEWER_ROLE_RANK = {
|
|
105
|
+
Host: 0,
|
|
106
|
+
Organizer: 1,
|
|
107
|
+
CoHost: 2,
|
|
108
|
+
Promoter: 3,
|
|
109
|
+
Task: 4,
|
|
110
|
+
Provider: 5,
|
|
111
|
+
};
|
|
112
|
+
/** Host-facing labels — access copy, not promoter voice. */
|
|
113
|
+
export const LOCATION_SHARE_VIEWER_ROLE_LABEL = {
|
|
114
|
+
Host: "Host",
|
|
115
|
+
Organizer: "Organizer",
|
|
116
|
+
CoHost: "Co-host",
|
|
117
|
+
Promoter: "Promoter",
|
|
118
|
+
Task: "On a task",
|
|
119
|
+
Provider: "Hired",
|
|
120
|
+
};
|
|
121
|
+
/** Keep the highest-rank role when the same person qualifies more than once. */
|
|
122
|
+
export function mergeLocationShareViewer(byUserId, user, role) {
|
|
123
|
+
if (!user?.id)
|
|
124
|
+
return;
|
|
125
|
+
const existing = byUserId.get(user.id);
|
|
126
|
+
if (!existing ||
|
|
127
|
+
LOCATION_SHARE_VIEWER_ROLE_RANK[role] <
|
|
128
|
+
LOCATION_SHARE_VIEWER_ROLE_RANK[existing.role]) {
|
|
129
|
+
byUserId.set(user.id, { userId: user.id, role, user });
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
export function sortLocationShareViewers(viewers) {
|
|
133
|
+
return [...viewers].sort((a, b) => {
|
|
134
|
+
const rank = LOCATION_SHARE_VIEWER_ROLE_RANK[a.role] -
|
|
135
|
+
LOCATION_SHARE_VIEWER_ROLE_RANK[b.role];
|
|
136
|
+
if (rank !== 0)
|
|
137
|
+
return rank;
|
|
138
|
+
return a.userId.localeCompare(b.userId);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
95
141
|
//# sourceMappingURL=locationShare.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locationShare.js","sourceRoot":"","sources":["../src/locationShare.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"locationShare.js","sourceRoot":"","sources":["../src/locationShare.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/prisma/schema.prisma
CHANGED
|
@@ -66,6 +66,7 @@ model BashFeedPost {
|
|
|
66
66
|
mediaIds String[] // Array of Media IDs
|
|
67
67
|
mentionedUserIds String[] // Array of User IDs mentioned in post
|
|
68
68
|
isAnonymous Boolean @default(false) // User can choose to post anonymously
|
|
69
|
+
isDraft Boolean @default(false) // Server-side draft (one per user); excluded from all feed/listing reads
|
|
69
70
|
viewCount Int @default(0) // Analytics only, not shown publicly
|
|
70
71
|
isFeatured Boolean @default(false) // Post is promoted/featured
|
|
71
72
|
featuredAt DateTime? // When post was featured
|
|
@@ -101,6 +102,7 @@ model BashFeedPost {
|
|
|
101
102
|
@@index([repostOfPostId])
|
|
102
103
|
@@index([isAnonymous])
|
|
103
104
|
@@index([isFeatured, featuredBoost])
|
|
105
|
+
@@index([userId, isDraft])
|
|
104
106
|
}
|
|
105
107
|
|
|
106
108
|
model BashFeedLike {
|
|
@@ -927,6 +929,8 @@ model BashEvent {
|
|
|
927
929
|
featuredGuestsHeadline String?
|
|
928
930
|
/// When true, bash detail shows the full privacy-filtered guest list to everyone (not just tier holders).
|
|
929
931
|
attendeeListPublic Boolean @default(false)
|
|
932
|
+
/// Host opt-in: show live current-location pins on the public bash page.
|
|
933
|
+
locationSharePublic Boolean @default(false)
|
|
930
934
|
/// Preview = count + curated faces; Public = full list for everyone; TicketHolders = full list for ticket buyers only.
|
|
931
935
|
attendeeListAccess String @default("Preview")
|
|
932
936
|
/// When true, only accounts with a published service profile (Vendor/Venue/Entertainment/Exhibitor/Sponsor/Event
|
|
@@ -9,6 +9,9 @@ import {
|
|
|
9
9
|
LOCATION_SHARE_GRACE_MS,
|
|
10
10
|
LOCATION_SHARE_START_FALLBACK_MS,
|
|
11
11
|
LOCATION_SHARE_TASK_STATUSES,
|
|
12
|
+
mergeLocationShareViewer,
|
|
13
|
+
sortLocationShareViewers,
|
|
14
|
+
type LocationShareViewer,
|
|
12
15
|
} from "../locationShare.js";
|
|
13
16
|
|
|
14
17
|
describe("locationShare helpers", () => {
|
|
@@ -119,4 +122,30 @@ describe("locationShare helpers", () => {
|
|
|
119
122
|
);
|
|
120
123
|
});
|
|
121
124
|
});
|
|
125
|
+
|
|
126
|
+
describe("mergeLocationShareViewer", () => {
|
|
127
|
+
const teaser = (id: string) =>
|
|
128
|
+
({ id }) as LocationShareViewer["user"];
|
|
129
|
+
|
|
130
|
+
it("keeps Host over Task for the same person", () => {
|
|
131
|
+
const byUserId = new Map<string, LocationShareViewer>();
|
|
132
|
+
mergeLocationShareViewer(byUserId, teaser("u1"), "Task");
|
|
133
|
+
mergeLocationShareViewer(byUserId, teaser("u1"), "Host");
|
|
134
|
+
expect(byUserId.get("u1")?.role).toBe("Host");
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
it("ignores a missing user", () => {
|
|
138
|
+
const byUserId = new Map<string, LocationShareViewer>();
|
|
139
|
+
mergeLocationShareViewer(byUserId, null, "Host");
|
|
140
|
+
expect(byUserId.size).toBe(0);
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
it("sorts Host before hired providers", () => {
|
|
144
|
+
const sorted = sortLocationShareViewers([
|
|
145
|
+
{ userId: "b", role: "Provider", user: teaser("b") },
|
|
146
|
+
{ userId: "a", role: "Host", user: teaser("a") },
|
|
147
|
+
]);
|
|
148
|
+
expect(sorted.map((v) => v.role)).toEqual(["Host", "Provider"]);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
122
151
|
});
|
package/src/bashFeedTypes.ts
CHANGED
|
@@ -109,6 +109,23 @@ export type PostWithDetailsForEnrich = PostWithDetails & {
|
|
|
109
109
|
reposts?: unknown;
|
|
110
110
|
};
|
|
111
111
|
|
|
112
|
+
/**
|
|
113
|
+
* The caller's own single in-progress draft (`GET/PUT /bashfeed/draft`) - a private editing
|
|
114
|
+
* view, not a public feed card, so it's intentionally lighter than `PostWithDetails` (no
|
|
115
|
+
* user/likes/counts to load for a post nobody else can see yet).
|
|
116
|
+
*/
|
|
117
|
+
export interface BashFeedDraftView {
|
|
118
|
+
id: string;
|
|
119
|
+
bashId: string | null;
|
|
120
|
+
serviceId: string | null;
|
|
121
|
+
content: string | null;
|
|
122
|
+
mediaIds: string[];
|
|
123
|
+
mediaUrls: string[];
|
|
124
|
+
isAnonymous: boolean;
|
|
125
|
+
bash: { id: string; title: string | null; coverPhoto: string | null } | null;
|
|
126
|
+
service: { id: string; serviceName: string | null; coverPhoto: string | null } | null;
|
|
127
|
+
}
|
|
128
|
+
|
|
112
129
|
/**
|
|
113
130
|
* Minimum shape the feed ranking algorithm reads (Prisma includes / `PostWithDetails` satisfy this).
|
|
114
131
|
*/
|
package/src/locationShare.ts
CHANGED
|
@@ -171,3 +171,76 @@ export type LocationShareMySession = Pick<
|
|
|
171
171
|
| "lastAccuracyM"
|
|
172
172
|
| "lastUpdatedAt"
|
|
173
173
|
>;
|
|
174
|
+
|
|
175
|
+
/** Why this person can see live location on the bash. */
|
|
176
|
+
export const LOCATION_SHARE_VIEWER_ROLES = [
|
|
177
|
+
"Host",
|
|
178
|
+
"Organizer",
|
|
179
|
+
"CoHost",
|
|
180
|
+
"Promoter",
|
|
181
|
+
"Task",
|
|
182
|
+
"Provider",
|
|
183
|
+
] as const;
|
|
184
|
+
|
|
185
|
+
export type LocationShareViewerRole =
|
|
186
|
+
(typeof LOCATION_SHARE_VIEWER_ROLES)[number];
|
|
187
|
+
|
|
188
|
+
const LOCATION_SHARE_VIEWER_ROLE_RANK: Record<LocationShareViewerRole, number> =
|
|
189
|
+
{
|
|
190
|
+
Host: 0,
|
|
191
|
+
Organizer: 1,
|
|
192
|
+
CoHost: 2,
|
|
193
|
+
Promoter: 3,
|
|
194
|
+
Task: 4,
|
|
195
|
+
Provider: 5,
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
/** Host-facing labels — access copy, not promoter voice. */
|
|
199
|
+
export const LOCATION_SHARE_VIEWER_ROLE_LABEL: Record<
|
|
200
|
+
LocationShareViewerRole,
|
|
201
|
+
string
|
|
202
|
+
> = {
|
|
203
|
+
Host: "Host",
|
|
204
|
+
Organizer: "Organizer",
|
|
205
|
+
CoHost: "Co-host",
|
|
206
|
+
Promoter: "Promoter",
|
|
207
|
+
Task: "On a task",
|
|
208
|
+
Provider: "Hired",
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
export type LocationShareViewer = {
|
|
212
|
+
userId: string;
|
|
213
|
+
role: LocationShareViewerRole;
|
|
214
|
+
user: Prisma.UserGetPayload<{
|
|
215
|
+
select: typeof LOCATION_SHARE_SESSION_USER_SELECT;
|
|
216
|
+
}>;
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
/** Keep the highest-rank role when the same person qualifies more than once. */
|
|
220
|
+
export function mergeLocationShareViewer(
|
|
221
|
+
byUserId: Map<string, LocationShareViewer>,
|
|
222
|
+
user: LocationShareViewer["user"] | null | undefined,
|
|
223
|
+
role: LocationShareViewerRole
|
|
224
|
+
): void {
|
|
225
|
+
if (!user?.id) return;
|
|
226
|
+
const existing = byUserId.get(user.id);
|
|
227
|
+
if (
|
|
228
|
+
!existing ||
|
|
229
|
+
LOCATION_SHARE_VIEWER_ROLE_RANK[role] <
|
|
230
|
+
LOCATION_SHARE_VIEWER_ROLE_RANK[existing.role]
|
|
231
|
+
) {
|
|
232
|
+
byUserId.set(user.id, { userId: user.id, role, user });
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export function sortLocationShareViewers(
|
|
237
|
+
viewers: LocationShareViewer[]
|
|
238
|
+
): LocationShareViewer[] {
|
|
239
|
+
return [...viewers].sort((a, b) => {
|
|
240
|
+
const rank =
|
|
241
|
+
LOCATION_SHARE_VIEWER_ROLE_RANK[a.role] -
|
|
242
|
+
LOCATION_SHARE_VIEWER_ROLE_RANK[b.role];
|
|
243
|
+
if (rank !== 0) return rank;
|
|
244
|
+
return a.userId.localeCompare(b.userId);
|
|
245
|
+
});
|
|
246
|
+
}
|