* Replace request by fetch
* Promisify NotificationsHandler.js
* Replace to `fetchNothing` when we don't consume the body.
I also checked that these endpoints don't return anything: de2d0ed8ca/services/notifications/app.js
* Make URLs safer
* Ignore (but log) failing `fetchNothing`s on DELETE endpoints
* Defensively add `userId.toString()` to prevent bugs (!)
* Update NotificationsHandler unit tests
* Throw fetch errors only if we did not get a response
GitOrigin-RevId: 03700ad29658c0e3af4e476b25a964030e9c97f1
* Replace request by fetch
* Promisify `dropboxDuplicateProjectNames`
* Promisify `dropboxUnlinkedDueToLapsedReconfirmation`
* Promisify `featuresUpgradedByAffiliation`
* Promisify `redundantPersonalSubscription`
* Promisify `projectInvite`
* Promisify `ipMatcherAffiliation`
* Promisify `tpdsFileLimit`
* Promisify `groupInvitation`
* Promisify `personalAndGroupSubscriptions`
* Sanitize URL
* Add default fetch timeout
* Update tests
* Update tests with fetch-utils
* Update external usage
* Import `ObjectId` from `mongodb-legacy`
Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>
* Add `toString()` to userId in `ipMatcherAffiliation` calls
* [v1] Return "200 null" instead of no content in `v2/api/v2/users/:userId/ip_matcher` when there is no data, so it can be read as JSON in the frontend
Can't be 204 because of lint: "Do not specify body content for a response with a non-content status code"
* Temporarily remove `enrolment_ad_html` test to test notifications
* Revert "Temporarily remove `enrolment_ad_html` test to test notifications"
This reverts commit fb8b0c26a3adbbc64053cd3f5f2570ccc97328fb.
* Use `return await`
Co-authored-by: Andrew Rumble <andrew.rumble@overleaf.com>
---------
Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>
Co-authored-by: Andrew Rumble <andrew.rumble@overleaf.com>
GitOrigin-RevId: 17ee861852aa4ac15d3b46b1b28c763fad5333d2
Show dashboard notification to registered users after being invited to join a group subscription
GitOrigin-RevId: ad03dfea95f0d5d1a38780adc3e9d618eae0a48d