diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 28462ef..3937c3e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,7 +6,7 @@ on: - alaskarfin/version.txt # Trigger workflow only when version.txt changes jobs: - build-and-push: + build-alaskarfin: runs-on: ubuntu-latest environment: Dockerhub @@ -35,3 +35,34 @@ jobs: push: true # Push the image to Docker Hub tags: | nomadics/alaskarfin:latest + + build-alaskarseer: + if: contains(github.event.head_commit.message, 'alaskarseer/version.txt') # Only run if alaskarseer/version.txt changes + runs-on: ubuntu-latest + environment: Dockerhub + + steps: + # Step 1: Check out the repository + - name: Checkout code + uses: actions/checkout@v4 + + # Step 2: Set up Docker Buildx + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + # Step 3: Log in to Docker Hub + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + # Step 4: Build and push the alaskarseer image + - name: Build and Push alaskarseer Image + uses: docker/build-push-action@v6 + with: + context: alaskarseer # Path to the build context + file: alaskarseer/Dockerfile # Path to the Dockerfile + push: true + tags: | + nomadics/alaskarseer:latest diff --git a/alaskarseer/Dockerfile b/alaskarseer/Dockerfile new file mode 100644 index 0000000..ce5c6c8 --- /dev/null +++ b/alaskarseer/Dockerfile @@ -0,0 +1,5 @@ +FROM fallenbagel/jellyseerr:latest + +COPY public/ /app/public + +EXPOSE 5055 diff --git a/alaskarseer/public/android-chrome-192x192.png b/alaskarseer/public/android-chrome-192x192.png new file mode 100644 index 0000000..be46085 Binary files /dev/null and b/alaskarseer/public/android-chrome-192x192.png differ diff --git a/alaskarseer/public/android-chrome-192x192_maskable.png b/alaskarseer/public/android-chrome-192x192_maskable.png new file mode 100644 index 0000000..c377716 Binary files /dev/null and b/alaskarseer/public/android-chrome-192x192_maskable.png differ diff --git a/alaskarseer/public/android-chrome-5125x5125.png b/alaskarseer/public/android-chrome-5125x5125.png new file mode 100644 index 0000000..be46085 Binary files /dev/null and b/alaskarseer/public/android-chrome-5125x5125.png differ diff --git a/alaskarseer/public/android-chrome-512x512.png b/alaskarseer/public/android-chrome-512x512.png new file mode 100644 index 0000000..fbee9d4 Binary files /dev/null and b/alaskarseer/public/android-chrome-512x512.png differ diff --git a/alaskarseer/public/android-chrome-512x512_maskable.png b/alaskarseer/public/android-chrome-512x512_maskable.png new file mode 100644 index 0000000..673c3b5 Binary files /dev/null and b/alaskarseer/public/android-chrome-512x512_maskable.png differ diff --git a/alaskarseer/public/apple-splash-1125-2436.jpg b/alaskarseer/public/apple-splash-1125-2436.jpg new file mode 100644 index 0000000..62002d6 Binary files /dev/null and b/alaskarseer/public/apple-splash-1125-2436.jpg differ diff --git a/alaskarseer/public/apple-splash-1136-640.jpg b/alaskarseer/public/apple-splash-1136-640.jpg new file mode 100644 index 0000000..e3704f5 Binary files /dev/null and b/alaskarseer/public/apple-splash-1136-640.jpg differ diff --git a/alaskarseer/public/apple-splash-1170-2532.jpg b/alaskarseer/public/apple-splash-1170-2532.jpg new file mode 100644 index 0000000..1e0d63b Binary files /dev/null and b/alaskarseer/public/apple-splash-1170-2532.jpg differ diff --git a/alaskarseer/public/apple-splash-1179-2556.jpg b/alaskarseer/public/apple-splash-1179-2556.jpg new file mode 100644 index 0000000..96de001 Binary files /dev/null and b/alaskarseer/public/apple-splash-1179-2556.jpg differ diff --git a/alaskarseer/public/apple-splash-1242-2208.jpg b/alaskarseer/public/apple-splash-1242-2208.jpg new file mode 100644 index 0000000..2c70c27 Binary files /dev/null and b/alaskarseer/public/apple-splash-1242-2208.jpg differ diff --git a/alaskarseer/public/apple-splash-1242-2688.jpg b/alaskarseer/public/apple-splash-1242-2688.jpg new file mode 100644 index 0000000..9c65412 Binary files /dev/null and b/alaskarseer/public/apple-splash-1242-2688.jpg differ diff --git a/alaskarseer/public/apple-splash-1284-2778.jpg b/alaskarseer/public/apple-splash-1284-2778.jpg new file mode 100644 index 0000000..821777f Binary files /dev/null and b/alaskarseer/public/apple-splash-1284-2778.jpg differ diff --git a/alaskarseer/public/apple-splash-1290-2796.jpg b/alaskarseer/public/apple-splash-1290-2796.jpg new file mode 100644 index 0000000..98396d7 Binary files /dev/null and b/alaskarseer/public/apple-splash-1290-2796.jpg differ diff --git a/alaskarseer/public/apple-splash-1334-750.jpg b/alaskarseer/public/apple-splash-1334-750.jpg new file mode 100644 index 0000000..5dad6ba Binary files /dev/null and b/alaskarseer/public/apple-splash-1334-750.jpg differ diff --git a/alaskarseer/public/apple-splash-1488-2266.jpg b/alaskarseer/public/apple-splash-1488-2266.jpg new file mode 100644 index 0000000..3724d6b Binary files /dev/null and b/alaskarseer/public/apple-splash-1488-2266.jpg differ diff --git a/alaskarseer/public/apple-splash-1536-2048.jpg b/alaskarseer/public/apple-splash-1536-2048.jpg new file mode 100644 index 0000000..fff4a20 Binary files /dev/null and b/alaskarseer/public/apple-splash-1536-2048.jpg differ diff --git a/alaskarseer/public/apple-splash-1620-2160.jpg b/alaskarseer/public/apple-splash-1620-2160.jpg new file mode 100644 index 0000000..279ef8d Binary files /dev/null and b/alaskarseer/public/apple-splash-1620-2160.jpg differ diff --git a/alaskarseer/public/apple-splash-1640-2360.jpg b/alaskarseer/public/apple-splash-1640-2360.jpg new file mode 100644 index 0000000..3ad3656 Binary files /dev/null and b/alaskarseer/public/apple-splash-1640-2360.jpg differ diff --git a/alaskarseer/public/apple-splash-1668-2224.jpg b/alaskarseer/public/apple-splash-1668-2224.jpg new file mode 100644 index 0000000..3f6ab1e Binary files /dev/null and b/alaskarseer/public/apple-splash-1668-2224.jpg differ diff --git a/alaskarseer/public/apple-splash-1668-2388.jpg b/alaskarseer/public/apple-splash-1668-2388.jpg new file mode 100644 index 0000000..d3bed5d Binary files /dev/null and b/alaskarseer/public/apple-splash-1668-2388.jpg differ diff --git a/alaskarseer/public/apple-splash-1792-828.jpg b/alaskarseer/public/apple-splash-1792-828.jpg new file mode 100644 index 0000000..be8fb60 Binary files /dev/null and b/alaskarseer/public/apple-splash-1792-828.jpg differ diff --git a/alaskarseer/public/apple-splash-2048-1536.jpg b/alaskarseer/public/apple-splash-2048-1536.jpg new file mode 100644 index 0000000..0cf3c76 Binary files /dev/null and b/alaskarseer/public/apple-splash-2048-1536.jpg differ diff --git a/alaskarseer/public/apple-splash-2048-2732.jpg b/alaskarseer/public/apple-splash-2048-2732.jpg new file mode 100644 index 0000000..1d574ab Binary files /dev/null and b/alaskarseer/public/apple-splash-2048-2732.jpg differ diff --git a/alaskarseer/public/apple-splash-2160-1620.jpg b/alaskarseer/public/apple-splash-2160-1620.jpg new file mode 100644 index 0000000..22285bd Binary files /dev/null and b/alaskarseer/public/apple-splash-2160-1620.jpg differ diff --git a/alaskarseer/public/apple-splash-2208-1242.jpg b/alaskarseer/public/apple-splash-2208-1242.jpg new file mode 100644 index 0000000..d3d451e Binary files /dev/null and b/alaskarseer/public/apple-splash-2208-1242.jpg differ diff --git a/alaskarseer/public/apple-splash-2224-1668.jpg b/alaskarseer/public/apple-splash-2224-1668.jpg new file mode 100644 index 0000000..8137227 Binary files /dev/null and b/alaskarseer/public/apple-splash-2224-1668.jpg differ diff --git a/alaskarseer/public/apple-splash-2266-1488.jpg b/alaskarseer/public/apple-splash-2266-1488.jpg new file mode 100644 index 0000000..e739c7b Binary files /dev/null and b/alaskarseer/public/apple-splash-2266-1488.jpg differ diff --git a/alaskarseer/public/apple-splash-2360-1640.jpg b/alaskarseer/public/apple-splash-2360-1640.jpg new file mode 100644 index 0000000..ad58362 Binary files /dev/null and b/alaskarseer/public/apple-splash-2360-1640.jpg differ diff --git a/alaskarseer/public/apple-splash-2388-1668.jpg b/alaskarseer/public/apple-splash-2388-1668.jpg new file mode 100644 index 0000000..fc7e8c6 Binary files /dev/null and b/alaskarseer/public/apple-splash-2388-1668.jpg differ diff --git a/alaskarseer/public/apple-splash-2436-1125.jpg b/alaskarseer/public/apple-splash-2436-1125.jpg new file mode 100644 index 0000000..c795221 Binary files /dev/null and b/alaskarseer/public/apple-splash-2436-1125.jpg differ diff --git a/alaskarseer/public/apple-splash-2532-1170.jpg b/alaskarseer/public/apple-splash-2532-1170.jpg new file mode 100644 index 0000000..afb763e Binary files /dev/null and b/alaskarseer/public/apple-splash-2532-1170.jpg differ diff --git a/alaskarseer/public/apple-splash-2556-1179.jpg b/alaskarseer/public/apple-splash-2556-1179.jpg new file mode 100644 index 0000000..7b5b64d Binary files /dev/null and b/alaskarseer/public/apple-splash-2556-1179.jpg differ diff --git a/alaskarseer/public/apple-splash-2688-1242.jpg b/alaskarseer/public/apple-splash-2688-1242.jpg new file mode 100644 index 0000000..5ee8a37 Binary files /dev/null and b/alaskarseer/public/apple-splash-2688-1242.jpg differ diff --git a/alaskarseer/public/apple-splash-2732-2048.jpg b/alaskarseer/public/apple-splash-2732-2048.jpg new file mode 100644 index 0000000..3a63e0c Binary files /dev/null and b/alaskarseer/public/apple-splash-2732-2048.jpg differ diff --git a/alaskarseer/public/apple-splash-2778-1284.jpg b/alaskarseer/public/apple-splash-2778-1284.jpg new file mode 100644 index 0000000..077de33 Binary files /dev/null and b/alaskarseer/public/apple-splash-2778-1284.jpg differ diff --git a/alaskarseer/public/apple-splash-2796-1290.jpg b/alaskarseer/public/apple-splash-2796-1290.jpg new file mode 100644 index 0000000..4b3a0e5 Binary files /dev/null and b/alaskarseer/public/apple-splash-2796-1290.jpg differ diff --git a/alaskarseer/public/apple-splash-640-1136.jpg b/alaskarseer/public/apple-splash-640-1136.jpg new file mode 100644 index 0000000..a701eb5 Binary files /dev/null and b/alaskarseer/public/apple-splash-640-1136.jpg differ diff --git a/alaskarseer/public/apple-splash-750-1334.jpg b/alaskarseer/public/apple-splash-750-1334.jpg new file mode 100644 index 0000000..1376f3e Binary files /dev/null and b/alaskarseer/public/apple-splash-750-1334.jpg differ diff --git a/alaskarseer/public/apple-splash-828-1792.jpg b/alaskarseer/public/apple-splash-828-1792.jpg new file mode 100644 index 0000000..fa00f21 Binary files /dev/null and b/alaskarseer/public/apple-splash-828-1792.jpg differ diff --git a/alaskarseer/public/apple-touch-icon.png b/alaskarseer/public/apple-touch-icon.png new file mode 100644 index 0000000..be46085 Binary files /dev/null and b/alaskarseer/public/apple-touch-icon.png differ diff --git a/alaskarseer/public/badge-128x128.png b/alaskarseer/public/badge-128x128.png new file mode 100644 index 0000000..affeaec Binary files /dev/null and b/alaskarseer/public/badge-128x128.png differ diff --git a/alaskarseer/public/clock-icon-192x192.png b/alaskarseer/public/clock-icon-192x192.png new file mode 100644 index 0000000..a671e35 Binary files /dev/null and b/alaskarseer/public/clock-icon-192x192.png differ diff --git a/alaskarseer/public/cog-icon-192x192.png b/alaskarseer/public/cog-icon-192x192.png new file mode 100644 index 0000000..a40a6a9 Binary files /dev/null and b/alaskarseer/public/cog-icon-192x192.png differ diff --git a/alaskarseer/public/favicon-16x16.png b/alaskarseer/public/favicon-16x16.png new file mode 100644 index 0000000..632338b Binary files /dev/null and b/alaskarseer/public/favicon-16x16.png differ diff --git a/alaskarseer/public/favicon-32x32.png b/alaskarseer/public/favicon-32x32.png new file mode 100644 index 0000000..cefb766 Binary files /dev/null and b/alaskarseer/public/favicon-32x32.png differ diff --git a/alaskarseer/public/favicon.ico b/alaskarseer/public/favicon.ico new file mode 100644 index 0000000..94740b4 Binary files /dev/null and b/alaskarseer/public/favicon.ico differ diff --git a/alaskarseer/public/favicon.png b/alaskarseer/public/favicon.png new file mode 100644 index 0000000..aa749d2 Binary files /dev/null and b/alaskarseer/public/favicon.png differ diff --git a/alaskarseer/public/images/overseerr_poster_not_found.png b/alaskarseer/public/images/overseerr_poster_not_found.png new file mode 100644 index 0000000..65b4f36 Binary files /dev/null and b/alaskarseer/public/images/overseerr_poster_not_found.png differ diff --git a/alaskarseer/public/images/overseerr_poster_not_found_logo_center.png b/alaskarseer/public/images/overseerr_poster_not_found_logo_center.png new file mode 100644 index 0000000..cdc9d8c Binary files /dev/null and b/alaskarseer/public/images/overseerr_poster_not_found_logo_center.png differ diff --git a/alaskarseer/public/images/overseerr_poster_not_found_logo_top.png b/alaskarseer/public/images/overseerr_poster_not_found_logo_top.png new file mode 100644 index 0000000..cdc9d8c Binary files /dev/null and b/alaskarseer/public/images/overseerr_poster_not_found_logo_top.png differ diff --git a/alaskarseer/public/logo_full.png b/alaskarseer/public/logo_full.png new file mode 100644 index 0000000..845f551 Binary files /dev/null and b/alaskarseer/public/logo_full.png differ diff --git a/alaskarseer/public/logo_full.svg b/alaskarseer/public/logo_full.svg new file mode 100644 index 0000000..afcd1f2 --- /dev/null +++ b/alaskarseer/public/logo_full.svg @@ -0,0 +1,350 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/alaskarseer/public/logo_stacked.svg b/alaskarseer/public/logo_stacked.svg new file mode 100644 index 0000000..fe45598 --- /dev/null +++ b/alaskarseer/public/logo_stacked.svg @@ -0,0 +1,335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/alaskarseer/public/offline.html b/alaskarseer/public/offline.html new file mode 100644 index 0000000..da4ba23 --- /dev/null +++ b/alaskarseer/public/offline.html @@ -0,0 +1,70 @@ + + + + + + + + + You are offline + + + + + +

