From e60fbedf51c58e60ff0ce81bfd9966d88ebb92b2 Mon Sep 17 00:00:00 2001 From: "VL.Y" <1560781+vladimiry@users.noreply.github.com> Date: Thu, 8 Sep 2022 21:13:05 +0300 Subject: [PATCH] update @protonmail web clients --- patches/protonmail/common.patch | 19 ------- patches/protonmail/constants-5.patch | 24 ++++++++ patches/protonmail/meta.json | 6 +- patches/protonmail/proton-account.patch | 9 ++- patches/protonmail/proton-mail.patch | 35 ++++++------ patches/protonmail/url-2.patch | 19 +++++++ patches/protonmail/url-3.patch | 75 +++++++++++++++++++++++++ src/shared/const/proton-apps.ts | 6 +- 8 files changed, 145 insertions(+), 48 deletions(-) create mode 100644 patches/protonmail/constants-5.patch create mode 100644 patches/protonmail/url-3.patch diff --git a/patches/protonmail/common.patch b/patches/protonmail/common.patch index d6122e86d..b93c1ae45 100644 --- a/patches/protonmail/common.patch +++ b/patches/protonmail/common.patch @@ -126,25 +126,6 @@ index 38e76fbcd..cace56733 100644 return null; } -diff --git a/packages/shared/lib/fetch/helpers.ts b/packages/shared/lib/fetch/helpers.ts -index 6edb249f3..738c4da33 100644 ---- a/packages/shared/lib/fetch/helpers.ts -+++ b/packages/shared/lib/fetch/helpers.ts -@@ -10,11 +10,13 @@ const appendQueryParams = (url: URL, params: { [key: string]: any }) => { - }); - }; - -+/* */ - export const createUrl = (urlString: string, params: { [key: string]: any } = {}) => { - const url = new URL(urlString, window.location.origin); - appendQueryParams(url, params); - return url; - }; -+/* */ - - export const checkStatus = (response: Response, config: any) => { - const { status } = response; - diff --git a/packages/components/helpers/earlyAccessDesynchronization.ts b/packages/components/helpers/earlyAccessDesynchronization.ts index 36bd0c712..c2fb3681c 100644 --- a/packages/components/helpers/earlyAccessDesynchronization.ts diff --git a/patches/protonmail/constants-5.patch b/patches/protonmail/constants-5.patch new file mode 100644 index 000000000..c622353fd --- /dev/null +++ b/patches/protonmail/constants-5.patch @@ -0,0 +1,24 @@ +diff --git a/packages/shared/lib/constants.ts b/packages/shared/lib/constants.ts +index e98525020..9e27f7f97 100644 +--- a/packages/shared/lib/constants.ts ++++ b/packages/shared/lib/constants.ts +@@ -52,7 +52,7 @@ export const APPS = { + } as const; + export const APPS_CONFIGURATION = { + [APPS.PROTONACCOUNT]: { +- publicPath: '', ++ publicPath: '/account', + subdomain: 'account', + name: ACCOUNT_APP_NAME, + bareName: 'Account', +@@ -115,8 +115,8 @@ export const APPS_CONFIGURATION = { + settingsSlug: '', + }, + [APPS.PROTONVPN_SETTINGS]: { +- publicPath: '', +- subdomain: '', ++ publicPath: 'account/vpn', ++ subdomain: 'account', + name: VPN_APP_NAME, + bareName: 'VPN', + clientID: 'web-vpn-settings', diff --git a/patches/protonmail/meta.json b/patches/protonmail/meta.json index 588a02042..1d2dd6453 100644 --- a/patches/protonmail/meta.json +++ b/patches/protonmail/meta.json @@ -5,7 +5,7 @@ "constants-4.patch", "sentry-8.patch", "pack-api-arg-3.patch", - "pack-webpack-4.patch", + "pack-webpack-5.patch", "session-storage-3.patch", "link-handler-5.patch", "embedded-verification-1.patch", @@ -13,8 +13,8 @@ ], "proton-account": [ "common.patch", - "url-2.patch", - "constants-4.patch", + "url-3.patch", + "constants-5.patch", "sentry-8.patch", "pack-api-arg-3.patch", "pack-webpack-5.patch", diff --git a/patches/protonmail/proton-account.patch b/patches/protonmail/proton-account.patch index a7bfeadce..68b87cd88 100644 --- a/patches/protonmail/proton-account.patch +++ b/patches/protonmail/proton-account.patch @@ -38,16 +38,15 @@ index 8f5e56ef0..a40d9dc17 100644 export default Setup; diff --git a/applications/account/src/app/content/MainContainer.tsx b/applications/account/src/app/content/MainContainer.tsx -index f14e76d5a..b21b54c97 100644 +index ceb51ba56..7656f38f6 100644 --- a/applications/account/src/app/content/MainContainer.tsx +++ b/applications/account/src/app/content/MainContainer.tsx -@@ -91,7 +91,7 @@ const MainContainer = () => { - setExpand(false); - }, [location.pathname, location.hash]); +@@ -119,7 +119,7 @@ const MainContainer = () => { + + useDeviceRecovery(); - const app = getAppFromPathnameSafe(location.pathname) || DEFAULT_APP; + const app = getAppFromPathnameSafe(window.location.pathname) || DEFAULT_APP; const appSlug = getSlugFromApp(app); /* - diff --git a/patches/protonmail/proton-mail.patch b/patches/protonmail/proton-mail.patch index ac1237d37..99c1e3d1f 100644 --- a/patches/protonmail/proton-mail.patch +++ b/patches/protonmail/proton-mail.patch @@ -1,18 +1,17 @@ diff --git a/packages/shared/lib/api/events.ts b/packages/shared/lib/api/events.ts -index 263d640ff..d1944c66e 100644 +index 7c263575d..6d696e5f4 100644 --- a/packages/shared/lib/api/events.ts +++ b/packages/shared/lib/api/events.ts -@@ -1,9 +1,11 @@ - export const getLatestID = () => ({ - url: 'v4/events/latest', - method: 'get', -+ params: { MessageCounts: "", ConversationCounts: "", }, - }); - - export const getEvents = (eventID: string) => ({ +@@ -6,5 +6,9 @@ export const getLatestID = () => ({ + export const getEvents = (eventID: string, params?: { ConversationCounts: 1 | 0; MessageCounts: 1 | 0 }) => ({ url: `v4/events/${eventID}`, method: 'get', -+ params: { MessageCounts: "", ConversationCounts: "", }, +- params, ++ params: { ++ ...params, ++ ConversationCounts: 1, ++ MessageCounts: 1, ++ }, }); diff --git a/packages/components/containers/login/MinimalLoginContainer.tsx b/packages/components/containers/login/MinimalLoginContainer.tsx @@ -324,18 +323,18 @@ index bdabb99e0..a56b8cdcb 100644 }; diff --git a/applications/mail/src/app/components/header/MailHeader.tsx b/applications/mail/src/app/components/header/MailHeader.tsx -index e68f73cd8..6a69bfb1f 100644 +index d86dc9880..e75180b46 100644 --- a/applications/mail/src/app/components/header/MailHeader.tsx +++ b/applications/mail/src/app/components/header/MailHeader.tsx -@@ -34,7 +34,6 @@ import { getLabelName } from '../../helpers/labels'; - import { useEncryptedSearchContext } from '../../containers/EncryptedSearchProvider'; - import { useOnCompose, useOnMailTo } from '../../containers/ComposeProvider'; - import { MESSAGE_ACTIONS } from '../../constants'; --import MailDefaultHandlerModal from './MailDefaultHandlerModal'; +@@ -38,7 +38,6 @@ import { setParamsInUrl } from '../../helpers/mailboxUrl'; + import { Breakpoints } from '../../models/utils'; + import MailOnboardingModal from '../onboarding/MailOnboardingModal'; import ClearBrowserDataModal from './ClearBrowserDataModal'; +-import MailDefaultHandlerModal from './MailDefaultHandlerModal'; import MailSearch from './search/MailSearch'; - import MailOnboardingModal from '../onboarding/MailOnboardingModal'; -@@ -191,7 +190,6 @@ const MailHeader = ({ labelID, elementID, breakpoints, expanded, onToggleExpand + + interface Props { +@@ -192,7 +191,6 @@ const MailHeader = ({ labelID, elementID, breakpoints, expanded, onToggleExpand diff --git a/patches/protonmail/url-2.patch b/patches/protonmail/url-2.patch index 7eb41de33..59f82afbb 100644 --- a/patches/protonmail/url-2.patch +++ b/patches/protonmail/url-2.patch @@ -52,3 +52,22 @@ index 11cd310f6..8019c07f5 100644 let cache = ''; export const getStaticURL = (path: string) => { if (window.location.hostname === 'localhost' || getIsDohDomain(window.location.origin)) { + +diff --git a/packages/shared/lib/fetch/helpers.ts b/packages/shared/lib/fetch/helpers.ts +index 6edb249f3..738c4da33 100644 +--- a/packages/shared/lib/fetch/helpers.ts ++++ b/packages/shared/lib/fetch/helpers.ts +@@ -10,11 +10,13 @@ const appendQueryParams = (url: URL, params: { [key: string]: any }) => { + }); + }; + ++/* */ + export const createUrl = (urlString: string, params: { [key: string]: any } = {}) => { + const url = new URL(urlString, window.location.origin); + appendQueryParams(url, params); + return url; + }; ++/* */ + + export const checkStatus = (response: Response, config: any) => { + const { status } = response; diff --git a/patches/protonmail/url-3.patch b/patches/protonmail/url-3.patch new file mode 100644 index 000000000..f294f7cd6 --- /dev/null +++ b/patches/protonmail/url-3.patch @@ -0,0 +1,75 @@ +diff --git a/packages/shared/lib/helpers/url.ts b/packages/shared/lib/helpers/url.ts +index 11cd310f6..8019c07f5 100644 +--- a/packages/shared/lib/helpers/url.ts ++++ b/packages/shared/lib/helpers/url.ts +@@ -175,48 +175,16 @@ export const getSecondLevelDomain = (hostname: string) => { + return hostname.slice(hostname.indexOf('.') + 1); + }; + +-export const getRelativeApiHostname = (hostname: string) => { +- const idx = hostname.indexOf('.'); +- const first = hostname.slice(0, idx); +- const second = hostname.slice(idx + 1); +- return `${first}-api.${second}`; +-}; +- + export const getIsDohDomain = (origin: string) => { + return DOH_DOMAINS.some((dohDomain) => origin.endsWith(dohDomain)); + }; + + export const getApiSubdomainUrl = (pathname: string) => { +- const url = new URL('/', window.location.origin); +- if (url.hostname === 'localhost' || getIsDohDomain(url.origin)) { +- url.pathname = `/api${pathname}`; +- return url; +- } +- url.hostname = getRelativeApiHostname(url.hostname); ++ const url = new URL('/', '___ELECTRON_MAIL_PROTON_API_ENTRY_URL_PLACEHOLDER___'); + url.pathname = pathname; + return url; + }; + +-export const getAppUrlFromApiUrl = (apiUrl: string, appName: APP_NAMES) => { +- const { subdomain } = APPS_CONFIGURATION[appName]; +- const url = new URL(apiUrl); +- const { hostname } = url; +- const index = hostname.indexOf('.'); +- const tail = hostname.slice(index + 1); +- url.pathname = ''; +- url.hostname = `${subdomain}.${tail}`; +- return url; +-}; +- +-export const getAppUrlRelativeToOrigin = (origin: string, appName: APP_NAMES) => { +- const { subdomain } = APPS_CONFIGURATION[appName]; +- const url = new URL(origin); +- const segments = url.host.split('.'); +- segments[0] = subdomain; +- url.hostname = segments.join('.'); +- return url; +-}; +- + let cache = ''; + export const getStaticURL = (path: string) => { + if (window.location.hostname === 'localhost' || getIsDohDomain(window.location.origin)) { + +diff --git a/packages/shared/lib/fetch/helpers.ts b/packages/shared/lib/fetch/helpers.ts +index f0b3e2e31..90995e1fc 100644 +--- a/packages/shared/lib/fetch/helpers.ts ++++ b/packages/shared/lib/fetch/helpers.ts +@@ -10,6 +10,7 @@ const appendQueryParams = (url: URL, params: { [key: string]: any }) => { + }); + }; + ++/* */ + export const createUrl = (urlString: string, params: { [key: string]: any } = {}) => { + let url: URL; + if (typeof window !== 'undefined') { +@@ -20,6 +21,7 @@ export const createUrl = (urlString: string, params: { [key: string]: any } = {} + appendQueryParams(url, params); + return url; + }; ++/* */ + + export const checkStatus = (response: Response, config: any) => { + const { status } = response; diff --git a/src/shared/const/proton-apps.ts b/src/shared/const/proton-apps.ts index 0f6d221cd..ef75ce567 100644 --- a/src/shared/const/proton-apps.ts +++ b/src/shared/const/proton-apps.ts @@ -23,7 +23,7 @@ export const PROVIDER_REPO_MAP = { basePath: "", apiSubdomain: "mail-api", repoRelativeDistDir: "./dist", - tag: "proton-mail@5.0.6.9", + tag: "proton-mail@5.0.7.9", protonPack: { webpackIndexEntryItems: [ // immediate @@ -49,14 +49,14 @@ export const PROVIDER_REPO_MAP = { basePath: "account", apiSubdomain: "account-api", repoRelativeDistDir: "./dist", - tag: "proton-account@5.0.6.0", + tag: "proton-account@5.0.7.3", protonPack: {} }, [PROVIDER_APP_NAMES[2]]: { basePath: "calendar", apiSubdomain: "calendar-api", repoRelativeDistDir: "./dist", - tag: "proton-calendar@5.0.4.1", + tag: "proton-calendar@5.0.4.4", protonPack: { webpackIndexEntryItems: [ // immediate