From 2c944afa50f271aecf03e8373d70406719971a18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Fo=C5=99t?= Date: Sat, 17 Jun 2023 13:07:12 +0200 Subject: [PATCH] Fix bucket limit (#5216) * Fix bucket limit * Trigger tuist workflows when cloud is changed --------- Co-authored-by: Daniele Formichelli --- .github/workflows/tuist.yml | 1 + .../cloud/app/frontend/components/App.tsx | 2 +- .../pages/remote-cache/RemoteCachePage.tsx | 191 +++------- .../remote-cache/RemoteCachePageStore.ts | 164 +++----- .../__tests__/RemoteCachePageStore.test.ts | 357 +++++++++--------- .../CreateBucketModal/CreateBucketModal.tsx | 99 +++++ .../CreateBucketModal/CreateBucketStore.ts | 76 ++++ .../__tests__/CreateBucketStore.test.ts | 74 ++++ .../components/CreateBucketModal/index.ts | 1 + .../components/EditBucketForm.tsx | 133 +++++++ .../pages/remote-cache/components/index.ts | 2 + .../app/frontend/graphql/S3BucketInfo.graphql | 1 - projects/cloud/app/frontend/graphql/types.ts | 23 +- projects/cloud/app/frontend/models/Project.ts | 3 +- .../cloud/app/frontend/models/S3Bucket.ts | 2 - projects/cloud/app/frontend/models/index.ts | 2 + .../cloud/app/frontend/stores/ProjectStore.ts | 2 +- .../mutations/change_remote_cache_storage.rb | 2 +- .../mutations/clear_remote_cache_storage.rb | 5 +- .../cloud/app/graphql/types/mutation_type.rb | 4 +- .../cloud/app/graphql/types/project_type.rb | 10 + .../cloud/app/graphql/types/s3_bucket_type.rb | 1 - projects/cloud/app/models/project.rb | 35 ++ projects/cloud/app/models/s3_bucket.rb | 2 +- .../cloud/app/services/cache_clear_service.rb | 64 ++++ projects/cloud/app/services/cache_service.rb | 48 +-- ...ect_change_remote_cache_storage_service.rb | 22 +- .../app/services/project_create_service.rb | 25 -- .../app/services/project_delete_service.rb | 12 +- .../app/services/s3_bucket_clear_service.rb | 61 --- .../app/services/s3_bucket_create_service.rb | 33 +- .../app/services/s3_buckets_fetch_service.rb | 4 +- .../cloud/app/services/s3_client_service.rb | 26 ++ .../20230601202210_remove_default_project.rb | 25 ++ projects/cloud/db/schema.rb | 5 +- projects/cloud/schema.graphql | 8 +- projects/cloud/schema.json | 60 +-- ...ce_test.rb => cache_clear_service_test.rb} | 36 +- .../cloud/test/services/cache_service_test.rb | 27 +- ...hange_remote_cache_storage_service_test.rb | 23 +- .../services/project_create_service_test.rb | 3 +- .../services/project_delete_service_test.rb | 13 +- .../services/s3_bucket_create_service_test.rb | 29 -- .../services/s3_buckets_fetch_service_test.rb | 16 +- 44 files changed, 977 insertions(+), 755 deletions(-) create mode 100644 projects/cloud/app/frontend/components/pages/remote-cache/components/CreateBucketModal/CreateBucketModal.tsx create mode 100644 projects/cloud/app/frontend/components/pages/remote-cache/components/CreateBucketModal/CreateBucketStore.ts create mode 100644 projects/cloud/app/frontend/components/pages/remote-cache/components/CreateBucketModal/__tests__/CreateBucketStore.test.ts create mode 100644 projects/cloud/app/frontend/components/pages/remote-cache/components/CreateBucketModal/index.ts create mode 100644 projects/cloud/app/frontend/components/pages/remote-cache/components/EditBucketForm.tsx create mode 100644 projects/cloud/app/frontend/components/pages/remote-cache/components/index.ts create mode 100644 projects/cloud/app/services/cache_clear_service.rb delete mode 100644 projects/cloud/app/services/s3_bucket_clear_service.rb create mode 100644 projects/cloud/app/services/s3_client_service.rb create mode 100644 projects/cloud/db/migrate/20230601202210_remove_default_project.rb rename projects/cloud/test/services/{s3_bucket_clear_service_test.rb => cache_clear_service_test.rb} (66%) diff --git a/.github/workflows/tuist.yml b/.github/workflows/tuist.yml index 899ede8e0..5535744ea 100644 --- a/.github/workflows/tuist.yml +++ b/.github/workflows/tuist.yml @@ -18,6 +18,7 @@ on: - projects/tuist/fixtures/** - .package.resolved - projects/fourier/** + - projects/cloud/** - .github/workflows/tuist.yml concurrency: diff --git a/projects/cloud/app/frontend/components/App.tsx b/projects/cloud/app/frontend/components/App.tsx index 7944f8536..0cff91f9d 100644 --- a/projects/cloud/app/frontend/components/App.tsx +++ b/projects/cloud/app/frontend/components/App.tsx @@ -16,7 +16,7 @@ import DashboardPage from './pages/dashboard/DashboardPage'; import CommandEventDetailPage from './pages/commandEventDetail/CommandEventDetailPage'; import Home from './Home'; import { useMeQuery } from '@/graphql/types'; -import RemoteCachePage from './pages/remote-cache/RemoteCachePage'; +import { RemoteCachePage } from './pages/remote-cache/RemoteCachePage'; import OrganizationPage from './pages/organization/OrganizationPage'; import TuistCloudAppProvider from './TuistCloudAppProvider'; diff --git a/projects/cloud/app/frontend/components/pages/remote-cache/RemoteCachePage.tsx b/projects/cloud/app/frontend/components/pages/remote-cache/RemoteCachePage.tsx index c7610fa0e..c05932b4d 100644 --- a/projects/cloud/app/frontend/components/pages/remote-cache/RemoteCachePage.tsx +++ b/projects/cloud/app/frontend/components/pages/remote-cache/RemoteCachePage.tsx @@ -16,14 +16,17 @@ import { Link, Text, Banner, + Modal, + ContextualSaveBar, } from '@shopify/polaris'; import RemoteCachePageStore from './RemoteCachePageStore'; import { observer } from 'mobx-react-lite'; import { useApolloClient } from '@apollo/client'; import { HomeStoreContext } from '@/stores/HomeStore'; import { runInAction } from 'mobx'; +import { CreateBucketModal, EditBucketForm } from './components'; -const RemoteCachePage = observer(() => { +export const RemoteCachePage = observer(() => { const client = useApolloClient(); const { projectStore } = useContext(HomeStoreContext); const [remoteCachePageStore] = useState( @@ -34,62 +37,6 @@ const RemoteCachePage = observer(() => { remoteCachePageStore.load(); }, [projectStore.project]); - const handleSelectChange = useCallback( - (newValue) => { - remoteCachePageStore.handleSelectOption(newValue); - }, - [remoteCachePageStore], - ); - - const handleBucketNameChange = useCallback( - (newValue) => { - runInAction(() => { - remoteCachePageStore.bucketName = newValue; - }); - }, - [remoteCachePageStore], - ); - - const handleRegionChange = useCallback( - (newValue) => { - runInAction(() => { - remoteCachePageStore.region = newValue; - }); - }, - [remoteCachePageStore], - ); - - const handleAccessKeyIdChange = useCallback( - (newValue) => { - runInAction(() => { - remoteCachePageStore.accessKeyId = newValue; - }); - }, - [remoteCachePageStore], - ); - - const handleSecretAccessKeyChange = useCallback( - (newValue) => { - runInAction(() => { - remoteCachePageStore.secretAccessKey = newValue; - }); - }, - [remoteCachePageStore], - ); - - const handleRemoveSecretAccessKey = useCallback(() => { - remoteCachePageStore.removeAccessKey(); - }, [remoteCachePageStore]); - - const handleApplyChangesClicked = useCallback(() => { - if (projectStore.project == undefined) { - return; - } - remoteCachePageStore.applyChangesButtonClicked( - projectStore.project.account.id, - ); - }, [remoteCachePageStore, projectStore]); - const clearCacheError = remoteCachePageStore.remoteCacheStorageCleanError ? ( { ) : null; + const handleSelectChange = useCallback( + (newValue) => { + remoteCachePageStore.handleSelectOption(newValue); + }, + [remoteCachePageStore], + ); + + const bucket = remoteCachePageStore.isDefaultBucket ? ( + + Default bucket created by Tuist Cloud. You can configure your + own if you want to own the data. + + ) : ( + + ); + return ( - + { + runInAction(() => { + remoteCachePageStore.isCreatingBucket = false; + }); + }} + onCreateBucket={(bucket) => { + remoteCachePageStore.bucketCreated(bucket); + }} + open={remoteCachePageStore.isCreatingBucket} + /> + { + runInAction(() => { + remoteCachePageStore.isCreatingBucket = true; + }); + }, + }, + ]} + > - +