From 1e1657f9ebbbc1ddd230ae3ec45f19713ccffcaa Mon Sep 17 00:00:00 2001 From: Xavier Mod Date: Thu, 26 Sep 2024 18:27:45 +0100 Subject: [PATCH] Add seamless opening of the sidepanel --- .github/workflows/ci-cd-pipeline.yaml | 130 +++++++------------------- client/background.js | 10 ++ client/content.js | 5 + client/manifest.json | 2 +- client/src/views/Auth.tsx | 8 +- frontend/package-lock.json | 34 +++++++ frontend/package.json | 3 + frontend/src/views/Homepage.tsx | 23 +++-- 8 files changed, 111 insertions(+), 104 deletions(-) diff --git a/.github/workflows/ci-cd-pipeline.yaml b/.github/workflows/ci-cd-pipeline.yaml index 5833bd7..4ac94f5 100644 --- a/.github/workflows/ci-cd-pipeline.yaml +++ b/.github/workflows/ci-cd-pipeline.yaml @@ -1,96 +1,34 @@ -name: CI/CD Pipeline - -on: - push: - branches: [main, prod-ready] -jobs: - # Determines the environment to deploy the backend to - setenv: - runs-on: ubuntu-latest - outputs: - env: ${{ steps.setenvstep.outputs.env }} - # Deploys to staging/prod environment depending on branch name - steps: - - name: determine env - id: setenvstep - run: | - if [[ "${{github.base_ref}}" == "main" || "${{github.ref}}" == "refs/heads/main" ]]; then - echo "env=staging" >> "$GITHUB_OUTPUT" - fi - - if [[ "${{github.base_ref}}" == "prod-ready" || "${{github.ref}}" == "refs/heads/prod-ready" ]]; then - echo "env=prod" >> "$GITHUB_OUTPUT" - fi - # Change detection for filtering jobs - changes: - runs-on: ubuntu-latest - # Required permissions - permissions: - pull-requests: read - outputs: - backend: ${{ steps.filter.outputs.backend }} - frontend: ${{ steps.filter.outputs.frontend }} - steps: - - uses: actions/checkout@v4 - # For pull requests it's not necessary to checkout the code - - uses: dorny/paths-filter@v3 - id: filter - with: - filters: | - backend: - - 'backend/**' - frontend: - - 'frontend/**' - frontend: - defaults: - run: - working-directory: frontend - permissions: - id-token: write - contents: read - needs: changes - if: ${{needs.changes.outputs.frontend == 'true'}} - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 18 - - run: npm install - - run: npm run build - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: arn:aws:iam::035306758865:role/gh-short-lived-creds - aws-region: us-east-1 - - run: aws s3 sync build/ s3://flatini.formulathoughts.com - - run: aws cloudfront create-invalidation --distribution-id ${{secrets.DISTRIBUTION_ID}} --paths "/*" - - backend: - needs: [changes, setenv] - if: ${{ needs.changes.outputs.backend == 'true' }} - runs-on: ubuntu-latest - steps: - - name: checkout head - uses: actions/checkout@v4 - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - name: backend tests - run: | - cd backend - python -m pip install --upgrade pip - pip install -r requirements.txt - pip install -r requirements-test.txt - python -m unittest - - name: setup aws cli - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: eu-west-2 - - name: build and deploy to aws - run: | - cd backend && sh clean_build.sh - sam deploy --no-fail-on-empty-changeset --no-confirm-changeset --stack-name flatini-api-${{needs.setenv.outputs.env}} --s3-bucket flatini-api-${{needs.setenv.outputs.env}}-s3 --s3-prefix flatini --region eu-west-2 --capabilities CAPABILITY_IAM --parameter-overrides ParameterKey=GoogleClientSecret,ParameterValue="${{ secrets.GOOGLE_CLIENT_SECRET }}" ParameterKey=GoogleClientId,ParameterValue="${{ secrets.GOOGLE_CLIENT_ID }}" +frontend: + defaults: + run: + working-directory: frontend + permissions: + id-token: write + contents: read + needs: changes + if: ${{ needs.changes.outputs.frontend == 'true' }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 18 + - run: npm install + - run: | + if [[ "${{ needs.setenv.outputs.env }}" == "staging" ]]; then + echo "REACT_APP_COGNITO_DOMAIN=${{ secrets.REACT_APP_COGNITO_DOMAIN_STAGING }}" >> .env + echo "REACT_APP_COGNITO_POOL_ID=${{ secrets.REACT_APP_COGNITO_POOL_ID_STAGING }}" >> .env + echo "REACT_APP_COGNITO_CLIENT_ID=${{ secrets.REACT_APP_COGNITO_CLIENT_ID_STAGING }}" >> .env + elif [[ "${{ needs.setenv.outputs.env }}" == "prod" ]]; then + echo "REACT_APP_COGNITO_DOMAIN=${{ secrets.REACT_APP_COGNITO_DOMAIN_PROD }}" >> .env + echo "REACT_APP_COGNITO_POOL_ID=${{ secrets.REACT_APP_COGNITO_POOL_ID_PROD }}" >> .env + echo "REACT_APP_COGNITO_CLIENT_ID=${{ secrets.REACT_APP_COGNITO_CLIENT_ID_PROD }}" >> .env + fi + - run: npm run build + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::035306758865:role/gh-short-lived-creds + aws-region: us-east-1 + - run: aws s3 sync build/ s3://flatini.formulathoughts.com + - run: aws cloudfront create-invalidation --distribution-id ${{ secrets.DISTRIBUTION_ID }} --paths "/*" diff --git a/client/background.js b/client/background.js index 60ef502..8a82fc5 100644 --- a/client/background.js +++ b/client/background.js @@ -13,3 +13,13 @@ chrome.runtime.onInstalled.addListener(function (details) { chrome.sidePanel .setPanelBehavior({ openPanelOnActionClick: true }) .catch((error) => console.error(error)); + +chrome.runtime.onMessage.addListener((message, sender) => { + // The callback for runtime.onMessage must return falsy if we're not sending a response + (async () => { + if (message.type === "open_side_panel") { + // This will open a tab-specific side panel only on the current tab. + await chrome.sidePanel.open({ tabId: sender.tab.id }); + } + })(); +}); diff --git a/client/content.js b/client/content.js index b184cfa..3ca62af 100644 --- a/client/content.js +++ b/client/content.js @@ -37,3 +37,8 @@ function getAllTextEndingWithPCM(element) { return textContent.trim(); } + +document.querySelector("#openFlatiniSidebar").addEventListener("click", () => { + console.log("testing?", chrome); + chrome.runtime.sendMessage({ type: "open_side_panel" }); +}); diff --git a/client/manifest.json b/client/manifest.json index 4c24368..37fd1b4 100644 --- a/client/manifest.json +++ b/client/manifest.json @@ -1,5 +1,5 @@ { - "version": "1.1.1", + "version": "1.1.2", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0bsGuxRgS5/cSnoPznlD7Wf09ouEtlf06G7N+FtVrw0LFurO3uOQIkxXIRwFN4uxOPdEjjNNZK/82VGdxo/PUGWH013DsZaFho2CvvpByn/hqlqfhhw8NqqyaGfIz369Tg1VOOY6p4qbXOydj9AH0eQrvcPUm5LjEv0sqEqzyKBMmJnjt5M5WFvOOHaJnxIQv4qt0AeieM4MmohDWVOe5upTVj0m0I4eOXTvURrRXtH/yAYu3i5uDaTFR+bwpI7tMbBtMfHb5jcwSpmx7Lv6tnbpRwQqcVmbjeYivaxI2Oav6KwD8d1+wUS76gcml1Z6WzBgwvA6xDNv0qlXE3OnCQIDAQAB", "manifest_version": 3, "name": "Flatini", diff --git a/client/src/views/Auth.tsx b/client/src/views/Auth.tsx index e54d5eb..0ca659a 100644 --- a/client/src/views/Auth.tsx +++ b/client/src/views/Auth.tsx @@ -40,9 +40,15 @@ const Auth = () => {