diff --git a/app/src/config/account.ts b/app/src/config/account.ts index 2e01ddc29..d49538b57 100644 --- a/app/src/config/account.ts +++ b/app/src/config/account.ts @@ -11,7 +11,7 @@ import {needSubscribe} from "../util/needSubscribe"; import {syncGuide} from "../sync/syncGuide"; import {hideElements} from "../protyle/ui/hideElements"; import {getCloudURL, getIndexURL} from "./util/about"; -import {genUUID} from "../util/genID"; +import {iOSPurchase} from "../util/iOSPurchase"; const genSVGBG = () => { let html = ""; @@ -240,31 +240,7 @@ ${renewHTML} bindEvent: (element: Element) => { element.querySelectorAll('[data-action="iOSPay"]').forEach(item => { item.addEventListener("click", () => { - if (window.siyuan.user) { - fetchPost("/api/setting/getCloudUser", { - token: window.siyuan.user.userToken, - }, response => { - if (window.siyuan.user.userSiYuanOneTimePayStatus !== response.data.userSiYuanOneTimePayStatus || - window.siyuan.user.userSiYuanProExpireTime !== response.data.userSiYuanProExpireTime || - window.siyuan.user.userSiYuanSubscriptionPlan !== response.data.userSiYuanSubscriptionPlan || - window.siyuan.user.userSiYuanSubscriptionType !== response.data.userSiYuanSubscriptionType || - window.siyuan.user.userSiYuanSubscriptionStatus !== response.data.userSiYuanSubscriptionStatus) { - showMessage(window.siyuan.languages["_kernel"][19]); - return; - } - window.siyuan.user = response.data; - const productType = item.getAttribute("data-type"); - let productID; - if (window.siyuan.config.cloudRegion === 0) { - productID = productType === "function" ? "0" : "1"; - } else { - productID = productType === "function" ? "2" : "3"; - } - window.webkit.messageHandlers.purchase.postMessage(`${productID} ${genUUID().substring(0, 19)}${window.siyuan.config.cloudRegion}00${window.siyuan.user.userId.substring(0, 1)}-${window.siyuan.user.userId.substring(1)}`); - }); - } else { - showMessage(window.siyuan.languages.needLogin); - } + iOSPurchase(item.getAttribute("data-type")); }); }); const trialSubElement = element.querySelector("#trialSub"); diff --git a/app/src/index.ts b/app/src/index.ts index 45affd8fd..26266b96a 100644 --- a/app/src/index.ts +++ b/app/src/index.ts @@ -31,7 +31,7 @@ import {hideAllElements} from "./protyle/ui/hideElements"; import {loadPlugins, reloadPlugin} from "./plugin/loader"; import "./assets/scss/base.scss"; import {reloadEmoji} from "./emoji"; -import {IOSPurchase} from "./util/iOSPurchase"; +import {processIOSPurchaseResponse} from "./util/iOSPurchase"; export class App { public plugins: import("./plugin").Plugin[] = []; @@ -209,5 +209,5 @@ window.openFileByURL = (openURL) => { window.showKeyboardToolbar = () => { // 防止 Pad 端报错 }; -window.IOSPurchase = IOSPurchase; +window.processIOSPurchaseResponse = processIOSPurchaseResponse; /// #endif diff --git a/app/src/mobile/index.ts b/app/src/mobile/index.ts index 8cf0ad0f4..f5b509f34 100644 --- a/app/src/mobile/index.ts +++ b/app/src/mobile/index.ts @@ -28,7 +28,7 @@ import {isNotEditBlock} from "../protyle/wysiwyg/getBlock"; import {updateCardHV} from "../card/util"; import {mobileKeydown} from "./util/keydown"; import {correctHotkey} from "../boot/globalEvent/commonHotkey"; -import {IOSPurchase} from "../util/iOSPurchase"; +import {processIOSPurchaseResponse} from "../util/iOSPurchase"; class App { public plugins: import("../plugin").Plugin[] = []; @@ -163,7 +163,7 @@ window.reconnectWebSocket = () => { window.siyuan.mobile.popEditor.protyle.ws.send("ping", {}); }; window.goBack = goBack; -window.IOSPurchase = IOSPurchase; +window.processIOSPurchaseResponse = processIOSPurchaseResponse; window.showKeyboardToolbar = (height) => { document.getElementById("keyboardToolbar").setAttribute("data-keyboardheight", (height ? height : window.outerHeight / 2 - 42).toString()); showKeyboardToolbar(); diff --git a/app/src/mobile/settings/account.ts b/app/src/mobile/settings/account.ts index 6e492c737..ab5a6299b 100644 --- a/app/src/mobile/settings/account.ts +++ b/app/src/mobile/settings/account.ts @@ -10,7 +10,7 @@ import {getCloudURL, getIndexURL} from "../../config/util/about"; import {Dialog} from "../../dialog"; import {hideElements} from "../../protyle/ui/hideElements"; import {Constants} from "../../constants"; -import {genUUID} from "../../util/genID"; +import {iOSPurchase} from "../../util/iOSPurchase"; export const showAccountInfo = () => { const isIOS = isInIOS(); @@ -129,31 +129,7 @@ ${renewHTML}`; } while (target && !target.isSameNode(modelMainElement)) { if (target.getAttribute("data-action") === "iOSPay") { - if (window.siyuan.user) { - fetchPost("/api/setting/getCloudUser", { - token: window.siyuan.user.userToken, - }, response => { - if (window.siyuan.user.userSiYuanOneTimePayStatus !== response.data.userSiYuanOneTimePayStatus || - window.siyuan.user.userSiYuanProExpireTime !== response.data.userSiYuanProExpireTime || - window.siyuan.user.userSiYuanSubscriptionPlan !== response.data.userSiYuanSubscriptionPlan || - window.siyuan.user.userSiYuanSubscriptionType !== response.data.userSiYuanSubscriptionType || - window.siyuan.user.userSiYuanSubscriptionStatus !== response.data.userSiYuanSubscriptionStatus) { - showMessage(window.siyuan.languages["_kernel"][19]); - return; - } - window.siyuan.user = response.data; - const productType = target.getAttribute("data-type"); - let productID; - if (window.siyuan.config.cloudRegion === 0) { - productID = productType === "function" ? "0" : "1"; - } else { - productID = productType === "function" ? "2" : "3"; - } - window.webkit.messageHandlers.purchase.postMessage(`${productID} ${genUUID().substring(0, 19)}${window.siyuan.config.cloudRegion}00${window.siyuan.user.userId.substring(0, 1)}-${window.siyuan.user.userId.substring(1)}`); - }); - } else { - showMessage(window.siyuan.languages.needLogin); - } + iOSPurchase(target.getAttribute("data-type")); event.preventDefault(); event.stopPropagation(); break; diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index 43c2608c7..ec23cae3b 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -224,7 +224,7 @@ interface Window { showKeyboardToolbar(height: number): void - IOSPurchase(data: string): void + processIOSPurchaseResponse(code: number): void hideKeyboardToolbar(): void diff --git a/app/src/util/iOSPurchase.ts b/app/src/util/iOSPurchase.ts index 6868e13c3..30a0f0d81 100644 --- a/app/src/util/iOSPurchase.ts +++ b/app/src/util/iOSPurchase.ts @@ -1,6 +1,8 @@ import {showMessage} from "../dialog/message"; +import {fetchPost} from "./fetch"; +import {genUUID} from "./genID"; -export const IOSPurchase = (code: number) => { +export const processIOSPurchaseResponse = (code: number) => { if (code === 0) { /// #if MOBILE document.querySelector("#modelMain").dispatchEvent(new CustomEvent("click", { @@ -48,3 +50,30 @@ export const IOSPurchase = (code: number) => { showMessage(message, 0, "error"); } }; + +export const iOSPurchase = (productType: string) => { + if (window.siyuan.user) { + fetchPost("/api/setting/getCloudUser", { + token: window.siyuan.user.userToken, + }, response => { + if (window.siyuan.user.userSiYuanOneTimePayStatus !== response.data.userSiYuanOneTimePayStatus || + window.siyuan.user.userSiYuanProExpireTime !== response.data.userSiYuanProExpireTime || + window.siyuan.user.userSiYuanSubscriptionPlan !== response.data.userSiYuanSubscriptionPlan || + window.siyuan.user.userSiYuanSubscriptionType !== response.data.userSiYuanSubscriptionType || + window.siyuan.user.userSiYuanSubscriptionStatus !== response.data.userSiYuanSubscriptionStatus) { + showMessage(window.siyuan.languages["_kernel"][19]); + return; + } + window.siyuan.user = response.data; + let productID; + if (window.siyuan.config.cloudRegion === 0) { + productID = productType === "function" ? "china00" : "china02"; + } else { + productID = productType === "function" ? "00" : "02"; + } + window.webkit.messageHandlers.purchase.postMessage(`${productID} ${genUUID().substring(0, 19)}${window.siyuan.config.cloudRegion}00${window.siyuan.user.userId.substring(0, 1)}-${window.siyuan.user.userId.substring(1)}`); + }); + } else { + showMessage(window.siyuan.languages.needLogin); + } +}