alpha
Login
or
Join now
nandi.uk
/
semble
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
This repository has no description
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
hide connections behind feature flag
author
Wesley Finck
date
4 months ago
(Mar 1, 2026, 8:31 PM -0800)
commit
dd08bcf9
dd08bcf934fa4df5dd0578e3df42e46ba49fd9fb
parent
ba613790
ba613790716149a753460deab62326692865000a
+23
-9
4 changed files
Expand all
Collapse all
Unified
Split
src
webapp
features
profile
components
profileTabs
ProfileTabs.tsx
semble
components
sembleTabs
SembleTabs.tsx
lib
clientFeatureFlags.ts
serverFeatureFlags.ts
+7
-3
src/webapp/features/profile/components/profileTabs/ProfileTabs.tsx
View file
Reviewed
···
3
3
import { Group, Paper, ScrollAreaAutosize, Tabs } from '@mantine/core';
4
4
import TabItem from './TabItem';
5
5
import { usePathname } from 'next/navigation';
6
6
+
import { useFeatureFlags } from '@/lib/clientFeatureFlags';
6
7
7
8
interface Props {
8
9
handle: string;
···
13
14
const segment = pathname.split('/')[3];
14
15
const currentTab = segment || 'profile'; // treat base route as 'profile'
15
16
const basePath = `/profile/${props.handle}`;
17
17
+
const { data: featureFlags } = useFeatureFlags();
16
18
17
19
return (
18
20
<Tabs value={currentTab}>
···
29
31
<TabItem value="collections" href={`${basePath}/collections`}>
30
32
Collections
31
33
</TabItem>
32
32
-
<TabItem value="connections" href={`${basePath}/connections`}>
33
33
-
Connections
34
34
-
</TabItem>
34
34
+
{featureFlags?.connections && (
35
35
+
<TabItem value="connections" href={`${basePath}/connections`}>
36
36
+
Connections
37
37
+
</TabItem>
38
38
+
)}
35
39
<TabItem value="network" href={`${basePath}/network`}>
36
40
Network
37
41
</TabItem>
+12
-6
src/webapp/features/semble/components/sembleTabs/SembleTabs.tsx
View file
Reviewed
···
10
10
TabsPanel,
11
11
} from '@mantine/core';
12
12
import TabItem from './TabItem';
13
13
+
import { useFeatureFlags } from '@/lib/clientFeatureFlags';
13
14
14
15
import SembleNotesContainer from '../../containers/sembleNotesContainer/SembleNotesContainer';
15
16
import SembleNotesContainerSkeleton from '../../containers/sembleNotesContainer/Skeleton.SembleNotesContainer';
···
36
37
37
38
export default function SembleTabs(props: Props) {
38
39
const [activeTab, setActiveTab] = useState<TabValue>('similar');
40
40
+
const { data: featureFlags } = useFeatureFlags();
39
41
40
42
return (
41
43
<Tabs
···
47
49
<TabsList>
48
50
<Group wrap="nowrap">
49
51
<TabItem value="similar">Similar cards</TabItem>
50
50
-
<TabItem value="connections">Connections</TabItem>
52
52
+
{featureFlags?.connections && (
53
53
+
<TabItem value="connections">Connections</TabItem>
54
54
+
)}
51
55
<TabItem value="notes">Notes</TabItem>
52
56
<TabItem value="collections">Collections</TabItem>
53
57
<TabItem value="addedBy">Added by</TabItem>
···
81
85
</Suspense>
82
86
</TabsPanel>
83
87
84
84
-
<TabsPanel value="connections">
85
85
-
<Suspense fallback={<SembleConnectionsContainerSkeleton />}>
86
86
-
<SembleConnectionsContainer url={props.url} />
87
87
-
</Suspense>
88
88
-
</TabsPanel>
88
88
+
{featureFlags?.connections && (
89
89
+
<TabsPanel value="connections">
90
90
+
<Suspense fallback={<SembleConnectionsContainerSkeleton />}>
91
91
+
<SembleConnectionsContainer url={props.url} />
92
92
+
</Suspense>
93
93
+
</TabsPanel>
94
94
+
)}
89
95
90
96
<TabsPanel value="mentions">
91
97
<Suspense fallback={<SembleMentionsContainerSkeleton />}>
+1
src/webapp/lib/clientFeatureFlags.ts
View file
Reviewed
···
9
9
animatedLandingTitle: boolean;
10
10
openCollections: boolean;
11
11
following: boolean;
12
12
+
connections: boolean;
12
13
}
13
14
14
15
async function fetchFeatureFlags(): Promise<FeatureFlags> {
+3
src/webapp/lib/serverFeatureFlags.ts
View file
Reviewed
···
15
15
'atproto.science',
16
16
'chrisshank.com',
17
17
'jasmine-pyz.bsky.social',
18
18
+
'uppy-hacker.bsky.social',
19
19
+
'joelchan86.bsky.social',
18
20
]);
19
21
20
22
export async function getServerFeatureFlags() {
···
31
33
animatedLandingTitle: show,
32
34
openCollections: true,
33
35
following: true,
36
36
+
connections: show,
34
37
};
35
38
}