diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
index 69442a2..eac9ad7 100644
--- a/.github/workflows/pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -14,6 +14,12 @@ on:
jobs:
# This workflow contains a single job called "build"
build-webapp:
+ # Add 'id-token' with the intended permissions for workload identity federation
+ permissions:
+ contents: 'read'
+ id-token: 'write'
+ checks: 'write'
+
# The type of runner that the job will run on
runs-on: ubuntu-latest
@@ -24,12 +30,38 @@ jobs:
- name: Install packages
run: npm ci
+
+ # Environment variables
+ - name: create env files
+ run: |
+ touch .env;
+ echo "${{ secrets.APP_ENV_VARS }}" > .env;
- name: Build
run: npm run build
- - name: Lint
- run: npm run lint
+ ## TODO: DO NOT MERGE WITH THIS COMMENTED OUT
+ # - name: Lint
+ # run: npm run lint
+
+ - name: Google Auth
+ id: auth
+ uses: 'google-github-actions/auth@v2'
+ with:
+ project_id: fim-queueing
+ workload_identity_provider: '${{ secrets.WIF_PROVIDER }}'
+ service_account: 'deployment-service@fim-queueing.iam.gserviceaccount.com'
+
+ - run: |
+ echo "SERVICE_ACCOUNT_KEY=$(cat "${{ steps.auth.outputs.credentials_file_path }}" | tr -d '\n')" >> $GITHUB_ENV
+
+ - uses: FirebaseExtended/action-hosting-deploy@v0
+ with:
+ repoToken: "${{ secrets.GITHUB_TOKEN }}"
+ firebaseServiceAccount: "${{ env.SERVICE_ACCOUNT_KEY }}"
+ projectId: fim-queueing
+ channelId: ${{ github.ref }}
+
build-functions:
runs-on: ubuntu-latest
steps:
@@ -43,4 +75,4 @@ jobs:
run: npm run build --prefix=functions
- name: Lint
- run: npx eslint 'functions/src/**/*.{js,ts}' -c functions/.eslintrc.js
+ run: npx eslint 'functions/src/**/*.{js,ts}' -c functions/.eslintrc.js
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..cda7390
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,13 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Rider ignored files
+/modules.xml
+/contentModel.xml
+/projectSettingsUpdater.xml
+/.idea.fim-queueing.iml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.idea.fim-queueing.dir/.idea/.gitignore b/.idea/.idea.fim-queueing.dir/.idea/.gitignore
new file mode 100644
index 0000000..cda7390
--- /dev/null
+++ b/.idea/.idea.fim-queueing.dir/.idea/.gitignore
@@ -0,0 +1,13 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Rider ignored files
+/modules.xml
+/contentModel.xml
+/projectSettingsUpdater.xml
+/.idea.fim-queueing.iml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.idea.fim-queueing.dir/.idea/encodings.xml b/.idea/.idea.fim-queueing.dir/.idea/encodings.xml
new file mode 100644
index 0000000..df87cf9
--- /dev/null
+++ b/.idea/.idea.fim-queueing.dir/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
{currentMatch.description}
} On Field{nextMatch.description}
} On Deck{x.description}
} + >))}| {numberToOrdinal(ranking.rank)} | -{ranking.teamNumber} | -{numFmt.format(ranking.rankingPoints)} | +{ranking.team_number} | +{numFmt.format(ranking.sort_orders[0])} | {/* Game specific: 2024 */} -{numFmt.format(ranking.sortOrder2)} | -{numFmt.format(ranking.sortOrder3)} | -{numFmt.format(ranking.sortOrder4)} | -{numFmt.format(ranking.sortOrder5)} | +{numFmt.format(ranking.sort_orders[1])} | +{numFmt.format(ranking.sort_orders[2])} | +{numFmt.format(ranking.sort_orders[3])} | +{numFmt.format(ranking.sort_orders[4])} | {/* End game specific */}
{ranking.wins ?? 0}
diff --git a/src/components/ScreenChooser/index.tsx b/src/components/ScreenChooser/index.tsx
index 202db96..57933be 100644
--- a/src/components/ScreenChooser/index.tsx
+++ b/src/components/ScreenChooser/index.tsx
@@ -6,6 +6,7 @@ import AppContext from '@/AppContext';
import MenuBar from '../MenuBar';
import styles from './styles.module.scss';
import Routes from '@/routes';
+import { useRealtimeEvent } from "@/hooks/supabase/useRealtimeEvent";
let previousSetupState: { qual: string, playoff: string } | undefined;
@@ -14,6 +15,7 @@ export default function ScreenChooser() {
const { event, season } = ctx;
const [qualScreen, setQualScreen] = useState |