useRecommendedSdkUpgrades.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import {ServerSideSamplingStore} from 'sentry/stores/serverSideSamplingStore';
  2. import {useLegacyStore} from 'sentry/stores/useLegacyStore';
  3. import {Organization} from 'sentry/types';
  4. import {defined} from 'sentry/utils';
  5. import useProjects from 'sentry/utils/useProjects';
  6. type Props = {
  7. orgSlug: Organization['slug'];
  8. };
  9. export function useRecommendedSdkUpgrades({orgSlug}: Props) {
  10. const {samplingSdkVersions} = useLegacyStore(ServerSideSamplingStore);
  11. const notSendingSampleRateSdkUpgrades = samplingSdkVersions.filter(
  12. samplingSdkVersion => !samplingSdkVersion.isSendingSampleRate
  13. );
  14. const {projects} = useProjects({
  15. slugs: notSendingSampleRateSdkUpgrades.map(sdkUpgrade => sdkUpgrade.project),
  16. orgId: orgSlug,
  17. });
  18. const recommendedSdkUpgrades = projects
  19. .map(upgradeSDKfromProject => {
  20. const sdkInfo = notSendingSampleRateSdkUpgrades.find(
  21. notSendingSampleRateSdkUpgrade =>
  22. notSendingSampleRateSdkUpgrade.project === upgradeSDKfromProject.slug
  23. );
  24. if (!sdkInfo) {
  25. return undefined;
  26. }
  27. return {
  28. project: upgradeSDKfromProject,
  29. latestSDKName: sdkInfo.latestSDKName,
  30. latestSDKVersion: sdkInfo.latestSDKVersion,
  31. };
  32. })
  33. .filter(defined);
  34. return {recommendedSdkUpgrades};
  35. }