[web] Disable the Cloudflare upload proxy when connecting to a custom endpoint

This simplifies use cases like
https://github.com/ente-io/ente/discussions/685#discussioncomment-8682588. There
is one less thing for folks to do if they want to run locally or self-host.

Starting a local museum, then connecting to it from the web app

    NEXT_PUBLIC_ENTE_ENDPOINT=http://localhost:8080 yarn dev

And uploading a photo.
This commit is contained in:
Manav Rathi 2024-03-06 09:51:19 +05:30
parent 3a0dc05e3d
commit b4ac991986
3 changed files with 20 additions and 16 deletions

View file

@ -10,7 +10,7 @@
# #
# Alternatively, these variables can be provided as environment variables, say: # Alternatively, these variables can be provided as environment variables, say:
# #
# NEXT_PUBLIC_ENTE_ENDPOINT=http://localhost:8080 NEXT_PUBLIC_ENTE_DIRECT_UPLOAD=true yarn dev:photos # NEXT_PUBLIC_ENTE_ENDPOINT=http://localhost:8080 yarn dev:photos
# #
# Variables prefixed with NEXT_PUBLIC_ are made available when Next.js runs our # Variables prefixed with NEXT_PUBLIC_ are made available when Next.js runs our
# code in the browser (Behind the scenes, Next.js just hardcodes occurrences of # code in the browser (Behind the scenes, Next.js just hardcodes occurrences of
@ -69,17 +69,6 @@
# #
# NEXT_PUBLIC_ENTE_FAMILY_PORTAL_ENDPOINT = http://localhost:3003 # NEXT_PUBLIC_ENTE_FAMILY_PORTAL_ENDPOINT = http://localhost:3003
# Set this to "true" to disable the upload of files via Cloudflare Workers.
#
# These workers were introduced as a way of make file uploads faster:
# https://ente.io/blog/tech/making-uploads-faster/
#
# By default, that's the route we take. However, during development it can be
# convenient to turn this flag on to directly upload to the S3-compatible URLs
# returned by the ente API.
#
# NEXT_PUBLIC_ENTE_DIRECT_UPLOAD = true
# The path of the JSON file which contains the expected results of our # The path of the JSON file which contains the expected results of our
# integration tests. See `upload.test.ts` for more details. # integration tests. See `upload.test.ts` for more details.
# #

View file

@ -7,15 +7,14 @@
# #
# Equivalent CLI command using environment variables would be # Equivalent CLI command using environment variables would be
# #
# NEXT_PUBLIC_ENTE_ENDPOINT=http://localhost:8080 NEXT_PUBLIC_ENTE_DIRECT_UPLOAD=true yarn dev:photos # NEXT_PUBLIC_ENTE_ENDPOINT=http://localhost:8080 yarn dev:photos
# #
NEXT_PUBLIC_ENTE_ENDPOINT = http://localhost:8080 NEXT_PUBLIC_ENTE_ENDPOINT = http://localhost:8080
NEXT_PUBLIC_ENTE_DIRECT_UPLOAD = true
# If you wish to preview how the shared albums work, you can use `yarn # If you wish to preview how the shared albums work, you can use `yarn
# dev:albums`. The equivalent CLI command using env vars would be # dev:albums`. The equivalent CLI command using env vars would be
# #
# NEXT_PUBLIC_ENTE_ENDPOINT=http://localhost:8080 NEXT_PUBLIC_ENTE_ALBUMS_ENDPOINT=http://localhost:3002 NEXT_PUBLIC_ENTE_DIRECT_UPLOAD=true yarn dev:albums # NEXT_PUBLIC_ENTE_ENDPOINT=http://localhost:8080 NEXT_PUBLIC_ENTE_ALBUMS_ENDPOINT=http://localhost:3002 yarn dev:albums
NEXT_PUBLIC_ENTE_ALBUMS_ENDPOINT = http://localhost:3002 NEXT_PUBLIC_ENTE_ALBUMS_ENDPOINT = http://localhost:3002

View file

@ -338,8 +338,24 @@ export const updateMapEnabledStatus = async (newStatus: boolean) => {
} }
}; };
/**
* Return true to disable the upload of files via Cloudflare Workers.
*
* These workers were introduced as a way of make file uploads faster:
* https://ente.io/blog/tech/making-uploads-faster/
*
* By default, that's the route we take. However, during development or when
* self-hosting it can be convenient to turn this flag on to directly upload to
* the S3-compatible URLs returned by the ente API.
*
* Note the double negative (Enhancement: maybe remove the double negative,
* rename this to say getUseDirectUpload).
*/
export async function getDisableCFUploadProxyFlag(): Promise<boolean> { export async function getDisableCFUploadProxyFlag(): Promise<boolean> {
if (process.env.NEXT_PUBLIC_ENTE_DIRECT_UPLOAD === "true") return true; // If NEXT_PUBLIC_ENTE_ENDPOINT is set, that means we're not running a
// production deployment. Disable the Cloudflare upload proxy, and instead
// just directly use the upload URLs that museum gives us.
if (process.env.NEXT_PUBLIC_ENTE_ENDPOINT) return true;
try { try {
const featureFlags = ( const featureFlags = (