-
-
Notifications
You must be signed in to change notification settings - Fork 34
All Feature's using Feature Flag Hook #324
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Conversation
@HYDRO2070 is attempting to deploy a commit to the thieflord06's projects Team on Vercel. A member of the Team first needs to authorize it. |
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the majority of these flags are associated with specific queries the app makes, but as coded here, a disabled flag does not prevent the app from making the query. this defeats the whole point of having the flags in the first place.
@@ -28,6 +29,8 @@ export function AccountHeader({ className, onInfoClick }) { | |||
const handleHistoryQuery = useHandleHistory(resolved.data?.shortDID); | |||
const handleHistory = handleHistoryQuery.data?.handle_history; | |||
|
|||
const userPlacement = useFeatureFlag('user-placement') | |||
|
|||
const placementquery = usePlacement(resolved.data?.shortDID); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the placement flag needs to conditionally disable this query rather than just hiding the ui it displays in
@@ -41,6 +42,8 @@ export function BlockPanelGeneric({ | |||
const blocklistPages = data?.pages || []; | |||
const blocklist = blocklistPages.flatMap((page) => page.blocklist); | |||
const count = totalData?.count; | |||
const pageName = (className == 'blocked-by-panel') ? 'blocked-by-count' : 'blocking-count'; | |||
const pageCount = useFeatureFlag(pageName) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
likewise, this needs to disable the queries, but those are made elsewhere and passed by props, so this hook needs to be called elsewhere too
@@ -30,6 +31,7 @@ export function BlockedByLists() { | |||
const listPages = data?.pages || []; | |||
const allLists = listPages.flatMap((page) => page.blocklist); | |||
const filteredLists = !search ? allLists : matchSearch(allLists, search, () => setTick(tick + 1)); | |||
const listsBlockedByCount = useFeatureFlag('lists-blocked-by-count') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same here as well. should be controlling whether a query is made
@@ -30,7 +31,7 @@ export function BlockingLists() { | |||
const listPages = data?.pages || []; | |||
const allLists = listPages.flatMap((page) => page.blocklist); | |||
const filteredLists = !search ? allLists : matchSearch(allLists, search, () => setTick(tick + 1)); | |||
|
|||
const listsBlockingCount = useFeatureFlag('lists-blocking-count') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
also here
@@ -96,6 +97,7 @@ export default function LabeledPanel() { | |||
const { data: labelers, isLoading: isLoadingLabelers } = useLabelers(); | |||
|
|||
const { data: labels, isLoading } = useLabeled(did, labelers); | |||
const labelsCount = useFeatureFlag('labels-count') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this this is one last api call that wasn't addressed in the last round of changes
src/detail-panels/lists/lists.jsx
Outdated
@@ -29,6 +30,7 @@ export function Lists() { | |||
const [tick, setTick] = useState(0); | |||
const search = (searchParams.get('q') || '').trim(); | |||
const [showSearch, setShowSearch] = useState(!!search); | |||
const listsOnListCounts = useFeatureFlag('lists-on-list-counts') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same here
src/detail-panels/packs/packed.jsx
Outdated
@@ -30,6 +31,7 @@ export default function Packed() { | |||
const search = (searchParams.get('q') || '').trim(); | |||
const [tick, setTick] = useState(0); | |||
const [showSearch, setShowSearch] = useState(!!search); | |||
const starterPacksInCount = useFeatureFlag('starter-packs-in-count'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
and again here
src/detail-panels/packs/packs.jsx
Outdated
@@ -30,6 +31,7 @@ export function Packs({ created = false }) { | |||
const [tick, setTick] = useState(0); | |||
const search = (searchParams.get('q') || '').trim(); | |||
const [showSearch, setShowSearch] = useState(!!search); | |||
const starterPacksMadeCount = useFeatureFlag('starter-packs-made-count'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
and here
@noahm Done with the changes here. Please review it. (Name of the Variable are a bit long. I did it for Understanding Purpose.) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks much better now. Very close to ready. There's one api call that got overlooked from last time, and two new places where you're now conditionally calling a hook. they should use the same pattern as the others where you can pass an enabled or skip parameter.
const userPlacement = useFeatureFlag('user-placement') | ||
|
||
// call only if userPlacement is true | ||
const placementquery = (userPlacement) ? usePlacement(resolved.data?.shortDID) : null; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you cannot conditionally call a hook. this breaks the rules of react hooks.
const ishandleHistory = useFeatureFlag('handle-history') | ||
|
||
// calls only if ishandleHistory is true | ||
const handleHistoryQuery = (ishandleHistory) ? useHandleHistory(account?.shortDID) : null; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is also breaking the rules of hooks
@@ -96,6 +97,7 @@ export default function LabeledPanel() { | |||
const { data: labelers, isLoading: isLoadingLabelers } = useLabelers(); | |||
|
|||
const { data: labels, isLoading } = useLabeled(did, labelers); | |||
const labelsCount = useFeatureFlag('labels-count') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this this is one last api call that wasn't addressed in the last round of changes
@noahm @thieflord06 Regarding the label count: the API is fetching all the labels, not just calling it for the count. If we were to stop that call, the labels wouldn't be fetched at all—which we don’t want. |
Signed-off-by: Shashank pandey <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You're totally right about the labels count, my apologies. (Seems like a completely pointless flag for us to have in that case) This looks good to go now!
From testing it looks like the counts aren't behaving correctly when not enabled. lists-blocking-count Labels-count is the only one I've been able to confirm is working as expected. |
@HYDRO2070 Any update on this? |
Done with the changes. Please check @thieflord06 @noahm |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Most components and API hooks now respect feature flags for conditional data fetching and UI rendering.
- Integrated
useFeatureFlag
in UI components to toggle stats, packs, lists, block panels, and account info features - Extended API hooks to accept feature-flag “enabled” parameters for conditional queries
- Removed legacy commented checks and streamlined conditional rendering
Reviewed Changes
Copilot reviewed 18 out of 19 changed files in this pull request and generated 2 comments.
Show a summary per file
File | Description |
---|---|
src/landing/home-stats/home-stats-main.jsx | Added feature flag for total-users-wheel |
src/detail-panels/packs/packs.jsx | Wrapped total count in useFeatureFlag guard |
src/detail-panels/packs/packed.jsx | Introduced flag to control packs-in-count queries |
src/detail-panels/lists/lists.jsx | Guarded list-count API and UI with feature flag |
src/detail-panels/lists/list-view.jsx | Passed spam overlay flag to ListViewEntry |
src/detail-panels/labeled/index.jsx | Wrapped labels-count header in feature-flag check |
src/detail-panels/blocking/index.jsx | Conditional blocking count fetch and header |
src/detail-panels/blocking-lists/blocking-lists-index.jsx | Feature-flag-guarded blocking-lists total |
src/detail-panels/blocked-by/index.jsx | Guarded single block-by count with feature flag |
src/detail-panels/blocked-by-lists/blocked-by-lists-index.jsx | Wrapped blocked-by-lists total in feature flag |
src/detail-panels/block-panel-generic/block-panel-generic.jsx | Minor whitespace changes |
src/detail-panels/account-header/account-header.jsx | Added flags for handle history and placement |
src/detail-panels/account-header/account-extra-info.jsx | Wrapped description and handle history in flags |
src/api/placement.js | Added shoulduserPlacement param to usePlacement |
src/api/packs.js | Hook signatures updated for starter-packs totals |
src/api/lists.js | Hook signature updated for list counts |
src/api/handle-history.js | Hook signature updated for handle history |
src/api/blocklist.js | Hook signatures updated for various blocklist totals |
Comments suppressed due to low confidence (3)
src/detail-panels/packs/packs.jsx:27
- [nitpick] The variable name
shouldFetchstarterPacksMadeCount
has inconsistent camelCase; considershouldFetchStarterPacksMadeCount
for readability.
const shouldFetchstarterPacksMadeCount = useFeatureFlag('starter-packs-made-count');
src/api/placement.js:12
- [nitpick] Parameter
shoulduserPlacement
should follow camelCase (shouldUserPlacement
) to align with conventions.
export function usePlacement(handleOrDID,shoulduserPlacement) {
src/detail-panels/packs/packed.jsx:27
- This assignment is split across two lines and will cause a syntax error. Combine into one statement, e.g.:
const shouldFetchStarterPacksInCount = useFeatureFlag('starter-packs-in-count');
const shouldFetchstarterPacksInCount =
@@ -25,11 +26,15 @@ export function AccountHeader({ className, onInfoClick }) { | |||
const [isCopied, setIsCopied] = useState(false); | |||
// const [handleHistoryExpanded, setHandleHistoryExpanded] = useState(false); | |||
const resolved = useAccountResolver(); | |||
const handleHistoryQuery = useHandleHistory(resolved.data?.shortDID); | |||
const handleHistoryQuery = useHandleHistory(resolved.data?.shortDID,true); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] This unconditionally fetches handle history. It would be better to gate it behind a feature flag (as in AccountExtraInfo
) instead of passing true
directly.
const handleHistoryQuery = useHandleHistory(resolved.data?.shortDID,true); | |
const shouldFetchHandleHistory = useFeatureFlag('handle-history'); | |
const handleHistoryQuery = useHandleHistory(resolved.data?.shortDID, shouldFetchHandleHistory); |
Copilot uses AI. Check for mistakes.
@@ -95,8 +96,11 @@ export default function LabeledPanel() { | |||
const did = accountQuery.data?.shortDID; | |||
const { data: labelers, isLoading: isLoadingLabelers } = useLabelers(); | |||
|
|||
// this hook will be called to featch all the label |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] Typo in comment: featch
should be fetch
.
// this hook will be called to featch all the label | |
// this hook will be called to fetch all the label |
Copilot uses AI. Check for mistakes.
No description provided.