name: Move labelled issues to correct projects

on:
  issues:
    types: [labeled]

jobs:
  apply_Z-Labs_label:
    name: Add Z-Labs label for features behind labs flags
    runs-on: ubuntu-latest
    if: >
      contains(github.event.issue.labels.*.name, 'A-Maths') ||
      contains(github.event.issue.labels.*.name, 'A-Message-Pinning') ||
      contains(github.event.issue.labels.*.name, 'A-Location-Sharing') ||
      contains(github.event.issue.labels.*.name, 'Z-IA') ||
      contains(github.event.issue.labels.*.name, 'A-Themes-Custom') ||
      contains(github.event.issue.labels.*.name, 'A-E2EE-Dehydration') ||
      contains(github.event.issue.labels.*.name, 'A-Tags') ||
      contains(github.event.issue.labels.*.name, 'A-Video-Rooms') ||
      contains(github.event.issue.labels.*.name, 'A-Message-Starring')
    steps:
      - uses: actions/github-script@v5
        with:
          script: |
            github.rest.issues.addLabels({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              labels: ['Z-Labs']
            })

  move_needs_info_issues:
    name: X-Needs-Info issues to Need info column on triage board
    runs-on: ubuntu-latest
    steps:
      - uses: konradpabjan/move-labeled-or-milestoned-issue@219d384e03fa4b6460cd24f9f37d19eb033a4338
        with:
          action-token: "${{ secrets.ELEMENT_BOT_TOKEN }}"
          project-url: "https://github.com/vector-im/element-web/projects/27"
          column-name: "Need info"
          label-name: "X-Needs-Info"

  add_priority_design_issues_to_project:
    name: P1 X-Needs-Design to Design project board
    runs-on: ubuntu-latest
    if: >
      contains(github.event.issue.labels.*.name, 'X-Needs-Design')
    steps:
      - uses: octokit/graphql-action@v2.x
        id: add_to_project
        with:
          headers: '{"GraphQL-Features": "projects_next_graphql"}'
          query: |
            mutation add_to_project($projectid:ID!,$contentid:ID!) {
              addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
                projectNextItem {
                  id
                }
              }
            }
          projectid: ${{ env.PROJECT_ID }}
          contentid: ${{ github.event.issue.node_id }}
        env:
          PROJECT_ID: "PN_kwDOAM0swc0sUA"
          GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}

  add_product_issues:
    name: X-Needs-Product to Design project board
    runs-on: ubuntu-latest
    if: >
      contains(github.event.issue.labels.*.name, 'X-Needs-Product')
    steps:
      - uses: octokit/graphql-action@v2.x
        id: add_to_project
        with:
          headers: '{"GraphQL-Features": "projects_next_graphql"}'
          query: |
            mutation add_to_project($projectid:ID!,$contentid:ID!) {
              addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
                projectNextItem {
                  id
                }
              }
            }
          projectid: ${{ env.PROJECT_ID }}
          contentid: ${{ github.event.issue.node_id }}
        env:
          PROJECT_ID: "PN_kwDOAM0swc4AAg6N"
          GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}

  Delight_issues_to_board:
    name: Delight issues to project board
    runs-on: ubuntu-latest
    if: >
      contains(github.event.issue.labels.*.name, 'A-New-Search-Experience') ||
      (contains(github.event.issue.labels.*.name, 'A-Threads') &&
        (contains(github.event.issue.labels.*.name, 'S-Major') ||
         contains(github.event.issue.labels.*.name, 'S-Critical'))) ||
      contains(github.event.issue.labels.*.name, 'Team: Delight') ||
      contains(github.event.issue.labels.*.name, 'Z-NewUserJourney')
    steps:
      - uses: octokit/graphql-action@v2.x
        with:
          headers: '{"GraphQL-Features": "projects_next_graphql"}'
          query: |
            mutation add_to_project($projectid:ID!,$contentid:ID!) {
              addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
                projectNextItem {
                  id
                }
              }
            }
          projectid: ${{ env.PROJECT_ID }}
          contentid: ${{ github.event.issue.node_id }}
        env:
          PROJECT_ID: "PN_kwDOAM0swc1HvQ"
          GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}

  move_voice-message_issues:
    name: A-Voice Messages to voice message board
    runs-on: ubuntu-latest
    if: >
      contains(github.event.issue.labels.*.name, 'A-Voice Messages')
    steps:
      - uses: octokit/graphql-action@v2.x
        with:
          headers: '{"GraphQL-Features": "projects_next_graphql"}'
          query: |
            mutation add_to_project($projectid:ID!,$contentid:ID!) {
              addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
                projectNextItem {
                  id
                }
              }
            }
          projectid: ${{ env.PROJECT_ID }}
          contentid: ${{ github.event.issue.node_id }}
        env:
          PROJECT_ID: "PN_kwDOAM0swc2KCw"
          GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}

  move_threads_issues:
    name: A-Threads to Thread board
    runs-on: ubuntu-latest
    if: >
      contains(github.event.issue.labels.*.name, 'A-Threads')
    steps:
      - uses: octokit/graphql-action@v2.x
        with:
          headers: '{"GraphQL-Features": "projects_next_graphql"}'
          query: |
            mutation add_to_project($projectid:ID!,$contentid:ID!) {
              addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
                projectNextItem {
                  id
                }
              }
            }
          projectid: ${{ env.PROJECT_ID }}
          contentid: ${{ github.event.issue.node_id }}
        env:
          PROJECT_ID: "PN_kwDOAM0swc0rRA"
          GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}

  move_message_bubbles_issues:
    name: A-Message-Bubbles to Message bubbles board
    runs-on: ubuntu-latest
    if: >
      contains(github.event.issue.labels.*.name, 'A-Message-Bubbles')
    steps:
      - uses: octokit/graphql-action@v2.x
        with:
          headers: '{"GraphQL-Features": "projects_next_graphql"}'
          query: |
            mutation add_to_project($projectid:ID!,$contentid:ID!) {
              addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
                projectNextItem {
                  id
                }
              }
            }
          projectid: ${{ env.PROJECT_ID }}
          contentid: ${{ github.event.issue.node_id }}
        env:
          PROJECT_ID: "PN_kwDOAM0swc3m-g"
          GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}

  move_ftue_issues:
    name: Z-FTUE issues to the FTUE project board
    runs-on: ubuntu-latest
    if: >
      contains(github.event.issue.labels.*.name, 'Z-FTUE')
    steps:
      - uses: octokit/graphql-action@v2.x
        with:
          headers: '{"GraphQL-Features": "projects_next_graphql"}'
          query: |
            mutation add_to_project($projectid:ID!,$contentid:ID!) {
              addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
                projectNextItem {
                  id
                }
              }
            }
          projectid: ${{ env.PROJECT_ID }}
          contentid: ${{ github.event.issue.node_id }}
        env:
          PROJECT_ID: "PN_kwDOAM0swc4AAqVx"
          GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}

  move_WTF_issues:
    name: Z-WTF issues to the WTF project board
    runs-on: ubuntu-latest
    if: >
      contains(github.event.issue.labels.*.name, 'Z-WTF')
    steps:
      - uses: octokit/graphql-action@v2.x
        with:
          headers: '{"GraphQL-Features": "projects_next_graphql"}'
          query: |
            mutation add_to_project($projectid:ID!,$contentid:ID!) {
              addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
                projectNextItem {
                  id
                }
              }
            }
          projectid: ${{ env.PROJECT_ID }}
          contentid: ${{ github.event.issue.node_id }}
        env:
          PROJECT_ID: "PN_kwDOAM0swc4AArk0"
          GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
