diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index 5de87cffa..eb8828cf4 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -129,9 +129,8 @@ jobs: packageName: com.remoteit releaseFiles: ./android/app/build/outputs/bundle/release/app-release.aab track: internal - status: inProgress + status: completed inAppUpdatePriority: 0 - userFraction: 0.2 changesNotSentForReview: true # whatsNewDirectory: distribution/whatsnew # mappingFile: app/build/outputs/mapping/release/mapping.txt diff --git a/android/app/build.gradle b/android/app/build.gradle index cfa62bf72..2bf8dbf85 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -13,8 +13,8 @@ android { applicationId "com.remoteit" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 287 - versionName "3.41.0" + versionCode 289 + versionName "3.42.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/electron/package-lock.json b/electron/package-lock.json index f09e63539..e043d6b96 100644 --- a/electron/package-lock.json +++ b/electron/package-lock.json @@ -1,12 +1,12 @@ { "name": "remoteit", - "version": "3.41.0", + "version": "3.42.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "remoteit", - "version": "3.41.0", + "version": "3.42.1", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/electron/package.json b/electron/package.json index 4cc2d6ea5..f5063cffe 100644 --- a/electron/package.json +++ b/electron/package.json @@ -1,6 +1,6 @@ { "name": "remoteit", - "version": "3.41.0", + "version": "3.42.1", "private": true, "main": "build/index.js", "description": "Remote.It cross platform desktop application for creating and hosting connections", diff --git a/frontend/package.json b/frontend/package.json index 2fa79f95c..5da91864c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "remoteit-desktop-frontend", - "version": "3.41.0", + "version": "3.42.1", "private": true, "type": "module", "scripts": { diff --git a/frontend/src/components/BillingUI.tsx b/frontend/src/components/BillingUI.tsx new file mode 100644 index 000000000..c2185badc --- /dev/null +++ b/frontend/src/components/BillingUI.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import browser from '../services/browser' + +type Props = { + children?: React.ReactNode +} + +export const BillingUI: React.FC = ({ children }) => { + return browser.isAndroid ? null : <>{children} +} diff --git a/frontend/src/components/EventList/EventList.tsx b/frontend/src/components/EventList/EventList.tsx index 978472b4a..3e3fd108b 100644 --- a/frontend/src/components/EventList/EventList.tsx +++ b/frontend/src/components/EventList/EventList.tsx @@ -8,7 +8,7 @@ import { List, Box, Button, Typography } from '@mui/material' import { fontSizes, spacing } from '../../styling' import { humanizeDays, limitDays } from '../../models/plans' import { EventItem } from './EventItem' -import { MobileUI } from '../MobileUI' +import { BillingUI } from '../BillingUI' import { Notice } from '../Notice' export interface LogListProps { @@ -41,11 +41,11 @@ export const EventList: React.FC = ({ device }) => { + - + } > Plan upgrade required to view logs past {humanizeDays(logLimit?.value)}. diff --git a/frontend/src/components/LicensingNoticeDisplay.tsx b/frontend/src/components/LicensingNoticeDisplay.tsx index eb865ef3a..1ee1a2c72 100644 --- a/frontend/src/components/LicensingNoticeDisplay.tsx +++ b/frontend/src/components/LicensingNoticeDisplay.tsx @@ -5,6 +5,7 @@ import { useDispatch, useSelector } from 'react-redux' import { PERSONAL_PLAN_ID } from '../models/plans' import { LicensingTitle } from './LicensingTitle' import { Timestamp } from './Timestamp' +import { BillingUI } from './BillingUI' import { Notice } from './Notice' import { Link } from './Link' import { Icon } from './Icon' @@ -29,11 +30,13 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s const UpgradeButton = ( <> - - - + + + + + @@ -49,7 +52,10 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} has expired. - Please upgrade your license. Learn more. + Please upgrade your license.{' '} + + Learn more. + ) @@ -59,7 +65,10 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} is past due. - Please update your payment method. Learn more. + Please update your payment method.{' '} + + Learn more. + ) @@ -70,7 +79,11 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} is incomplete. - Please update your payment information to continue service. + Please{' '} + + update your payment information + {' '} + to continue service. ) @@ -80,7 +93,10 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} has been canceled. - Please please check. Learn more. + Please check.{' '} + + Learn more. + ) @@ -91,7 +107,9 @@ export const LicensingNoticeDisplay: React.FC = ({ noticeType, license, s {title} You have exceeded your limit by {serviceLimit?.actual - serviceLimit?.value}.{' '} - Learn more. + + Learn more. + ) diff --git a/frontend/src/components/LicensingServiceNotice.tsx b/frontend/src/components/LicensingServiceNotice.tsx index 821842f63..61bc8f668 100644 --- a/frontend/src/components/LicensingServiceNotice.tsx +++ b/frontend/src/components/LicensingServiceNotice.tsx @@ -6,6 +6,7 @@ import { useSelector } from 'react-redux' import { Button } from '@mui/material' import { Notice } from './Notice' import { Link } from './Link' +import { BillingUI } from './BillingUI' type Props = { device?: IDevice; license?: ILicense } @@ -25,17 +26,21 @@ export const LicensingServiceNotice: React.FC = props => { - - + + + + + } > {title} This service will be accessible for {humanizeDays(evaluationLimit?.value)}, unless you upgrade your license. - Learn more. + + Learn more. + ) diff --git a/frontend/src/components/PlanActionChip.tsx b/frontend/src/components/PlanActionChip.tsx index ad4d8ff34..1b88e7e63 100644 --- a/frontend/src/components/PlanActionChip.tsx +++ b/frontend/src/components/PlanActionChip.tsx @@ -11,6 +11,7 @@ import { selectRemoteitLicense } from '../selectors/organizations' import { State } from '../store' import { ColorChip, Props as ChipProps } from './ColorChip' import { useHistory } from 'react-router-dom' +import { BillingUI } from './BillingUI' export const PlanActionChip: React.FC = ({ ...props }) => { const license = useSelector((state: State) => selectRemoteitLicense(state)) @@ -36,5 +37,9 @@ export const PlanActionChip: React.FC = ({ ...props }) => { return null } - return history.push('/account/plans')} /> + return ( + + history.push('/account/plans')} /> + + ) } diff --git a/frontend/src/components/UpgradeBanner.tsx b/frontend/src/components/UpgradeBanner.tsx index 8af7bc463..16be1c6ca 100644 --- a/frontend/src/components/UpgradeBanner.tsx +++ b/frontend/src/components/UpgradeBanner.tsx @@ -4,6 +4,7 @@ import { selectPlan } from '../selectors/organizations' import { PERSONAL_PLAN_ID } from '../models/plans' import { useSelector } from 'react-redux' import { ColorChip } from './ColorChip' +import { BillingUI } from './BillingUI' import { Notice } from './Notice' import { Box } from '@mui/material' @@ -14,9 +15,11 @@ export const UpgradeBanner: React.FC = () => { Access premium features & support - - - + + + + + ) diff --git a/frontend/src/components/UpgradeNotice.tsx b/frontend/src/components/UpgradeNotice.tsx index 0ab6bd228..8f7d41f84 100644 --- a/frontend/src/components/UpgradeNotice.tsx +++ b/frontend/src/components/UpgradeNotice.tsx @@ -6,6 +6,7 @@ import { makeStyles } from '@mui/styles' import { selectLimits } from '../selectors/organizations' import { useSelector, useDispatch } from 'react-redux' import { State, Dispatch } from '../store' +import { BillingUI } from './BillingUI' import { Pre } from './Pre' const oneWeek = 1000 * 60 * 60 * 24 * 7 @@ -32,11 +33,13 @@ export const UpgradeNotice: React.FC> = () severity="warning" onClose={() => dispatch.ui.setPersistent({ updateNoticeCleared: Date.now() })} button={ - - - + + + + + } > {message} diff --git a/frontend/src/pages/AccountPage.tsx b/frontend/src/pages/AccountPage.tsx index 71445c0a6..8fb1ce81c 100644 --- a/frontend/src/pages/AccountPage.tsx +++ b/frontend/src/pages/AccountPage.tsx @@ -4,7 +4,7 @@ import { List, Typography, Tooltip, ButtonBase } from '@mui/material' import { ListItemLocation } from '../components/ListItemLocation' import { windowOpen } from '../services/browser' import { Container } from '../components/Container' -import { MobileUI } from '../components/MobileUI' +import { BillingUI } from '../components/BillingUI' import { Logo } from '@common/brand/Logo' import { Icon } from '../components/Icon' @@ -34,14 +34,14 @@ export const AccountPage: React.FC = () => { dense /> - + {!browser.hasBilling && } {!browser.hasBilling && } - + diff --git a/frontend/src/pages/CustomerPage.tsx b/frontend/src/pages/CustomerPage.tsx index c17cbef5a..495079b40 100644 --- a/frontend/src/pages/CustomerPage.tsx +++ b/frontend/src/pages/CustomerPage.tsx @@ -7,6 +7,7 @@ import { Typography, Button } from '@mui/material' import { LicensingSetting } from '../components/LicensingSetting' import { DeleteButton } from '../buttons/DeleteButton' import { FormDisplay } from '../components/FormDisplay' +import { BillingUI } from '../components/BillingUI' import { Container } from '../components/Container' import { Avatar } from '../components/Avatar' import { Title } from '../components/Title' @@ -44,9 +45,11 @@ export const CustomerPage: React.FC = () => { > License - + + + { - - + + + + + } fullWidth > diff --git a/frontend/src/pages/OrganizationRolesPage.tsx b/frontend/src/pages/OrganizationRolesPage.tsx index bf612608c..dd92e81a7 100644 --- a/frontend/src/pages/OrganizationRolesPage.tsx +++ b/frontend/src/pages/OrganizationRolesPage.tsx @@ -8,6 +8,7 @@ import { useSelector } from 'react-redux' import { ListItemBack } from '../components/ListItemBack' import { IconButton } from '../buttons/IconButton' import { Container } from '../components/Container' +import { BillingUI } from '../components/BillingUI' import { MobileUI } from '../components/MobileUI' import { Notice } from '../components/Notice' import { Title } from '../components/Title' @@ -43,14 +44,16 @@ export const OrganizationRolesPage: React.FC = () => { {!limits.roles && ( Upgrade your plan to Business to add custom roles. - + + + )} diff --git a/ios/App/App.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj index 1f4ab7ed4..3cf72fc76 100644 --- a/ios/App/App.xcodeproj/project.pbxproj +++ b/ios/App/App.xcodeproj/project.pbxproj @@ -352,7 +352,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 140; + CURRENT_PROJECT_VERSION = 142; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = NR6A6NQAYW; INFOPLIST_FILE = App/Info.plist; @@ -360,7 +360,7 @@ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 3.41.0; + MARKETING_VERSION = 3.42.1; OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; PRODUCT_BUNDLE_IDENTIFIER = com.remoteit.mobile.ios; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -381,7 +381,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 140; + CURRENT_PROJECT_VERSION = 142; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = NR6A6NQAYW; INFOPLIST_FILE = App/Info.plist; @@ -389,7 +389,7 @@ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 3.41.0; + MARKETING_VERSION = 3.42.1; PRODUCT_BUNDLE_IDENTIFIER = com.remoteit.mobile.ios; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/package-lock.json b/package-lock.json index 3e8aef2b5..ac20693a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "remoteit-capacitor", - "version": "3.41.0", + "version": "3.42.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "remoteit-capacitor", - "version": "3.41.0", + "version": "3.42.1", "hasInstallScript": true, "workspaces": [ "electron", @@ -40,7 +40,7 @@ }, "electron": { "name": "remoteit", - "version": "3.41.0", + "version": "3.42.1", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -164,7 +164,7 @@ }, "frontend": { "name": "remoteit-desktop-frontend", - "version": "3.41.0", + "version": "3.42.1", "dependencies": { "@airbrake/browser": "^2.1.9", "@aws-amplify/auth": "^5.6.6", diff --git a/package.json b/package.json index fa4c6c92d..3d7fa02ca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "remoteit-capacitor", - "version": "3.41.0", + "version": "3.42.1", "private": true, "description": "Remote.It cross platform desktop application for creating and hosting connections", "workspaces": [