diff --git a/assets/icons/chainLink3_stroke2_corner0_rounded.svg b/assets/icons/chainLink3_stroke2_corner0_rounded.svg
deleted file mode 100644
index c1626cc61..000000000
--- a/assets/icons/chainLink3_stroke2_corner0_rounded.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M18.535 5.465a5.003 5.003 0 0 0-7.076 0l-.005.005-.752.742a1 1 0 1 1-1.404-1.424l.749-.74a7.003 7.003 0 0 1 9.904 9.905l-.002.003-.737.746a1 1 0 1 1-1.424-1.404l.747-.757a5.003 5.003 0 0 0 0-7.076ZM6.202 9.288a1 1 0 0 1 .01 1.414l-.747.757a5.003 5.003 0 1 0 7.076 7.076l.005-.005.752-.742a1 1 0 1 1 1.404 1.424l-.746.737-.003.002a7.003 7.003 0 0 1-9.904-9.904l.74-.75a1 1 0 0 1 1.413-.009Zm8.505.005a1 1 0 0 1 0 1.414l-4 4a1 1 0 0 1-1.414-1.414l4-4a1 1 0 0 1 1.414 0Z" clip-rule="evenodd"/></svg>
diff --git a/src/components/Link.tsx b/src/components/Link.tsx
index ef31ea0c5..a5203b252 100644
--- a/src/components/Link.tsx
+++ b/src/components/Link.tsx
@@ -223,7 +223,7 @@ export function Link({
{...web({
hrefAttrs: {
target: download ? undefined : isExternal ? 'blank' : undefined,
- rel: isExternal ? 'noopener' : undefined,
+ rel: isExternal ? 'noopener noreferrer' : undefined,
download,
},
dataSet: {
@@ -307,7 +307,7 @@ export function InlineLinkText({
{...web({
hrefAttrs: {
target: download ? undefined : isExternal ? 'blank' : undefined,
- rel: isExternal ? 'noopener' : undefined,
+ rel: isExternal ? 'noopener noreferrer' : undefined,
download,
},
dataSet: {
diff --git a/src/components/icons/ChainLink.tsx b/src/components/icons/ChainLink.tsx
deleted file mode 100644
index ba0b417a9..000000000
--- a/src/components/icons/ChainLink.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import {createSinglePathSVG} from './TEMPLATE'
-
-export const ChainLink3_Stroke2_Corner0_Rounded = createSinglePathSVG({
- path: 'M18.535 5.465a5.003 5.003 0 0 0-7.076 0l-.005.005-.752.742a1 1 0 1 1-1.404-1.424l.749-.74a7.003 7.003 0 0 1 9.904 9.905l-.002.003-.737.746a1 1 0 1 1-1.424-1.404l.747-.757a5.003 5.003 0 0 0 0-7.076ZM6.202 9.288a1 1 0 0 1 .01 1.414l-.747.757a5.003 5.003 0 1 0 7.076 7.076l.005-.005.752-.742a1 1 0 1 1 1.404 1.424l-.746.737-.003.002a7.003 7.003 0 0 1-9.904-9.904l.74-.75a1 1 0 0 1 1.413-.009Zm8.505.005a1 1 0 0 1 0 1.414l-4 4a1 1 0 0 1-1.414-1.414l4-4a1 1 0 0 1 1.414 0Z',
-})
diff --git a/src/lib/hooks/useOpenLink.ts b/src/lib/hooks/useOpenLink.ts
index 727821670..5b75695b8 100644
--- a/src/lib/hooks/useOpenLink.ts
+++ b/src/lib/hooks/useOpenLink.ts
@@ -4,14 +4,12 @@ import * as WebBrowser from 'expo-web-browser'
import {
createBskyAppAbsoluteUrl,
- isBskyAppUrl,
isBskyRSSUrl,
isRelativeUrl,
} from '#/lib/strings/url-helpers'
import {isNative} from '#/platform/detection'
import {useModalControls} from '#/state/modals'
import {useInAppBrowser} from '#/state/preferences/in-app-browser'
-import {useOptOutOfUtm} from '#/state/preferences/opt-out-of-utm'
import {useTheme} from '#/alf'
import {useSheetWrapper} from '#/components/Dialog/sheet-wrapper'
@@ -20,7 +18,6 @@ export function useOpenLink() {
const enabled = useInAppBrowser()
const t = useTheme()
const sheetWrapper = useSheetWrapper()
- const optOutOfUtm = useOptOutOfUtm()
const openLink = useCallback(
async (url: string, override?: boolean) => {
@@ -29,9 +26,6 @@ export function useOpenLink() {
}
if (isNative && !url.startsWith('mailto:')) {
- if (!optOutOfUtm && !isBskyAppUrl(url) && url.startsWith('http')) {
- url = addUtmSource(url)
- }
if (override === undefined && enabled === undefined) {
openModal({
name: 'in-app-browser-consent',
@@ -53,24 +47,8 @@ export function useOpenLink() {
}
Linking.openURL(url)
},
- [enabled, openModal, t, sheetWrapper, optOutOfUtm],
+ [enabled, openModal, t, sheetWrapper],
)
return openLink
}
-
-function addUtmSource(url: string): string {
- let parsedUrl
- try {
- parsedUrl = new URL(url)
- } catch (e) {
- return url
- }
- if (!parsedUrl.searchParams.has('utm_source')) {
- parsedUrl.searchParams.set('utm_source', 'bluesky')
- if (!parsedUrl.searchParams.has('utm_medium')) {
- parsedUrl.searchParams.set('utm_medium', 'social')
- }
- }
- return parsedUrl.toString()
-}
diff --git a/src/screens/Settings/ContentAndMediaSettings.tsx b/src/screens/Settings/ContentAndMediaSettings.tsx
index 27448ba9a..b3fb8c174 100644
--- a/src/screens/Settings/ContentAndMediaSettings.tsx
+++ b/src/screens/Settings/ContentAndMediaSettings.tsx
@@ -9,16 +9,9 @@ import {
useInAppBrowser,
useSetInAppBrowser,
} from '#/state/preferences/in-app-browser'
-import {
- useOptOutOfUtm,
- useSetOptOutOfUtm,
-} from '#/state/preferences/opt-out-of-utm'
import * as SettingsList from '#/screens/Settings/components/SettingsList'
-import {atoms as a} from '#/alf'
-import {Admonition} from '#/components/Admonition'
import * as Toggle from '#/components/forms/Toggle'
import {Bubbles_Stroke2_Corner2_Rounded as BubblesIcon} from '#/components/icons/Bubble'
-import {ChainLink3_Stroke2_Corner0_Rounded as ChainLinkIcon} from '#/components/icons/ChainLink'
import {Hashtag_Stroke2_Corner0_Rounded as HashtagIcon} from '#/components/icons/Hashtag'
import {Home_Stroke2_Corner2_Rounded as HomeIcon} from '#/components/icons/Home'
import {Macintosh_Stroke2_Corner2_Rounded as MacintoshIcon} from '#/components/icons/Macintosh'
@@ -36,8 +29,6 @@ export function ContentAndMediaSettingsScreen({}: Props) {
const setAutoplayDisabledPref = useSetAutoplayDisabled()
const inAppBrowserPref = useInAppBrowser()
const setUseInAppBrowser = useSetInAppBrowser()
- const optOutOfUtm = useOptOutOfUtm()
- const setOptOutOfUtm = useSetOptOutOfUtm()
return (
<Layout.Screen>
@@ -77,19 +68,6 @@ export function ContentAndMediaSettingsScreen({}: Props) {
</SettingsList.ItemText>
</SettingsList.LinkItem>
<SettingsList.Divider />
- <Toggle.Item
- name="disable_autoplay"
- label={_(msg`Autoplay videos and GIFs`)}
- value={!autoplayDisabledPref}
- onChange={value => setAutoplayDisabledPref(!value)}>
- <SettingsList.Item>
- <SettingsList.ItemIcon icon={PlayIcon} />
- <SettingsList.ItemText>
- <Trans>Autoplay videos and GIFs</Trans>
- </SettingsList.ItemText>
- <Toggle.Platform />
- </SettingsList.Item>
- </Toggle.Item>
{isNative && (
<Toggle.Item
name="use_in_app_browser"
@@ -105,31 +83,19 @@ export function ContentAndMediaSettingsScreen({}: Props) {
</SettingsList.Item>
</Toggle.Item>
)}
- {isNative && <SettingsList.Divider />}
- {isNative && (
- <Toggle.Item
- name="allow_utm"
- label={_(msg`Specify Bluesky as a referer`)}
- value={!(optOutOfUtm ?? false)}
- onChange={value => setOptOutOfUtm(!value)}>
- <SettingsList.Item>
- <SettingsList.ItemIcon icon={ChainLinkIcon} />
- <SettingsList.ItemText>
- <Trans>Send Bluesky referrer</Trans>
- </SettingsList.ItemText>
- <Toggle.Platform />
- </SettingsList.Item>
- </Toggle.Item>
- )}
- {isNative && (
+ <Toggle.Item
+ name="disable_autoplay"
+ label={_(msg`Autoplay videos and GIFs`)}
+ value={!autoplayDisabledPref}
+ onChange={value => setAutoplayDisabledPref(!value)}>
<SettingsList.Item>
- <Admonition type="info" style={[a.flex_1]}>
- <Trans>
- Helps external sites estimate traffic from Bluesky.
- </Trans>
- </Admonition>
+ <SettingsList.ItemIcon icon={PlayIcon} />
+ <SettingsList.ItemText>
+ <Trans>Autoplay videos and GIFs</Trans>
+ </SettingsList.ItemText>
+ <Toggle.Platform />
</SettingsList.Item>
- )}
+ </Toggle.Item>
</SettingsList.Container>
</Layout.Content>
</Layout.Screen>
diff --git a/src/state/persisted/schema.ts b/src/state/persisted/schema.ts
index 85a6bf8e2..804017949 100644
--- a/src/state/persisted/schema.ts
+++ b/src/state/persisted/schema.ts
@@ -124,7 +124,6 @@ const schema = z.object({
subtitlesEnabled: z.boolean().optional(),
/** @deprecated */
mutedThreads: z.array(z.string()),
- optOutOfUtm: z.boolean().optional(),
})
export type Schema = z.infer<typeof schema>
@@ -170,7 +169,6 @@ export const defaults: Schema = {
kawaii: false,
hasCheckedForStarterPack: false,
subtitlesEnabled: true,
- optOutOfUtm: false,
}
export function tryParse(rawData: string): Schema | undefined {
diff --git a/src/state/preferences/index.tsx b/src/state/preferences/index.tsx
index 43a08926e..c7eaf2726 100644
--- a/src/state/preferences/index.tsx
+++ b/src/state/preferences/index.tsx
@@ -9,7 +9,6 @@ import {Provider as InAppBrowserProvider} from './in-app-browser'
import {Provider as KawaiiProvider} from './kawaii'
import {Provider as LanguagesProvider} from './languages'
import {Provider as LargeAltBadgeProvider} from './large-alt-badge'
-import {Provider as OutOutOfUtmProvider} from './opt-out-of-utm'
import {Provider as SubtitlesProvider} from './subtitles'
import {Provider as UsedStarterPacksProvider} from './used-starter-packs'
@@ -40,9 +39,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
<AutoplayProvider>
<UsedStarterPacksProvider>
<SubtitlesProvider>
- <OutOutOfUtmProvider>
- <KawaiiProvider>{children}</KawaiiProvider>
- </OutOutOfUtmProvider>
+ <KawaiiProvider>{children}</KawaiiProvider>
</SubtitlesProvider>
</UsedStarterPacksProvider>
</AutoplayProvider>
diff --git a/src/state/preferences/opt-out-of-utm.tsx b/src/state/preferences/opt-out-of-utm.tsx
deleted file mode 100644
index 40144c8db..000000000
--- a/src/state/preferences/opt-out-of-utm.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import React from 'react'
-
-import * as persisted from '#/state/persisted'
-
-type StateContext = boolean
-type SetContext = (v: boolean) => void
-
-const stateContext = React.createContext<StateContext>(
- Boolean(persisted.defaults.optOutOfUtm),
-)
-const setContext = React.createContext<SetContext>((_: boolean) => {})
-
-export function Provider({children}: {children: React.ReactNode}) {
- const [state, setState] = React.useState(
- Boolean(persisted.get('optOutOfUtm')),
- )
-
- const setStateWrapped = React.useCallback(
- (optOutOfUtm: persisted.Schema['optOutOfUtm']) => {
- setState(Boolean(optOutOfUtm))
- persisted.write('optOutOfUtm', optOutOfUtm)
- },
- [setState],
- )
-
- React.useEffect(() => {
- return persisted.onUpdate('optOutOfUtm', nextOptOutOfUtm => {
- setState(Boolean(nextOptOutOfUtm))
- })
- }, [setStateWrapped])
-
- return (
- <stateContext.Provider value={state}>
- <setContext.Provider value={setStateWrapped}>
- {children}
- </setContext.Provider>
- </stateContext.Provider>
- )
-}
-
-export const useOptOutOfUtm = () => React.useContext(stateContext)
-export const useSetOptOutOfUtm = () => React.useContext(setContext)
diff --git a/src/view/com/util/Link.tsx b/src/view/com/util/Link.tsx
index f83258e45..489fbc59c 100644
--- a/src/view/com/util/Link.tsx
+++ b/src/view/com/util/Link.tsx
@@ -256,7 +256,7 @@ export const TextLink = memo(function TextLink({
if (isExternal) {
return {
target: '_blank',
- // rel: 'noopener',
+ // rel: 'noopener noreferrer',
}
}
return {}
|