diff --git a/src/alf/atoms.ts b/src/alf/atoms.ts
index f75e8ffe0b..6969803bd6 100644
--- a/src/alf/atoms.ts
+++ b/src/alf/atoms.ts
@@ -216,6 +216,9 @@ export const atoms = {
font_normal: {
fontWeight: tokens.fontWeight.normal,
},
+ font_semibold: {
+ fontWeight: '500',
+ },
font_bold: {
fontWeight: tokens.fontWeight.semibold,
},
diff --git a/src/components/ModerationServiceCard/Card.tsx b/src/components/ModerationServiceCard/Card.tsx
index a30c8c065e..b53447331c 100644
--- a/src/components/ModerationServiceCard/Card.tsx
+++ b/src/components/ModerationServiceCard/Card.tsx
@@ -78,7 +78,7 @@ export function Content({
) : (
- Moderation service managed by @{sanitizeHandle(handle, '@')}
+ Moderation service managed by {sanitizeHandle(handle, '@')}
)}
diff --git a/src/components/ModerationServiceCard/index.tsx b/src/components/ModerationServiceCard/index.tsx
index 3806064980..0f1ba8aa9e 100644
--- a/src/components/ModerationServiceCard/index.tsx
+++ b/src/components/ModerationServiceCard/index.tsx
@@ -23,7 +23,7 @@ export function Link({
return (
{
+ try {
+ await setAdultContentPref({
+ enabled: selected,
+ })
+ } catch (e) {
+ // TODO
+ console.error(e)
+ }
+ },
+ [setAdultContentPref],
+ )
+
return (
@@ -275,6 +297,110 @@ export function ModerationScreenInner({
+
+ Content filters
+
+
+
+
+ Enable adult content
+
+
+
+
+ {adultContentEnabled ? (
+ Enabled
+ ) : (
+ Disabled
+ )}
+
+
+
+
+
+ {adultContentEnabled && (
+ <>
+
+ g.id === 'porn')!.id}
+ labelers={[]}
+ preferences={preferences}
+ openModSettingsDialog={openModSettingsDialog}
+ />
+
+ g.id === 'suggestive')!.id}
+ labelers={[]}
+ preferences={preferences}
+ openModSettingsDialog={openModSettingsDialog}
+ />
+
+ g.id === 'nudity')!.id}
+ labelers={[]}
+ preferences={preferences}
+ openModSettingsDialog={openModSettingsDialog}
+ />
+
+ g.id === 'violence')!.id}
+ labelers={[]}
+ preferences={preferences}
+ openModSettingsDialog={openModSettingsDialog}
+ />
+ >
+ )}
+
+
+
+
+ Hide posts by bots
+
+
+ Bots are automated users which follow the rules.
+
+
+
+
+
+ {false ? Enabled : Disabled}
+
+
+
+
+
+
+
- Labelers
+ Advanced
-
-
+
+
+
+
+
+
+
+
{modservices.map(mod => {
return (
+ {
+ undefined /*
+ Bluesky Safety{' '}
+
+ @safety.bsky.app
+
+
+
+ g.id === 'intolerance')!.id}
+ labelers={[]}
+ preferences={preferences}
+ openModSettingsDialog={openModSettingsDialog}
+ />
+
+ g.id === 'misrepresentation')!.id}
+ labelers={[]}
+ preferences={preferences}
+ openModSettingsDialog={openModSettingsDialog}
+ />
+
+ g.id === 'security')!.id}
+ labelers={[]}
+ preferences={preferences}
+ openModSettingsDialog={openModSettingsDialog}
+ />
+
+ g.id === 'spam')!.id}
+ labelers={[]}
+ preferences={preferences}
+ openModSettingsDialog={openModSettingsDialog}
+ />
+
+
+ {modservices.map(mod => {
+ return (
+ <>
+
+ {mod.creator.displayName}{' '}
+
+ @{mod.creator.handle}
+
+
+
+ {mod.policies.labelValues
+ .filter(label => !label.startsWith('!'))
+ .map((label, i) => {
+ return (
+
+ {i !== 0 && }
+
+
+ )
+ })}
+
+ >
+ )
+ })}
+
+
+ Other
+
+
+ g.id === 'bot')!.id}
+ labelers={[]}
+ preferences={preferences}
+ openModSettingsDialog={openModSettingsDialog}
+ />
+
+
)
})}
-
+ */
+ }
+
-
+
{name}
{description}
@@ -431,15 +701,17 @@ function LabelGroup({
)}
values={[value]}
onChange={onChangeVisibility}>
-
- {labelOptions.hide}
-
{labelOptions.warn}
-
- {labelOptions.show}
+
+ {labelOptions.hide}
+ {
+ undefined /*
+ {labelOptions.show}
+ */
+ }
diff --git a/src/screens/Profile/Sections/ContentFilters.tsx b/src/screens/Profile/Sections/ContentFilters.tsx
index 67a3bd1b68..68b1574fbc 100644
--- a/src/screens/Profile/Sections/ContentFilters.tsx
+++ b/src/screens/Profile/Sections/ContentFilters.tsx
@@ -161,7 +161,7 @@ export function ProfileContentFiltersSectionInner({
borderWidth: 0,
paddingHorizontal: a.px_xl.paddingLeft,
}}>
- {isSubscribed ? (
+ {false /* TODO wanted? isSubscribed*/ ? (
@@ -185,7 +185,7 @@ export function ProfileContentFiltersSectionInner({
) : (
- This labeler moderates the following types of content.
+ This service labels the following types of content.
)}
diff --git a/src/screens/ProfileModerationService/PreferenceRow.tsx b/src/screens/ProfileModerationService/PreferenceRow.tsx
index dba8f0000e..9cde55db95 100644
--- a/src/screens/ProfileModerationService/PreferenceRow.tsx
+++ b/src/screens/ProfileModerationService/PreferenceRow.tsx
@@ -12,7 +12,7 @@ import {logger} from '#/logger'
import {useTheme, atoms as a} from '#/alf'
import {Text} from '#/components/Typography'
-import * as Toggle from '#/components/forms/Toggle'
+import * as ToggleButton from '#/components/forms/ToggleButton'
export function PreferenceRow({
labelGroup,
@@ -50,6 +50,12 @@ export function PreferenceRow({
}
}, [mutateAsync, enabled, modservicePreferences, labelGroup])
+ const labelOptions = {
+ hide: _(msg`Hide`),
+ warn: _(msg`Warn`),
+ show: _(msg`Ignore`),
+ }
+
return (
{modservicePreferences && (
-
- {enabled ? 'Enabled' : 'Disabled'}
-
-
+ {}}>
+
+ {labelOptions.show}
+
+
+ {labelOptions.warn}
+
+
+ {labelOptions.hide}
+
+
)}
diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx
index 5c13162930..90684d655c 100644
--- a/src/view/screens/Profile.tsx
+++ b/src/view/screens/Profile.tsx
@@ -490,7 +490,7 @@ function ProfileScreenLoadedV2({
const sectionTitles = useMemo(() => {
return [
- showFiltersTab ? _(msg`Content Filters`) : undefined,
+ showFiltersTab ? _(msg`Content filters`) : undefined,
showPostsTab ? _(msg`Posts`) : undefined,
showRepliesTab ? _(msg`Replies`) : undefined,
showMediaTab ? _(msg`Media`) : undefined,