From 1a12fa57754e32f7d5c3887e7fa35fcfd92bac39 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Tue, 13 Jun 2023 13:10:42 -0500 Subject: Add temporary appview-proxy header toggle (#874) --- src/lib/api/debug-appview-proxy-header.ts | 57 +++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/lib/api/debug-appview-proxy-header.ts (limited to 'src/lib/api/debug-appview-proxy-header.ts') diff --git a/src/lib/api/debug-appview-proxy-header.ts b/src/lib/api/debug-appview-proxy-header.ts new file mode 100644 index 000000000..d84f65cc1 --- /dev/null +++ b/src/lib/api/debug-appview-proxy-header.ts @@ -0,0 +1,57 @@ +/** + * APP-700 + * + * This is a temporary debug setting we're running on the Web build to + * help the protocol team test some changes. + * + * It should be removed in ~2 weeks. It should only be used on the Web + * version of the app. + */ + +import {useState, useCallback} from 'react' +import {BskyAgent} from '@atproto/api' +import {isWeb} from 'platform/detection' + +export function useDebugHeaderSetting(agent: BskyAgent): [boolean, () => void] { + const [enabled, setEnabled] = useState(isEnabled()) + + const toggle = useCallback(() => { + if (!enabled) { + localStorage.setItem('set-header-x-appview-proxy', 'yes') + agent.api.xrpc.setHeader('x-appview-proxy', 'true') + setEnabled(true) + } else { + localStorage.removeItem('set-header-x-appview-proxy') + agent.api.xrpc.unsetHeader('x-appview-proxy') + setEnabled(false) + } + }, [setEnabled, enabled, agent]) + + return [enabled, toggle] +} + +export function setDebugHeader(agent: BskyAgent, enabled: boolean) { + if (!isWeb) { + return + } + if (enabled) { + localStorage.setItem('set-header-x-appview-proxy', 'yes') + agent.api.xrpc.setHeader('x-appview-proxy', 'true') + } else { + localStorage.removeItem('set-header-x-appview-proxy') + agent.api.xrpc.unsetHeader('x-appview-proxy') + } +} + +export function applyDebugHeader(agent: BskyAgent) { + if (!isWeb) { + return + } + if (isEnabled()) { + agent.api.xrpc.setHeader('x-appview-proxy', 'true') + } +} + +function isEnabled() { + return localStorage.getItem('set-header-x-appview-proxy') === 'yes' +} -- cgit 1.4.1