index.jsx 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import {useEffect, useState} from "react";
  2. import styles from "./styles.module.scss";
  3. import top_icon from "@assets/downloadPrompt/top_icon.webp"
  4. import icon_1 from "@assets/downloadPrompt/icon_1.webp";
  5. import icon_2 from "@assets/downloadPrompt/icon_2.webp";
  6. import icon_3 from "@assets/downloadPrompt/icon_3.webp";
  7. import Popup from "@components/Popup";
  8. import LazyImage from "@components/LazyImage";
  9. import {useSelector} from "react-redux";
  10. import {getDownloadConf} from "@features/mainSlice";
  11. import {formatCash, stringFormat, isIOS} from "@utils/helpers";
  12. const i18n = global.i18n;
  13. const WDownloadPrompt = ()=>{
  14. const [isShow, setIsShow] = useState(false);
  15. const downConf=useSelector(getDownloadConf)
  16. const show=()=>{
  17. setIsShow(true);
  18. }
  19. const hide=()=>{
  20. setIsShow(false);
  21. }
  22. const onClose=()=>{
  23. hide();
  24. global.openNextPopup();
  25. }
  26. const getDownBonus=()=>{
  27. let bonus=Number(downConf?.bonus);
  28. return global.DOLLAR+formatCash(bonus,0);
  29. }
  30. const handleClickDownload=()=>{
  31. hide();
  32. global["showShortcutGuide"] && global["showShortcutGuide"]();
  33. }
  34. useEffect(()=>{
  35. global.downloadPrompt={
  36. show,
  37. hide
  38. };
  39. return ()=>{
  40. }
  41. },[]);
  42. const renderIosContent = () => {
  43. return (
  44. <Popup onClose={onClose} open={isShow} btnCloseType={0} popupClass={styles.popup}>
  45. <div className={styles.container}>
  46. <LazyImage src={top_icon} alt={""} className={styles.icon}></LazyImage>
  47. <div className={styles.title}>{stringFormat(i18n.t("downloadPrompt.title"),[getDownBonus()])}</div>
  48. <div className={styles.sub_title}>{i18n.t("downloadPrompt.subtitle")}</div>
  49. <div className={styles.items_con}>
  50. <div className={styles.item}>
  51. <img src={icon_1} alt={""} className={styles.item_icon}/>
  52. <div className={styles.item_text}>
  53. {i18n.t("downloadPrompt.tips_1")}
  54. <span>{i18n.t("downloadPrompt.tips_2")}</span>
  55. </div>
  56. </div>
  57. <div className={styles.item}>
  58. <img src={icon_2} alt={""} className={styles.item_icon}/>
  59. <div className={styles.item_text}>
  60. {i18n.t("downloadPrompt.tips_3")}
  61. <span>{getDownBonus()}</span>
  62. </div>
  63. </div>
  64. <div className={styles.item}>
  65. <img src={icon_3} alt={""} className={styles.item_icon}/>
  66. <div className={styles.item_text} style={{fontSize:"0.95rem"}}>
  67. {i18n.t("downloadPrompt.tips_4")}
  68. </div>
  69. </div>
  70. </div>
  71. <button className={styles.btn_down} onClick={handleClickDownload}>
  72. {i18n.t("downloadPrompt.btn_down")}
  73. </button>
  74. </div>
  75. </Popup>
  76. )
  77. }
  78. const renderAndroidContent = () => {
  79. return (
  80. <Popup onClose={onClose} open={isShow} btnCloseType={0} popupClass={styles.popup_ad}>
  81. <div className={styles.container_ad}>
  82. {/* 1. 顶部红色/粉色标题区域 */}
  83. <div className={styles.header_section}>
  84. <div className={styles.title_ad}>
  85. {/* 假设 i18n 这里的配置能支持拆分,或者手动拆开 */}
  86. <div className={styles.title_top}>{stringFormat(i18n.t("downloadPrompt.title"),[getDownBonus()])}</div>
  87. <div className={styles.title_bottom}>{i18n.t("downloadPrompt.subtitle_ad")}</div>
  88. </div>
  89. {/* 右上角黄色下载盒图标 */}
  90. <div className={styles.icon_box}>
  91. <div className={styles.arrow_down}></div>
  92. </div>
  93. </div>
  94. {/* 2. 中间黑色内容区域 */}
  95. <div className={styles.content_section}>
  96. {/* "Tap Download To Get" */}
  97. <div className={styles.item_text_main}>
  98. {i18n.t("downloadPrompt.tips_1_ad")}
  99. </div>
  100. {/* 可变金额 "$5" */}
  101. <div className={styles.bonus_value}>
  102. {getDownBonus()}
  103. </div>
  104. {/* "Start Games Faster" */}
  105. <div className={styles.item_text_sub}>
  106. {i18n.t("downloadPrompt.tips_2_ad")}
  107. </div>
  108. {/* "Save your account..." (橙色提示) */}
  109. <div className={styles.hint_text}>
  110. {i18n.t("downloadPrompt.tips_3_ad")}
  111. </div>
  112. {/* 下载按钮 */}
  113. <button className={styles.btn_down} onClick={handleClickDownload}>
  114. {i18n.t("downloadPrompt.btn_down")}
  115. </button>
  116. </div>
  117. </div>
  118. </Popup>
  119. )
  120. }
  121. return (
  122. <>
  123. {
  124. isIOS() ? renderIosContent() : renderAndroidContent()
  125. }
  126. </>
  127. )
  128. }
  129. export default WDownloadPrompt;