From de0bbff296ee9bbaf30dbb44163e33451ae2d4cb Mon Sep 17 00:00:00 2001 From: Abdullah Atta Date: Wed, 28 Sep 2022 12:13:37 +0500 Subject: [PATCH] web: treat mac app store build specially --- .github/workflows/desktop.publish.yml | 6 ++---- apps/web/desktop/package.json | 3 ++- apps/web/desktop/preload.js | 4 +++- apps/web/src/components/dialogs/buy-dialog/buy-dialog.tsx | 4 ++-- apps/web/src/components/dialogs/buy-dialog/features.tsx | 4 ++-- apps/web/src/utils/platform.js | 4 ++-- apps/web/src/views/settings.js | 8 ++++---- 7 files changed, 17 insertions(+), 16 deletions(-) diff --git a/.github/workflows/desktop.publish.yml b/.github/workflows/desktop.publish.yml index 83e503485..22a76ecfa 100644 --- a/.github/workflows/desktop.publish.yml +++ b/.github/workflows/desktop.publish.yml @@ -109,10 +109,6 @@ jobs: - name: Install packages run: npm i working-directory: ./apps/web/desktop - - - name: Build Electron wrapper - run: npm run build - working-directory: ./apps/web/desktop - name: Install provisioning profile run: echo "${{ secrets.MAC_PROVISIONING_PROFILE }}" | base64 --decode > embedded.provisionprofile @@ -124,6 +120,7 @@ jobs: CSC_LINK: ${{ secrets.mac_certs }} CSC_KEY_PASSWORD: ${{ secrets.mac_certs_password }} run: | + npm run build:mas npx electron-builder --mac mas --universal -p never working-directory: ./apps/web/desktop @@ -133,6 +130,7 @@ jobs: CSC_LINK: ${{ secrets.mac_certs }} CSC_KEY_PASSWORD: ${{ secrets.mac_certs_password }} run: | + npm run build if [ ${{ inputs.publish-github }} == true ]; then npx electron-builder --mac zip dmg -p always else diff --git a/apps/web/desktop/package.json b/apps/web/desktop/package.json index b6270b1d7..f547ba69f 100644 --- a/apps/web/desktop/package.json +++ b/apps/web/desktop/package.json @@ -27,7 +27,8 @@ "zx": "^7.0.7" }, "scripts": { - "build": "esbuild ./electron.js ./preload.js --minify --external:electron --external:fsevents --bundle --outdir=./build --platform=node --tsconfig=tsconfig.json", + "build": "esbuild ./electron.js ./preload.js --minify --external:electron --external:fsevents --bundle --outdir=./build --platform=node --tsconfig=tsconfig.json --define:MAC_APP_STORE=false", + "build:mas": "esbuild ./electron.js ./preload.js --minify --external:electron --external:fsevents --bundle --outdir=./build --platform=node --tsconfig=tsconfig.json --define:MAC_APP_STORE=true", "pack": "rm -rf ./build && cp -r ../build ./ && npm run build && yarn electron-builder --linux AppImage && ./dist/notesnook_x86_64.AppImage" }, "author": { diff --git a/apps/web/desktop/preload.js b/apps/web/desktop/preload.js index 153779ff6..cd62d0b84 100644 --- a/apps/web/desktop/preload.js +++ b/apps/web/desktop/preload.js @@ -19,9 +19,11 @@ along with this program. If not, see . const { contextBridge, ipcRenderer } = require("electron"); +// eslint-disable-next-line no-undef +contextBridge.exposeInMainWorld("os", MAC_APP_STORE ? "mas" : process.platform); + // Expose protected methods that allow the renderer process to use // the ipcRenderer without exposing the entire object -contextBridge.exposeInMainWorld("os", process.platform); contextBridge.exposeInMainWorld("api", { send: (channel, data) => { // whitelist channels diff --git a/apps/web/src/components/dialogs/buy-dialog/buy-dialog.tsx b/apps/web/src/components/dialogs/buy-dialog/buy-dialog.tsx index abb5ddfb8..08793f412 100644 --- a/apps/web/src/components/dialogs/buy-dialog/buy-dialog.tsx +++ b/apps/web/src/components/dialogs/buy-dialog/buy-dialog.tsx @@ -40,7 +40,7 @@ import { db } from "../../../common/db"; import { useCheckoutStore } from "./store"; import { getCurrencySymbol } from "./helpers"; import { Theme } from "@notesnook/theme"; -import { isMacApp } from "../../../utils/platform"; +import { isMacStoreApp } from "../../../utils/platform"; type BuyDialogProps = { couponCode?: string; @@ -284,7 +284,7 @@ function TrialOrUpgrade(props: TrialOrUpgradeProps) { {formatPeriod(plan.period)} )} - {isMacApp() ? ( + {isMacStoreApp() ? ( <> You cannot upgrade from the macOS app. diff --git a/apps/web/src/components/dialogs/buy-dialog/features.tsx b/apps/web/src/components/dialogs/buy-dialog/features.tsx index a34bc31ad..fd368c9d3 100644 --- a/apps/web/src/components/dialogs/buy-dialog/features.tsx +++ b/apps/web/src/components/dialogs/buy-dialog/features.tsx @@ -18,7 +18,7 @@ along with this program. If not, see . */ import { Text, Flex, Box } from "@theme-ui/components"; -import { isMacApp } from "../../../utils/platform"; +import { isMacStoreApp } from "../../../utils/platform"; import { Accent, Android, @@ -122,7 +122,7 @@ const sections: Section[] = [ title: "100% cross platform", detail: "Notesnook is available on all major platforms — for everyone.", columns: 8, - isVisible: () => !isMacApp(), + isVisible: () => !isMacStoreApp(), features: [ { id: "ios", diff --git a/apps/web/src/utils/platform.js b/apps/web/src/utils/platform.js index 31b83ed76..c58c2c11a 100644 --- a/apps/web/src/utils/platform.js +++ b/apps/web/src/utils/platform.js @@ -126,8 +126,8 @@ export function isDesktop() { return "api" in window; } -export function isMacApp() { - return true; // window.os === "darwin"; +export function isMacStoreApp() { + return window.os === "mas"; } export function isTesting() { diff --git a/apps/web/src/views/settings.js b/apps/web/src/views/settings.js index 350dba4d8..751ed70ef 100644 --- a/apps/web/src/views/settings.js +++ b/apps/web/src/views/settings.js @@ -54,7 +54,7 @@ import { appVersion } from "../utils/version"; import { CHECK_IDS } from "@notesnook/core/common"; import Tip from "../components/tip"; import Toggle from "../components/toggle"; -import { isDesktop, isMacApp } from "../utils/platform"; +import { isDesktop, isMacStoreApp } from "../utils/platform"; import Vault from "../common/vault"; import { isUserPremium } from "../hooks/use-is-user-premium"; import { Slider } from "@theme-ui/components"; @@ -103,11 +103,11 @@ const otherItems = [ link: "https://discord.com/invite/zQBK97EE22" }, { - title: isMacApp() ? "Download for iOS" : "Download for iOS & Android", - description: isMacApp() + title: isMacStoreApp() ? "Download for iOS" : "Download for iOS & Android", + description: isMacStoreApp() ? "Notesnook is also available on iOS" : "Notesnook is available on Android & iOS", - link: isMacApp() + link: isMacStoreApp() ? "https://apps.apple.com/us/app/notesnook-take-private-notes/id1544027013" : "https://notesnook.com/" },