Skip to content

Commit 365b4b2

Browse files
authored
hotfix: fix toast condition (#49)
1 parent cb76bd0 commit 365b4b2

File tree

4 files changed

+29
-11
lines changed

4 files changed

+29
-11
lines changed

src/features/slop/ui/slop-camera.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import calculateWebcamScaleRatio from '../lib/calculateWebcamScale';
1313
import SlopVideo from './slop-video';
1414

1515
interface SlopWebcamProps {
16+
isWebview?: boolean;
1617
webcam: Webcam;
1718
webcamScale: number;
1819
isOpen: boolean;
@@ -22,6 +23,7 @@ interface SlopWebcamProps {
2223
}
2324

2425
const SlopCamera = ({
26+
isWebview = false,
2527
webcam: { scale, name, position, src, id },
2628
webcamScale,
2729
isOpen,
@@ -46,7 +48,7 @@ const SlopCamera = ({
4648
setOpenCamera();
4749

4850
if (!src) {
49-
postAppMessage('선택한 웹캠은 아직 준비중 이에요', (message) =>
51+
postAppMessage('선택한 웹캠은 아직 준비중 이에요', isWebview, (message) =>
5052
toast(
5153
<>
5254
<NeutralFace /> {message}

src/shared/lib/postAppMessage.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,26 @@ declare global {
1313
}
1414
}
1515

16-
const postAppMessage = (message: string, showToast: (message: string) => void) => {
16+
const postAppMessage = (message: string, isWebview: boolean, showToast: (message: string) => void) => {
1717
const userAgent = navigator.userAgent.toLowerCase();
1818
const android = userAgent.match(/android/i);
1919
const iphone = userAgent.match(/iphone/i);
2020

21-
if (android !== null) {
22-
return window.Android.showToast(message);
23-
} else if (iphone !== null) {
24-
if (window.webkit.messageHandlers.weski) {
25-
window.webkit.messageHandlers.weski.postMessage({ method: "showToast", message: message });
21+
if (isWebview) {
22+
if (android !== null) {
23+
return window.Android.showToast(message);
24+
} else if (iphone !== null) {
25+
if (window.webkit.messageHandlers.weski) {
26+
window.webkit.messageHandlers.weski.postMessage({ method: "showToast", message: message });
27+
} else {
28+
console.error("Weski bridge is not available.");
29+
}
2630
} else {
27-
console.error("Weski bridge is not available.");
31+
return showToast(message);
2832
}
29-
} else {
30-
return showToast(message);
3133
}
34+
35+
return showToast(message);
3236
}
3337

3438
export default postAppMessage;

src/views/webcam/ui/webcam-mobile-map-page.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ const WebCamMobileMapPage = ({ data }: { resortId?: number; data: ResortInfo })
3737
<WebcamMap
3838
ref={ref}
3939
style={style}
40+
isWebview
4041
containerRef={containerRef}
4142
slops={data.slops}
4243
webcams={data.webcams}

src/widgets/webcam/ui/webcam-map.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import type { Position, ResortInfo } from '@/entities/slop/model/model';
77
import { cn } from '@/shared/lib';
88

99
interface WebcamMapProps extends ResortInfo {
10+
isWebview?: boolean;
1011
containerRef: React.RefObject<HTMLElement>;
1112
onCameraClick: ({ scale, id }: { scale: number; id: string }) => void;
1213
style: {
@@ -19,7 +20,16 @@ interface WebcamMapProps extends ResortInfo {
1920

2021
const WebcamMap = forwardRef<HTMLDivElement, WebcamMapProps>(
2122
(
22-
{ slops, webcams, style, MapComponent, onCameraClick, containerRef, updateCameraPosition },
23+
{
24+
isWebview,
25+
slops,
26+
webcams,
27+
style,
28+
MapComponent,
29+
onCameraClick,
30+
containerRef,
31+
updateCameraPosition,
32+
},
2333
ref
2434
) => {
2535
const { selectedSlop } = useSlopStore();
@@ -33,6 +43,7 @@ const WebcamMap = forwardRef<HTMLDivElement, WebcamMapProps>(
3343

3444
return (
3545
<SlopCamera
46+
isWebview={isWebview}
3647
key={webcam.id}
3748
webcam={webcam}
3849
webcamScale={style.scale.animation.to as number}

0 commit comments

Comments
 (0)