Skip to content

Commit 1c55bde

Browse files
authored
Merge pull request #3425 from dubinc/copy-partner-id
Copy partner ID added
2 parents 9592c96 + 3cc1bdb commit 1c55bde

File tree

1 file changed

+108
-88
lines changed
  • apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/[partnerId]

1 file changed

+108
-88
lines changed

apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/[partnerId]/layout.tsx

Lines changed: 108 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
BoxArchive,
3333
ChevronRight,
3434
CircleXmark,
35+
Copy,
3536
EnvelopeArrowRight,
3637
InvoiceDollar,
3738
LoadingSpinner,
@@ -290,126 +291,145 @@ function PageControls({ partner }: { partner: EnrolledPartnerProps }) {
290291
openPopover={isOpen}
291292
setOpenPopover={setIsOpen}
292293
content={
293-
<div className="grid w-full grid-cols-1 gap-px p-2 md:w-48">
294+
<div className="w-full md:w-48">
294295
{partner.status === "invited" ? (
295-
<MenuItem
296-
icon={isDeletingInvite ? LoadingSpinner : Trash}
297-
onClick={async () => {
298-
if (partner.status !== "invited" || !workspaceId) {
299-
return;
300-
}
301-
if (
302-
!window.confirm(
303-
"Are you sure you want to delete this invite? This action cannot be undone.",
304-
)
305-
) {
306-
return;
307-
}
308-
309-
await deleteInvite({
310-
workspaceId,
311-
partnerId: partner.id,
312-
});
313-
}}
314-
variant="danger"
315-
>
316-
Delete invite
317-
</MenuItem>
318-
) : (
319-
<>
320-
<MenuItem
321-
as={Link}
322-
href={`/${workspaceSlug}/program/messages/${partner.id}`}
323-
target="_blank"
324-
icon={Msgs}
325-
onClick={() => setIsOpen(false)}
326-
className="md:hidden"
327-
>
328-
Message
329-
</MenuItem>
296+
<div className="grid gap-px p-2">
330297
<MenuItem
331-
icon={InvoiceDollar}
332-
onClick={() => {
333-
setCreateCommissionSheetOpen(true);
334-
setIsOpen(false);
335-
}}
336-
className="md:hidden"
337-
>
338-
Create commission
339-
</MenuItem>
340-
<MenuItem
341-
icon={Refresh2}
342-
onClick={() => {
343-
setClawbackSheetOpen(true);
344-
setIsOpen(false);
345-
}}
346-
>
347-
Create clawback
348-
</MenuItem>
349-
<MenuItem
350-
icon={PenWriting}
351-
onClick={() => {
352-
setShowPartnerAdvancedSettingsModal(true);
353-
setIsOpen(false);
298+
icon={isDeletingInvite ? LoadingSpinner : Trash}
299+
onClick={async () => {
300+
if (partner.status !== "invited" || !workspaceId) {
301+
return;
302+
}
303+
if (
304+
!window.confirm(
305+
"Are you sure you want to delete this invite? This action cannot be undone.",
306+
)
307+
) {
308+
return;
309+
}
310+
311+
await deleteInvite({
312+
workspaceId,
313+
partnerId: partner.id,
314+
});
354315
}}
316+
variant="danger"
355317
>
356-
Advanced settings
318+
Delete invite
357319
</MenuItem>
358-
{!["banned", "deactivated"].includes(partner.status) && (
320+
</div>
321+
) : (
322+
<>
323+
<div className="grid gap-px p-2">
359324
<MenuItem
360-
icon={BoxArchive}
361-
onClick={() => {
362-
setShowArchivePartnerModal(true);
363-
setIsOpen(false);
364-
}}
325+
as={Link}
326+
href={`/${workspaceSlug}/program/messages/${partner.id}`}
327+
target="_blank"
328+
icon={Msgs}
329+
onClick={() => setIsOpen(false)}
330+
className="md:hidden"
365331
>
366-
{partner.status === "archived" ? "Unarchive" : "Archive"}{" "}
367-
partner
332+
Message
368333
</MenuItem>
369-
)}
370-
{partner.status === "deactivated" ? (
371334
<MenuItem
372-
icon={LockOpen}
335+
icon={InvoiceDollar}
373336
onClick={() => {
374-
setShowReactivatePartnerModal(true);
337+
setCreateCommissionSheetOpen(true);
375338
setIsOpen(false);
376339
}}
340+
className="md:hidden"
377341
>
378-
Reactivate partner
342+
Create commission
379343
</MenuItem>
380-
) : partner.status !== "banned" ? (
381344
<MenuItem
382-
icon={CircleXmark}
345+
icon={Refresh2}
383346
onClick={() => {
384-
setShowDeactivatePartnerModal(true);
347+
setClawbackSheetOpen(true);
385348
setIsOpen(false);
386349
}}
387350
>
388-
Deactivate partner
351+
Create clawback
389352
</MenuItem>
390-
) : null}
391-
{partner.status === "banned" ? (
392353
<MenuItem
393-
icon={UserCheck}
354+
icon={PenWriting}
394355
onClick={() => {
395-
setShowUnbanPartnerModal(true);
356+
setShowPartnerAdvancedSettingsModal(true);
396357
setIsOpen(false);
397358
}}
398359
>
399-
Unban partner
360+
Advanced settings
400361
</MenuItem>
401-
) : (
402362
<MenuItem
403-
icon={UserDelete}
404-
variant="danger"
363+
icon={Copy}
405364
onClick={() => {
406-
setShowBanPartnerModal(true);
365+
navigator.clipboard.writeText(partner.id);
366+
toast.success("Partner ID copied!");
407367
setIsOpen(false);
408368
}}
409369
>
410-
Ban partner
370+
Copy Partner ID
411371
</MenuItem>
412-
)}
372+
</div>
373+
<div className="border-t border-neutral-200" />
374+
<div className="grid gap-px p-2">
375+
{!["banned", "deactivated"].includes(partner.status) && (
376+
<MenuItem
377+
icon={BoxArchive}
378+
onClick={() => {
379+
setShowArchivePartnerModal(true);
380+
setIsOpen(false);
381+
}}
382+
>
383+
{partner.status === "archived"
384+
? "Unarchive"
385+
: "Archive"}{" "}
386+
partner
387+
</MenuItem>
388+
)}
389+
{partner.status === "deactivated" ? (
390+
<MenuItem
391+
icon={LockOpen}
392+
onClick={() => {
393+
setShowReactivatePartnerModal(true);
394+
setIsOpen(false);
395+
}}
396+
>
397+
Reactivate partner
398+
</MenuItem>
399+
) : partner.status !== "banned" ? (
400+
<MenuItem
401+
icon={CircleXmark}
402+
onClick={() => {
403+
setShowDeactivatePartnerModal(true);
404+
setIsOpen(false);
405+
}}
406+
>
407+
Deactivate partner
408+
</MenuItem>
409+
) : null}
410+
{partner.status === "banned" ? (
411+
<MenuItem
412+
icon={UserCheck}
413+
onClick={() => {
414+
setShowUnbanPartnerModal(true);
415+
setIsOpen(false);
416+
}}
417+
>
418+
Unban partner
419+
</MenuItem>
420+
) : (
421+
<MenuItem
422+
icon={UserDelete}
423+
variant="danger"
424+
onClick={() => {
425+
setShowBanPartnerModal(true);
426+
setIsOpen(false);
427+
}}
428+
>
429+
Ban partner
430+
</MenuItem>
431+
)}
432+
</div>
413433
</>
414434
)}
415435
</div>

0 commit comments

Comments
 (0)