Commit Graph

386 Commits

Author SHA1 Message Date
M Fahru 3304aaddf3 Merge pull request #18962 from overleaf/mf-interstitial-payment-new-plans-page-config
[web] Implement website-redesign-plans split test config on interstitial payment page

GitOrigin-RevId: 6ea51d5f89ac6b633b5ce6dfbb81c258d668ce13
2024-07-15 09:04:53 +00:00
Thomas a047388b08 Add serverside checks for changing the user access level after link sharing changes (#19168)
* Add getEditInviteCount to count only edit collaborators

* Add getInvitedEditCollaboratorCount to count joined editors

* Add canAddXEditCollaborators to determine if owner can add more editors

* Update setCollaboratorInfo to check if editor slots are available

GitOrigin-RevId: a88707f102dfbde39322f5a7bbc79d47b6e810d5
2024-07-01 08:04:16 +00:00
Thomas 2ce71b0b4d Async/awaitify LimitationsManager for link sharing changes (#19110)
* Move functions to top level

* Async/awaitify LimitationsManager methods

* Promisify LimitationsManagerTests

GitOrigin-RevId: ece7d2ea5160aa95924840044e2f225e1f2848e7
2024-07-01 08:04:12 +00:00
M Fahru d80046c757 Delete unused code: planFeatures.js, this config should have been deleted on the first plans page redesign.
This config is superseded by `plansFeatures.js` that is imported by `plansConfig.js` which is directly used in the pug template.

GitOrigin-RevId: ae0a0e1ff7c8a64022ab378d17943fe4a7ed3b35
2024-06-14 08:05:03 +00:00
M Fahru d35e11eaef Merge pull request #18720 from overleaf/jel-begin-light-touch-plans
[web] Begin light touch redesign of plans page

GitOrigin-RevId: dda5ab1c0817371400f30f2e4d230f5c3a5728f4
2024-06-12 08:05:19 +00:00
Liangjun Song 0680a91a70 [web] fix incorrect event group-subscription-left (#18757)
GitOrigin-RevId: aa342dc6575eca032834c2b132d4d0144a4faa27
2024-06-11 08:04:35 +00:00
Jessica Lawshe d7b64ef92e Merge pull request #18718 from overleaf/jel-isSplitTestActive-plans-page
[web] New plans page variants only loadable if test is active

GitOrigin-RevId: 2b29dc8a3ecef6dd8f34dd25e59bf48a9724061b
2024-06-06 08:05:05 +00:00
Jessica Lawshe 8fe46feffb Merge pull request #18713 from overleaf/jel-group-plan-modal-defaults
[web] Move group modal defaults for plans page to function

GitOrigin-RevId: 0ebce884f9e984b50318742765b7a768f259a8db
2024-06-06 08:04:56 +00:00
Jessica Lawshe d28e58a2fc Merge pull request #18686 from overleaf/jel-plans-page-currency
[web] Move `currency` check to `_getRecommendedCurrency`

GitOrigin-RevId: afadd492a2e1db9c91fac027eb3c9783194ff169
2024-06-06 08:04:52 +00:00
Jessica Lawshe 22be3928e3 Merge pull request #18614 from overleaf/mf-create-plans-redesign-split-test-config
[web] Create split test configuration for `website-redesign-plans` split test

GitOrigin-RevId: dea88256830897d1ab1f1de64eb21413c823e6ff
2024-06-04 08:04:59 +00:00
Jessica Lawshe 3a59883e7a Merge pull request #18297 from overleaf/jel-remove-angular-group-invite
[web] Remove Angular version of group invite

GitOrigin-RevId: bd31cd2ed3c105c9042ae9c42894cfe960459a46
2024-05-31 08:04:27 +00:00
Antoine Clausse 554be73a36 In collect_paypal_past_due_invoice.js, iterate over each page instead of gathering data from all pages at first (#18414)
* Create `getPaginatedEndpointIterator` to iterate each page

* Create `waitMs` util, it will replace `slowCallback`

* Make `handleAPIError` async

* Make `isAccountUsingPaypal` async

* Make `attemptInvoiceCollection` async

* Make `attemptInvoicesCollection` async

* Use `await` instead of `new Promise`

* Remove unused callbackified `attemptInvoiceCollection`

* Run `attemptInvoiceCollection` for each page instead of gathering all pages in the beginning

* Add test on fetching multiple pages of invoice

GitOrigin-RevId: 2674b18c6ca5732b873fb2bc71b515909006f93d
2024-05-27 10:23:18 +00:00
Eric Mc Sween a22319fe46 Merge pull request #18453 from overleaf/em-fix-floating-promise
Fix no-floating-promises lint rule

GitOrigin-RevId: 58f89e0078abf72be65552f9468cb225e5758e3e
2024-05-27 10:22:24 +00:00
Eric Mc Sween 876ee4d967 Merge pull request #18225 from overleaf/em-typescript-eslint
Add typescript-eslint rule: no-floating-promises

GitOrigin-RevId: 8c3decdff537c885f5bfeb5250b7805480bc6602
2024-05-27 10:22:20 +00:00
Antoine Clausse 78a0bc2b05 [web] Convert RecurlyWrapper functions to async (#18384)
* Rename `RecurlyWrapper` to `promises`, as it will only contain the promises soon

* Update `apiRequest`

* Update `_parseXml`

* Update `_parseXmlAndGetAttribute`

* Update `_parse*Xml`

* Update `updateAccountEmailAddress`

* Update `checkAccountExists`

* Update `createAccount`

* Update `createBillingInfo`

* Update `setAddressAndCompanyBillingInfo`

* Update `createSubscription`

* Update `_createPaypalSubscription`

* Update `_handle422Response`

* Update `_createCreditCardSubscription`

* Update `createSubscription`

* Update `getSubscriptions`

* Update `getSubscription`

* Update `getPaginatedEndpoint`

* Update `getAccount`

* Update `getAccountActiveCoupons`

* Update `getCoupon`

* Update `getBillingInfo`

* Update `getAccountPastDueInvoices`

* Update `attemptInvoiceCollection`

* Update `updateSubscription`

* Update `createFixedAmmountCoupon`

* Update `lookupCoupon`

* Update `redeemCoupon`

* Update `extendTrial`

* Update `listAccountActiveSubscriptions`

* To find which functions to add as callbackified, I used this Regex:
`RecurlyWrapper\.(?!promises)[^.\s]*`

And after adding callbackified functions, we're left with no results with the Regex:
`RecurlyWrapper\.(?!promises|apiUrl|_buildXml|_parseXml|attemptInvoiceCollection|createFixedAmmountCoupon|getAccountActiveCoupons|getBillingInfo|getPaginatedEndpoint|getSubscription|updateAccountEmailAddress)[^.\s]*`

* Update unit tests

* Test `getSubscription` both as "promise" and as "callback"

I'm not sure if we want to generalize this.

* Fix: add missing `await`s (!!)

* Change `apiRequest` to reject errors instead of resolving it in an object

* Fixup for CollectPayPalPastDueInvoice test

* Fix: callbackify `getSubscriptions` (!!)

* Replace `.then(...)` chain by multiple `await`

* Fixup `attemptInvoicesCollection`: prevent reading length of undefined

* Use `return await` when returning promises

Per https://github.com/overleaf/internal/pull/18384#pullrequestreview-2065738771

GitOrigin-RevId: ceda755b24fd29f97a27e60ac5db9bc7e369f932
2024-05-27 10:21:26 +00:00
Antoine Clausse 9419cc3b37 [web] Add tests to collect_paypal_past_due_invoice.js + update logging (#18310)
* Fix: Invoices collected array length comparison

Update the code with the correct condition to respect the intent of the previous implementation ("exit with non zero code when no invoicess were processed").
See https://github.com/overleaf/internal/commit/5476f39984f9cbb6edaeec3bef35e9e5207c5823

However, I'm not sure if erroring when no invoices are collected is actually what we want to do.

* Wrap `collect_paypal_past_due_invoice` script and export the function

* Fixup typo `accoutns`

* Log invoices collection data before throwing

* Add note: `handleAPIError` is silencing the errors

* Create a test on `collect_paypal_past_due_invoice`

* Replace `console.log` by `@overleaf/logger` (bunyan)

Our `console.warn` show up as Errors (in red) in GCP. For example the following is an error in GCP:
```
Errors in attemptInvoiceCollection with id=2693634 OError: Recurly API returned with status code: 400
```
https://github.com/overleaf/internal/blob/5476f39/services/web/scripts/recurly/collect_paypal_past_due_invoice.js#L9

---

Does it correctly set the levels as warnings if we use `@overleaf/logger`

GitOrigin-RevId: 37c8bdf4afd8cef4706700aafb44480ec8966a74
2024-05-15 08:04:46 +00:00
Jessica Lawshe c6b88085d5 Merge pull request #18188 from overleaf/jel-react-group-invite
[web] Migrate team invite to React

GitOrigin-RevId: 32e968c3b512020aef9a396808c73a7b4859e6d1
2024-05-09 08:05:03 +00:00
Antoine Clausse ede03daafd Rename test to local-ccy-format-v2 to restart with clean data (#18115)
GitOrigin-RevId: 610495f41d69f8cac1a427ef7b8d64886bc5cdba
2024-04-26 08:04:26 +00:00
Jessica Lawshe 7e3dfded2d Merge pull request #17821 from overleaf/jel-subscription-populate
[web] Only populate the required admin data for the subscription

GitOrigin-RevId: 4c2de85ce9f26b337deeff491b40d74756f21702
2024-04-25 08:05:03 +00:00
Antoine Clausse 2a5dca0897 [web] Fix thousands separators in plan page for LATAM currencies (#18068)
Use function from https://github.com/overleaf/internal/blob/e486f2fc/services/web/scripts/plan-prices/plans.js#L123-L135

GitOrigin-RevId: e83ea429112c92e07857ee4d3e5fd43c81fcb871
2024-04-24 08:04:39 +00:00
Alf Eaton 98cefaa5bd Remove "upgrade to annual" page (#18014)
GitOrigin-RevId: b9f92ad038adab7fc7eb5e2a7175461bfefee379
2024-04-24 08:04:04 +00:00
Davinder Singh a179751986 Merge pull request #17866 from overleaf/ds-banner-labels
Geo Pricing- Update Banner message on Latam america

GitOrigin-RevId: 7a8adf8e31e7ba4bc1b415a26c492bf6e5867328
2024-04-23 08:04:19 +00:00
Antoine Clausse b2ef7a935f [web] Use localized number formatting for currencies (#17622)
* Add a unit test on `SubscriptionFormatters.formatPrice`

* Add JSDoc to `formatPrice`

Also: Name the functions before exporting:
This fixes my IDE (WebStorm) navigation

* Make `'USD'` the default param instead of reassigning

* Create `formatCurrency` function

* Use `formatCurrency` in SubscriptionFormatters

* Use an `isNoCentsCurrency` logic for `CLP` `JPY` `KRW` `VND`

And remove custom `CLP` logic and locale

* Add `locale` param to `formatPrice`

* Generate `groups.json` and `localizedPlanPricing.json`

```
bin/exec web node ./scripts/recurly/recurly_prices.js --download -o prices.json
bin/exec web node ./scripts/plan-prices/plans.js -f ../../prices.json -o dir
```

* Update scripts/plan-prices/plans.js to generate numbers instead of localized amounts

* Generate `groups.json` and `localizedPlanPricing.json`

```
bin/exec web node ./scripts/recurly/recurly_prices.js --download -o prices.json
bin/exec web node ./scripts/plan-prices/plans.js -f ../../prices.json -o dir
```

* Remove generation of `plans.json`

As /services/web/frontend/js/main/plans.js was removed in https://github.com/overleaf/internal/pull/12593

* Sort currencies in alphabetical order in scripts/plan-prices/plans.js

* Generate `groups.json` and `localizedPlanPricing.json`

```
bin/exec web node ./scripts/recurly/recurly_prices.js --download -o prices.json
bin/exec web node ./scripts/plan-prices/plans.js -f ../../prices.json -o dir
```

* Use `formatCurrency` in price-summary.tsx

* Use `formatCurrency` in Subscription Pug files

* Fix unit tests SubscriptionHelperTests.js

* Remove unused `currencySymbol`

* Change to `formatCurrency` in other React components

* Add `CurrencyCode` JSDoc types

* Duplicate `formatCurrency` into services/web/app/src/util

* Wrap tests in a top-level describe block

* Use `narrowSymbol`

* Fix tests with `narrowSymbol` expects

* Revert deletion of old `formatPrice` in SubscriptionFormatters.js

* Rename `formatCurrency` -> `formatCurrencyLocalized`

* Revert deletion of `CurrencySymbol`

* Add split-test in SubscriptionController.js

* Add split-test in SubscriptionViewModelBuilder.js

* Add split-test in plans

* Add split-test in subscription-dashboard-context.tsx

* Add split-test in 4 more components

* Update tests

* Show currency and payment methods in interstitial page

* Fix `–` being printed. Use `–` instead

* Fix test with NOK

* Storybook: Fix missing `SplitTestProvider`

* Storybook: Revert "Remove unused `currencySymbol`"

This reverts commit e55387d4753f97bbf8e39e0fdc3ad17312122aaa.

* Replace `getSplitTestVariant` by `useSplitTestContext`

* Use parameterize currencyFormat in `generateInitialLocalizedGroupPrice`

* Fixup import paths of `formatCurrencyLocalized`

* Replace `% 1 === 0` by `Number.isInteger`

* Add comment explaining that any combinations of languages/currencies could happen

* Fixup after rebase: import `useSplitTestContext`

* Revert "Remove SplitTestProvider from subscription root"

This reverts commit be9f378fda715b86589ab0759737581c72321d87.

* Revert "Remove split test provider from some tests"

This reverts commit 985522932b550cfd38fa6a4f4c3d2ebaee6ff7df.

GitOrigin-RevId: 59a83cbbe0f7cc7e45f189c654e23fcf9bfa37af
2024-04-19 08:03:54 +00:00
Antoine Clausse 76955c814a Remove subscription-cancel-button (#17976)
I believe this was already removed since https://github.com/overleaf/internal/pull/13311

GitOrigin-RevId: e486f2fce794fc9d587da331547834c3b6158ceb
2024-04-19 08:03:49 +00:00
Jessica Lawshe 955c860b64 Merge pull request #17841 from overleaf/jel-lint-populate
[web] Add linting rule for mongoose `populate`

GitOrigin-RevId: 625b2b5f9db4e88ce0d629752f083b8be71c7766
2024-04-12 08:06:18 +00:00
Jessica Lawshe 0cfcdf5e4d Merge pull request #17822 from overleaf/jel-dash-usersBestSubscription
[web] Limit data sent to dash for best subscription when group

GitOrigin-RevId: d52101bec69cbb7931e9702e085b4aeb65d9d603
2024-04-12 08:06:09 +00:00
Jessica Lawshe 751e079105 Merge pull request #17817 from overleaf/jel-group-subscription-page
[web] Only send necesssary group subscription data to frontened

GitOrigin-RevId: bf49245e573bb9a1ec4bafc85cc6d0b7fd5f3e6f
2024-04-12 08:06:04 +00:00
Jakob Ackermann ea0a99253c Merge pull request #17864 from overleaf/jpa-fix-redirect
[web] fix navigation flow after try premium page when using skip button

GitOrigin-RevId: 1ae7ccdb14f7125919bc97746761a21c6896938f
2024-04-12 08:05:15 +00:00
Davinder Singh 998d55d159 Merge pull request #17559 from overleaf/ds-latam-v2
LATAM Geo Pricing - Introducing split test in LATAM countries Round 2

GitOrigin-RevId: 76ab880262f126f8db7f8e577154d78b5e9abf7a
2024-04-09 08:04:06 +00:00
Jessica Lawshe 3437ddb203 Merge pull request #17592 from overleaf/jel-sso-enrollment-page
[web] Return 403 on group SSO enrollment page if group does not have feature

GitOrigin-RevId: ce6bbf69da2ff332ffa541f8febf8fb298ea743a
2024-03-28 09:04:49 +00:00
Rebeka Dekany 8dd5b2574e Merge pull request #16261 from overleaf/rd-rate-limiter
[web] Add rate limits for subscription requests

GitOrigin-RevId: 3cfdb80713c96d32f7d297f38ec306e2bf6ec9a6
2024-03-28 09:04:06 +00:00
Alf Eaton 6cc2db3cdd Merge pull request #17525 from overleaf/ae-upgrade-prettier
Upgrade Prettier to v3

GitOrigin-RevId: 6f1338f196408f3edb4892d5220ad3665ff1a5bc
2024-03-26 09:04:05 +00:00
Davinder Singh 511ad1b68f Adding BRL geo pricing (#17164)
* BRL geo pricing banners and modals

* format:fix

GitOrigin-RevId: 478435764230e7fea3c8f26e5747562698f78228
2024-03-06 17:27:18 +00:00
David db1508be69 Merge pull request #17075 from overleaf/dp-mongoose-callback-subscription-group-handler
Promisify SubscriptionGroupHandler and SubscriptionGroupHandlerTests

GitOrigin-RevId: 998ebb56f9cffe59f7cb490220bccbeedb133a7b
2024-03-05 09:03:19 +00:00
David 6551aba1a5 Merge pull request #17005 from overleaf/dp-mongoose-callback-subscription-handler
Promisify SubscriptionHandler and SubscriptionHandlerTests

GitOrigin-RevId: b34328ee2cca4449a02723a587a1bfb887ed847a
2024-03-05 09:03:15 +00:00
M Fahru 920e86e4d0 Merge pull request #17303 from overleaf/mf-fix-plans-page-mobile
[web] Fix plans page table styling on both desktop and mobile

GitOrigin-RevId: 252bbaf7245751b1cfe07286a0fe19069219bb5b
2024-03-04 09:04:08 +00:00
M Fahru 5a8a0fb268 Tear down annual-trials split test:
- Use the `default` variant as the winner
- Remove all `annual-trials`-related code

GitOrigin-RevId: 3956f256157f3e86c99e41eec54ef6fd0da39bc3
2024-03-01 09:03:24 +00:00
David 6a96e160d9 Merge pull request #17079 from overleaf/dp-mongoose-callback-subscription-locator
Promisify SubscriptionLocator and SubscriptionLocatorTests

GitOrigin-RevId: 9956a72d0cd94cb0b89da0fc1ec9c0e06fdcfeea
2024-02-29 09:04:07 +00:00
M Fahru dc9b0aa8a5 Merge pull request #17230 from overleaf/mf-tear-down-inr-2
[web] Tear down INR split test

GitOrigin-RevId: 90c6ab4666d9281e804b279d697d6c14ffd682d2
2024-02-22 09:05:02 +00:00
Thomas 1019142457 Use winning website redesign variant (#17200)
* Implement redesign on the default urls and redirect variants to defaults

* Fix Features & Benefits inconsistent case, cleanup temp translation

* Replace header_extras with the website redesign header extras

* Delete old home page

* Remove real time edits javascript (old home page)

* Cleanup unused locales

* Temporarily disable test that checked about/features-overview page

* Fix business/universities links in customer stories

GitOrigin-RevId: 9d2ee64c2622ffea7a2c2f7448a5e5beae3187e9
2024-02-21 09:03:18 +00:00
Jessica Lawshe d5639794c2 Merge pull request #17166 from overleaf/ab-fix-group-settings-label
[web] Cleanup managed users env var and fix group settings label

GitOrigin-RevId: 817ed86a6c94c03adb41e8c10115d6404180142e
2024-02-20 09:05:54 +00:00
Alexandre Bourdin 42b5f91b9f Merge pull request #17153 from overleaf/ab-send-group-sso-invite-self
[web] Send the SSO linking invite when the group admin is adding self to the group

GitOrigin-RevId: f87ce6cfb006a0e353394e4102881e6220e5e6d9
2024-02-19 09:03:22 +00:00
Alexandre Bourdin 0ed6e0be17 Merge pull request #17088 from overleaf/ab-skip-deleting-group-sub-if-sso-enabled
[web] Skip deleting expired group subscription if group SSO is enabled

GitOrigin-RevId: 2e4f2105e9f024b6f421d8e50dffa3367ee68964
2024-02-19 09:03:15 +00:00
Davinder Singh c1f8647339 tearing down split test (#17000)
GitOrigin-RevId: cdcca8635a81c697e9f91f31fb711ee420cc6f7d
2024-02-14 09:04:43 +00:00
David 32d2603adb Merge pull request #16731 from overleaf/dp-ip-rate-metrics
Add tracking of rate limit method to metrics

GitOrigin-RevId: 3996c2a0ccb747018571ce402120be46fc52eace
2024-02-13 09:04:09 +00:00
Jakob Ackermann 8523c21158 Merge pull request #16948 from overleaf/jpa-rails-sharelatex-rebranding-step-2
[web] migrate v1 api calls away from ShareLaTeX branded endpoints

GitOrigin-RevId: af08ee029d0cee8f0f171d21b4f2b0b76222b3f8
2024-02-13 09:03:35 +00:00
Jessica Lawshe 03aaee84a3 Merge pull request #16945 from overleaf/ab-fix-sso-managed-users-enrollment
[web] Fix managed users enrollment clearing out SSO linking status

GitOrigin-RevId: b2083b48df1782c426794f16e2cdd767b217256c
2024-02-09 09:06:03 +00:00
David 8bd917242b Merge pull request #16744 from overleaf/dp-mongoose-callback-user-feature-updater
Convert UserFeaturesUpdater and UserFeaturesUpdaterTests to async/await

GitOrigin-RevId: 65cbb57d463dd9557e7e8e7643a1be160f17eebc
2024-02-06 09:03:13 +00:00
Brian Gough f9db088d57 Merge pull request #16835 from overleaf/bg-google-spam-temporarily-disable-emails
Temporarily disable onboarding emails

GitOrigin-RevId: a1967bc793fcd7b3b90f812fb8c9b9d83f704093
2024-02-01 09:03:30 +00:00
M Fahru f0247a3311 Merge pull request #15302 from overleaf/mf-fix-unlink-github-sync-behaviour
[web] Unlink github from collaborators when project owner unsubcribes and github feature was lost

GitOrigin-RevId: 81b81cfb75e3a3684e185ef13d8c0aca19d5699d
2024-01-30 09:04:39 +00:00