You are offline

+ + + + + + + diff --git a/alaskarseer/public/os_icon.svg b/alaskarseer/public/os_icon.svg new file mode 100644 index 0000000..cda2394 --- /dev/null +++ b/alaskarseer/public/os_icon.svg @@ -0,0 +1,118 @@ + +AAAsdGp1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAACxOanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46dXVpZDpjOGFmZTAwYS1iN2JiLTRkNTUtYmUwZi1iN2Y2Mzc4NzRlYTUAAAABtGp1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAANdqdW1iAAAAJmp1bWRjYm9yABEAEIAAAKoAOJtxA2MycGEuYWN0aW9ucwAAAACpY2JvcqFnYWN0aW9uc4GjZmFjdGlvbmtjMnBhLmVkaXRlZG1zb2Z0d2FyZUFnZW50bUFkb2JlIEZpcmVmbHlxZGlnaXRhbFNvdXJjZVR5cGV4U2h0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvY29tcG9zaXRlV2l0aFRyYWluZWRBbGdvcml0aG1pY01lZGlhAAAArGp1bWIAAAAoanVtZGNib3IAEQAQgAAAqgA4m3EDYzJwYS5oYXNoLmRhdGEAAAAAfGNib3KlamV4Y2x1c2lvbnOBomVzdGFydBjuZmxlbmd0aBk7SGRuYW1lbmp1bWJmIG1hbmlmZXN0Y2FsZ2ZzaGEyNTZkaGFzaFggrnb/Z0LL/KWPpqmjemYRvQg3RH4cxUsaxZtMKj493SpjcGFkSQAAAAAAAAAAAAAAAgtqdW1iAAAAJGp1bWRjMmNsABEAEIAAAKoAOJtxA2MycGEuY2xhaW0AAAAB32Nib3KoaGRjOnRpdGxlb0dlbmVyYXRlZCBJbWFnZWlkYzpmb3JtYXRtaW1hZ2Uvc3ZnK3htbGppbnN0YW5jZUlEeCx4bXA6aWlkOjJmMzZiOTBiLTUyNTctNGIzMi05NjIyLTExOGUyYjY1NTJmZW9jbGFpbV9nZW5lcmF0b3J4NkFkb2JlX0lsbHVzdHJhdG9yLzI4LjQgYWRvYmVfYzJwYS8wLjcuNiBjMnBhLXJzLzAuMjUuMnRjbGFpbV9nZW5lcmF0b3JfaW5mb4G/ZG5hbWVxQWRvYmUgSWxsdXN0cmF0b3JndmVyc2lvbmQyOC40/2lzaWduYXR1cmV4GXNlbGYjanVtYmY9YzJwYS5zaWduYXR1cmVqYXNzZXJ0aW9uc4KiY3VybHg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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2WQEAcNiFxc4R79ozvFI3cymplwVvAWDIKFyiBFAYVnZ4u3HEcPLDTfIt9X7Nd1vyzbJIZpVE6NOicYEaRwt+uauSMcSPsX9PHUJgyWALEQ6RHudtr57nbNIgmioCefdyEtzGbCylEalKZNWNlzjT2rgZFB1shhJ3hhVHDBPaKX2KxL3C8utMK2iBREKaVCatCmw4JVECUjwN7Qn3V347tiBf5wbCt/a+q382311bbBSW57XWiNjoek/xXArl25l6pWZSkTcShpTPT7ynjoFFRwCewR5+xU+2LKETQ4wrV3n5nK6RayHlThKGkqv3GuPOMk8ogRGaHezj/nphLuUsoIjpNA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/alaskarseer/public/os_logo_square.png b/alaskarseer/public/os_logo_square.png new file mode 100644 index 0000000..37ad421 Binary files /dev/null and b/alaskarseer/public/os_logo_square.png differ diff --git a/alaskarseer/public/site.webmanifest b/alaskarseer/public/site.webmanifest new file mode 100644 index 0000000..1e7e76b --- /dev/null +++ b/alaskarseer/public/site.webmanifest @@ -0,0 +1,80 @@ +{ + "name": "Alaskar Requests", + "short_name": "Requests", + "start_url": "./", + "icons": [ + { + "src": "./android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any" + }, + { + "src": "./android-chrome-192x192_maskable.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "./android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "any" + }, + { + "src": "./android-chrome-512x512_maskable.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "theme_color": "#1f2937", + "background_color": "#1f2937", + "display": "standalone", + "shortcuts": [ + { + "name": "Discover", + "url": "./", + "icons": [ + { + "src": "./sparkles-icon-192x192.png", + "sizes": "192x192", + "type": "image/png" + } + ] + }, + { + "name": "Requests", + "url": "./requests", + "icons": [ + { + "src": "./clock-icon-192x192.png", + "sizes": "192x192", + "type": "image/png" + } + ] + }, + { + "name": "Profile", + "url": "./profile", + "icons": [ + { + "src": "./user-icon-192x192.png", + "sizes": "192x192", + "type": "image/png" + } + ] + }, + { + "name": "Settings", + "url": "./profile/settings", + "icons": [ + { + "src": "./cog-icon-192x192.png", + "sizes": "192x192", + "type": "image/png" + } + ] + } + ] +} diff --git a/alaskarseer/public/sparkles-icon-192x192.png b/alaskarseer/public/sparkles-icon-192x192.png new file mode 100644 index 0000000..71b32e1 Binary files /dev/null and b/alaskarseer/public/sparkles-icon-192x192.png differ diff --git a/alaskarseer/public/sw.js b/alaskarseer/public/sw.js new file mode 100644 index 0000000..6a89315 --- /dev/null +++ b/alaskarseer/public/sw.js @@ -0,0 +1,135 @@ +/* eslint-disable no-undef */ +// Incrementing OFFLINE_VERSION will kick off the install event and force +// previously cached resources to be updated from the network. +// This variable is intentionally declared and unused. +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const OFFLINE_VERSION = 3; +const CACHE_NAME = 'offline'; +// Customize this with a different URL if needed. +const OFFLINE_URL = '/offline.html'; + +self.addEventListener('install', (event) => { + event.waitUntil( + (async () => { + const cache = await caches.open(CACHE_NAME); + // Setting {cache: 'reload'} in the new request will ensure that the + // response isn't fulfilled from the HTTP cache; i.e., it will be from + // the network. + await cache.add(new Request(OFFLINE_URL, { cache: 'reload' })); + })() + ); + // Force the waiting service worker to become the active service worker. + self.skipWaiting(); +}); + +self.addEventListener('activate', (event) => { + event.waitUntil( + (async () => { + // Enable navigation preload if it's supported. + // See https://developers.google.com/web/updates/2017/02/navigation-preload + if ('navigationPreload' in self.registration) { + await self.registration.navigationPreload.enable(); + } + })() + ); + + // Tell the active service worker to take control of the page immediately. + clients.claim(); +}); + +self.addEventListener('fetch', (event) => { + // We only want to call event.respondWith() if this is a navigation request + // for an HTML page. + if (event.request.mode === 'navigate') { + event.respondWith( + (async () => { + try { + // First, try to use the navigation preload response if it's supported. + const preloadResponse = await event.preloadResponse; + if (preloadResponse) { + return preloadResponse; + } + + // Always try the network first. + const networkResponse = await fetch(event.request); + return networkResponse; + } catch (error) { + // catch is only triggered if an exception is thrown, which is likely + // due to a network error. + // If fetch() returns a valid HTTP response with a response code in + // the 4xx or 5xx range, the catch() will NOT be called. + // eslint-disable-next-line no-console + console.log('Fetch failed; returning offline page instead.', error); + + const cache = await caches.open(CACHE_NAME); + const cachedResponse = await cache.match(OFFLINE_URL); + return cachedResponse; + } + })() + ); + } +}); + +self.addEventListener('push', (event) => { + const payload = event.data ? event.data.json() : {}; + + const options = { + body: payload.message, + badge: 'badge-128x128.png', + icon: payload.image ? payload.image : 'android-chrome-192x192.png', + vibrate: [100, 50, 100], + data: { + dateOfArrival: Date.now(), + primaryKey: '2', + actionUrl: payload.actionUrl, + requestId: payload.requestId, + }, + actions: [], + }; + + if (payload.actionUrl) { + options.actions.push({ + action: 'view', + title: payload.actionUrlTitle ?? 'View', + }); + } + + if (payload.notificationType === 'MEDIA_PENDING') { + options.actions.push( + { + action: 'approve', + title: 'Approve', + }, + { + action: 'decline', + title: 'Decline', + } + ); + } + + event.waitUntil(self.registration.showNotification(payload.subject, options)); +}); + +self.addEventListener( + 'notificationclick', + (event) => { + const notificationData = event.notification.data; + + event.notification.close(); + + if (event.action === 'approve') { + fetch(`/api/v1/request/${notificationData.requestId}/approve`, { + method: 'POST', + }); + } else if (event.action === 'decline') { + fetch(`/api/v1/request/${notificationData.requestId}/decline`, { + method: 'POST', + }); + } + + if (notificationData.actionUrl) { + clients.openWindow(notificationData.actionUrl); + } + }, + false +); diff --git a/alaskarseer/public/user-icon-192x192.png b/alaskarseer/public/user-icon-192x192.png new file mode 100644 index 0000000..a7b92cc Binary files /dev/null and b/alaskarseer/public/user-icon-192x192.png differ diff --git a/alaskarseer/version.txt b/alaskarseer/version.txt new file mode 100644 index 0000000..7ec1d6d --- /dev/null +++ b/alaskarseer/version.txt @@ -0,0 +1 @@ +2.1.0