Browse Source

fix(replays): include `project=-1` by default for /replay-count/ api calls (#48962)

Fixes https://github.com/getsentry/sentry/issues/48961
Ryan Albrecht 1 year ago
parent
commit
5398b750cc

+ 3 - 14
static/app/components/replays/issuesReplayCountProvider.tsx

@@ -1,9 +1,8 @@
-import {Fragment, ReactNode, useMemo} from 'react';
+import {Fragment, ReactNode} from 'react';
 
 
 import ReplayCountContext from 'sentry/components/replays/replayCountContext';
 import ReplayCountContext from 'sentry/components/replays/replayCountContext';
 import useReplaysCount from 'sentry/components/replays/useReplaysCount';
 import useReplaysCount from 'sentry/components/replays/useReplaysCount';
-import GroupStore from 'sentry/stores/groupStore';
-import type {Group, Organization} from 'sentry/types';
+import type {Organization} from 'sentry/types';
 import useOrganization from 'sentry/utils/useOrganization';
 import useOrganization from 'sentry/utils/useOrganization';
 
 
 type Props = {
 type Props = {
@@ -41,19 +40,9 @@ function Provider({
   groupIds,
   groupIds,
   organization,
   organization,
 }: Props & {organization: Organization}) {
 }: Props & {organization: Organization}) {
-  const [groups, projectIds] = useMemo(() => {
-    const pIds = new Set<number>();
-    const gIds = groupIds.map(id => GroupStore.get(id) as Group).filter(Boolean);
-
-    return [gIds, Array.from(pIds)];
-  }, [groupIds]);
-
-  const replayGroupIds = useMemo(() => groups.map(group => group.id), [groups]);
-
   const counts = useReplaysCount({
   const counts = useReplaysCount({
-    groupIds: replayGroupIds,
+    groupIds,
     organization,
     organization,
-    projectIds,
   });
   });
 
 
   return (
   return (

+ 0 - 3
static/app/components/replays/replayIdCountProvider.tsx

@@ -14,14 +14,11 @@ function unique<T>(arr: T[]) {
   return Array.from(new Set(arr));
   return Array.from(new Set(arr));
 }
 }
 
 
-const projectIds = [];
-
 function ReplayIdCountProvider({children, organization, replayIds}: Props) {
 function ReplayIdCountProvider({children, organization, replayIds}: Props) {
   const ids = useMemo(() => replayIds?.map(String)?.filter(Boolean) || [], [replayIds]);
   const ids = useMemo(() => replayIds?.map(String)?.filter(Boolean) || [], [replayIds]);
   const counts = useReplaysCount({
   const counts = useReplaysCount({
     replayIds: unique(ids),
     replayIds: unique(ids),
     organization,
     organization,
-    projectIds,
   });
   });
 
 
   return (
   return (

+ 6 - 24
static/app/components/replays/useReplaysCount.spec.tsx

@@ -26,16 +26,11 @@ describe('useReplaysCount', () => {
   const organization = TestStubs.Organization({
   const organization = TestStubs.Organization({
     features: ['session-replay'],
     features: ['session-replay'],
   });
   });
-  const project = TestStubs.Project({
-    platform: 'javascript',
-  });
-  const projectIds = [Number(project.id)];
 
 
   it('should throw if none of groupIds, replayIds, transactionNames is provided', () => {
   it('should throw if none of groupIds, replayIds, transactionNames is provided', () => {
     const {result} = reactHooks.renderHook(useReplaysCount, {
     const {result} = reactHooks.renderHook(useReplaysCount, {
       initialProps: {
       initialProps: {
         organization,
         organization,
-        projectIds,
       },
       },
     });
     });
     expect(result.error).toBeTruthy();
     expect(result.error).toBeTruthy();
@@ -45,7 +40,6 @@ describe('useReplaysCount', () => {
     const {result: result1} = reactHooks.renderHook(useReplaysCount, {
     const {result: result1} = reactHooks.renderHook(useReplaysCount, {
       initialProps: {
       initialProps: {
         organization,
         organization,
-        projectIds,
         groupIds: [],
         groupIds: [],
         transactionNames: [],
         transactionNames: [],
       },
       },
@@ -55,7 +49,6 @@ describe('useReplaysCount', () => {
     const {result: result2} = reactHooks.renderHook(useReplaysCount, {
     const {result: result2} = reactHooks.renderHook(useReplaysCount, {
       initialProps: {
       initialProps: {
         organization,
         organization,
-        projectIds,
         groupIds: [],
         groupIds: [],
         replayIds: [],
         replayIds: [],
       },
       },
@@ -65,7 +58,6 @@ describe('useReplaysCount', () => {
     const {result: result3} = reactHooks.renderHook(useReplaysCount, {
     const {result: result3} = reactHooks.renderHook(useReplaysCount, {
       initialProps: {
       initialProps: {
         organization,
         organization,
-        projectIds,
         replayIds: [],
         replayIds: [],
         transactionNames: [],
         transactionNames: [],
       },
       },
@@ -83,7 +75,6 @@ describe('useReplaysCount', () => {
     const {result, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
     const {result, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
       initialProps: {
       initialProps: {
         organization,
         organization,
-        projectIds,
         groupIds: mockGroupIds,
         groupIds: mockGroupIds,
       },
       },
     });
     });
@@ -95,7 +86,7 @@ describe('useReplaysCount', () => {
         query: {
         query: {
           query: `issue.id:[${mockGroupIds.join(',')}]`,
           query: `issue.id:[${mockGroupIds.join(',')}]`,
           statsPeriod: '14d',
           statsPeriod: '14d',
-          project: [2],
+          project: -1,
         },
         },
       })
       })
     );
     );
@@ -115,7 +106,6 @@ describe('useReplaysCount', () => {
     const {result, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
     const {result, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
       initialProps: {
       initialProps: {
         organization,
         organization,
-        projectIds,
         groupIds: mockGroupIds,
         groupIds: mockGroupIds,
       },
       },
     });
     });
@@ -141,7 +131,6 @@ describe('useReplaysCount', () => {
     const {result, rerender, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
     const {result, rerender, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
       initialProps: {
       initialProps: {
         organization,
         organization,
-        projectIds,
         groupIds: mockGroupIds,
         groupIds: mockGroupIds,
       },
       },
     });
     });
@@ -155,7 +144,7 @@ describe('useReplaysCount', () => {
         query: {
         query: {
           query: `issue.id:[123,456]`,
           query: `issue.id:[123,456]`,
           statsPeriod: '14d',
           statsPeriod: '14d',
-          project: [2],
+          project: -1,
         },
         },
       })
       })
     );
     );
@@ -166,7 +155,6 @@ describe('useReplaysCount', () => {
 
 
     rerender({
     rerender({
       organization,
       organization,
-      projectIds,
       groupIds: [...mockGroupIds, '789'],
       groupIds: [...mockGroupIds, '789'],
     });
     });
 
 
@@ -179,7 +167,7 @@ describe('useReplaysCount', () => {
         query: {
         query: {
           query: `issue.id:[789]`,
           query: `issue.id:[789]`,
           statsPeriod: '14d',
           statsPeriod: '14d',
-          project: [2],
+          project: -1,
         },
         },
       })
       })
     );
     );
@@ -200,7 +188,6 @@ describe('useReplaysCount', () => {
     const {result, rerender, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
     const {result, rerender, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
       initialProps: {
       initialProps: {
         organization,
         organization,
-        projectIds,
         groupIds: mockGroupIds,
         groupIds: mockGroupIds,
       },
       },
     });
     });
@@ -214,7 +201,7 @@ describe('useReplaysCount', () => {
         query: {
         query: {
           query: `issue.id:[123,456]`,
           query: `issue.id:[123,456]`,
           statsPeriod: '14d',
           statsPeriod: '14d',
-          project: [2],
+          project: -1,
         },
         },
       })
       })
     );
     );
@@ -225,7 +212,6 @@ describe('useReplaysCount', () => {
 
 
     rerender({
     rerender({
       organization,
       organization,
-      projectIds,
       groupIds: mockGroupIds,
       groupIds: mockGroupIds,
     });
     });
 
 
@@ -246,7 +232,6 @@ describe('useReplaysCount', () => {
     const {result, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
     const {result, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
       initialProps: {
       initialProps: {
         organization,
         organization,
-        projectIds,
         replayIds: mockReplayIds,
         replayIds: mockReplayIds,
       },
       },
     });
     });
@@ -258,7 +243,7 @@ describe('useReplaysCount', () => {
         query: {
         query: {
           query: `replay_id:[abc,def]`,
           query: `replay_id:[abc,def]`,
           statsPeriod: '14d',
           statsPeriod: '14d',
-          project: [2],
+          project: -1,
         },
         },
       })
       })
     );
     );
@@ -278,7 +263,6 @@ describe('useReplaysCount', () => {
     const {result, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
     const {result, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
       initialProps: {
       initialProps: {
         organization,
         organization,
-        projectIds,
         replayIds: mockReplayIds,
         replayIds: mockReplayIds,
       },
       },
     });
     });
@@ -304,7 +288,6 @@ describe('useReplaysCount', () => {
     const {result, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
     const {result, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
       initialProps: {
       initialProps: {
         organization,
         organization,
-        projectIds,
         transactionNames: mockTransactionNames,
         transactionNames: mockTransactionNames,
       },
       },
     });
     });
@@ -316,7 +299,7 @@ describe('useReplaysCount', () => {
         query: {
         query: {
           query: `transaction:["/home","/profile"]`,
           query: `transaction:["/home","/profile"]`,
           statsPeriod: '14d',
           statsPeriod: '14d',
-          project: [2],
+          project: -1,
         },
         },
       })
       })
     );
     );
@@ -336,7 +319,6 @@ describe('useReplaysCount', () => {
     const {result, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
     const {result, waitForNextUpdate} = reactHooks.renderHook(useReplaysCount, {
       initialProps: {
       initialProps: {
         organization,
         organization,
-        projectIds,
         transactionNames: mockTransactionNames,
         transactionNames: mockTransactionNames,
       },
       },
     });
     });

+ 3 - 10
static/app/components/replays/useReplaysCount.tsx

@@ -8,20 +8,13 @@ import useApi from 'sentry/utils/useApi';
 type Options = {
 type Options = {
   organization: Organization;
   organization: Organization;
   groupIds?: string | string[];
   groupIds?: string | string[];
-  projectIds?: number[] | undefined;
   replayIds?: string | string[];
   replayIds?: string | string[];
   transactionNames?: string | string[];
   transactionNames?: string | string[];
 };
 };
 
 
 type CountState = Record<string, undefined | number>;
 type CountState = Record<string, undefined | number>;
 
 
-function useReplaysCount({
-  groupIds,
-  organization,
-  projectIds,
-  replayIds,
-  transactionNames,
-}: Options) {
+function useReplaysCount({groupIds, organization, replayIds, transactionNames}: Options) {
   const api = useApi();
   const api = useApi();
 
 
   const [replayCounts, setReplayCounts] = useState<CountState>({});
   const [replayCounts, setReplayCounts] = useState<CountState>({});
@@ -107,7 +100,7 @@ function useReplaysCount({
           query: {
           query: {
             query: query.conditions,
             query: query.conditions,
             statsPeriod: '14d',
             statsPeriod: '14d',
-            project: projectIds,
+            project: -1,
           },
           },
         }
         }
       );
       );
@@ -115,7 +108,7 @@ function useReplaysCount({
     } catch (err) {
     } catch (err) {
       Sentry.captureException(err);
       Sentry.captureException(err);
     }
     }
-  }, [api, organization.slug, query, zeroCounts, projectIds]);
+  }, [api, organization.slug, query, zeroCounts]);
 
 
   useEffect(() => {
   useEffect(() => {
     const hasSessionReplay = organization.features.includes('session-replay');
     const hasSessionReplay = organization.features.includes('session-replay');

+ 1 - 0
static/app/views/issueDetails/groupReplays/groupReplays.spec.tsx

@@ -107,6 +107,7 @@ describe('GroupReplays', () => {
               returnIds: true,
               returnIds: true,
               query: `issue.id:[${mockGroup.id}]`,
               query: `issue.id:[${mockGroup.id}]`,
               statsPeriod: '14d',
               statsPeriod: '14d',
+              project: -1,
             },
             },
           })
           })
         );
         );

+ 1 - 0
static/app/views/issueDetails/groupReplays/useReplaysFromIssue.tsx

@@ -34,6 +34,7 @@ function useReplayFromIssue({
             returnIds: true,
             returnIds: true,
             query: `issue.id:[${group.id}]`,
             query: `issue.id:[${group.id}]`,
             statsPeriod: '14d',
             statsPeriod: '14d',
+            project: -1,
           },
           },
         }
         }
       );
       );

+ 1 - 7
static/app/views/performance/transactionSummary/header.tsx

@@ -1,4 +1,4 @@
-import {useCallback, useMemo} from 'react';
+import {useCallback} from 'react';
 import styled from '@emotion/styled';
 import styled from '@emotion/styled';
 import {Location} from 'history';
 import {Location} from 'history';
 
 
@@ -107,15 +107,9 @@ function TransactionHeader({
     [hasWebVitals, location, projects, eventView]
     [hasWebVitals, location, projects, eventView]
   );
   );
 
 
-  const projectIds = useMemo(
-    () => (project?.id ? [Number(project.id)] : []),
-    [project?.id]
-  );
-
   const replaysCount = useReplaysCount({
   const replaysCount = useReplaysCount({
     transactionNames: transactionName,
     transactionNames: transactionName,
     organization,
     organization,
-    projectIds,
   })[transactionName];
   })[transactionName];
 
 
   return (
   return (