name: Move labelled issues to correct boards and columns

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-Threads') ||
        contains(github.event.issue.labels.*.name, 'A-Polls') ||
        contains(github.event.issue.labels.*.name, 'A-Location-Sharing') ||
        contains(github.event.issue.labels.*.name, 'A-Message-Bubbles') ||
        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')
    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
    # Skip in forks
    if: github.repository == 'vector-im/element-android'
    steps:
      - uses: konradpabjan/move-labeled-or-milestoned-issue@219d384e03fa4b6460cd24f9f37d19eb033a4338
        with:
          action-token: "${{ secrets.ELEMENT_BOT_TOKEN }}"
          project-url: "https://github.com/vector-im/element-android/projects/4"
          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
    # Skip in forks
    if: >
      github.repository == 'vector-im/element-android' &&
      contains(github.event.issue.labels.*.name, 'X-Needs-Design') &&
      (contains(github.event.issue.labels.*.name, 'S-Critical') &&
        (contains(github.event.issue.labels.*.name, 'O-Frequent') ||
          contains(github.event.issue.labels.*.name, 'O-Occasional')) ||
        contains(github.event.issue.labels.*.name, 'S-Major') &&
        contains(github.event.issue.labels.*.name, 'O-Frequent') ||
        contains(github.event.issue.labels.*.name, 'A11y') &&
        contains(github.event.issue.labels.*.name, 'O-Frequent'))
    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: Spaces issues to Delight project board
    runs-on: ubuntu-latest
    # Skip in forks
    if: >
      github.repository == 'vector-im/element-android' &&
      (contains(github.event.issue.labels.*.name, 'A-Spaces') ||
        contains(github.event.issue.labels.*.name, 'A-Space-Settings') ||
        contains(github.event.issue.labels.*.name, 'A-Subspaces') ||
        contains(github.event.issue.labels.*.name, 'Z-IA'))
    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
    # Skip in forks
    if: >
      github.repository == 'vector-im/element-android' &&
      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
    # Skip in forks
    if: >
      github.repository == 'vector-im/element-android' &&
      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
    # Skip in forks
    if: >
      github.repository == 'vector-im/element-android' &&
      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 to Mobile FTUE board
    runs-on: ubuntu-latest
    # Skip in forks
    if: >
      github.repository == 'vector-im/element-android' &&
      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 to WTF board
    runs-on: ubuntu-latest
    # Skip in forks
    if: >
      github.repository == 'vector-im/element-android' &&
      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 }}