diff --git a/apps/web/e2e/specs/tournament/tournamentResult.spec.ts b/apps/web/e2e/specs/tournament/tournamentResult.spec.ts
index b8f07ea9..15655a54 100644
--- a/apps/web/e2e/specs/tournament/tournamentResult.spec.ts
+++ b/apps/web/e2e/specs/tournament/tournamentResult.spec.ts
@@ -79,8 +79,8 @@ test('웹 브라우저에서는 공유 시트에 스토리 공유 버튼이 없
await page.goto('/tournament/3/result');
await page.getByRole('button', { name: '영수증 저장' }).click();
- await expect(page.getByRole('button', { name: '이미지 저장' })).toBeVisible();
- await expect(page.getByRole('button', { name: '스토리 공유' })).toBeHidden();
+ await expect(page.getByRole('button', { name: '공유하기', exact: true })).toBeVisible();
+ await expect(page.getByRole('button', { name: '스토리로 바로 공유하기' })).toBeHidden();
});
test.describe('앱(웹뷰) 환경', () => {
@@ -126,7 +126,7 @@ test.describe('앱(웹뷰) 환경', () => {
await page.goto('/tournament/3/result');
await page.getByRole('button', { name: '영수증 저장' }).click();
- const storyButton = page.getByRole('button', { name: '스토리 공유' });
+ const storyButton = page.getByRole('button', { name: '스토리로 바로 공유하기' });
await expect(storyButton).toBeEnabled();
await storyButton.click();
diff --git a/apps/web/src/app/tournament/[id]/result/_components/receipt-share-dialog/ReceiptShareDialog.tsx b/apps/web/src/app/tournament/[id]/result/_components/receipt-share-dialog/ReceiptShareDialog.tsx
index bd69b526..757ff753 100644
--- a/apps/web/src/app/tournament/[id]/result/_components/receipt-share-dialog/ReceiptShareDialog.tsx
+++ b/apps/web/src/app/tournament/[id]/result/_components/receipt-share-dialog/ReceiptShareDialog.tsx
@@ -3,23 +3,16 @@
import { useEffect, useRef, useState, useSyncExternalStore } from 'react';
import { toast } from 'sonner';
-import { CopyIconFill, DownloadIconFill, LinkIconOutline } from '@/assets/icons';
-import InstagramIcon from '@/assets/icons/social/instagram.svg';
+import Button from '@/components/button';
import { Drawer, DrawerContent, DrawerDescription, DrawerTitle } from '@/components/drawer';
import Skeleton from '@/components/skeleton';
import { ANALYTICS_EVENT } from '@/consts/analytics';
import { useInstagramStoryShare } from '@/hooks/useInstagramStoryShare';
import { logAnalyticsEvent } from '@/utils/analytics';
-import { cn } from '@/utils/cn';
import { isWebview } from '@/utils/webBridge';
import type { RankedProductT } from '../../../_common/_types/tournament';
-import {
- captureReceiptImage,
- copyReceiptImage,
- saveReceiptImage,
- shareReceiptImageFile,
-} from '../../_utils/shareReceiptImage';
+import { captureReceiptImage, shareReceiptImageFile } from '../../_utils/shareReceiptImage';
import ReceiptShareCaptureLayer from './ReceiptShareCaptureLayer';
type ReceiptShareDialogProps = {
@@ -33,42 +26,6 @@ type ReceiptShareDialogProps = {
isApp?: boolean;
};
-type ShareActionProps = {
- icon: React.ReactNode;
- label: string;
- /** 원형 배경색 클래스 — 브랜드 아이콘은 고유 배경을 쓴다 */
- iconBackgroundClassName?: string;
- disabled?: boolean;
- onClick: () => void;
-};
-
-function ShareAction({
- icon,
- label,
- iconBackgroundClassName = 'bg-gray-50',
- disabled,
- onClick,
-}: ShareActionProps) {
- return (
-
- );
-}
-
function ReceiptShareDialog({
open,
onOpenChange,
@@ -132,37 +89,6 @@ function ReceiptShareDialog({
};
}, [open]);
- const handleSave = () => {
- if (!imageBlob) return;
- const isSaved = saveReceiptImage(imageBlob);
- if (!isSaved) {
- toast.error('저장에 실패했습니다.');
- return;
- }
-
- logAnalyticsEvent(ANALYTICS_EVENT.RECEIPT_SHARE, {
- tournament_id: tournamentId,
- method: 'save',
- });
- toast.success('이미지를 저장했어요.');
- };
-
- const handleCopy = async () => {
- if (!imageBlob) return;
-
- const isCopied = await copyReceiptImage(imageBlob);
- if (!isCopied) {
- toast.warning('이 브라우저에서는 복사를 지원하지 않아요. 저장을 이용해주세요.');
- return;
- }
-
- logAnalyticsEvent(ANALYTICS_EVENT.RECEIPT_SHARE, {
- tournament_id: tournamentId,
- method: 'copy',
- });
- toast.success('이미지를 복사했어요.');
- };
-
const handleShareToStory = async () => {
if (!imageBlob) return;
@@ -239,7 +165,7 @@ function ReceiptShareDialog({
영수증 공유