From cba07aa69e6e466ca2b5b01520254725fa100ffd Mon Sep 17 00:00:00 2001 From: Loewy Date: Fri, 26 Jun 2026 09:04:50 -0700 Subject: [PATCH 1/5] Add storage status query --- src/index.tsx | 100 ++++++++++++++++++++++++++++++++++++ src/operations/payments.gql | 15 ++++++ 2 files changed, 115 insertions(+) diff --git a/src/index.tsx b/src/index.tsx index a77375e..35c5e38 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -5481,6 +5481,25 @@ export type GetSubscriptionStatusQuery = { }; }; +export type GetStorageStatusQueryVariables = Exact<{ [key: string]: never }>; + +export type GetStorageStatusQuery = { + __typename?: "Query"; + getStorageStatus?: { + __typename?: "StorageStatusGQL"; + userId: number; + tierName: string; + retainedStorageUsedBytes: any; + retainedStorageLimitBytes?: any | null; + isUnlimited: boolean; + policyConfigured: boolean; + remainingStorageBytes?: any | null; + storageUsageRatio?: number | null; + isNearLimit: boolean; + isOverLimit: boolean; + } | null; +}; + export type GetAppleAppAccountTokenQueryVariables = Exact<{ [key: string]: never; }>; @@ -12398,6 +12417,87 @@ export type GetSubscriptionStatusQueryResult = Apollo.QueryResult< GetSubscriptionStatusQuery, GetSubscriptionStatusQueryVariables >; +export const GetStorageStatusDocument = gql` + query GetStorageStatus { + getStorageStatus { + userId + tierName + retainedStorageUsedBytes + retainedStorageLimitBytes + isUnlimited + policyConfigured + remainingStorageBytes + storageUsageRatio + isNearLimit + isOverLimit + } + } +`; + +/** + * __useGetStorageStatusQuery__ + * + * To run a query within a React component, call `useGetStorageStatusQuery` and pass it any options that fit your needs. + * When your component renders, `useGetStorageStatusQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetStorageStatusQuery({ + * variables: { + * }, + * }); + */ +export function useGetStorageStatusQuery( + baseOptions?: Apollo.QueryHookOptions< + GetStorageStatusQuery, + GetStorageStatusQueryVariables + >, +) { + const options = { ...defaultOptions, ...baseOptions }; + return Apollo.useQuery( + GetStorageStatusDocument, + options, + ); +} +export function useGetStorageStatusLazyQuery( + baseOptions?: Apollo.LazyQueryHookOptions< + GetStorageStatusQuery, + GetStorageStatusQueryVariables + >, +) { + const options = { ...defaultOptions, ...baseOptions }; + return Apollo.useLazyQuery< + GetStorageStatusQuery, + GetStorageStatusQueryVariables + >(GetStorageStatusDocument, options); +} +export function useGetStorageStatusSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions< + GetStorageStatusQuery, + GetStorageStatusQueryVariables + >, +) { + const options = { ...defaultOptions, ...baseOptions }; + return Apollo.useSuspenseQuery< + GetStorageStatusQuery, + GetStorageStatusQueryVariables + >(GetStorageStatusDocument, options); +} +export type GetStorageStatusQueryHookResult = ReturnType< + typeof useGetStorageStatusQuery +>; +export type GetStorageStatusLazyQueryHookResult = ReturnType< + typeof useGetStorageStatusLazyQuery +>; +export type GetStorageStatusSuspenseQueryHookResult = ReturnType< + typeof useGetStorageStatusSuspenseQuery +>; +export type GetStorageStatusQueryResult = Apollo.QueryResult< + GetStorageStatusQuery, + GetStorageStatusQueryVariables +>; export const GetAppleAppAccountTokenDocument = gql` query GetAppleAppAccountToken { getAppleAppAccountToken diff --git a/src/operations/payments.gql b/src/operations/payments.gql index 05405eb..bb9ca4e 100644 --- a/src/operations/payments.gql +++ b/src/operations/payments.gql @@ -67,6 +67,21 @@ query GetSubscriptionStatus { } } +query GetStorageStatus { + getStorageStatus { + userId + tierName + retainedStorageUsedBytes + retainedStorageLimitBytes + isUnlimited + policyConfigured + remainingStorageBytes + storageUsageRatio + isNearLimit + isOverLimit + } +} + query GetAppleAppAccountToken { getAppleAppAccountToken } From 43b99c447bc1a6011e39d59a667b9de0d9e1bebe Mon Sep 17 00:00:00 2001 From: Loewy Date: Tue, 30 Jun 2026 14:59:32 -0700 Subject: [PATCH 2/5] Add storage status readiness query fields --- src/index.tsx | 6 ++++++ src/operations/payments.gql | 3 +++ 2 files changed, 9 insertions(+) diff --git a/src/index.tsx b/src/index.tsx index 35c5e38..1f03e69 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -5497,6 +5497,9 @@ export type GetStorageStatusQuery = { storageUsageRatio?: number | null; isNearLimit: boolean; isOverLimit: boolean; + usageCalculated: boolean; + usageSource?: string | null; + lastCalculatedAt?: any | null; } | null; }; @@ -12430,6 +12433,9 @@ export const GetStorageStatusDocument = gql` storageUsageRatio isNearLimit isOverLimit + usageCalculated + usageSource + lastCalculatedAt } } `; diff --git a/src/operations/payments.gql b/src/operations/payments.gql index bb9ca4e..4690b2b 100644 --- a/src/operations/payments.gql +++ b/src/operations/payments.gql @@ -79,6 +79,9 @@ query GetStorageStatus { storageUsageRatio isNearLimit isOverLimit + usageCalculated + usageSource + lastCalculatedAt } } From 146af8d71395bdc946cf4dc1b93eee6aade5f170 Mon Sep 17 00:00:00 2001 From: Loewy Date: Tue, 30 Jun 2026 15:58:04 -0700 Subject: [PATCH 3/5] Add resolved tier query --- src/index.tsx | 96 +++++++++++++++++++++++++++++++++++++ src/operations/payments.gql | 13 +++++ 2 files changed, 109 insertions(+) diff --git a/src/index.tsx b/src/index.tsx index 1f03e69..13a0a7a 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -5481,6 +5481,23 @@ export type GetSubscriptionStatusQuery = { }; }; +export type GetResolvedTierQueryVariables = Exact<{ [key: string]: never }>; + +export type GetResolvedTierQuery = { + __typename?: "Query"; + getResolvedTier: { + __typename?: "ResolvedTierGQL"; + tierName: string; + tierDisplayName: string; + hasActiveSubscription: boolean; + entitlementSource?: EntitlementSourceTypeEnum | null; + entitlementStatus?: string | null; + entitlementStartsAt?: any | null; + entitlementEndsAt?: any | null; + capabilities: Array; + }; +}; + export type GetStorageStatusQueryVariables = Exact<{ [key: string]: never }>; export type GetStorageStatusQuery = { @@ -12420,6 +12437,85 @@ export type GetSubscriptionStatusQueryResult = Apollo.QueryResult< GetSubscriptionStatusQuery, GetSubscriptionStatusQueryVariables >; +export const GetResolvedTierDocument = gql` + query GetResolvedTier { + getResolvedTier { + tierName + tierDisplayName + hasActiveSubscription + entitlementSource + entitlementStatus + entitlementStartsAt + entitlementEndsAt + capabilities + } + } +`; + +/** + * __useGetResolvedTierQuery__ + * + * To run a query within a React component, call `useGetResolvedTierQuery` and pass it any options that fit your needs. + * When your component renders, `useGetResolvedTierQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetResolvedTierQuery({ + * variables: { + * }, + * }); + */ +export function useGetResolvedTierQuery( + baseOptions?: Apollo.QueryHookOptions< + GetResolvedTierQuery, + GetResolvedTierQueryVariables + >, +) { + const options = { ...defaultOptions, ...baseOptions }; + return Apollo.useQuery( + GetResolvedTierDocument, + options, + ); +} +export function useGetResolvedTierLazyQuery( + baseOptions?: Apollo.LazyQueryHookOptions< + GetResolvedTierQuery, + GetResolvedTierQueryVariables + >, +) { + const options = { ...defaultOptions, ...baseOptions }; + return Apollo.useLazyQuery< + GetResolvedTierQuery, + GetResolvedTierQueryVariables + >(GetResolvedTierDocument, options); +} +export function useGetResolvedTierSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions< + GetResolvedTierQuery, + GetResolvedTierQueryVariables + >, +) { + const options = { ...defaultOptions, ...baseOptions }; + return Apollo.useSuspenseQuery< + GetResolvedTierQuery, + GetResolvedTierQueryVariables + >(GetResolvedTierDocument, options); +} +export type GetResolvedTierQueryHookResult = ReturnType< + typeof useGetResolvedTierQuery +>; +export type GetResolvedTierLazyQueryHookResult = ReturnType< + typeof useGetResolvedTierLazyQuery +>; +export type GetResolvedTierSuspenseQueryHookResult = ReturnType< + typeof useGetResolvedTierSuspenseQuery +>; +export type GetResolvedTierQueryResult = Apollo.QueryResult< + GetResolvedTierQuery, + GetResolvedTierQueryVariables +>; export const GetStorageStatusDocument = gql` query GetStorageStatus { getStorageStatus { diff --git a/src/operations/payments.gql b/src/operations/payments.gql index 4690b2b..2b6a547 100644 --- a/src/operations/payments.gql +++ b/src/operations/payments.gql @@ -67,6 +67,19 @@ query GetSubscriptionStatus { } } +query GetResolvedTier { + getResolvedTier { + tierName + tierDisplayName + hasActiveSubscription + entitlementSource + entitlementStatus + entitlementStartsAt + entitlementEndsAt + capabilities + } +} + query GetStorageStatus { getStorageStatus { userId From 739451f25033e391aee762c8af6de1e0304e3cc0 Mon Sep 17 00:00:00 2001 From: Loewy Date: Wed, 1 Jul 2026 15:57:11 -0700 Subject: [PATCH 4/5] Select storage limit config flag --- src/index.tsx | 2 ++ src/operations/config.gql | 1 + 2 files changed, 3 insertions(+) diff --git a/src/index.tsx b/src/index.tsx index 13a0a7a..d862f2c 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -4592,6 +4592,7 @@ export type GetDeployedConfigQuery = { minimumAllowedAppVersion: string; subscriptionGatingEnabled: boolean; quotaEnforcementEnabled: boolean; + storageLimitEnforcementEnabled: boolean; defaultAndroidRecordingFormat: StreamSegmentTypeEnum; bucketUrl: string; bannerMessages: Array<{ @@ -10590,6 +10591,7 @@ export const GetDeployedConfigDocument = gql` minimumAllowedAppVersion subscriptionGatingEnabled quotaEnforcementEnabled + storageLimitEnforcementEnabled bannerMessages { color dismissible diff --git a/src/operations/config.gql b/src/operations/config.gql index 67ad05d..186acc1 100644 --- a/src/operations/config.gql +++ b/src/operations/config.gql @@ -7,6 +7,7 @@ query getDeployedConfig { minimumAllowedAppVersion subscriptionGatingEnabled quotaEnforcementEnabled + storageLimitEnforcementEnabled bannerMessages { color dismissible From f60950a6f6b8d052dc0f87ceef6d7a3dcb4cbbba Mon Sep 17 00:00:00 2001 From: Loewy Date: Wed, 1 Jul 2026 16:26:00 -0700 Subject: [PATCH 5/5] Select storage limit fields for upload links --- src/index.tsx | 16 +++++++++++++++- src/operations/video_upload.gql | 7 +++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/index.tsx b/src/index.tsx index d862f2c..e63c510 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -8462,7 +8462,14 @@ export type GetUploadLinkMutation = { }; } | { __typename?: "SegmentAlreadyUploadedErr"; segmentId: number } - | { __typename?: "StorageLimitExceededErr" } + | { + __typename?: "StorageLimitExceededErr"; + reason: string; + tierName: string; + retainedStorageUsedBytes: any; + retainedStorageLimitBytes?: any | null; + remainingStorageBytes?: any | null; + } | { __typename?: "TooManyInitUploadsErr" } | { __typename?: "TooManyProfileImageUploadsErr" }; } @@ -18199,6 +18206,13 @@ export const GetUploadLinkDocument = gql` } } } + ... on StorageLimitExceededErr { + reason + tierName + retainedStorageUsedBytes + retainedStorageLimitBytes + remainingStorageBytes + } } } } diff --git a/src/operations/video_upload.gql b/src/operations/video_upload.gql index 4ed9377..c35a9c2 100644 --- a/src/operations/video_upload.gql +++ b/src/operations/video_upload.gql @@ -37,6 +37,13 @@ mutation GetUploadLink($videoId: Int!, $segmentIndex: Int!) { } } } + ... on StorageLimitExceededErr { + reason + tierName + retainedStorageUsedBytes + retainedStorageLimitBytes + remainingStorageBytes + } } } }