10 Commits

Author SHA1 Message Date
Jagandeep Brar
9490355792 release: v11.0.0
[skip ci]
2025-04-02 21:18:51 -04:00
Jagandeep Brar
5d069a537a release: v10.2.6
[skip ci]
2023-10-04 10:56:38 -04:00
Jagandeep Brar
60cdc3e0b0 release(testflight): beta
[skip ci]
2023-10-04 09:46:20 -04:00
Weblate (bot)
642af12404 chore(locale): translations update from Hosted Weblate (#768)
* Translated using Weblate (German)

Currently translated at 100.0% (19 of 19 strings)

Translation: LunaSea/Dashboard
Translate-URL: https://hosted.weblate.org/projects/lunasea/dashboard/de/

* Translated using Weblate (German)

Currently translated at 100.0% (220 of 220 strings)

Translation: LunaSea/Sonarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/sonarr/de/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (35 of 35 strings)

Translation: LunaSea/Search
Translate-URL: https://hosted.weblate.org/projects/lunasea/search/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (24 of 24 strings)

Translation: LunaSea/SABnzbd
Translate-URL: https://hosted.weblate.org/projects/lunasea/sabnzbd/es/

---------

Co-authored-by: redoXiD <arvidjonas2004@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
2023-10-04 08:57:42 -04:00
Jagandeep Brar
3da56b0194 chore(flutter): upgrade to 3.13.6/a794cf2681 2023-10-04 08:56:05 -04:00
Jagandeep Brar
08228ef0f9 fix(sonarr): correctly support Sonarr v4 season posters 2023-08-29 22:57:15 -04:00
Jagandeep Brar
ea0fe19efc fix(sonarr): correctly sort missing content list in descending order 2023-08-27 18:30:14 -04:00
Weblate (bot)
bf5d0ba6ec chore(localization): translations update from Hosted Weblate
Co-authored-by: BeardedWatermelon <periklis.karantonis@gmail.com>
Co-authored-by: DragoPrime <emperordrago@gmail.com>
Co-authored-by: Dominique Schlabach <nickis1305@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: redoXiD <arvidjonas2004@gmail.com>

[skip ci]
2023-08-27 18:27:16 -04:00
Jagandeep Brar
55c417f761 fix(ui): upgrade to flash@3.0.5+1 2023-08-27 14:27:00 -04:00
Jagandeep Brar
8bd3368e99 chore(flutter): upgrade packages 2023-08-27 14:27:00 -04:00
258 changed files with 3710 additions and 9688 deletions

View File

@@ -7,10 +7,6 @@ inputs:
required: true
# Config
firebase-token:
description: "Firebase Token"
required: false
default: ""
skip-core:
description: "Skip Installing Core Files"
required: false
@@ -33,10 +29,6 @@ inputs:
description: "Code Signing Certificate"
required: false
default: ""
firebase-service-worker:
description: "Firebase Service Worker"
required: false
default: ""
google-play-key:
description: "Google Play Store API Key"
required: false
@@ -56,7 +48,7 @@ runs:
- name: Prepare Core
if: ${{ inputs.skip-core == 'false' }}
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: core-files
@@ -78,12 +70,12 @@ runs:
uses: actions/setup-java@v3
with:
distribution: zulu
java-version: 11
java-version: 17
- name: Install Node.js
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 16
node-version: 20
- name: Install Ruby
if: ${{ inputs.platform == 'android' || inputs.platform == 'ios' || inputs.platform == 'macos' }}
@@ -116,33 +108,6 @@ runs:
echo ${{ inputs.android-key-jks }} | base64 --decode > android/key.jks
echo ${{ inputs.android-key-properties }} | base64 --decode > android/key.properties
- name: Setup Firebase Configuration
if: ${{ inputs.firebase-token != '' }}
shell: bash
run: |
gem install --user-install xcodeproj
npm install -g firebase-tools
firebase --version
dart pub global activate flutterfire_cli 0.3.0-dev.16
flutterfire configure \
--project=comettools-lunasea \
--token=${{ inputs.firebase-token }} \
--platforms=android,ios,macos,web \
--android-package-name=app.lunasea.lunasea \
--ios-bundle-id=app.lunasea.lunasea \
--macos-bundle-id=app.lunasea.lunasea \
--web-app-id=1:511093487055:web:37d2f8e4c960708add8eba \
--no-debug-symbols-ios \
--no-debug-symbols-macos \
--out=lib/firebase/options.dart \
--yes
- name: Setup Firebase Service Worker
if: ${{ inputs.firebase-service-worker != '' }}
shell: bash
run: echo ${{ inputs.firebase-service-worker }} | base64 --decode > web/firebase-messaging-sw.js
- name: Setup Android Platform
if: ${{ inputs.platform == 'android' }}
shell: bash

View File

@@ -23,9 +23,6 @@ jobs:
uses: JagandeepBrar/lunasea/.github/workflows/prepare.yml@master
with:
flavor: ${{ inputs.flavor }}
secrets:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
build-android:
name: Build Android
@@ -34,7 +31,6 @@ jobs:
with:
build-number: ${{ needs.prepare.outputs.build-number }}
secrets:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
KEY_JKS: ${{ secrets.KEY_JKS }}
KEY_PROPERTIES: ${{ secrets.KEY_PROPERTIES }}
@@ -48,7 +44,6 @@ jobs:
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
IOS_CODESIGNING_IDENTITY: ${{ secrets.IOS_CODESIGNING_IDENTITY }}
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
@@ -77,7 +72,6 @@ jobs:
APPLE_STORE_CONNECT_KEY: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
MACOS_INSTALLER_CERT_APP_STORE: ${{ secrets.MACOS_INSTALLER_CERT_APP_STORE }}
MACOS_INSTALLER_CERT_DIRECT: ${{ secrets.MACOS_INSTALLER_CERT_DIRECT }}
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
@@ -92,9 +86,6 @@ jobs:
with:
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
build-title: ${{ needs.prepare.outputs.build-title }}
secrets:
FIREBASE_SERVICE_WORKER: ${{ secrets.FIREBASE_SERVICE_WORKER }}
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
build-windows:
name: Build Windows
@@ -103,99 +94,3 @@ jobs:
secrets:
CODE_SIGNING_CERTIFICATE: ${{ secrets.CODE_SIGNING_CERTIFICATE }}
CODE_SIGNING_PASSWORD: ${{ secrets.CODE_SIGNING_PASSWORD }}
publish-android:
name: Publish Android
needs: [prepare, build-android]
uses: JagandeepBrar/lunasea/.github/workflows/publish_android.yml@master
with:
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
build-motd: ${{ needs.prepare.outputs.build-motd }}
build-title: ${{ needs.prepare.outputs.build-title }}
secrets:
GOOGLE_PLAY_API: ${{ secrets.GOOGLE_PLAY_API }}
publish-ios:
name: Publish iOS
needs: [prepare, build-ios]
uses: JagandeepBrar/lunasea/.github/workflows/publish_ios.yml@master
with:
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
build-motd: ${{ needs.prepare.outputs.build-motd }}
secrets:
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
APPLE_STORE_CONNECT_KEY: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
publish-linux:
name: Publish Linux
needs: [prepare, build-linux]
uses: JagandeepBrar/lunasea/.github/workflows/publish_linux.yml@master
with:
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
secrets:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
publish-macos:
name: Publish macOS
needs: [prepare, build-macos]
uses: JagandeepBrar/lunasea/.github/workflows/publish_macos.yml@master
with:
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
build-motd: ${{ needs.prepare.outputs.build-motd }}
secrets:
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
APPLE_STORE_CONNECT_KEY: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
publish-web:
name: Publish Web
needs: [prepare, build-web]
uses: JagandeepBrar/lunasea/.github/workflows/publish_web.yml@master
with:
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
build-title: ${{ needs.prepare.outputs.build-title }}
secrets:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
publish-s3:
name: Publish S3
needs:
[
prepare,
build-android,
build-ios,
build-linux,
build-macos,
build-web,
build-windows,
]
uses: JagandeepBrar/lunasea/.github/workflows/publish_s3.yml@master
with:
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
build-number: ${{ needs.prepare.outputs.build-number }}
build-title: ${{ needs.prepare.outputs.build-title }}
secrets:
S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }}
S3_BUCKET: ${{ secrets.S3_BUCKET }}
S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }}
S3_KEY_ID: ${{ secrets.S3_KEY_ID }}
S3_REGION: ${{ secrets.S3_REGION }}
notify:
name: Notify
needs: [prepare, publish-s3]
uses: JagandeepBrar/lunasea/.github/workflows/notify.yml@master
with:
build-flavor: ${{ needs.prepare.outputs.build-flavor }}
build-title: ${{ needs.prepare.outputs.build-title }}
secrets:
DISCORD_WEBHOOK_EDGE: ${{ secrets.DISCORD_WEBHOOK_EDGE }}
DISCORD_WEBHOOK_BETA: ${{ secrets.DISCORD_WEBHOOK_BETA }}
DISCORD_WEBHOOK_STABLE: ${{ secrets.DISCORD_WEBHOOK_STABLE }}

View File

@@ -8,8 +8,6 @@ on:
type: string
secrets:
FIREBASE_TOKEN:
required: true
KEY_JKS:
required: true
KEY_PROPERTIES:
@@ -23,7 +21,6 @@ jobs:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_build@master
with:
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
platform: android
android-key-jks: ${{ secrets.KEY_JKS }}
android-key-properties: ${{ secrets.KEY_PROPERTIES }}
@@ -33,7 +30,7 @@ jobs:
run: bundle exec fastlane build_aab build_number:${{ inputs.build-number }}
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: android-playstore-package
path: ${{ github.workspace }}/output
@@ -45,7 +42,6 @@ jobs:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_build@master
with:
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
platform: android
android-key-jks: ${{ secrets.KEY_JKS }}
android-key-properties: ${{ secrets.KEY_PROPERTIES }}
@@ -55,7 +51,7 @@ jobs:
run: bundle exec fastlane build_apk build_number:${{ inputs.build-number }}
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: android-app-package
path: ${{ github.workspace }}/output

View File

@@ -14,8 +14,6 @@ on:
required: true
APPLE_TEAM_ID:
required: true
FIREBASE_TOKEN:
required: true
IOS_CODESIGNING_IDENTITY:
required: true
MATCH_KEYCHAIN_NAME:
@@ -35,7 +33,6 @@ jobs:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_build@master
with:
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
platform: ios
match-ssh-private-key: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
@@ -52,7 +49,7 @@ jobs:
run: bundle exec fastlane build_appstore build_number:${{ inputs.build-number }}
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ios-appstore-package
path: ${{ github.workspace }}/output

View File

@@ -27,7 +27,7 @@ jobs:
run: dart ${{github.workspace }}/scripts/generate_debian.dart "${{ inputs.build-version }}+${{ inputs.build-number }}"
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: linux-debian
path: ${{ github.workspace }}/output
@@ -48,7 +48,7 @@ jobs:
run: tar czf output/lunasea-linux-amd64.tar.gz -C build/linux/x64/release/bundle/ .
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: linux-tarball
path: ${{ github.workspace }}/output
@@ -70,7 +70,7 @@ jobs:
run: mv ${{ steps.build.outputs.snap }} ${{ github.workspace }}/output/lunasea-linux-amd64.snap
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: linux-snapcraft
path: ${{ github.workspace }}/output

View File

@@ -23,8 +23,6 @@ on:
required: true
APPLE_TEAM_ID:
required: true
FIREBASE_TOKEN:
required: true
MACOS_INSTALLER_CERT_APP_STORE:
required: true
MACOS_INSTALLER_CERT_DIRECT:
@@ -46,7 +44,6 @@ jobs:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_build@master
with:
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
platform: macos
appstore-connect-key: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
match-ssh-private-key: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
@@ -67,7 +64,7 @@ jobs:
run: bundle exec fastlane build_app_store build_number:${{ inputs.build-number }}
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: macos-appstore-package
path: ${{ github.workspace }}/output
@@ -79,7 +76,6 @@ jobs:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_build@master
with:
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
platform: macos
appstore-connect-key: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
match-ssh-private-key: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
@@ -100,7 +96,7 @@ jobs:
run: bundle exec fastlane build_app_package build_number:${{ inputs.build-number }}
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: macos-app-package
path: ${{ github.workspace }}/output
@@ -112,15 +108,15 @@ jobs:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_build@master
with:
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
platform: macos
appstore-connect-key: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
match-ssh-private-key: ${{ secrets.MATCH_SSH_PRIVATE_KEY }}
- name: Setup Disk Image Creator
run: |
npm install -g create-dmg
brew install graphicsmagick imagemagick
pip install setuptools
npm install -g create-dmg
- name: Build LunaSea
working-directory: ${{ github.workspace }}/macos
@@ -138,7 +134,7 @@ jobs:
run: bundle exec fastlane build_disk_image build_number:${{ inputs.build-number }} build_version:${{ inputs.build-version }}
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: macos-disk-image
path: ${{ github.workspace }}/output

View File

@@ -10,12 +10,6 @@ on:
required: true
type: string
secrets:
FIREBASE_TOKEN:
required: true
FIREBASE_SERVICE_WORKER:
required: true
jobs:
build-hosted:
name: Hosted
@@ -24,15 +18,13 @@ jobs:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_build@master
with:
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
firebase-service-worker: ${{ secrets.FIREBASE_SERVICE_WORKER }}
platform: web
- name: Build LunaSea
run: npm run build:web
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: web-hosted
path: ${{ github.workspace }}/build/web
@@ -57,7 +49,7 @@ jobs:
filename: ../../output/lunasea-web-canvaskit.zip
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: web-archive
path: ${{ github.workspace }}/output

View File

@@ -22,10 +22,10 @@ jobs:
run: npm run build:windows
- name: Prepare Artifact
run: Compress-Archive -path ${{ github.workspace }}\build\windows\runner\Release\* ${{github.workspace}}\output\lunasea-windows-amd64.zip
run: Compress-Archive -path ${{ github.workspace }}\build\windows\x64\runner\Release\* ${{github.workspace}}\output\lunasea-windows-amd64.zip
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: windows-app-package
path: ${{ github.workspace }}/output
@@ -48,7 +48,7 @@ jobs:
--output-path=${{ github.workspace }}/output
- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: windows-msix-installer
path: ${{ github.workspace }}/output

View File

@@ -1,42 +0,0 @@
name: "GitHub Issue Labels"
on:
issues:
types: [labeled, unlabeled, reopened]
jobs:
support:
runs-on: ubuntu-latest
steps:
- name: Feature Request
uses: dessant/support-requests@v2
with:
github-token: ${{ github.token }}
support-label: "feature request"
issue-comment: >
Hi @{issue-author}! We use the issue tracker exclusively
for bug reports and issues. However, this issue appears
to be a feature request. Please use the [Discord](https://www.lunasea.app/discord)
to request new features.
close-issue: true
lock-issue: true
issue-lock-reason: "off-topic"
- name: Support
uses: dessant/support-requests@v2
with:
github-token: ${{ github.token }}
support-label: "support"
issue-comment: >
Hi @{issue-author}! We use the issue tracker exclusively
for bug reports and issues. However, this issue appears
to be a support request. Please use the following channels:
- [Discord](https://www.lunasea.app/discord)
- [GitHub Discussions](https://github.com/JagandeepBrar/lunasea/discussions)
- [Subreddit](https://www.lunasea.app/reddit)
close-issue: true
lock-issue: true
issue-lock-reason: "off-topic"

View File

@@ -1,65 +0,0 @@
name: Notify
on:
workflow_call:
inputs:
build-flavor:
required: true
type: string
build-title:
required: true
type: string
secrets:
DISCORD_WEBHOOK_EDGE:
required: true
DISCORD_WEBHOOK_BETA:
required: true
DISCORD_WEBHOOK_STABLE:
required: true
jobs:
discord:
name: Discord
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Determine Webhook Channel
id: webhook
uses: actions/github-script@v6
env:
DISCORD_WEBHOOK_EDGE: ${{ secrets.DISCORD_WEBHOOK_EDGE }}
DISCORD_WEBHOOK_BETA: ${{ secrets.DISCORD_WEBHOOK_BETA }}
DISCORD_WEBHOOK_STABLE: ${{ secrets.DISCORD_WEBHOOK_STABLE }}
BUILD_FLAVOR: ${{ inputs.build-flavor }}
with:
result-encoding: string
script: |
switch (process.env.BUILD_FLAVOR) {
case 'beta': return process.env.DISCORD_WEBHOOK_BETA;
case 'stable': return process.env.DISCORD_WEBHOOK_STABLE;
case 'edge':
default: return process.env.DISCORD_WEBHOOK_EDGE;
}
- name: Create Discord Embed
id: embed
uses: actions/github-script@v6
env:
BUILD_FLAVOR: ${{ inputs.build-flavor }}
BUILD_TITLE: ${{ inputs.build-title }}
with:
result-encoding: string
script: return require('.github/scripts/notify_discord_embed.js')();
- name: Send Discord Message
uses: Ilshidur/action-discord@0.3.2
env:
DISCORD_WEBHOOK: ${{ steps.webhook.outputs.result }}
DISCORD_USERNAME: LunaSea Support
DISCORD_AVATAR: https://raw.githubusercontent.com/JagandeepBrar/lunasea/master/assets/icon/icon.png
DISCORD_EMBEDS: ${{ steps.embed.outputs.result }}

View File

@@ -24,12 +24,6 @@ on:
description: "Build Version"
value: ${{ jobs.build-details.outputs.build-version }}
secrets:
FIREBASE_TOKEN:
required: true
SENTRY_DSN:
required: true
jobs:
build-details:
name: Build Details
@@ -123,7 +117,6 @@ jobs:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_build@master
with:
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
platform: test
skip-core: true
@@ -132,24 +125,19 @@ jobs:
export FLAVOR=${{ needs.build-details.outputs.build-flavor }}
export COMMIT=${{ github.sha }}
export BUILD=${{ needs.build-details.outputs.build-number }}
export SENTRY_DSN=${{ secrets.SENTRY_DSN }}
flutter packages pub run environment_config:generate
- name: Generate Localization
run: dart ${{github.workspace }}/scripts/generate_localization.dart
- name: Generate Changelog
run: dart ${{github.workspace }}/scripts/generate_changelog.dart ${{ needs.build-details.outputs.build-flavor }}
- name: Generate Build Runner Files
run: flutter packages pub run build_runner build
- name: Upload Core Files
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: core-files
path: |
${{ github.workspace }}/assets/changelog.json
${{ github.workspace }}/assets/localization
${{ github.workspace }}/lib/**/*.g.dart
${{ github.workspace }}/lib/system/environment.dart

View File

@@ -1,65 +0,0 @@
name: Publish Android
on:
workflow_call:
inputs:
build-flavor:
required: true
type: string
build-motd:
required: true
type: string
build-title:
required: true
type: string
secrets:
GOOGLE_PLAY_API:
required: true
jobs:
play-store:
name: Play Store
runs-on: ubuntu-latest
steps:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_deployment@master
with:
channel: play-store
google-play-key: ${{ secrets.GOOGLE_PLAY_API }}
- name: Download Play Store Package
uses: actions/download-artifact@v3
with:
name: android-playstore-package
path: ${{ github.workspace }}/output
- name: Determine Release Channel
id: channel
uses: actions/github-script@v6
env:
FLAVOR: ${{ inputs.build-flavor }}
with:
result-encoding: string
script: |
const ref = process.env.FLAVOR || 'edge';
switch (ref) {
case 'beta': return 'beta';
case 'stable': return 'production';
case 'edge':
default: return 'alpha';
}
- name: Generate Changelog
env:
MOTD: ${{ inputs.build-motd }}
OUTPUT_PATH: ${{ github.workspace }}/android/fastlane/metadata/android/en-CA/changelogs
run: |
mkdir -p $OUTPUT_PATH
echo $MOTD > $OUTPUT_PATH/default.txt
- name: Deploy to Google Play Store
working-directory: ${{ github.workspace }}/android
env:
SUPPLY_JSON_KEY: ${{ github.workspace }}/keys/googleplay.json
run: bundle exec fastlane deploy_playstore track:${{ steps.channel.outputs.result }} aab:${{ github.workspace }}/output/lunasea-android.aab version_name:${{ inputs.build-title }}

View File

@@ -1,61 +0,0 @@
name: Publish iOS
on:
workflow_call:
inputs:
build-flavor:
required: true
type: string
build-motd:
required: true
type: string
secrets:
APPLE_ID:
required: true
APPLE_ITC_TEAM_ID:
required: true
APPLE_STORE_CONNECT_ISSUER_ID:
required: true
APPLE_STORE_CONNECT_KEY:
required: true
APPLE_STORE_CONNECT_KEY_ID:
required: true
APPLE_TEAM_ID:
required: true
jobs:
app-store:
name: App Store (iOS)
runs-on: macos-latest
steps:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_deployment@master
with:
channel: app-store
appstore-connect-key: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
- name: Download App Store Package
uses: actions/download-artifact@v3
with:
name: ios-appstore-package
path: ${{ github.workspace }}/output
- name: Generate Changelog
env:
MOTD: ${{ inputs.build-motd }}
OUTPUT_PATH: ${{ github.workspace }}/ios/fastlane
run: |
mkdir -p $OUTPUT_PATH
echo $MOTD > $OUTPUT_PATH/changelog.txt
- name: Deploy to App Store Connect
working-directory: ${{ github.workspace }}/ios
env:
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
APPLE_STORE_CONNECT_KEY_FILEPATH: ${{ github.workspace }}/keys/appstore.p8
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
run: bundle exec fastlane deploy_appstore groups:${{ inputs.build-flavor }} ipa:${{ github.workspace }}/output/lunasea-ios.ipa

View File

@@ -1,36 +0,0 @@
name: Publish Linux
on:
workflow_call:
inputs:
build-flavor:
required: true
type: string
secrets:
SNAPCRAFT_STORE_CREDENTIALS:
required: true
jobs:
snapcraft:
name: Snapcraft
runs-on: ubuntu-latest
steps:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_deployment@master
with:
channel: snapcraft
- name: Download Snap
uses: actions/download-artifact@v3
with:
name: linux-snapcraft
path: ${{ github.workspace }}/output
- name: Deploy to Snapcraft
uses: snapcore/action-publish@master
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
with:
release: ${{ inputs.build-flavor }}
snap: ${{ github.workspace }}/output/lunasea-linux-amd64.snap

View File

@@ -1,61 +0,0 @@
name: Publish macOS
on:
workflow_call:
inputs:
build-flavor:
required: true
type: string
build-motd:
required: true
type: string
secrets:
APPLE_ID:
required: true
APPLE_ITC_TEAM_ID:
required: true
APPLE_STORE_CONNECT_ISSUER_ID:
required: true
APPLE_STORE_CONNECT_KEY:
required: true
APPLE_STORE_CONNECT_KEY_ID:
required: true
APPLE_TEAM_ID:
required: true
jobs:
app-store:
name: App Store (macOS)
runs-on: macos-latest
steps:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_deployment@master
with:
channel: app-store
appstore-connect-key: ${{ secrets.APPLE_STORE_CONNECT_KEY }}
- name: Download App Store Package
uses: actions/download-artifact@v3
with:
name: macos-appstore-package
path: ${{ github.workspace }}/output
- name: Generate Changelog
env:
MOTD: ${{ inputs.build-motd }}
OUTPUT_PATH: ${{ github.workspace }}/macos/fastlane
run: |
mkdir -p $OUTPUT_PATH
echo $MOTD > $OUTPUT_PATH/changelog.txt
- name: Deploy to App Store Connect
working-directory: ${{ github.workspace }}/macos
env:
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ITC_TEAM_ID: ${{ secrets.APPLE_ITC_TEAM_ID }}
APPLE_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_STORE_CONNECT_ISSUER_ID }}
APPLE_STORE_CONNECT_KEY_FILEPATH: ${{ github.workspace }}/keys/appstore.p8
APPLE_STORE_CONNECT_KEY_ID: ${{ secrets.APPLE_STORE_CONNECT_KEY_ID }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
run: bundle exec fastlane deploy_appstore groups:${{ inputs.build-flavor }} pkg:${{ github.workspace }}/output/lunasea-macos-amd64.pkg

View File

@@ -1,133 +0,0 @@
name: Publish S3
on:
workflow_call:
inputs:
build-flavor:
required: true
type: string
build-number:
required: true
type: string
build-title:
required: true
type: string
secrets:
S3_ACCESS_KEY:
required: true
S3_BUCKET:
required: true
S3_ENDPOINT:
required: true
S3_KEY_ID:
required: true
S3_REGION:
required: true
jobs:
s3:
name: S3
runs-on: ubuntu-latest
steps:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_deployment@master
with:
channel: s3
- name: Download Android App Package
uses: actions/download-artifact@v3
with:
name: android-app-package
path: ${{ github.workspace }}/output
- name: Download iOS App Package
uses: actions/download-artifact@v3
with:
name: ios-appstore-package
path: ${{ github.workspace }}/output
- name: Download Linux Debian
uses: actions/download-artifact@v3
with:
name: linux-debian
path: ${{ github.workspace }}/output
- name: Download Linux Tarball
uses: actions/download-artifact@v3
with:
name: linux-tarball
path: ${{ github.workspace }}/output
- name: Download Linux Snap
uses: actions/download-artifact@v3
with:
name: linux-snapcraft
path: ${{ github.workspace }}/output
- name: Download macOS App Package
uses: actions/download-artifact@v3
with:
name: macos-app-package
path: ${{ github.workspace }}/output
- name: Download macOS Disk Image
uses: actions/download-artifact@v3
with:
name: macos-disk-image
path: ${{ github.workspace }}/output
- name: Download Web Archive
uses: actions/download-artifact@v3
with:
name: web-archive
path: ${{ github.workspace }}/output
- name: Download Windows App Package
uses: actions/download-artifact@v3
with:
name: windows-app-package
path: ${{ github.workspace }}/output
- name: Download Windows MSIX Installer
uses: actions/download-artifact@v3
with:
name: windows-msix-installer
path: ${{ github.workspace }}/output
- name: Create Version File
working-directory: ${{ github.workspace }}/output
run: |
echo ${{ inputs.build-number }} > VERSION.txt
echo ${{ inputs.build-number }} > VERSION_ANDROID.txt
echo ${{ inputs.build-number }} > VERSION_IOS.txt
echo ${{ inputs.build-number }} > VERSION_LINUX.txt
echo ${{ inputs.build-number }} > VERSION_MACOS.txt
echo ${{ inputs.build-number }} > VERSION_WEB.txt
echo ${{ inputs.build-number }} > VERSION_WINDOWS.txt
- name: Upload to S3 Bucket (Build Title)
uses: jakejarvis/s3-sync-action@v0.5.1
with:
args: --acl public-read --follow-symlinks
env:
AWS_ACCESS_KEY_ID: ${{ secrets.S3_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }}
AWS_S3_BUCKET: ${{ secrets.S3_BUCKET }}
AWS_S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }}
AWS_REGION: ${{ secrets.S3_REGION }}
SOURCE_DIR: ${{ github.workspace }}/output
DEST_DIR: ${{ inputs.build-title }}
- name: Upload to S3 Bucket (Latest)
uses: jakejarvis/s3-sync-action@v0.5.1
with:
args: --acl public-read --follow-symlinks
env:
AWS_ACCESS_KEY_ID: ${{ secrets.S3_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }}
AWS_S3_BUCKET: ${{ secrets.S3_BUCKET }}
AWS_S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }}
AWS_REGION: ${{ secrets.S3_REGION }}
SOURCE_DIR: ${{ github.workspace }}/output
DEST_DIR: latest/${{ inputs.build-flavor }}

View File

@@ -1,57 +0,0 @@
name: Publish Web
on:
workflow_call:
inputs:
build-flavor:
required: true
type: string
build-title:
required: true
type: string
secrets:
NETLIFY_AUTH_TOKEN:
required: true
jobs:
netlify:
name: Netlify
runs-on: ubuntu-latest
steps:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_deployment@master
with:
channel: netlify
- name: Download Web Package
uses: actions/download-artifact@v3
with:
name: web-hosted
path: ${{ github.workspace }}/output
- name: Determine Release Channel
id: channel
uses: actions/github-script@v6
env:
FLAVOR: ${{ inputs.build-flavor }}
with:
result-encoding: string
script: |
const ref = process.env.FLAVOR || 'edge';
switch (ref) {
case 'beta': return '11ef2676-fc31-41b5-897b-fd21273d87ed';
case 'stable': return '6634f0b1-323c-4a2f-bd0b-8f1f388673a9';
case 'edge':
default: return '325e197e-55f4-449a-b2bb-6831fe47bf2a';
}
- name: Deploy to Netlify
uses: nwtgck/actions-netlify@v2.0
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ steps.channel.outputs.result }}
with:
publish-dir: ${{ github.workspace}}/output
production-deploy: true
deploy-message: ${{ inputs.build-title }}

View File

@@ -1,27 +0,0 @@
name: Validate
on:
workflow_call:
secrets:
FIREBASE_TOKEN:
required: true
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
steps:
- name: Setup Environment
uses: JagandeepBrar/lunasea/.github/actions/prepare_for_build@master
with:
firebase-token: ${{ secrets.FIREBASE_TOKEN }}
platform: test
- name: Analyze Release
uses: invertase/github-action-dart-analyzer@v1
with:
fatal-infos: false
fatal-warnings: true
- name: Test Release
run: flutter test

8
.gitignore vendored
View File

@@ -63,14 +63,6 @@ keys/
android/key.jks
android/key.properties
# Firebase
android/firebase_app_id_file.json
android/app/google-services.json
ios/firebase_app_id_file.json
ios/Runner/GoogleService-Info.plist
macos/firebase_app_id_file.json
macos/Runner/GoogleService-Info.plist
# Node Dependency directories
node_modules/
jspm_packages/

View File

@@ -2,309 +2,322 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
### [10.2.5](https://github.com/JagandeepBrar/lunasea/compare/v10.2.4...v10.2.5) (2023-07-03)
## [11.0.0](https://github.com/jagandeepbrar/lunasea/tree/v11.0.0) (2025-04-03)
**This is the final release of LunaSea.**
### Features
* **sonarr:** re-implementation of multi-select episode actions ([79d1388](https://github.com/JagandeepBrar/lunasea/commit/79d13889f2eb0668b1fbb4d29ea9b11b1d82d9bb))
* **web:** build multi-platform Docker image for amd64 and arm64 ([89b0906](https://github.com/JagandeepBrar/lunasea/commit/89b0906eab883bddb860583cc6e4bf86efd2b115))
### [10.2.6](https://github.com/jagandeepbrar/lunasea/compare/v10.2.5...v10.2.6) (2023-10-04)
### Bug Fixes
* **ios:** update App Store signing certificate ([b1a5139](https://github.com/JagandeepBrar/lunasea/commit/b1a513973d16a1a17cf0805da6cdd8e7929072c9))
* **search:** profile could not be changed on download prompt ([d81052d](https://github.com/JagandeepBrar/lunasea/commit/d81052d81783df6d93d9f41e2c543782299e7067))
* **sonarr:** remove duplicate episode file IDs on multi-select deletion ([335aaa3](https://github.com/JagandeepBrar/lunasea/commit/335aaa3acd7ff7645018e305639586a25411771c))
* **windows:** revert Firebase packages to maintain Windows support ([8e3c477](https://github.com/JagandeepBrar/lunasea/commit/8e3c477bf7d8a0fa47276ba5bb2096f07c6dc69d))
* **sonarr:** correctly sort missing content list in descending order ([ea0fe19](https://github.com/jagandeepbrar/lunasea/commit/ea0fe19efc0c0c8f1582c4a0507fb3d929ba561f))
* **sonarr:** correctly support Sonarr v4 season posters ([08228ef](https://github.com/jagandeepbrar/lunasea/commit/08228ef0f93cb3c298a8677019535ad7ec0c7a54))
* **ui:** upgrade to flash@3.0.5+1 ([55c417f](https://github.com/jagandeepbrar/lunasea/commit/55c417f7618e1e80a776c57203c5b4bbbacf99bc))
### [10.2.4](https://github.com/JagandeepBrar/lunasea/compare/v10.2.3...v10.2.4) (2023-04-09)
### [10.2.5](https://github.com/jagandeepbrar/lunasea/compare/v10.2.4...v10.2.5) (2023-07-03)
### Features
* **settings:** add direct link to documentation for service notifications ([0f4ac9a](https://github.com/JagandeepBrar/lunasea/commit/0f4ac9a893d5b13a732db49e0bfc7b09fe7c05d9))
* **settings:** replace all strings with localizable strings ([5ce1279](https://github.com/JagandeepBrar/lunasea/commit/5ce12795e7223a543bd037151b1a3eaa484f2634))
* **sonarr:** re-implementation of multi-select episode actions ([79d1388](https://github.com/jagandeepbrar/lunasea/commit/79d13889f2eb0668b1fbb4d29ea9b11b1d82d9bb))
* **web:** build multi-platform Docker image for amd64 and arm64 ([89b0906](https://github.com/jagandeepbrar/lunasea/commit/89b0906eab883bddb860583cc6e4bf86efd2b115))
### Bug Fixes
* **images:** utilize new technique to persistently cache images ([f1a82c0](https://github.com/JagandeepBrar/lunasea/commit/f1a82c06aa58fe493af2b2b0bf9ef8a93011802b))
* **routing:** handle pushing route which may return data ([3500d83](https://github.com/JagandeepBrar/lunasea/commit/3500d83477880b8ee490132bc270e632af4a4bb1))
* **uiux:** remove fading edge on horizontal scrollviews ([781727a](https://github.com/JagandeepBrar/lunasea/commit/781727abbab0dc70d959c723c3d101e66430ac60))
* **ios:** update App Store signing certificate ([b1a5139](https://github.com/jagandeepbrar/lunasea/commit/b1a513973d16a1a17cf0805da6cdd8e7929072c9))
* **search:** profile could not be changed on download prompt ([d81052d](https://github.com/jagandeepbrar/lunasea/commit/d81052d81783df6d93d9f41e2c543782299e7067))
* **sonarr:** remove duplicate episode file IDs on multi-select deletion ([335aaa3](https://github.com/jagandeepbrar/lunasea/commit/335aaa3acd7ff7645018e305639586a25411771c))
* **windows:** revert Firebase packages to maintain Windows support ([8e3c477](https://github.com/jagandeepbrar/lunasea/commit/8e3c477bf7d8a0fa47276ba5bb2096f07c6dc69d))
### [10.2.4](https://github.com/jagandeepbrar/lunasea/compare/v10.2.3...v10.2.4) (2023-04-09)
### Features
* **settings:** add direct link to documentation for service notifications ([0f4ac9a](https://github.com/jagandeepbrar/lunasea/commit/0f4ac9a893d5b13a732db49e0bfc7b09fe7c05d9))
* **settings:** replace all strings with localizable strings ([5ce1279](https://github.com/jagandeepbrar/lunasea/commit/5ce12795e7223a543bd037151b1a3eaa484f2634))
### Bug Fixes
* **images:** utilize new technique to persistently cache images ([f1a82c0](https://github.com/jagandeepbrar/lunasea/commit/f1a82c06aa58fe493af2b2b0bf9ef8a93011802b))
* **routing:** handle pushing route which may return data ([3500d83](https://github.com/jagandeepbrar/lunasea/commit/3500d83477880b8ee490132bc270e632af4a4bb1))
* **uiux:** remove fading edge on horizontal scrollviews ([781727a](https://github.com/jagandeepbrar/lunasea/commit/781727abbab0dc70d959c723c3d101e66430ac60))
### Tweaks
* **flavors:** remove candidate flavor and merge with beta ([fe3d41a](https://github.com/JagandeepBrar/lunasea/commit/fe3d41af57717b994e71370968404fc05f20f72b))
* remove cupertino_icons and email_validator packages ([605002f](https://github.com/JagandeepBrar/lunasea/commit/605002f5bd4b015791d3d1f260e03b4127c5020d))
* remove riverpod state management ([2f94c42](https://github.com/JagandeepBrar/lunasea/commit/2f94c42da1a97847be4a77e79d096eb0212a9657))
* **flavors:** remove candidate flavor and merge with beta ([fe3d41a](https://github.com/jagandeepbrar/lunasea/commit/fe3d41af57717b994e71370968404fc05f20f72b))
* remove cupertino_icons and email_validator packages ([605002f](https://github.com/jagandeepbrar/lunasea/commit/605002f5bd4b015791d3d1f260e03b4127c5020d))
* remove riverpod state management ([2f94c42](https://github.com/jagandeepbrar/lunasea/commit/2f94c42da1a97847be4a77e79d096eb0212a9657))
### [10.2.3](https://github.com/JagandeepBrar/lunasea/compare/v10.2.2...v10.2.3) (2023-03-22)
### [10.2.3](https://github.com/jagandeepbrar/lunasea/compare/v10.2.2...v10.2.3) (2023-03-22)
### Features
* **flutter:** replace Skia with Impeller rendering engine ([6241ee4](https://github.com/JagandeepBrar/lunasea/commit/6241ee462989f1f65fa8f1e18378579e2e77197b))
* **flutter:** upgrade to Flutter 3.7/b06b8b2710 ([f1b831a](https://github.com/JagandeepBrar/lunasea/commit/f1b831a118e56c480aae72042ee4eb7013f954b2))
* **tautulli:** add ability to open media in Plex ([5cf1a06](https://github.com/JagandeepBrar/lunasea/commit/5cf1a06cec079aa66c77425c0ed8d4fa7897bbd3))
* **tautulli:** display audio language, subtitle language, and video dynamic range for activity ([6de8063](https://github.com/JagandeepBrar/lunasea/commit/6de806316efaa61c5ddbac1b8f5b214949f0bcf8))
* **flutter:** replace Skia with Impeller rendering engine ([6241ee4](https://github.com/jagandeepbrar/lunasea/commit/6241ee462989f1f65fa8f1e18378579e2e77197b))
* **flutter:** upgrade to Flutter 3.7/b06b8b2710 ([f1b831a](https://github.com/jagandeepbrar/lunasea/commit/f1b831a118e56c480aae72042ee4eb7013f954b2))
* **tautulli:** add ability to open media in Plex ([5cf1a06](https://github.com/jagandeepbrar/lunasea/commit/5cf1a06cec079aa66c77425c0ed8d4fa7897bbd3))
* **tautulli:** display audio language, subtitle language, and video dynamic range for activity ([6de8063](https://github.com/jagandeepbrar/lunasea/commit/6de806316efaa61c5ddbac1b8f5b214949f0bcf8))
### Bug Fixes
* **http:** correctly set content type for POST requests ([aca5d0e](https://github.com/JagandeepBrar/lunasea/commit/aca5d0eb826b38ebeec33e3495045bf21e8a49c7))
* **links:** use platform default method to laucnh URLs ([596eab4](https://github.com/JagandeepBrar/lunasea/commit/596eab4bad1aa183e3c0dfc8d20a32c15ecdb78d))
* **macos:** set minimum platform version to 10.15 ([d612ae2](https://github.com/JagandeepBrar/lunasea/commit/d612ae221cac741b3a36893d4bc7f05f5055c7b8))
* **uiux:** update bottom modal sheet package to support Flutter 3.7 ([8042c04](https://github.com/JagandeepBrar/lunasea/commit/8042c0475ecff05d9337842eef7cfe4117d05528))
* **http:** correctly set content type for POST requests ([aca5d0e](https://github.com/jagandeepbrar/lunasea/commit/aca5d0eb826b38ebeec33e3495045bf21e8a49c7))
* **links:** use platform default method to laucnh URLs ([596eab4](https://github.com/jagandeepbrar/lunasea/commit/596eab4bad1aa183e3c0dfc8d20a32c15ecdb78d))
* **macos:** set minimum platform version to 10.15 ([d612ae2](https://github.com/jagandeepbrar/lunasea/commit/d612ae221cac741b3a36893d4bc7f05f5055c7b8))
* **uiux:** update bottom modal sheet package to support Flutter 3.7 ([8042c04](https://github.com/jagandeepbrar/lunasea/commit/8042c0475ecff05d9337842eef7cfe4117d05528))
### [10.2.2](https://github.com/JagandeepBrar/lunasea/compare/v10.2.1...v10.2.2) (2022-12-22)
### [10.2.2](https://github.com/jagandeepbrar/lunasea/compare/v10.2.1...v10.2.2) (2022-12-22)
### Features
* **android:** add option to disable back action to open drawer ([d4774b0](https://github.com/JagandeepBrar/lunasea/commit/d4774b054204546490ef9f78090e28303eefc1fc))
* **linux:** include MD5 sums in Debian distributions ([c46924c](https://github.com/JagandeepBrar/lunasea/commit/c46924c99645a2d9c27e2d3532d30ecf93882e2a))
* **linux:** publish Linux builds as Debian archive (.deb) ([b1d01e0](https://github.com/JagandeepBrar/lunasea/commit/b1d01e02ca4cdb8a2775700930ada2d1d40a1031))
* **linux:** publish Linux builds as tarball (.tar.gz) ([a390a80](https://github.com/JagandeepBrar/lunasea/commit/a390a80ef1897d4c95812045a3472527ff38fd49))
* **android:** add option to disable back action to open drawer ([d4774b0](https://github.com/jagandeepbrar/lunasea/commit/d4774b054204546490ef9f78090e28303eefc1fc))
* **linux:** include MD5 sums in Debian distributions ([c46924c](https://github.com/jagandeepbrar/lunasea/commit/c46924c99645a2d9c27e2d3532d30ecf93882e2a))
* **linux:** publish Linux builds as Debian archive (.deb) ([b1d01e0](https://github.com/jagandeepbrar/lunasea/commit/b1d01e02ca4cdb8a2775700930ada2d1d40a1031))
* **linux:** publish Linux builds as tarball (.tar.gz) ([a390a80](https://github.com/jagandeepbrar/lunasea/commit/a390a80ef1897d4c95812045a3472527ff38fd49))
### Bug Fixes
* **calendar:** scroll to last past date with content when selected date has no content ([3f10675](https://github.com/JagandeepBrar/lunasea/commit/3f10675422b9a32c43f4f49c16b6e9723f267f50))
* **linux:** install binaries to /usr/share instead of /usr/local/lib ([edb645f](https://github.com/JagandeepBrar/lunasea/commit/edb645f8871d8f3a59c122191e8d8219e9957924))
* **tautulli:** cached or downloaded activity sessions could not be opened ([4c99ecf](https://github.com/JagandeepBrar/lunasea/commit/4c99ecf927e21538f875bb7ee93fc7aaf20de479))
* **calendar:** scroll to last past date with content when selected date has no content ([3f10675](https://github.com/jagandeepbrar/lunasea/commit/3f10675422b9a32c43f4f49c16b6e9723f267f50))
* **linux:** install binaries to /usr/share instead of /usr/local/lib ([edb645f](https://github.com/jagandeepbrar/lunasea/commit/edb645f8871d8f3a59c122191e8d8219e9957924))
* **tautulli:** cached or downloaded activity sessions could not be opened ([4c99ecf](https://github.com/jagandeepbrar/lunasea/commit/4c99ecf927e21538f875bb7ee93fc7aaf20de479))
### Tweaks
* **uiux:** disable horizontal swiping/scrolling between pages ([968fe9c](https://github.com/JagandeepBrar/lunasea/commit/968fe9cbbc4aff3ae584682e462defbf09ea5699))
* **uiux:** disable horizontal swiping/scrolling between pages ([968fe9c](https://github.com/jagandeepbrar/lunasea/commit/968fe9cbbc4aff3ae584682e462defbf09ea5699))
### [10.2.1](https://github.com/JagandeepBrar/lunasea/compare/v10.2.0...v10.2.1) (2022-11-06)
### [10.2.1](https://github.com/jagandeepbrar/lunasea/compare/v10.2.0...v10.2.1) (2022-11-06)
### Features
* **-arr:** button to open indexer information page ([bccd1a4](https://github.com/JagandeepBrar/lunasea/commit/bccd1a43c42b349901137f8fc605f393b51d541a))
* **calendar:** remove option to show previous days in schedule view, now always shows them ([3ac2c5d](https://github.com/JagandeepBrar/lunasea/commit/3ac2c5d791f94208a4004d161bb046c24b698345))
* **calendar:** scroll to selected date when switching from calendar to schedule view ([f1226e5](https://github.com/JagandeepBrar/lunasea/commit/f1226e563899cfc0950865a9734448d4e00601b9))
* launch recovery mode on bootstrap failure ([c062b3d](https://github.com/JagandeepBrar/lunasea/commit/c062b3d786e55bc3ba7fe767dd946d73efbef64f))
* **lidarr:** add MusicBrainz to links ([c76418d](https://github.com/JagandeepBrar/lunasea/commit/c76418d26f1a5f52f5cb1e46951f1cf6726508c2))
* **modules:** ability to set the boot module ([3dd087e](https://github.com/JagandeepBrar/lunasea/commit/3dd087e361619889057a0b037b1eef35157a0988))
* **radarr:** support moving files when editing the storage path ([c9bd02b](https://github.com/JagandeepBrar/lunasea/commit/c9bd02b75086579f60ad8987c42ab217c12f6d43))
* **web:** support local filesystem read/save actions ([7d437d5](https://github.com/JagandeepBrar/lunasea/commit/7d437d5c3a34a8681c372570fc366e869f0b2090))
* **-arr:** button to open indexer information page ([bccd1a4](https://github.com/jagandeepbrar/lunasea/commit/bccd1a43c42b349901137f8fc605f393b51d541a))
* **calendar:** remove option to show previous days in schedule view, now always shows them ([3ac2c5d](https://github.com/jagandeepbrar/lunasea/commit/3ac2c5d791f94208a4004d161bb046c24b698345))
* **calendar:** scroll to selected date when switching from calendar to schedule view ([f1226e5](https://github.com/jagandeepbrar/lunasea/commit/f1226e563899cfc0950865a9734448d4e00601b9))
* launch recovery mode on bootstrap failure ([c062b3d](https://github.com/jagandeepbrar/lunasea/commit/c062b3d786e55bc3ba7fe767dd946d73efbef64f))
* **lidarr:** add MusicBrainz to links ([c76418d](https://github.com/jagandeepbrar/lunasea/commit/c76418d26f1a5f52f5cb1e46951f1cf6726508c2))
* **modules:** ability to set the boot module ([3dd087e](https://github.com/jagandeepbrar/lunasea/commit/3dd087e361619889057a0b037b1eef35157a0988))
* **radarr:** support moving files when editing the storage path ([c9bd02b](https://github.com/jagandeepbrar/lunasea/commit/c9bd02b75086579f60ad8987c42ab217c12f6d43))
* **web:** support local filesystem read/save actions ([7d437d5](https://github.com/jagandeepbrar/lunasea/commit/7d437d5c3a34a8681c372570fc366e869f0b2090))
### Bug Fixes
* **android:** apply Google Play Services plugin during gradle build ([71f597b](https://github.com/JagandeepBrar/lunasea/commit/71f597baa7c23102b711c3ca3c1ea5b2f8e1f5e9))
* **android:** revert applying Google Play Services plugin during gradle build ([250a494](https://github.com/JagandeepBrar/lunasea/commit/250a49490333f4de726226dc4aa15a681f32a70c))
* **android:** support Android 13 filesystem access ([25e0d05](https://github.com/JagandeepBrar/lunasea/commit/25e0d051422b399de8c90e0fc71e57349e3355b7))
* **android:** utilize Kotlin v1.7.20 & Gradle v7.1.2 ([b7ceebc](https://github.com/JagandeepBrar/lunasea/commit/b7ceebcb679dbca935b6a1810c0c67a14002e358))
* **backup:** edge-case where backup/restore would fail ([f3931c6](https://github.com/JagandeepBrar/lunasea/commit/f3931c6b08025a70920039e5cbbc9cf7120c0b36))
* **calendar:** label unreleased movies as unreleased instead of missing ([70ed750](https://github.com/JagandeepBrar/lunasea/commit/70ed750652ff419e6fed659a0785adc5064654e7))
* **calendar:** start to current date when past days are enabled ([6eff6c9](https://github.com/JagandeepBrar/lunasea/commit/6eff6c902cd7bcd523d83be09034098234679a79))
* **firebase:** inject service file for older OS versions ([38f2eb4](https://github.com/JagandeepBrar/lunasea/commit/38f2eb4cb2a8e400ce2ecb0b6f2854469c9626fc))
* **firebase:** upgrade to Firebase v10 ([#717](https://github.com/JagandeepBrar/lunasea/issues/717)) ([f3a3f22](https://github.com/JagandeepBrar/lunasea/commit/f3a3f222bd56beb4e961817b18d71f01fb7c5e81))
* **uiux:** add circular radius to linear progression bars ([d9623e9](https://github.com/JagandeepBrar/lunasea/commit/d9623e992d2ac2039eaa4f069c739d968c921cc6))
* **android:** apply Google Play Services plugin during gradle build ([71f597b](https://github.com/jagandeepbrar/lunasea/commit/71f597baa7c23102b711c3ca3c1ea5b2f8e1f5e9))
* **android:** revert applying Google Play Services plugin during gradle build ([250a494](https://github.com/jagandeepbrar/lunasea/commit/250a49490333f4de726226dc4aa15a681f32a70c))
* **android:** support Android 13 filesystem access ([25e0d05](https://github.com/jagandeepbrar/lunasea/commit/25e0d051422b399de8c90e0fc71e57349e3355b7))
* **android:** utilize Kotlin v1.7.20 & Gradle v7.1.2 ([b7ceebc](https://github.com/jagandeepbrar/lunasea/commit/b7ceebcb679dbca935b6a1810c0c67a14002e358))
* **backup:** edge-case where backup/restore would fail ([f3931c6](https://github.com/jagandeepbrar/lunasea/commit/f3931c6b08025a70920039e5cbbc9cf7120c0b36))
* **calendar:** label unreleased movies as unreleased instead of missing ([70ed750](https://github.com/jagandeepbrar/lunasea/commit/70ed750652ff419e6fed659a0785adc5064654e7))
* **calendar:** start to current date when past days are enabled ([6eff6c9](https://github.com/jagandeepbrar/lunasea/commit/6eff6c902cd7bcd523d83be09034098234679a79))
* **firebase:** inject service file for older OS versions ([38f2eb4](https://github.com/jagandeepbrar/lunasea/commit/38f2eb4cb2a8e400ce2ecb0b6f2854469c9626fc))
* **firebase:** upgrade to Firebase v10 ([#717](https://github.com/jagandeepbrar/lunasea/issues/717)) ([f3a3f22](https://github.com/jagandeepbrar/lunasea/commit/f3a3f222bd56beb4e961817b18d71f01fb7c5e81))
* **uiux:** add circular radius to linear progression bars ([d9623e9](https://github.com/jagandeepbrar/lunasea/commit/d9623e992d2ac2039eaa4f069c739d968c921cc6))
### Tweaks
* **settings:** consolidate appearance, network, and localization pages ([ac838f9](https://github.com/JagandeepBrar/lunasea/commit/ac838f99a9c839ce4e36e5eae80f1100e2787dc5))
* **uiux:** remove forced-upper case on headers ([958e6f1](https://github.com/JagandeepBrar/lunasea/commit/958e6f156862c1092399649baa361cd955299c88))
* **settings:** consolidate appearance, network, and localization pages ([ac838f9](https://github.com/jagandeepbrar/lunasea/commit/ac838f99a9c839ce4e36e5eae80f1100e2787dc5))
* **uiux:** remove forced-upper case on headers ([958e6f1](https://github.com/jagandeepbrar/lunasea/commit/958e6f156862c1092399649baa361cd955299c88))
## [10.2.0](https://github.com/JagandeepBrar/lunasea/compare/v10.1.1...v10.2.0) (2022-09-22)
## [10.2.0](https://github.com/jagandeepbrar/lunasea/compare/v10.1.1...v10.2.0) (2022-09-22)
### Features
* **-arr:** view download client queue via overlay sheet ([0c59886](https://github.com/JagandeepBrar/lunasea/commit/0c59886657db0ed05a9d741c82689cb1272c6ad2))
* **android:** add support for monochromatic adaptive icon ([#701](https://github.com/JagandeepBrar/lunasea/issues/701)) ([96b2b1b](https://github.com/JagandeepBrar/lunasea/commit/96b2b1b5b010507dd7ece3421bf02eac6ba32486))
* **locale:** support Croatian ([a160f09](https://github.com/JagandeepBrar/lunasea/commit/a160f0941f2e0c86d2e2fab5e01a577ceba2a8f3))
* **logging:** integrate Sentry logging support for all platforms ([57bbb80](https://github.com/JagandeepBrar/lunasea/commit/57bbb80a0188d3bed9ca70846a89df6a3c2c0953))
* **logo:** add Vectorized app logos ([113b294](https://github.com/JagandeepBrar/lunasea/commit/113b2943469464598ce07b931818c7e29c6cc63a))
* **router:** re-implementation of routing via go_router ([1d4207a](https://github.com/JagandeepBrar/lunasea/commit/1d4207ae5106c2a0648b77a3b3ef6508665561e8))
* **sabnzbd:** rewrite SABnzbd API interface ([a1b736a](https://github.com/JagandeepBrar/lunasea/commit/a1b736ae0c9bf754d913e86c69d15c27f256c413))
* **search:** view download client queue via overlay sheet ([a6be658](https://github.com/JagandeepBrar/lunasea/commit/a6be658164fed7dd2411a167dec6b4c53eab70f0))
* **settings:** re-add option to disable Sentry logging ([3d0c520](https://github.com/JagandeepBrar/lunasea/commit/3d0c5209cb3e796629817dee986634154e7ffe9e))
* **web:** enable service worker processing of notifications ([4b41110](https://github.com/JagandeepBrar/lunasea/commit/4b411107f74f048e6f3d571845590a5d29720ac3))
* **-arr:** view download client queue via overlay sheet ([0c59886](https://github.com/jagandeepbrar/lunasea/commit/0c59886657db0ed05a9d741c82689cb1272c6ad2))
* **android:** add support for monochromatic adaptive icon ([#701](https://github.com/jagandeepbrar/lunasea/issues/701)) ([96b2b1b](https://github.com/jagandeepbrar/lunasea/commit/96b2b1b5b010507dd7ece3421bf02eac6ba32486))
* **locale:** support Croatian ([a160f09](https://github.com/jagandeepbrar/lunasea/commit/a160f0941f2e0c86d2e2fab5e01a577ceba2a8f3))
* **logging:** integrate Sentry logging support for all platforms ([57bbb80](https://github.com/jagandeepbrar/lunasea/commit/57bbb80a0188d3bed9ca70846a89df6a3c2c0953))
* **logo:** add Vectorized app logos ([113b294](https://github.com/jagandeepbrar/lunasea/commit/113b2943469464598ce07b931818c7e29c6cc63a))
* **router:** re-implementation of routing via go_router ([1d4207a](https://github.com/jagandeepbrar/lunasea/commit/1d4207ae5106c2a0648b77a3b3ef6508665561e8))
* **sabnzbd:** rewrite SABnzbd API interface ([a1b736a](https://github.com/jagandeepbrar/lunasea/commit/a1b736ae0c9bf754d913e86c69d15c27f256c413))
* **search:** view download client queue via overlay sheet ([a6be658](https://github.com/jagandeepbrar/lunasea/commit/a6be658164fed7dd2411a167dec6b4c53eab70f0))
* **settings:** re-add option to disable Sentry logging ([3d0c520](https://github.com/jagandeepbrar/lunasea/commit/3d0c5209cb3e796629817dee986634154e7ffe9e))
* **web:** enable service worker processing of notifications ([4b41110](https://github.com/jagandeepbrar/lunasea/commit/4b411107f74f048e6f3d571845590a5d29720ac3))
### Bug Fixes
* **android:** support Android 13 notification prompt ([83e8374](https://github.com/JagandeepBrar/lunasea/commit/83e8374c33977c82096fcf8d5a4d94da5c291f8f))
* **cache:** add type-safety to LRU cache ([7aae480](https://github.com/JagandeepBrar/lunasea/commit/7aae4807221184dbe1d02454f73998a0458dd7f6))
* **database:** prevent deadlock in database deletion actions ([9960124](https://github.com/JagandeepBrar/lunasea/commit/9960124d3219e2ab72e14443a1a79a1bac6b2cd3))
* **graphs:** support fl_chart@0.55.1 ([b812c7b](https://github.com/JagandeepBrar/lunasea/commit/b812c7b4a12b4766e04b5d4023b45320e6b7927c))
* **images:** validate image availability before fading-in ([6f9e0e8](https://github.com/JagandeepBrar/lunasea/commit/6f9e0e87ce3d02dfff7dec439a2e975585c5b986))
* **notifications:** correctly inject service worker for notification handling ([82ef5f0](https://github.com/JagandeepBrar/lunasea/commit/82ef5f0c529a9e30475f86f496fa63c18785e87c))
* **notifications:** enable in-app notifications config was inversed ([3593eb3](https://github.com/JagandeepBrar/lunasea/commit/3593eb329b38fb4a5b776cf1b165ad6f463e371b))
* **resources:** remove feedback board resource ([d3d090e](https://github.com/JagandeepBrar/lunasea/commit/d3d090e277f7dda7d4ef3d7808e7341cf79178fe))
* **scrolling:** remove custom scrolling behaviour ([864082f](https://github.com/JagandeepBrar/lunasea/commit/864082fd4045ef7dea0e0ab6a17d41ca86015fcb))
* **settings:** show notification settings area on web ([136cda5](https://github.com/JagandeepBrar/lunasea/commit/136cda5215ae1d44dcd898e8e8e0b1e1912b3a41))
* **sheets:** set default overlay theme for sheets, remove bottom radius clipping ([3a5e19b](https://github.com/JagandeepBrar/lunasea/commit/3a5e19b02c048df21bd169a0a06f1e9ae741debb))
* **sonarr:** support Sonarr v4 API changes ([e477eca](https://github.com/JagandeepBrar/lunasea/commit/e477ecafcce268d7de112f33711fc02a089a4206))
* **web:** correctly register notification service worker ([579531c](https://github.com/JagandeepBrar/lunasea/commit/579531c30a17e2c8d53d011dbecf710f42598ec8))
* **android:** support Android 13 notification prompt ([83e8374](https://github.com/jagandeepbrar/lunasea/commit/83e8374c33977c82096fcf8d5a4d94da5c291f8f))
* **cache:** add type-safety to LRU cache ([7aae480](https://github.com/jagandeepbrar/lunasea/commit/7aae4807221184dbe1d02454f73998a0458dd7f6))
* **database:** prevent deadlock in database deletion actions ([9960124](https://github.com/jagandeepbrar/lunasea/commit/9960124d3219e2ab72e14443a1a79a1bac6b2cd3))
* **graphs:** support fl_chart@0.55.1 ([b812c7b](https://github.com/jagandeepbrar/lunasea/commit/b812c7b4a12b4766e04b5d4023b45320e6b7927c))
* **images:** validate image availability before fading-in ([6f9e0e8](https://github.com/jagandeepbrar/lunasea/commit/6f9e0e87ce3d02dfff7dec439a2e975585c5b986))
* **notifications:** correctly inject service worker for notification handling ([82ef5f0](https://github.com/jagandeepbrar/lunasea/commit/82ef5f0c529a9e30475f86f496fa63c18785e87c))
* **notifications:** enable in-app notifications config was inversed ([3593eb3](https://github.com/jagandeepbrar/lunasea/commit/3593eb329b38fb4a5b776cf1b165ad6f463e371b))
* **resources:** remove feedback board resource ([d3d090e](https://github.com/jagandeepbrar/lunasea/commit/d3d090e277f7dda7d4ef3d7808e7341cf79178fe))
* **scrolling:** remove custom scrolling behaviour ([864082f](https://github.com/jagandeepbrar/lunasea/commit/864082fd4045ef7dea0e0ab6a17d41ca86015fcb))
* **settings:** show notification settings area on web ([136cda5](https://github.com/jagandeepbrar/lunasea/commit/136cda5215ae1d44dcd898e8e8e0b1e1912b3a41))
* **sheets:** set default overlay theme for sheets, remove bottom radius clipping ([3a5e19b](https://github.com/jagandeepbrar/lunasea/commit/3a5e19b02c048df21bd169a0a06f1e9ae741debb))
* **sonarr:** support Sonarr v4 API changes ([e477eca](https://github.com/jagandeepbrar/lunasea/commit/e477ecafcce268d7de112f33711fc02a089a4206))
* **web:** correctly register notification service worker ([579531c](https://github.com/jagandeepbrar/lunasea/commit/579531c30a17e2c8d53d011dbecf710f42598ec8))
### Tweaks
* **remove logos:** removes unused logo pngs ([2adfe59](https://github.com/JagandeepBrar/lunasea/commit/2adfe59bd5cd289beb7f7c703fe26397310dbc90))
* **remove logos:** removes unused logo pngs ([2adfe59](https://github.com/jagandeepbrar/lunasea/commit/2adfe59bd5cd289beb7f7c703fe26397310dbc90))
### [10.1.1](https://github.com/JagandeepBrar/lunasea/compare/v10.1.0...v10.1.1) (2022-08-21)
### [10.1.1](https://github.com/jagandeepbrar/lunasea/compare/v10.1.0...v10.1.1) (2022-08-21)
### Features
* **changelog:** do not show changelog on first boot of new installs ([52fd7fc](https://github.com/JagandeepBrar/lunasea/commit/52fd7fca0c5076b4b98458d449a4b1f581726a52))
* **changelog:** do not show changelog on first boot of new installs ([52fd7fc](https://github.com/jagandeepbrar/lunasea/commit/52fd7fca0c5076b4b98458d449a4b1f581726a52))
### Bug Fixes
* **config:** log restoration error after resetting the database to default ([b02fe81](https://github.com/JagandeepBrar/lunasea/commit/b02fe81df697066be6172a7d423768490639593e))
* **indexer:** remove LunaIndexerIcon from model definition ([cf3d9bb](https://github.com/JagandeepBrar/lunasea/commit/cf3d9bbc17cd67f0c5e8be22b9450563046a2127))
* **config:** log restoration error after resetting the database to default ([b02fe81](https://github.com/jagandeepbrar/lunasea/commit/b02fe81df697066be6172a7d423768490639593e))
* **indexer:** remove LunaIndexerIcon from model definition ([cf3d9bb](https://github.com/jagandeepbrar/lunasea/commit/cf3d9bbc17cd67f0c5e8be22b9450563046a2127))
## [10.1.0](https://github.com/JagandeepBrar/lunasea/compare/v10.0.3...v10.1.0) (2022-08-21)
## [10.1.0](https://github.com/jagandeepbrar/lunasea/compare/v10.0.3...v10.1.0) (2022-08-21)
### Features
* **calendar:** show current month in header ([925f163](https://github.com/JagandeepBrar/lunasea/commit/925f163e1534aeb45e5b22e8254eaf391eabd79f))
* **changelog:** prepare and show changelog on pre-release builds ([df65f53](https://github.com/JagandeepBrar/lunasea/commit/df65f53a4b00d11abc998f681274d22d94254f14))
* **locale:** support Vietnamese (vi) ([8b57450](https://github.com/JagandeepBrar/lunasea/commit/8b5745044e3af64a6c9bc593a9877400ac8a2dc2))
* **calendar:** show current month in header ([925f163](https://github.com/jagandeepbrar/lunasea/commit/925f163e1534aeb45e5b22e8254eaf391eabd79f))
* **changelog:** prepare and show changelog on pre-release builds ([df65f53](https://github.com/jagandeepbrar/lunasea/commit/df65f53a4b00d11abc998f681274d22d94254f14))
* **locale:** support Vietnamese (vi) ([8b57450](https://github.com/jagandeepbrar/lunasea/commit/8b5745044e3af64a6c9bc593a9877400ac8a2dc2))
### Bug Fixes
* **android:** correctly handle back-button to open drawer on applicable routes ([c91ba2c](https://github.com/JagandeepBrar/lunasea/commit/c91ba2ce8134fdc796d0431ba1c9134908fddd91))
* **changelog:** group changelog item rows by key feature change ([2ababbd](https://github.com/JagandeepBrar/lunasea/commit/2ababbd1b32abd153fa73fcdfe292c7791edbf52))
* **ci:** utilize latest standard for Snapcraft login ([aff6e2c](https://github.com/JagandeepBrar/lunasea/commit/aff6e2ca184e9539f28dd326c06478ca2dbfee4c))
* **database:** correctly store manually ordered module list ([8fe81d1](https://github.com/JagandeepBrar/lunasea/commit/8fe81d11ab5c5aa484f0c2b471932d5364e6209c))
* **database:** detect and recover from database corruption ([758756f](https://github.com/JagandeepBrar/lunasea/commit/758756fcf2456996c7ee02be2bd523cca91c45d3))
* **database:** fallback to defaults on null values in profile ([fb3e8e5](https://github.com/JagandeepBrar/lunasea/commit/fb3e8e53255c457d0922505ad6c2d91f5c0fcf03))
* **database:** safely type indexer fields and headers ([f1dcd0c](https://github.com/JagandeepBrar/lunasea/commit/f1dcd0c36d558882bfbc7f4465ed56fac0743c55))
* **database:** utilize stricter typing for module headers map ([d4d9816](https://github.com/JagandeepBrar/lunasea/commit/d4d9816c945b1930ecfda0382d809a7c67839a26))
* **database:** validate enabled profile exists on restore ([d8506ee](https://github.com/JagandeepBrar/lunasea/commit/d8506ee2834ca6a83394c11f6d4d329f03a3647f))
* display 0-length timestamps as "0 Minutes" instead of "Under a Minute" ([e05b17a](https://github.com/JagandeepBrar/lunasea/commit/e05b17ae5ed35cec85ade5b910b82869cb7ad3f2))
* **lidarr:** (history) sort list by date descending ([ad22820](https://github.com/JagandeepBrar/lunasea/commit/ad22820d6662371d3d2bc7fbf596f86619002d20))
* **lists:** reorderable lists could not be reordered on some platforms ([95a645c](https://github.com/JagandeepBrar/lunasea/commit/95a645c06cf2a76231c4b8dbea87ec593961c205))
* **locale:** create stub primary language localization assets ([18ef4cf](https://github.com/JagandeepBrar/lunasea/commit/18ef4cf1d4032a3f9db54b5da56158ffaf9b50c8))
* **overseerr:** issues/requests list view translation keys ([136b92b](https://github.com/JagandeepBrar/lunasea/commit/136b92b8a7bdd5cd0ec2322444443d054df6daed))
* **radarr:** (queue) allow loading queue list when associated movie is not found ([22bf728](https://github.com/JagandeepBrar/lunasea/commit/22bf728a3dab6b7d76c7674cb4d97dc73e849201))
* **sonarr:** fanart image requests not including headers ([b5bb300](https://github.com/JagandeepBrar/lunasea/commit/b5bb300046431d8c1c26fd8ac4a26c42444f4f53))
* **sonarr:** invalid linking to theTVDB content ([80678a7](https://github.com/JagandeepBrar/lunasea/commit/80678a75bb871a4835d1c73934e043564d80b6b0))
* **android:** correctly handle back-button to open drawer on applicable routes ([c91ba2c](https://github.com/jagandeepbrar/lunasea/commit/c91ba2ce8134fdc796d0431ba1c9134908fddd91))
* **changelog:** group changelog item rows by key feature change ([2ababbd](https://github.com/jagandeepbrar/lunasea/commit/2ababbd1b32abd153fa73fcdfe292c7791edbf52))
* **ci:** utilize latest standard for Snapcraft login ([aff6e2c](https://github.com/jagandeepbrar/lunasea/commit/aff6e2ca184e9539f28dd326c06478ca2dbfee4c))
* **database:** correctly store manually ordered module list ([8fe81d1](https://github.com/jagandeepbrar/lunasea/commit/8fe81d11ab5c5aa484f0c2b471932d5364e6209c))
* **database:** detect and recover from database corruption ([758756f](https://github.com/jagandeepbrar/lunasea/commit/758756fcf2456996c7ee02be2bd523cca91c45d3))
* **database:** fallback to defaults on null values in profile ([fb3e8e5](https://github.com/jagandeepbrar/lunasea/commit/fb3e8e53255c457d0922505ad6c2d91f5c0fcf03))
* **database:** safely type indexer fields and headers ([f1dcd0c](https://github.com/jagandeepbrar/lunasea/commit/f1dcd0c36d558882bfbc7f4465ed56fac0743c55))
* **database:** utilize stricter typing for module headers map ([d4d9816](https://github.com/jagandeepbrar/lunasea/commit/d4d9816c945b1930ecfda0382d809a7c67839a26))
* **database:** validate enabled profile exists on restore ([d8506ee](https://github.com/jagandeepbrar/lunasea/commit/d8506ee2834ca6a83394c11f6d4d329f03a3647f))
* display 0-length timestamps as "0 Minutes" instead of "Under a Minute" ([e05b17a](https://github.com/jagandeepbrar/lunasea/commit/e05b17ae5ed35cec85ade5b910b82869cb7ad3f2))
* **lidarr:** (history) sort list by date descending ([ad22820](https://github.com/jagandeepbrar/lunasea/commit/ad22820d6662371d3d2bc7fbf596f86619002d20))
* **lists:** reorderable lists could not be reordered on some platforms ([95a645c](https://github.com/jagandeepbrar/lunasea/commit/95a645c06cf2a76231c4b8dbea87ec593961c205))
* **locale:** create stub primary language localization assets ([18ef4cf](https://github.com/jagandeepbrar/lunasea/commit/18ef4cf1d4032a3f9db54b5da56158ffaf9b50c8))
* **overseerr:** issues/requests list view translation keys ([136b92b](https://github.com/jagandeepbrar/lunasea/commit/136b92b8a7bdd5cd0ec2322444443d054df6daed))
* **radarr:** (queue) allow loading queue list when associated movie is not found ([22bf728](https://github.com/jagandeepbrar/lunasea/commit/22bf728a3dab6b7d76c7674cb4d97dc73e849201))
* **sonarr:** fanart image requests not including headers ([b5bb300](https://github.com/jagandeepbrar/lunasea/commit/b5bb300046431d8c1c26fd8ac4a26c42444f4f53))
* **sonarr:** invalid linking to theTVDB content ([80678a7](https://github.com/jagandeepbrar/lunasea/commit/80678a75bb871a4835d1c73934e043564d80b6b0))
### Tweaks
* **changelog:** do not show documentation changes in in-app changelog ([2367050](https://github.com/JagandeepBrar/lunasea/commit/2367050a66f2929d1ead17cc9191f47ddcb07f3a))
* **core:** destructure core folder and reintegrate extensions ([5d52440](https://github.com/JagandeepBrar/lunasea/commit/5d52440a43e4b605a8ac95bcb02b909f489ef7e2))
* **database:** rewrite interface to key-value database ([a0eaca0](https://github.com/JagandeepBrar/lunasea/commit/a0eaca084a399a2e249b142cb720cc50739a3f51))
* **environment:** load environment using environment_config ([c4dd509](https://github.com/JagandeepBrar/lunasea/commit/c4dd509e3210847c0ddba4c7982f38099228a2d6))
* refactored in-app purchase interface ([9cb3fab](https://github.com/JagandeepBrar/lunasea/commit/9cb3fabdf1f5fa10d65770a181ced937413642a2))
* utilize statics and class functions for LunaModule enum ([9f3c3f7](https://github.com/JagandeepBrar/lunasea/commit/9f3c3f779dda1b2da007abe5c2079dcfa834eb99))
* **changelog:** do not show documentation changes in in-app changelog ([2367050](https://github.com/jagandeepbrar/lunasea/commit/2367050a66f2929d1ead17cc9191f47ddcb07f3a))
* **core:** destructure core folder and reintegrate extensions ([5d52440](https://github.com/jagandeepbrar/lunasea/commit/5d52440a43e4b605a8ac95bcb02b909f489ef7e2))
* **database:** rewrite interface to key-value database ([a0eaca0](https://github.com/jagandeepbrar/lunasea/commit/a0eaca084a399a2e249b142cb720cc50739a3f51))
* **environment:** load environment using environment_config ([c4dd509](https://github.com/jagandeepbrar/lunasea/commit/c4dd509e3210847c0ddba4c7982f38099228a2d6))
* refactored in-app purchase interface ([9cb3fab](https://github.com/jagandeepbrar/lunasea/commit/9cb3fabdf1f5fa10d65770a181ced937413642a2))
* utilize statics and class functions for LunaModule enum ([9f3c3f7](https://github.com/jagandeepbrar/lunasea/commit/9f3c3f779dda1b2da007abe5c2079dcfa834eb99))
### [10.0.3](https://github.com/JagandeepBrar/lunasea/compare/v10.0.2...v10.0.3) (2022-05-26)
### [10.0.3](https://github.com/jagandeepbrar/lunasea/compare/v10.0.2...v10.0.3) (2022-05-26)
### Features
* **-arr:** updated UI for viewing content links ([8b559e0](https://github.com/JagandeepBrar/lunasea/commit/8b559e00b01305af6d1f8139a75aa25391127626))
* **ci:** build web docker images ([73fbb10](https://github.com/JagandeepBrar/lunasea/commit/73fbb1076ec8e951d99ad2df28a28454ca8189a1))
* **notifications:** option to disable in-app notifications ([da0c44c](https://github.com/JagandeepBrar/lunasea/commit/da0c44c8b1bc846acc4a1d0a4b7f1ee7c4c2e44d))
* **settings:** ability to check for updates ([b3caf34](https://github.com/JagandeepBrar/lunasea/commit/b3caf34074ecc72257b26d091a332e8f54a47587))
* **-arr:** updated UI for viewing content links ([8b559e0](https://github.com/jagandeepbrar/lunasea/commit/8b559e00b01305af6d1f8139a75aa25391127626))
* **ci:** build web docker images ([73fbb10](https://github.com/jagandeepbrar/lunasea/commit/73fbb1076ec8e951d99ad2df28a28454ca8189a1))
* **notifications:** option to disable in-app notifications ([da0c44c](https://github.com/jagandeepbrar/lunasea/commit/da0c44c8b1bc846acc4a1d0a4b7f1ee7c4c2e44d))
* **settings:** ability to check for updates ([b3caf34](https://github.com/jagandeepbrar/lunasea/commit/b3caf34074ecc72257b26d091a332e8f54a47587))
### Bug Fixes
* correctly calculate age of releases in -arrs ([e35433a](https://github.com/JagandeepBrar/lunasea/commit/e35433af314b13ff3c951eef4c99f42e460f2b28))
* **ui:** enable interactivity on all scrollbars on all platforms ([174fa96](https://github.com/JagandeepBrar/lunasea/commit/174fa969517b00e611534defc12ca3768348623a))
* correctly calculate age of releases in -arrs ([e35433a](https://github.com/jagandeepbrar/lunasea/commit/e35433af314b13ff3c951eef4c99f42e460f2b28))
* **ui:** enable interactivity on all scrollbars on all platforms ([174fa96](https://github.com/jagandeepbrar/lunasea/commit/174fa969517b00e611534defc12ca3768348623a))
### [10.0.2](https://github.com/JagandeepBrar/lunasea/compare/v10.0.1...v10.0.2) (2022-04-12)
### [10.0.2](https://github.com/jagandeepbrar/lunasea/compare/v10.0.1...v10.0.2) (2022-04-12)
### Features
* **account:** ability to update account email and password ([5ea6269](https://github.com/JagandeepBrar/lunasea/commit/5ea6269bca9cc21f9a3ec34ff9840ea22384b717))
* **firebase:** allow building LunaSea without setting up Firebase [skip ci] ([d7431b1](https://github.com/JagandeepBrar/lunasea/commit/d7431b110217ff868e662be4a34af656ca1d6515))
* **firebase:** conditionally load Firebase depending on the platform ([91f556d](https://github.com/JagandeepBrar/lunasea/commit/91f556d07833c9be6a4d176d663e7889361b8ec2))
* **linux:** initial linux support ([12fab1d](https://github.com/JagandeepBrar/lunasea/commit/12fab1d6c22104cbf18ff695b1c636cc48236126))
* **resources:** add link to build bucket [skip ci] ([64db574](https://github.com/JagandeepBrar/lunasea/commit/64db574155182942dabbaffba5dbf43e0cca950c))
* **resources:** add link to information about build channels ([fb31aba](https://github.com/JagandeepBrar/lunasea/commit/fb31aba7f9b2678736f2d9abacdbf244edd1048a))
* **ui:** ability to set background color on LunaBlock tiles [skip ci] ([e108cfb](https://github.com/JagandeepBrar/lunasea/commit/e108cfbac5f5bb2a1cd7404af0a331fadba85612))
* **windows:** initial windows support ([313e05c](https://github.com/JagandeepBrar/lunasea/commit/313e05c8f519ca0c17efbec3d0587418e712cb81))
* **account:** ability to update account email and password ([5ea6269](https://github.com/jagandeepbrar/lunasea/commit/5ea6269bca9cc21f9a3ec34ff9840ea22384b717))
* **firebase:** allow building LunaSea without setting up Firebase [skip ci] ([d7431b1](https://github.com/jagandeepbrar/lunasea/commit/d7431b110217ff868e662be4a34af656ca1d6515))
* **firebase:** conditionally load Firebase depending on the platform ([91f556d](https://github.com/jagandeepbrar/lunasea/commit/91f556d07833c9be6a4d176d663e7889361b8ec2))
* **linux:** initial linux support ([12fab1d](https://github.com/jagandeepbrar/lunasea/commit/12fab1d6c22104cbf18ff695b1c636cc48236126))
* **resources:** add link to build bucket [skip ci] ([64db574](https://github.com/jagandeepbrar/lunasea/commit/64db574155182942dabbaffba5dbf43e0cca950c))
* **resources:** add link to information about build channels ([fb31aba](https://github.com/jagandeepbrar/lunasea/commit/fb31aba7f9b2678736f2d9abacdbf244edd1048a))
* **ui:** ability to set background color on LunaBlock tiles [skip ci] ([e108cfb](https://github.com/jagandeepbrar/lunasea/commit/e108cfbac5f5bb2a1cd7404af0a331fadba85612))
* **windows:** initial windows support ([313e05c](https://github.com/jagandeepbrar/lunasea/commit/313e05c8f519ca0c17efbec3d0587418e712cb81))
### Bug Fixes
* **charts:** rollback to fl_charts@0.46.0 ([cc81ee7](https://github.com/JagandeepBrar/lunasea/commit/cc81ee7f14adc49b84556224dfef54c735c54758))
* **database:** write to LunaSea parent folder on Linux and Windows ([6e89796](https://github.com/JagandeepBrar/lunasea/commit/6e89796a15622f82759a6f8f02a82b1494ea1f8d))
* **desktop:** prevent flickering by waiting for window settings to apply ([5a2a9b7](https://github.com/JagandeepBrar/lunasea/commit/5a2a9b780b94d27aa2005823e1a18e225970967f))
* **desktop:** set initial and minimum window sizes ([dd30c3a](https://github.com/JagandeepBrar/lunasea/commit/dd30c3a0a32201a6503c81685dfdbc928a4aee90))
* **charts:** rollback to fl_charts@0.46.0 ([cc81ee7](https://github.com/jagandeepbrar/lunasea/commit/cc81ee7f14adc49b84556224dfef54c735c54758))
* **database:** write to LunaSea parent folder on Linux and Windows ([6e89796](https://github.com/jagandeepbrar/lunasea/commit/6e89796a15622f82759a6f8f02a82b1494ea1f8d))
* **desktop:** prevent flickering by waiting for window settings to apply ([5a2a9b7](https://github.com/jagandeepbrar/lunasea/commit/5a2a9b780b94d27aa2005823e1a18e225970967f))
* **desktop:** set initial and minimum window sizes ([dd30c3a](https://github.com/jagandeepbrar/lunasea/commit/dd30c3a0a32201a6503c81685dfdbc928a4aee90))
### Tweaks
* **flavor:** rename build flavors [skip ci] ([26cc258](https://github.com/JagandeepBrar/lunasea/commit/26cc2585b28f17342caf034ef9ef76dad06eb474))
* **settings:** do not show version code [skip ci] ([ac807a8](https://github.com/JagandeepBrar/lunasea/commit/ac807a8a01993939b86baad2dcb11e7d2a73e509))
* **ui:** remove usages of tab indentations [skip ci] ([d9e7009](https://github.com/JagandeepBrar/lunasea/commit/d9e70090007b402d2596e09195da5324ac1aafd0))
* **flavor:** rename build flavors [skip ci] ([26cc258](https://github.com/jagandeepbrar/lunasea/commit/26cc2585b28f17342caf034ef9ef76dad06eb474))
* **settings:** do not show version code [skip ci] ([ac807a8](https://github.com/jagandeepbrar/lunasea/commit/ac807a8a01993939b86baad2dcb11e7d2a73e509))
* **ui:** remove usages of tab indentations [skip ci] ([d9e7009](https://github.com/jagandeepbrar/lunasea/commit/d9e70090007b402d2596e09195da5324ac1aafd0))
### [10.0.1](https://github.com/JagandeepBrar/lunasea/compare/v10.0.0...v10.0.1) (2022-03-25)
### [10.0.1](https://github.com/jagandeepbrar/lunasea/compare/v10.0.0...v10.0.1) (2022-03-25)
### Features
* **config:** support retrying entering encryption password on failure ([cd9a3d2](https://github.com/JagandeepBrar/lunasea/commit/cd9a3d295e87b7d8987e508e6c77b02c1c5290f8))
* **filesystem:** rewrite filesystem interface for better compatibility ([4c60df5](https://github.com/JagandeepBrar/lunasea/commit/4c60df5523b98da3a7f135bb26fa20b36ed653e9))
* **ios:** enable landscape support on iOS devices ([f8e6760](https://github.com/JagandeepBrar/lunasea/commit/f8e676015c26f1e33f8680043663ea4f25dbc872))
* **web:** initial web support ([91e1fa0](https://github.com/JagandeepBrar/lunasea/commit/91e1fa03d9fae7cf82d158f00587075b29c610ea))
* **window_manager:** rewrite window manager to be platform-safe ([d6aed6c](https://github.com/JagandeepBrar/lunasea/commit/d6aed6c707ad75c0a02c3a4fa496ee6d8adeb55e))
* **config:** support retrying entering encryption password on failure ([cd9a3d2](https://github.com/jagandeepbrar/lunasea/commit/cd9a3d295e87b7d8987e508e6c77b02c1c5290f8))
* **filesystem:** rewrite filesystem interface for better compatibility ([4c60df5](https://github.com/jagandeepbrar/lunasea/commit/4c60df5523b98da3a7f135bb26fa20b36ed653e9))
* **ios:** enable landscape support on iOS devices ([f8e6760](https://github.com/jagandeepbrar/lunasea/commit/f8e676015c26f1e33f8680043663ea4f25dbc872))
* **web:** initial web support ([91e1fa0](https://github.com/jagandeepbrar/lunasea/commit/91e1fa03d9fae7cf82d158f00587075b29c610ea))
* **window_manager:** rewrite window manager to be platform-safe ([d6aed6c](https://github.com/jagandeepbrar/lunasea/commit/d6aed6c707ad75c0a02c3a4fa496ee6d8adeb55e))
### Bug Fixes
* **android:** prevent multiple splash screens from appearing on Android 12 ([26523e5](https://github.com/JagandeepBrar/lunasea/commit/26523e58ed12c8789c5c2c0df8d9f6e75e719f11))
* **web:** set notification vapid key ([1ddcc27](https://github.com/JagandeepBrar/lunasea/commit/1ddcc279dd6adf629a2f99939a567481e3675bd2))
* **android:** prevent multiple splash screens from appearing on Android 12 ([26523e5](https://github.com/jagandeepbrar/lunasea/commit/26523e58ed12c8789c5c2c0df8d9f6e75e719f11))
* **web:** set notification vapid key ([1ddcc27](https://github.com/jagandeepbrar/lunasea/commit/1ddcc279dd6adf629a2f99939a567481e3675bd2))
### Tweaks
* **images:** guard and fallback image cache implementation ([601d82c](https://github.com/JagandeepBrar/lunasea/commit/601d82cf89a22890d4197d10e1b74dbe110b0755))
* **platform:** guard usages of dart:io and dart:html for future compatibility ([c7bd62d](https://github.com/JagandeepBrar/lunasea/commit/c7bd62de2ee5669b41e6ccbc5e706ecb237cbcac))
* **wake_on_lan:** refactor wake on LAN support, support loading API with dart:html ([403edc1](https://github.com/JagandeepBrar/lunasea/commit/403edc16fb8188bba9bb6dd5b60a128dc8c2b0d4))
* **images:** guard and fallback image cache implementation ([601d82c](https://github.com/jagandeepbrar/lunasea/commit/601d82cf89a22890d4197d10e1b74dbe110b0755))
* **platform:** guard usages of dart:io and dart:html for future compatibility ([c7bd62d](https://github.com/jagandeepbrar/lunasea/commit/c7bd62de2ee5669b41e6ccbc5e706ecb237cbcac))
* **wake_on_lan:** refactor wake on LAN support, support loading API with dart:html ([403edc1](https://github.com/jagandeepbrar/lunasea/commit/403edc16fb8188bba9bb6dd5b60a128dc8c2b0d4))
## [10.0.0](https://github.com/JagandeepBrar/lunasea/tree/v10.0.0) (2022-03-12)
## [10.0.0](https://github.com/jagandeepbrar/lunasea/tree/v10.0.0) (2022-03-12)
### Features
* **debug:** debug page for multiple UI elements ([80c5d21](https://github.com/JagandeepBrar/lunasea/commit/80c5d2118a68129690cde5acbf70a23746d30acf))
* **http:** set User-Agent to "LunaSea/{version} {build}" ([420d11c](https://github.com/JagandeepBrar/lunasea/commit/420d11c37188fe1d56d76b51b98325b384a45cff))
* **overseerr:** integrate request list and request tiles ([b7fc3c0](https://github.com/JagandeepBrar/lunasea/commit/b7fc3c0a0fe917ca13513be74159af022c956465))
* **overseerr:** issues (de)serialization & list integration ([db4dfda](https://github.com/JagandeepBrar/lunasea/commit/db4dfdaf9ca1976d1a6e4b0ebc451b2e0f08b19e))
* **overseerr:** serialized movie & tv objects ([2b778dc](https://github.com/JagandeepBrar/lunasea/commit/2b778dc437559549df7404fa5266719979c3cce3))
* **settings:** add test build information to resources ([be2d3e6](https://github.com/JagandeepBrar/lunasea/commit/be2d3e63c27dc8eb5f2f01740df02d23b75eec8e))
* **sonarr:** support for searching entire series for monitored episodes [skip ci] ([ba958b5](https://github.com/JagandeepBrar/lunasea/commit/ba958b59a6445d422ae1ea9533f9a6ada188962b))
* **ui:** support skeleton-state loading on LunaBlock ([8ab5f80](https://github.com/JagandeepBrar/lunasea/commit/8ab5f80d004ead52a40a69f33482f371fe0f8c8b))
* **debug:** debug page for multiple UI elements ([80c5d21](https://github.com/jagandeepbrar/lunasea/commit/80c5d2118a68129690cde5acbf70a23746d30acf))
* **http:** set User-Agent to "LunaSea/{version} {build}" ([420d11c](https://github.com/jagandeepbrar/lunasea/commit/420d11c37188fe1d56d76b51b98325b384a45cff))
* **overseerr:** integrate request list and request tiles ([b7fc3c0](https://github.com/jagandeepbrar/lunasea/commit/b7fc3c0a0fe917ca13513be74159af022c956465))
* **overseerr:** issues (de)serialization & list integration ([db4dfda](https://github.com/jagandeepbrar/lunasea/commit/db4dfdaf9ca1976d1a6e4b0ebc451b2e0f08b19e))
* **overseerr:** serialized movie & tv objects ([2b778dc](https://github.com/jagandeepbrar/lunasea/commit/2b778dc437559549df7404fa5266719979c3cce3))
* **settings:** add test build information to resources ([be2d3e6](https://github.com/jagandeepbrar/lunasea/commit/be2d3e63c27dc8eb5f2f01740df02d23b75eec8e))
* **sonarr:** support for searching entire series for monitored episodes [skip ci] ([ba958b5](https://github.com/jagandeepbrar/lunasea/commit/ba958b59a6445d422ae1ea9533f9a6ada188962b))
* **ui:** support skeleton-state loading on LunaBlock ([8ab5f80](https://github.com/jagandeepbrar/lunasea/commit/8ab5f80d004ead52a40a69f33482f371fe0f8c8b))
### Bug Fixes
* **desktop:** handle pull-to-refresh drag action ([d38fc77](https://github.com/JagandeepBrar/lunasea/commit/d38fc770d2de4c2e2471aa4b61f8c4eb231ee134))
* **firebase:** remove remaining references to crashlytics and analytics [skip ci] ([67afaa0](https://github.com/JagandeepBrar/lunasea/commit/67afaa05f22163b95faff7be526c7a7ddbd5ac5e))
* **overseerr:** rehydrate missing cached media content when required after cache ejection ([b09353b](https://github.com/JagandeepBrar/lunasea/commit/b09353ba6e35992ce90613a198f7eb39759522a1))
* **radarr:** localized strings and correctly display disk/root folder tiles ([490ecf6](https://github.com/JagandeepBrar/lunasea/commit/490ecf60d1d2267a1e2a6677db8e58c0dea9e096))
* **radarr:** match file details to web GUI ([a42aa41](https://github.com/JagandeepBrar/lunasea/commit/a42aa4109ecde42dd2226ee13d398ca09c66a4b3))
* **radarr:** prevent using preDB availability when adding movie ([9d71c1a](https://github.com/JagandeepBrar/lunasea/commit/9d71c1ac9ae5505692c24c425be2ce22ae292a25))
* **tautulli:** set graph padding to theme-default padding ([1229e5e](https://github.com/JagandeepBrar/lunasea/commit/1229e5ee5ba1534d3e694fb85657b79b7dfcbf78))
* **desktop:** handle pull-to-refresh drag action ([d38fc77](https://github.com/jagandeepbrar/lunasea/commit/d38fc770d2de4c2e2471aa4b61f8c4eb231ee134))
* **firebase:** remove remaining references to crashlytics and analytics [skip ci] ([67afaa0](https://github.com/jagandeepbrar/lunasea/commit/67afaa05f22163b95faff7be526c7a7ddbd5ac5e))
* **overseerr:** rehydrate missing cached media content when required after cache ejection ([b09353b](https://github.com/jagandeepbrar/lunasea/commit/b09353ba6e35992ce90613a198f7eb39759522a1))
* **radarr:** localized strings and correctly display disk/root folder tiles ([490ecf6](https://github.com/jagandeepbrar/lunasea/commit/490ecf60d1d2267a1e2a6677db8e58c0dea9e096))
* **radarr:** match file details to web GUI ([a42aa41](https://github.com/jagandeepbrar/lunasea/commit/a42aa4109ecde42dd2226ee13d398ca09c66a4b3))
* **radarr:** prevent using preDB availability when adding movie ([9d71c1a](https://github.com/jagandeepbrar/lunasea/commit/9d71c1ac9ae5505692c24c425be2ce22ae292a25))
* **tautulli:** set graph padding to theme-default padding ([1229e5e](https://github.com/jagandeepbrar/lunasea/commit/1229e5ee5ba1534d3e694fb85657b79b7dfcbf78))
### Tweaks
* **flavor:** rename "internal" to "develop" ([5652cb0](https://github.com/JagandeepBrar/lunasea/commit/5652cb04bc7a23292d0ea9d65d6e919218975905))
* **modules:** remove canonical module import file [skip ci] ([0cbd61e](https://github.com/JagandeepBrar/lunasea/commit/0cbd61eac5c8e8675b3dd5702977c99e06ca81d5))
* **overseerr:** utilize JsonEnum generators in enum types [skip ci] ([76d530e](https://github.com/JagandeepBrar/lunasea/commit/76d530ed0810724d9b61bb73b689d6afb23d4ebd))
* **flavor:** rename "internal" to "develop" ([5652cb0](https://github.com/jagandeepbrar/lunasea/commit/5652cb04bc7a23292d0ea9d65d6e919218975905))
* **modules:** remove canonical module import file [skip ci] ([0cbd61e](https://github.com/jagandeepbrar/lunasea/commit/0cbd61eac5c8e8675b3dd5702977c99e06ca81d5))
* **overseerr:** utilize JsonEnum generators in enum types [skip ci] ([76d530e](https://github.com/jagandeepbrar/lunasea/commit/76d530ed0810724d9b61bb73b689d6afb23d4ebd))
---

View File

@@ -1,4 +0,0 @@
Welcome to the LunaSea community.
Settle differences by offering and accepting constructive critique, within desired privacy.
Finding yourselves unable, e-mail the project maintainer at hello@lunasea.app.

View File

@@ -1,5 +1,7 @@
# <img width="40px" src="./assets/images/branding_logo.png" alt="LunaSea"></img>&nbsp;&nbsp;LunaSea
> :warning: **This project is no longer being actively maintained and this repository is archived.** :warning:
LunaSea is a fully featured, open source self-hosted controller focused on giving you a seamless experience between all of your self-hosted media software remotely on your devices. LunaSea currently supports:
- [Lidarr](https://github.com/lidarr/lidarr)
@@ -16,41 +18,5 @@ LunaSea even comes with support for webhook-based push notifications, multiple i
> Please note that LunaSea is purely a remote control application, it does not offer any functionality without software installed on a server/computer.
## Releases
All releases for every build channel can be downloaded from the [build bucket](https://builds.lunasea.app), and all stable releases for all platforms are also available on [GitHub](https://github.com/JagandeepBrar/lunasea/releases).
- [Android](https://docs.lunasea.app/releases/android)
- [iOS](https://docs.lunasea.app/releases/ios)
- [Linux](https://docs.lunasea.app/releases/linux)
- [macOS](https://docs.lunasea.app/releases/macos)
- [Web](https://docs.lunasea.app/releases/web)
- [Windows](https://docs.lunasea.app/releases/windows)
Interested in using prerelease build channels of LunaSea? Learn the differences between all the build channels and how to join one [here](https://www.lunasea.app/build-channels)!
## Getting Started
- [Build Guide](https://github.com/JagandeepBrar/lunasea/wiki/Build-Guide)
- [Documentation](https://www.lunasea.app/docs)
- [Frequently Asked Questions](https://docs.lunasea.app/getting-started/frequently-asked-questions)
## Support
[![Discord](https://img.shields.io/discord/673591529834807358?label=Discord&style=flat)](https://www.lunasea.app/discord)
[![Reddit](https://img.shields.io/reddit/subreddit-subscribers/LunaSeaApp?label=r%2FLunaSeaApp&style=flat)](https://www.lunasea.app/reddit)
**Please only create an issue on GitHub for bugs and software issues**. Post in the [discussions board](https://github.com/JagandeepBrar/lunasea/discussions) or the [Discord forum](https://www.lunasea.app/discord) for requests and general feedback.
- [Email](mailto:hello@lunasea.app)
- [Reddit](https://www.lunasea.app/reddit)
- [Website](https://www.lunasea.app)
## Tools & Services
[![Translation status](https://hosted.weblate.org/widgets/lunasea/-/svg-badge.svg)](https://www.lunasea.app/translate)
Thank you to all tools and services for offering free subscriptions for open-source projects!
- [Gitbook](https://www.gitbook.com): Gitbook is used to host LunaSea's documentation
- [Weblate](https://weblate.org): Weblate is used to gather community localization for LunaSea

View File

@@ -1,9 +1,9 @@
include: package:flutter_lints/flutter.yaml
analyzer:
exclude:
- 'test/**'
- 'test.g.dart'
- 'lib/**/*.g.dart'
- "test/**"
- "test.g.dart"
- "lib/**/*.g.dart"
linter:
rules:

View File

@@ -1,3 +1,7 @@
source "https://rubygems.org"
gem "fastlane"
gem "abbrev"
gem "logger"
gem "mutex_m"
gem "csv"

View File

@@ -1,43 +1,49 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.6)
CFPropertyList (3.0.7)
base64
nkf
rexml
addressable (2.8.4)
public_suffix (>= 2.0.2, < 6.0)
artifactory (3.0.15)
abbrev (0.1.2)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.2.0)
aws-partitions (1.781.0)
aws-sdk-core (3.175.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
aws-eventstream (1.3.2)
aws-partitions (1.1077.0)
aws-sdk-core (3.222.1)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
base64
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.67.0)
aws-sdk-core (~> 3, >= 3.174.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.126.0)
aws-sdk-core (~> 3, >= 3.174.0)
logger
aws-sdk-kms (1.99.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.182.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
aws-sigv4 (1.5.2)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.11.0)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
claide (1.1.0)
colored (1.2)
colored2 (3.1.2)
commander (4.6.0)
highline (~> 2.0.0)
csv (3.3.3)
declarative (0.0.20)
digest-crc (0.6.4)
digest-crc (0.7.0)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
domain_name (0.6.20240107)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.100.0)
faraday (1.10.3)
excon (0.112.0)
faraday (1.10.4)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
@@ -56,24 +62,24 @@ GEM
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.0.4)
multipart-post (~> 2)
faraday-net_http (1.0.1)
faraday-multipart (1.1.0)
multipart-post (~> 2.0)
faraday-net_http (1.0.2)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday_middleware (1.2.1)
faraday (~> 1.0)
fastimage (2.2.7)
fastlane (2.213.0)
fastimage (2.4.0)
fastlane (2.227.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.3, < 2.0.0)
bundler (>= 1.12.0, < 3.0.0)
colored
colored (~> 1.2)
commander (~> 4.6)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0)
@@ -82,33 +88,38 @@ GEM
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
fastlane-sirp (>= 1.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-env (>= 1.6.0, < 2.0.0)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
json (< 3.0.0)
jwt (>= 2.1.0, < 3)
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
naturally (~> 2.2)
optparse (~> 0.1.1)
optparse (>= 0.1.1, < 1.0.0)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3)
security (= 0.1.5)
simctl (~> 1.6.3)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (>= 1.4.5, < 2.0.0)
terminal-table (~> 3)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
xcpretty (~> 0.4.0)
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
fastlane-sirp (1.0.0)
sysrandom (~> 1.0)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.44.0)
google-apis-androidpublisher_v3 (0.54.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.0)
google-apis-core (0.11.3)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
@@ -116,64 +127,66 @@ GEM
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
rexml
webrick
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.19.0)
google-apis-core (>= 0.9.0, < 2.a)
google-cloud-core (1.6.0)
google-cloud-env (~> 1.0)
google-apis-storage_v1 (0.31.0)
google-apis-core (>= 0.11.0, < 2.a)
google-cloud-core (1.8.0)
google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.3.1)
google-cloud-storage (1.44.0)
google-cloud-errors (1.5.0)
google-cloud-storage (1.47.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.19.0)
google-apis-storage_v1 (~> 0.31.0)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (1.5.2)
googleauth (1.8.1)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.5)
http-cookie (1.0.8)
domain_name (~> 0.5)
httpclient (2.8.3)
httpclient (2.9.0)
mutex_m
jmespath (1.6.2)
json (2.6.3)
jwt (2.7.1)
memoist (0.16.2)
mini_magick (4.12.0)
mini_mime (1.1.2)
json (2.10.2)
jwt (2.10.1)
base64
logger (1.7.0)
mini_magick (4.13.2)
mini_mime (1.1.5)
multi_json (1.15.0)
multipart-post (2.3.0)
nanaimo (0.3.0)
multipart-post (2.4.1)
mutex_m (0.3.0)
nanaimo (0.4.0)
naturally (2.2.1)
optparse (0.1.1)
nkf (0.2.0)
optparse (0.6.0)
os (1.1.4)
plist (3.7.0)
public_suffix (5.0.1)
rake (13.0.6)
plist (3.7.2)
public_suffix (6.0.1)
rake (13.2.1)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.2.5)
rouge (2.0.7)
rexml (3.4.1)
rouge (3.28.0)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
security (0.1.3)
signet (0.17.0)
rubyzip (2.4.1)
security (0.1.5)
signet (0.19.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0)
@@ -181,38 +194,40 @@ GEM
simctl (1.6.10)
CFPropertyList
naturally
sysrandom (1.0.5)
terminal-notifier (2.0.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
trailblazer-option (0.1.2)
tty-cursor (0.7.1)
tty-screen (0.8.1)
tty-screen (0.8.2)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (1.8.0)
webrick (1.8.1)
unicode-display_width (2.6.0)
word_wrap (1.0.0)
xcodeproj (1.22.0)
xcodeproj (1.27.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
xcpretty (0.3.0)
rouge (~> 2.0.7)
nanaimo (~> 0.4.0)
rexml (>= 3.3.6, < 4.0)
xcpretty (0.4.1)
rouge (~> 3.28.0)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS
ruby
arm64-darwin-22
arm64-darwin-24
DEPENDENCIES
abbrev
csv
fastlane
logger
mutex_m
BUNDLED WITH
2.3.25
2.6.6

View File

@@ -1,3 +1,9 @@
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
@@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) {
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
@@ -21,10 +22,6 @@ if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
@@ -32,7 +29,8 @@ if (keystorePropertiesFile.exists()) {
}
android {
compileSdkVersion 33
namespace = "app.lunasea.lunasea"
compileSdkVersion 35
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
@@ -50,35 +48,31 @@ android {
defaultConfig {
applicationId "app.lunasea.lunasea"
minSdkVersion 24
targetSdkVersion 33
targetSdkVersion 35
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
debug {
applicationIdSuffix ".debug"
versionNameSuffix "-dev"
}
release {
signingConfig signingConfigs.release
}
}
buildTypes {
debug {
applicationIdSuffix ".debug"
versionNameSuffix "-dev"
}
release {
signingConfig signingConfigs.release
}
}
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

View File

@@ -6,12 +6,6 @@
android:label="LunaSea"
android:icon="@mipmap/ic_launcher">
<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_notification" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/ic_notification_background" />
<activity
android:name=".MainActivity"
android:exported="true"

View File

@@ -1,16 +1,3 @@
buildscript {
ext.kotlin_version = '1.7.20'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
@@ -26,6 +13,6 @@ subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
tasks.register("clean", Delete) {
delete rootProject.buildDir
}

View File

@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip

View File

@@ -1,15 +1,25 @@
include ':app'
pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
return flutterSdkPath
}()
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":$name"
project(":$name").projectDir = pluginDirectory
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "8.1.0" apply false
id "org.jetbrains.kotlin.android" version "1.8.10" apply false
}
include ":app"

View File

@@ -1,37 +1 @@
{
"motd": "Welcome to LunaSea v10.2.5!\n\nThis releases adds support for multi-select actions on Sonarr episodes and fixes an issue preventing users from selecting a new active profile when triggering a download via search.",
"feat": {
"web": [
{
"commit": "89b0906eab883bddb860583cc6e4bf86efd2b115",
"message": "build multi-platform Docker image for amd64 and arm64"
}
],
"sonarr": [
{
"commit": "79d13889f2eb0668b1fbb4d29ea9b11b1d82d9bb",
"message": "multi-select episodes and trigger bulk actions"
}
]
},
"fix": {
"search": [
{
"commit": "d81052d81783df6d93d9f41e2c543782299e7067",
"message": "profile could not be changed on download prompt"
}
]
},
"refactor": {
"system": [
{
"commit": "f3fdf6d5f3583af14dd0046e09f9a84f8af2a972",
"message": "update packages"
},
{
"commit": "021a08e4e44009ffcfdd613a49d455855e7838bb",
"message": "upgrade to Flutter 3.10.5/45f6e00911"
}
]
}
}
{}

View File

@@ -4,7 +4,7 @@
"dashboard.Tuesday": "Dienstag",
"dashboard.Thursday": "Donnerstag",
"dashboard.Sunday": "Sonntag",
"dashboard.Schedule": "Übersicht",
"dashboard.Schedule": "Zeitplan",
"dashboard.Saturday": "Samstag",
"dashboard.PastDaysDescription": "Wähle die Anzahl an Tagen in der Vergangenheit für die Kalendereinträge abgerufen werden sollen.",
"dashboard.PastDays": "Vergangene Tage",
@@ -57,6 +57,8 @@
"lunasea.DownloadClient": "Downloadklient",
"lunasea.Edge": "Edge",
"lunasea.Error": "Fehler",
"lunasea.EverySecond": "Jede Sekunde",
"lunasea.EverySeconds": "Alle {} Sekunden",
"lunasea.ExternalModules": "Externe Module",
"lunasea.Features": "Funktionen",
"lunasea.Fixes": "Behoben",
@@ -70,6 +72,7 @@
"lunasea.IncorrectEncryptionKey": "Ungültige Sicherungsphrase",
"lunasea.Internal": "Intern",
"lunasea.InvalidFileTypeSelected": "Ungültiger Dateityp ausgewählt",
"lunasea.Items": "{} Artikel",
"lunasea.JustNow": "Jetzt gerade",
"lunasea.Minutes": "{} Minuten",
"lunasea.MinutesAgo": "Vor {} Minuten",
@@ -85,6 +88,7 @@
"lunasea.OneDayAgo": "Vor 1 Tag",
"lunasea.OneHour": "1 Stunde",
"lunasea.OneHourAgo": "Vor 1 Stunde",
"lunasea.OneItem": "1 Element",
"lunasea.OneMinute": "1 Minute",
"lunasea.OneMinuteAgo": "Vor 1 Minute",
"lunasea.OneMonth": "1 Monat",
@@ -113,6 +117,8 @@
"lunasea.Settings": "Einstellungen",
"lunasea.Stable": "Stabil",
"lunasea.StartingView": "Startansicht",
"lunasea.ThankYou": "Dankeschön",
"lunasea.ThankYouMessage": "Vielen Dank für die Unterstützung der Open-Source-Community!",
"lunasea.Today": "Heute",
"lunasea.TransactionFailure": "Transaktion fehlgeschlagen",
"lunasea.TryAgain": "Erneut versuchen",
@@ -181,6 +187,8 @@
"radarr.DigitalRelease": "Digitale Veröffentlichung",
"radarr.DirectoryNotFound": "Verzeichnis nicht gefunden",
"radarr.Discover": "Entdecken",
"radarr.DiscoverSuggestions": "Vorschläge entdecken",
"radarr.DiscoverSuggestionsDescription": "Vorgeschlagene Releases in Discover hinzufügen",
"radarr.Disks": "Platten",
"radarr.DownloadFailed": "Herunterladen gescheitert",
"radarr.DownloadIgnored": "Herunterladen ignoriert",
@@ -215,6 +223,7 @@
"radarr.MoveFilesDescription": "Möchten Sie die Dateien verschieben?",
"radarr.MoveFull": "Dateien übertragen",
"radarr.Movie": "Film",
"radarr.MovieDetails": "Film Details",
"radarr.MovieFileDeleted": "Filmdatei gelöscht",
"radarr.MovieFileRenamed": "Filmdatei umbenannt",
"radarr.MovieImported": "Film importiert ({})",
@@ -237,6 +246,7 @@
"radarr.QualityProfile": "Qualitätsprofil",
"radarr.Queue": "Warteschlange",
"radarr.QueueDescription": "Aktiven und eingereihten Inhalt zeigen",
"radarr.QueueSize": "Größe der Warteschlange",
"radarr.Quick": "Schnell",
"radarr.RefreshMovie": "Film aktualisieren",
"radarr.Rejected": "Abgelehnt",
@@ -311,7 +321,7 @@
"search.FailedToDownloadNZB": "Herunterladen der NZB fehlgeschlagen",
"search.DownloadToDevice": "Auf Gerät herunterladen",
"search.DownloadingNZBToDevice": "Lädt NZB auf deinem Gerät herunter",
"search.Downloading": "Herunterladen …",
"search.Downloading": "Herunterladen…",
"search.Download": "Herunterladen",
"search.Comments": "Kommentare",
"search.Categories": "Kategorien",
@@ -327,6 +337,20 @@
"search.Results": "Ergebnisse",
"search.NoSubcategoriesFound": "Keine Unterkategorien gefunden",
"search.NoResultsFound": "Keine Ergebnisse gefunden",
"search.AddIndexer": "Indexer hinzufügen",
"search.FailedToAddIndexer": "Fehler beim hinzufügen des Indexers",
"search.ShowLinksDescription": "Zeige Download und Kommentar Links an",
"search.DeleteIndexer": "Indexer entfernen",
"search.EditIndexer": "Indexer bearbeiten",
"search.HideAdultCategories": "Verberge Kategorien für Erwachsene",
"search.HideAdultCategoriesDescription": "Verberge Inhalt für Erwachsene",
"search.IndexerAPIKey": "Indexer API Schlüssel",
"search.IndexerAdded": "Indexer hinzugefügt",
"search.IndexerDeleted": "Indexer entfernt",
"search.IndexerAPIHost": "Indexer API Host",
"search.IndexerNotFound": "Indexer nicht gefunden",
"search.NoIndexersFound": "Keinen Indexer gefunden",
"search.ShowLinks": "Links anzeigen",
"settings.EncryptionKey": "Sicherungsphrase",
"settings.EnabledProfile": "Aktives Profil",
"settings.DismissBannersHint2": "Die Kurzinfo-Banner werden dir Tipps und Hinweise zu verfügbaren Funktionen in LunaSea geben.",
@@ -596,6 +620,19 @@
"settings.BootModule": "Startmodul",
"settings.General": "Allgemein",
"settings.GeneralDescription": "LunaSea anpassen",
"settings.Clear": "Entfernen",
"settings.ConfigurationClearedDescription": "Deine Konfiguration wurde gelöscht",
"settings.ConfigurationCleared": "Konfiguration gelöscht",
"settings.CopiedURLFor": "URL für {} kopiert",
"settings.CopiedDeviceURL": "Deine gerätebasierte URL wurde in die Zwischenablage kopiert",
"settings.CopiedUserURL": "Deine benutzerbasierte URL wurde in die Zwischenablage kopiert",
"settings.AllLogs": "Alle Logs",
"settings.AllLogsDescription": "Alle Arten von Logs anzeigen",
"settings.CalendarSettingsDescription": "Anpassen des einheitlichen Kalenders",
"settings.Class": "Klasse",
"settings.ClearImageCacheDescription": "Bilder aus dem permanenten Speicher löschen",
"settings.Device": "Gerät",
"settings.Exception": "Ausnahme",
"sonarr.AddSeries": "Serie hinzufügen",
"sonarr.AddToExclusionList": "Zur Ignorierliste hinzufügen",
"sonarr.AllSeasons": "Alle Staffeln",
@@ -807,6 +844,15 @@
"sonarr.SearchingForMonitoredEpisodes": "Suche nach beobachteten Episoden…",
"sonarr.SearchMonitored": "Suche Beobachtet",
"sonarr.FailedToSearchForMonitoredEpisodes": "Suche nach beobachteten Episoden fehlgeschlagen",
"sonarr.EpisodesCount": "{} Episoden",
"sonarr.EpisodeFilesDeleted": "Episodendateien gelöscht",
"sonarr.NoEpisodeFilesFound": "Keine Episodendateien gefunden",
"sonarr.OneEpisode": "1 Episode",
"sonarr.QueueSize": "Größe der Warteschlange",
"sonarr.FailedToSearchForEpisodes": "Suche nach Episoden fehlgeschlagen",
"sonarr.FailedToDeleteEpisodeFiles": "Löschen der Episodendateien fehlgeschlagen",
"sonarr.NoEpisodeFilesFoundDeleteMessage": "Keine der ausgewählten Episoden haben Dateien zum Löschen",
"sonarr.SearchingForEpisodes": "Suche nach Episoden…",
"tautulli.TerminateSessionFailed": "Abbrechen der Sitzung fehlgeschlagen",
"tautulli.TerminateSession": "Sitzung abbrechen",
"tautulli.TerminatedSession": "Abgebrochene Sitzung",
@@ -856,7 +902,7 @@
"tautulli.DeletingImageCache": "Lösche Bild-Zwischenspeicher …",
"tautulli.DeletingCacheFailed": "Löschen des Zwischenspeichers fehlgeschlagen",
"tautulli.DeletingCacheDescription": "Tautulli Zwischenspeicher wird gelöscht",
"tautulli.DeletingCache": "Lösche Zwischenspeicher …",
"tautulli.DeletingCache": "Lösche Zwischenspeicher…",
"tautulli.DeleteTemporarySessions": "Lösche temporäre Sitzungen",
"tautulli.DeleteImageCache": "Bild-Zwischenspeicher löschen",
"tautulli.DeleteCache": "Zwischenspeicher löschen",
@@ -868,13 +914,23 @@
"tautulli.BackupConfiguration": "Konfiguration sichern",
"tautulli.BackingUpDatabaseFailed": "Sichern der Datenbank fehlgeschlagen",
"tautulli.BackingUpDatabaseDescription": "Deine Datenbank wird im Hintergrund gesichert",
"tautulli.BackingUpDatabase": "Datenbank wird gesichert …",
"tautulli.BackingUpDatabase": "Datenbank wird gesichert…",
"tautulli.BackingUpConfigurationFailed": "Sichern der Konfiguration fehlgeschlagen",
"tautulli.BackingUpConfigurationDescription": "Deine Konfiguration wird im Hintergrund gesichert",
"tautulli.BackingUpConfiguration": "Konfiguration wird gesichert …",
"tautulli.BackingUpConfiguration": "Konfiguration wird gesichert…",
"tautulli.Audio": "Audio",
"tautulli.ActivityDetails": "Aktivitätsdetails",
"tautulli.Activity": "Aktivität",
"tautulli.Converting": "Konvertieren",
"tautulli.Speed": "Geschwindigkeit: {}x",
"tautulli.ActivityRefreshRate": "Aktivität Aktualisierungsrate",
"tautulli.DefaultTerminationMessage": "Standard Abbruch Meldung",
"tautulli.Graphs": "Abbildungen",
"tautulli.LibraryDetails": "Bibliothek Details",
"tautulli.MediaDetails": "Medien Details",
"tautulli.Statistics": "Statistik",
"tautulli.StatisticsItemCount": "Anzahl Statistischer Elemente",
"tautulli.UserDetails": "Benutzer Details",
"wake_on_lan.MagicPacketSent": "Magic Paket gesendet",
"wake_on_lan.MagicPacketSentMessage": "Ihre Maschine sollte nun aufwachen!",
"wake_on_lan.MagicPacketFailedToSend": "Senden von Magic Paket fehlgeschlagen"

View File

@@ -1,6 +1,6 @@
{
"dashboard.Friday": "Παρασκευή",
"dashboard.FutureDays": "Μελλοντικό χρόνο",
"dashboard.FutureDays": "Μελλοντικές Ημέρες",
"dashboard.OneMonth": "Ένας μήνας",
"dashboard.Tuesday": "Τρίτη",
"dashboard.MinimumOfOneDay": "1 ημέρα το ελάχιστο",
@@ -8,16 +8,16 @@
"dashboard.Monday": "Δευτέρα",
"dashboard.NoNewContent": "Τίποτα νέο",
"dashboard.OneWeek": "Μία εβδομάδα",
"dashboard.PastDays": αλαιότερες ημέρες",
"dashboard.PastDays": ροηγούμενες ημέρες",
"dashboard.Saturday": "Σάββατο",
"dashboard.Schedule": "Πρόγραμμα",
"dashboard.Sunday": "Κυριακή",
"dashboard.Thursday": "Πέμπτη",
"dashboard.Calendar": "Ημερολόγιο",
"dashboard.PastDaysDescription": "Τοποθετήσει τον αριθμό ημερών στο παρελθόν για εισαγωγή των εγγραφών του ημερολογίου.",
"dashboard.PastDaysDescription": "Ορίστε τον αριθμό των ημερών στο παρελθόν για τις οποίες θα λαμβάνονται οι καταχωρήσεις ημερολογίου.",
"dashboard.TwoWeeks": "Δύο εβδομάδες",
"dashboard.Wednesday": "Τετάρτη",
"dashboard.FutureDaysDescription": "Τοποθετήσει τον αριθμό ημερών στο μέλλον για εισαγωγή των εγγραφών του ημερολογίου.",
"dashboard.FutureDaysDescription": "Ορίστε τον αριθμό των ημερών στο μέλλον για την ανάκτηση εγγραφών ημερολογίου.",
"lidarr.StartSearchForMissingAlbums": "Ξεκίνα αναζήτηση για άλμπουμ που λείπουν",
"lidarr.StartSearchFor": "Ξεκίνα αναζήτηση…",
"lunasea.Add": "Προσέθεσε",
@@ -41,6 +41,7 @@
"lunasea.Close": "Κοντά",
"lunasea.ComingSoon": "Έρχονται σύντομα",
"lunasea.Copied": "Αντιγράφτηκε",
"lunasea.CopiedContentToTheClipboard": "Το περιεχόμενο αντιγράφηκε στο πρόχειρο",
"lunasea.Critical": "Κρίσιμο",
"lunasea.Dashboard": "Ταμπλό",
"lunasea.Days": "{} ημέρες",
@@ -56,6 +57,8 @@
"lunasea.DownloadClient": "Πρόγραμμα λήψης",
"lunasea.Edge": "Χείλος",
"lunasea.Error": "Σφάλμα",
"lunasea.EverySecond": "Κάθε δευτερόλεπτο",
"lunasea.EverySeconds": "Κάθε {} Δευτερόλεπτα",
"lunasea.ExternalModules": "Εξωτερικές μονάδες",
"lunasea.Features": "Χαρακτηριστικά",
"lunasea.Fixes": "Επιδιορθώσεις",
@@ -69,14 +72,73 @@
"lunasea.IncorrectEncryptionKey": "Λανθασμένο κλειδί κρυπτογράφησης",
"lunasea.Internal": "Εσωτερικό",
"lunasea.InvalidFileTypeSelected": "Επιλέχθηκε μη έγκυρος τύπος αρχείου",
"lunasea.Items": "{} Στοιχεία",
"lunasea.JustNow": "Αμέσως",
"lunasea.Minutes": "{} Λεπτά",
"lunasea.MinutesAgo": "{} λεπτά πριν",
"lunasea.Module": "Μονάδα",
"lunasea.ModuleIsNotEnabled": "{} Δεν είναι ενεργοποιημένο",
"lunasea.Months": "{} Μήνες",
"lunasea.MonthsAgo": "{} Μήνες πριν",
"lunasea.New": "Νέο",
"lunasea.No": "Όχι",
"lunasea.NoModulesEnabled": "Δεν υπάρχουν ενεργοποιημένες μονάδες",
"lunasea.NotSet": "Δεν έχει οριστεί",
"lunasea.OneDay": "1 ημέρα",
"lunasea.OneDayAgo": "1 ημέρα πριν",
"lunasea.OneHour": "1 Ώρα",
"lunasea.OneHourAgo": "1 ώρα πριν",
"lunasea.OneItem": "1 στοιχείο",
"lunasea.OneMinute": "1 λεπτό",
"lunasea.OneMinuteAgo": "1 λεπτό πριν",
"lunasea.OneMonth": "1 μήνας",
"lunasea.OneMonthAgo": "1 μήνα πριν",
"lunasea.OneSecond": "1 δευτερόλεπτο",
"lunasea.OneSecondAgo": "Πριν από 1 δευτερόλεπτο",
"lunasea.OneYear": "1 χρόνος",
"lunasea.OneYearAgo": "1 χρόνο πριν",
"lunasea.Options": "Επιλογές",
"lunasea.Other": "Άλλο",
"lunasea.Page": "Σελίδα",
"lunasea.PlatformSpecific": "Συγκεκριμένη πλατφόρμα",
"lunasea.PleaseTryAgain": "Παρακαλώ προσπαθήστε ξανά",
"lunasea.Production": "Παραγωγή",
"lunasea.Refresh": "Ανανέωση",
"lunasea.Refreshing": "Γίνεται ανανέωση…",
"lunasea.Remove": "Αφαίρεση",
"lunasea.Rename": "Μετονομασία",
"lunasea.Restore": "Επαναφορά",
"lunasea.Retry": "Επανάληψη",
"lunasea.ReturnToDashboard": "Επιστροφή στο ταμπλό",
"lunasea.SearchTextBar": "Αναζήτηση…",
"lunasea.Seconds": "{} δευτερόλεπτα",
"lunasea.SecondsAgo": "{} Δευτερόλεπτα πριν",
"lunasea.Set": "Ορισμός",
"lunasea.Settings": "Ρυθμίσεις",
"lunasea.Stable": "Σταθερή",
"lunasea.StartingView": "Αρχική προβολή",
"lunasea.ThankYou": "Ευχαριστούμε",
"lunasea.ThankYouMessage": "Σας ευχαριστούμε που υποστηρίζετε την κοινότητα ανοιχτού κώδικα!",
"lunasea.Today": "Σήμερα",
"lunasea.TransactionFailure": "Αποτυχία συναλλαγής",
"lunasea.TryAgain": "Δοκιμάστε ξανά",
"lunasea.Tweaks": "Τροποποιήσεις",
"lunasea.UnderAMinute": "Κάτω από ένα λεπτό",
"lunasea.Unknown": "Άγνωστο",
"lunasea.UnknownDate": "Άγνωστη ημερομηνία",
"lunasea.UnknownError": "Άγνωστο σφάλμα",
"lunasea.UnknownModule": "Άγνωστη μονάδα",
"lunasea.Update": "Ενημέρωση",
"lunasea.View": "Προβολή",
"lunasea.Warning": "Προειδοποίηση",
"lunasea.Website": "Ιστοσελίδα",
"lunasea.Years": "{} Χρόνια",
"lunasea.YearsAgo": "{} Χρόνια πριν",
"lunasea.Yes": "Ναι",
"overseerr.Audio": "Ήχος",
"overseerr.Approved": "Έγκριση",
"overseerr.Available": "Διαθέσιμο",
"overseerr.Declined": "Απορρίφθηκε",
"overseerr.Declined": "Αρνήθηκε",
"overseerr.Issues": "Θέματα",
"overseerr.NoIssues": "Κανένα Θέμα",
"overseerr.NoIssuesFound": "Κανένα θέμα δεν βρέθηκε",
@@ -84,34 +146,809 @@
"overseerr.NoRequestsFound": "Κανένα αίτημα δεν βρέθηκε",
"overseerr.OneRequest": "1 Αίτημα",
"overseerr.Open": "Ανοιχτό",
"overseerr.OpenedBy": "Ανοίχτηκε από {}",
"overseerr.Other": "Άλλο",
"overseerr.PartiallyAvailable": "Μερικώς διαθέσιμο",
"overseerr.Pending": "Εκκρεμεί",
"overseerr.Processing": "Υπό Επεξεργασία",
"overseerr.SomeRequests": "{} Αιτήματα",
"overseerr.Resolved": "Επιλύθηκε",
"overseerr.Requested": "Αιτήθηκε",
"overseerr.RequestedBy": "Αιτήθηκε από {}",
"overseerr.Requests": "Αιτήματα",
"overseerr.Subtitle": "Υπότιτλος",
"overseerr.NoUsersFound": "Δε βρέθηκαν χρήστες",
"overseerr.UnknownUser": "Άγνωστος χρήστης",
"overseerr.Users": "Χρήστες",
"overseerr.Video": "Βίντεο",
"radarr.AddMovie": "Προσθήκη ταινίας",
"radarr.AddMovieAndSearch": "Προσθήκη + αναζήτηση",
"radarr.AddedTag": "Προσθήκη ετικέτας",
"radarr.Age": "Ηλικία",
"radarr.All": "Όλα",
"radarr.Alphabetical": "Αλφαβητικά",
"radarr.Approved": "Εγκεκριμένο",
"radarr.Audio": "Ήχος",
"radarr.Automatic": "Αυτόματα",
"radarr.AvailabilityUnknown": "Διαθεσιμότητα Άγνωστη",
"radarr.AvailableIn": "Διαθέσιμο στο {}",
"radarr.AvailableToday": "Διαθέσιμο σήμερα",
"radarr.BackupDatabase": "Δημιουργία Αντιγράφου ασφαλείας",
"radarr.BitDepth": "Βάθος bit",
"radarr.Channels": "Κανάλια",
"radarr.CinemaDateUnknown": "Άγνωστη ημερομηνία κινηματογράφου",
"radarr.Codec": "Codec",
"radarr.Configure": "Ρύθμιση",
"radarr.Copy": "Αντιγραφή",
"radarr.CopyFiles": "Hardlink/Αντιγραφή αρχείων",
"radarr.CopyFull": "Hardlink/Αντιγραφή αρχείων",
"radarr.CutoffUnmet": "Αποκοπή Ανεκπλήρωτη",
"radarr.DateAdded": "Ημερομηνία προσθήκης",
"radarr.DigitalRelease": "Ψηφιακή κυκλοφορία",
"radarr.DirectoryNotFound": "Κατάλογος δεν βρέθηκε",
"radarr.Discover": "Ανακαλύψτε",
"radarr.DiscoverSuggestions": "Προτάσεις Ανακάλυψης",
"radarr.DiscoverSuggestionsDescription": "Προσθήκη προτεινόμενων κυκλοφοριών στην Ανακάλυψη",
"radarr.Disks": "Δίσκοι",
"radarr.DownloadFailed": "Η λήψη απέτυχε",
"radarr.DownloadIgnored": "Η λήψη αγνοήθηκε",
"radarr.DynamicRange": "Δυναμικό εύρος",
"radarr.EditMovie": "Επεξεργασία ταινίας",
"radarr.FPS": "FPS",
"radarr.FailedToAddTag": "Αποτυχία προσθήκης ετικέτας",
"radarr.FileBrowser": "Περιηγητής αρχείων…",
"radarr.FilterCatalogue": "Φιλτράρισμα καταλόγου",
"radarr.GrabbedFrom": "Λήψη από {}",
"radarr.History": "Ιστορικό",
"radarr.HistoryDescription": "Προβολή πρόσφατης δραστηριότητας",
"radarr.Import": "Εισαγωγή",
"radarr.ImportMode": "Λειτουργία εισαγωγής",
"radarr.InCinemas": "Στους Κινηματογράφους",
"radarr.InCinemasIn": "Στους κινηματογράφους σε {}",
"radarr.InCinemasToday": "Στους κινηματογράφους σήμερα",
"radarr.Interactive": "Διαδραστικό",
"radarr.Language": "Γλώσσα",
"radarr.Languages": "Γλώσσες",
"radarr.ManualImport": "Χειροκίνητη εισαγωγή",
"radarr.ManualImportDescription": "Εισαγωγή ταινιών από το σύστημα αρχείων",
"radarr.MinimumAvailability": "Ελάχιστη Διαθεσιμότητα",
"radarr.Missing": "Λείπει",
"radarr.Monitor": "Παρακολούθηση",
"radarr.MonitorMovie": "Παρακολούθηση ταινίας",
"radarr.Monitored": "Παρακολουθείται",
"radarr.MonitoredDescription": "Παρακολούθηση για νέες κυκλοφορίες",
"radarr.More": "Περισσότερα",
"radarr.Move": "Μετακίνηση",
"radarr.MoveFiles": "Μετακίνηση αρχείων",
"radarr.MoveFilesDescription": "Θέλετε να μετακινήσετε τα αρχεία;",
"radarr.MoveFull": "Μετακίνηση αρχείων",
"radarr.Movie": "Ταινία",
"radarr.MovieDetails": "Λεπτομέρειες ταινίας",
"radarr.MovieFileDeleted": "Το αρχείο ταινίας διαγράφηκε",
"radarr.MovieFileRenamed": "Το αρχείο ταινίας μετονομάστηκε",
"radarr.MovieImported": "Η ταινία εισάχθηκε ({})",
"radarr.MovieNotFound": "Η ταινία δε βρέθηκε",
"radarr.MoviePath": "Διαδρομή ταινίας",
"radarr.Movies": "Ταινίες",
"radarr.NoDisksFound": "Δε βρέθηκαν δίσκοι",
"radarr.NoFilesFound": "Δε βρέθηκαν αρχεία",
"radarr.NoHistoryFound": "Δε βρέθηκε ιστορικό",
"radarr.NoMoviesFound": "Δε βρέθηκαν ταινίες",
"radarr.NoResultsFound": "Δε βρέθηκαν αποτελέσματα",
"radarr.NoRootFoldersFound": "Δε βρέθηκαν Κύριοι φάκελοι",
"radarr.NoSubdirectoriesFound": "Δε βρέθηκαν υποκατάλογοι",
"radarr.NoSummaryIsAvailable": "Δεν υπάρχει διαθέσιμη περίληψη.",
"radarr.NoTagsFound": "Δε βρέθηκαν ετικέτες",
"radarr.Other": "Άλλο",
"radarr.ParentDirectory": "Κύριος κατάλογος",
"radarr.PhysicalRelease": "Φυσική έκδοση",
"radarr.Quality": "Ποιότητα",
"radarr.QualityProfile": "Προφίλ ποιότητας",
"radarr.Queue": "Ουρά",
"radarr.QueueDescription": "Προβολή ενεργού & σε αναμονή περιεχομένου",
"radarr.QueueSize": "Μέγεθος ουράς",
"radarr.Quick": "Γρήγορη",
"radarr.RefreshMovie": "Ανανέωση ταινίας",
"radarr.Rejected": "Απορρίφθηκε",
"radarr.Released": "Κυκλοφόρησε",
"radarr.ReleasedToday": "Κυκλοφόρησε σήμερα",
"radarr.Releases": "Κυκλοφορίες",
"radarr.RemoveMovie": "Αφαίρεση ταινίας",
"radarr.Resolution": "Ανάλυση",
"radarr.RootFolder": "Κύριος φάκελος",
"radarr.RootFolders": "Κύριοι φάκελοι",
"radarr.RunRSSSync": "Εκτέλεση συγχρονισμού RSS",
"radarr.Runtime": "Διάρκεια",
"radarr.ScanType": "Τύπος σάρωσης",
"radarr.Search": "Αναζήτηση",
"radarr.SearchAllMissing": "Αναζήτηση όλων όσων λείπουν",
"radarr.SearchFor": "Αναζήτηση για {}",
"radarr.Seeders": "Seeders",
"radarr.SelectLanguage": "Επιλέξτε γλώσσες",
"radarr.SelectMovie": "Επιλέξτε ταινία",
"radarr.SelectQuality": "Επιλέξτε Ποιότητα",
"radarr.Size": "Μέγεθος",
"radarr.SortCatalogue": "Ταξινόμηση καταλόγου",
"radarr.StartSearchFor": "Έναρξη αναζήτησης για…",
"radarr.StartSearchForMissingMovie": "Έναρξη αναζήτησης για ταινία που λείπει",
"radarr.Streams": "Ροές",
"radarr.Studio": "Στούντιο",
"radarr.Subtitles": "Υπότιτλοι",
"radarr.SystemStatus": "Κατάσταση συστήματος",
"radarr.SystemStatusDescription": "Κατάσταση συστήματος & χώρος δίσκου",
"radarr.Tags": "Ετικέτες",
"radarr.TagsDescription": "Διαχειριστείτε τις ετικέτες σας",
"radarr.Type": "Τύπος",
"radarr.UnmappedFolder": "1 Μη αντιστοιχισμένος φάκελος",
"radarr.UnmappedFolders": "{} Μη αντιστοιχισμένοι φάκελοι",
"radarr.UnmonitorMovie": "Κατάργηση παρακολούθησης ταινίας",
"radarr.Unmonitored": "Δε παρακολουθείται",
"radarr.Unreleased": "Ακυκλοφόρητο",
"radarr.Upcoming": "Επερχόμενα",
"radarr.UpdateLibrary": "Ενημέρωση βιβλιοθήκης",
"radarr.UpdateMovie": "Ενημέρωση ταινίας",
"radarr.Video": "Βίντεο",
"radarr.ViewWebGUI": "Προβολή Web GUI",
"radarr.Wanted": "Ζητούμενα",
"radarr.Weight": "Βάρος",
"radarr.Year": "Έτος",
"sabnzbd.All": "Όλα",
"sabnzbd.Ascending": "Αύξουσα",
"sabnzbd.Age": "Ηλικία",
"sabnzbd.CategoryDefault": "Προεπιλογή κατηγορίας",
"sabnzbd.Completed": "Ολοκληρώθηκε",
"sabnzbd.Descending": "Φθίνουσα",
"sabnzbd.Duplicate": "Διπλότυπο",
"sabnzbd.Failed": "Απέτυχε",
"sabnzbd.Force": "Εξαναγκασμός",
"sabnzbd.HibernatePC": "Αδρανοποίηση υπολογιστή",
"sabnzbd.High": "Υψηλή",
"sabnzbd.Low": "Χαμηλή",
"sabnzbd.Name": "Όνομα",
"sabnzbd.Paused": "Σε παύση",
"sabnzbd.RepairUnpack": "Επιδιόρθωση/αποσυσκευασία",
"sabnzbd.RepairUnpackDelete": "Επιδιόρθωση/αποσυσκευασία/διαγραφή",
"sabnzbd.Size": "Μέγεθος",
"sabnzbd.ShutdownPC": "Τερματισμός υπολογιστή",
"sabnzbd.ShutdownSABnzbd": "Τερματισμός SABnzbd",
"sabnzbd.StandbyPC": "Η/Υ σε αναμονή",
"sabnzbd.Stop": "Σταματήστε το",
"sabnzbd.Normal": "Κανονικό",
"sabnzbd.None": "Κανένα",
"sabnzbd.Repair": "Επιδιόρθωση",
"search.AddIndexer": "Προσθήκη Indexer",
"search.Age": "Ηλικία",
"search.AllSubcategories": "Όλες οι υποκατηγορίες",
"search.Alphabetical": "Αλφαβητικά",
"search.Category": "Κατηγορία",
"settings.AccountDeleted": "Διαγραφή λογαριασμού",
"search.NoCategoriesFound": "Δεν βρέθηκαν Κατηγορίες",
"search.DownloadToDevice": "Λήψη στη συσκευή",
"search.NoResultsFound": "Δε βρέθηκαν αποτελέσματα",
"search.FailedToDownloadNZB": "Αποτυχία λήψης του NZB",
"search.FailedToSend": "Αποτυχία αποστολής",
"search.SentTo": "Στάλθηκε στο {}",
"search.Size": "Μέγεθος",
"search.Subcategories": "Υποκατηγορίες",
"search.Categories": "Κατηγορίες",
"search.Comments": "Σχόλια",
"search.DeleteIndexer": "Διαγραφή Indexer",
"search.DownloadingNZBToDevice": "Λήψη NZB στη συσκευή σας",
"search.EditIndexer": "Επεξεργασία Indexer",
"search.IndexerNotFound": "Indexer δεν βρέθηκε",
"search.NoIndexersFound": "Δεν βρέθηκαν Indexers",
"search.NoSubcategoriesFound": "Δε βρέθηκαν υποκατηγορίες",
"search.Results": "Αποτελέσματα",
"search.Search": "Αναζήτηση",
"search.SentNZBData": "Απεσταλμένα δεδομένα NZB",
"search.ShowLinks": "Εμφάνιση συνδέσμων",
"search.ShowLinksDescription": "Εμφάνιση συνδέσμων λήψης και σχολίων",
"search.Download": "Λήψη",
"search.Downloading": "Λήψη…",
"search.IndexerAPIHost": "Κεντρικός υπολογιστής API Indexer",
"search.IndexerAPIKey": "Κλειδί API Indexer",
"search.IndexerDeleted": "Indexer Διαγράφηκε",
"search.HideAdultCategoriesDescription": "Απόκρυψη περιεχομένου για ενήλικες",
"search.FailedToAddIndexer": "Αποτυχία προσθήκης indexer",
"search.HideAdultCategories": "Απόκρυψη κατηγοριών για ενήλικες",
"search.IndexerAdded": "Indexer Προστέθηκε",
"settings.AccountDeleted": "Ο λογαριασμός διαγράφηκε",
"settings.AccountDescription": "Ο LunaSea λογαριασμός σου",
"settings.AccountDeletedMessage": "Διαγραφή λογαριασμού LunaSea",
"settings.AccountDeletedMessage": "Ο λογαριασμός LunaSea διαγράφηκε",
"settings.Account": "Λογαριασμός",
"settings.AccountHelp": "Λογαριασμός LunaSea",
"settings.AccountHelpHint1": "Το LunaSea προσφέρει έναν δωρεάν λογαριασμό για να δημιουργήσετε αντίγραφα ασφαλείας της διαμόρφωσής σας στο cloud, με πρόσθετες λειτουργίες να έρχονται στο μέλλον!",
"settings.AccountSettings": "Ρυθμίσεις λογαριασμού",
"settings.Add": "Προσθήκη",
"settings.AddHeader": "Προσθήκη Header",
"settings.AddModule": "Προσθήκη ενότητας",
"settings.AddModuleFailed": "Αποτυχία προσθήκης μονάδας",
"settings.AddModuleSuccess": "Η μονάδα προστέθηκε",
"settings.AddProfile": "Προσθήκη προφίλ",
"settings.AddProfileDescription": "Προσθήκη νέου προφίλ",
"settings.AllFieldsAreRequired": "Όλα τα πεδία είναι υποχρεωτικά",
"settings.BackupToCloudSuccess": "Επιτυχής δημιουργία αντιγράφων ασφαλείας",
"settings.BootModule": "Μονάδα εκκίνησης",
"settings.ClearImageCache": "Εκκαθάριση προσωρινής μνήμης εικόνων",
"settings.ClearImageCacheDescription": "Εκκαθάριση εικόνων από μόνιμο αποθηκευτικό χώρο",
"settings.DeleteAccountHint1": "Είστε βέβαιοι ότι θέλετε να διαγράψετε τον λογαριασμό σας στο LunaSea;",
"settings.DeleteCloudBackupFailure": "Αποτυχία διαγραφής",
"settings.EnableModule": "Ενεργοποίηση {}",
"settings.FailedToUpdatePassword": "Αποτυχία ενημέρωσης κωδικού πρόσβασης",
"settings.FilterCategory": "Φιλτράρισμα κατηγορίας",
"settings.HostHint4": "Όταν δε χρησιμοποιείτε αντίστροφο διακομιστή μεσολάβησης (reverse proxy), παρακαλώ συμπεριλάβετε τη θύρα",
"settings.HostHint5": "Για να προσθέσετε βασικό έλεγχο ταυτότητας (basic authentication), χρησιμοποιήστε τη λειτουργία των προσαρμοσμένων headers",
"settings.HostRequired": "Απαιτείται κεντρικός υπολογιστής",
"settings.HostValidation": "Ο κεντρικός υπολογιστής πρέπει να περιλαμβάνει http:// ή https://",
"settings.HostRequiredMessage": "Απαιτείται κεντρικός υπολογιστής για σύνδεση στο {}",
"settings.ImageBackgroundOpacityHint2": "Για να απενεργοποιήσετε εντελώς τη λήψη εικόνων φόντου, ορίστε την τιμή σε 0.",
"settings.LogsDescription": "Προβολή, εξαγωγή και διαγραφή αρχείων καταγραφής",
"settings.NoBackupsFound": "Δεν βρέθηκαν αντίγραφα ασφαλείας",
"settings.PleaseSignInAgain": "Παρακαλώ συνδεθείτε ξανά",
"settings.RegisteredFailure": "Αποτυχία εγγραφής",
"settings.RegisteredSuccess": "Εγγεγραμμένος",
"settings.RenamedProfile": "Μετονομάστηκε το προφίλ",
"settings.RenameProfile": "Μετονομασία προφίλ",
"settings.RenameProfileDescription": "Μετονομασία υπάρχοντος προφίλ",
"settings.SentryLogging": "Καταγραφή Sentry",
"settings.SortDirection": "Ταξινόμηση Κατεύθυνσης",
"settings.SystemStatus": "Κατάσταση συστήματος",
"settings.UpToDate": "Ενημερωμένο",
"settings.AmoledThemeBorders": "Περιγράμματα θέματος AMOLED",
"settings.AmoledThemeBordersDescription": "Προσθήκη λεπτών περιγραμμάτων σε όλο το UI",
"settings.ApiKeyRequired": "Απαιτείται κλειδί API",
"settings.ApiKeyRequiredMessage": "Απαιτείται κλειδί API για σύνδεση με {}",
"settings.Appearance": "Εμφάνιση",
"settings.BackupToCloudFailure": "Απέτυχε η δημιουργία αντιγράφων ασφαλείας",
"settings.BannersNotificationModuleSupportHeader": "Υποστηριζόμενες μονάδες",
"settings.ClearConfiguration": "Καθαρισμός παραμετροποίησης",
"settings.ClearConfigurationHint1": "Είστε σίγουροι ότι θέλετε να διαγράψετε τη παραμετροποίηση σας;",
"settings.ClearConfigurationHint2": "Θα ξεκινήσετε από την αρχή, βεβαιωθείτε ότι έχετε πρώτα δημιουργήσει αντίγραφα ασφαλείας της τρέχουσας παραμετροποίησης σας!",
"settings.ClearConfigurationHint3": "Εάν είστε συνδεδεμένοι σε έναν λογαριασμό LunaSea, θα αποσυνδεθείτε.",
"settings.ClearImageCacheHint1": "Είστε σίγουροι ότι θέλετε να διαγράψετε όλες τις εικόνες από την προσωρινή μνήμη;",
"settings.ClearImageCacheHint2": "Η λήψη εικόνων για μια μεγάλη βιβλιοθήκη μπορεί να καταναλώσει ένα μεγάλο όγκο δεδομένων.",
"settings.ClearLogs": "Εκκαθάριση αρχείων καταγραφής",
"settings.ClearLogsHint1": "Είστε σίγουροι ότι θέλετε να διαγράψετε όλα τα καταγεγραμμένα αρχεία καταγραφής;\n\nΤα αρχεία καταγραφής μπορεί να είναι χρήσιμα για αναφορές σφαλμάτων και αποσφαλμάτωση.",
"settings.ConfigureModule": "Διαμόρφωση {}",
"settings.Configuration": "Παραμετροποίηση",
"settings.ConfigurationCleared": "Η παραμετροποίηση εκκαθαρίστηκε",
"settings.ConfigurationClearedDescription": "Η παραμετροποίηση σας έχει εκκαθαριστεί",
"settings.ConfigurationDescription": "Διαμόρφωση & Εγκατάσταση του LunaSea",
"settings.ConnectedSuccessfully": "Συνδεδεμένο",
"settings.Custom": "Προσαρμοσμένη…",
"settings.CustomHeader": "Προσαρμοσμένο Header",
"settings.DatabaseCorruptionDetectedMessageLine2": "Συγγνώμη για την ταλαιπωρία, όλα τα αντίγραφα ασφαλείας που δημιουργήθηκαν προηγουμένως θα πρέπει να μπορούν να αποκατασταθούν ακόμη και όταν έχουν προηγουμένως εξαχθεί με κατεστραμμένη βάση δεδομένων.",
"settings.DaysOne": "1 ημέρα",
"settings.DaysCount": "{} ημέρες",
"settings.DefaultPage": "Προεπιλεγμένη σελίδα",
"settings.DefaultPages": "Προεπιλεγμένες σελίδες",
"settings.DefaultPagesDescription": "Ορισμός προεπιλεγμένων σελίδων προορισμού",
"settings.DefaultOptions": "Προεπιλεγμένες επιλογές",
"settings.DefaultOptionsDescription": "Ορισμός επιλογών ταξινόμησης, φιλτραρίσματος και προβολής",
"settings.DefaultSortingAndFiltering": "Προεπιλεγμένη ταξινόμηση & φιλτράρισμα",
"settings.DefaultSortingAndFilteringDescription": "Ορισμός προεπιλεγμένων μεθόδων ταξινόμησης και φιλτραρίσματος",
"settings.DecryptBackup": "Αποκρυπτογράφηση αντιγράφου ασφαλείας",
"settings.DecryptBackupHint1": "Εισάγετε το κλειδί κρυπτογράφησης για αυτό το αντίγραφο ασφαλείας.",
"settings.DebugMenu": "Μενού εντοπισμού σφαλμάτων",
"settings.DeletedProfile": "Διαγράφηκε το προφίλ",
"settings.DeleteAccount": "Διαγραφή λογαριασμού",
"settings.DeleteAccountDescription": "Οριστική διαγραφή του λογαριασμού σας",
"settings.DeleteAccountWarning1": "Αυτή η διαδικασία είναι μη αναστρέψιμη",
"settings.DeleteCloudBackup": "Διαγραφή αντιγράφων ασφαλείας Cloud",
"settings.DeleteCloudBackupSuccess": "Διαγράφηκε",
"settings.DeleteHeader": "Διαγραφή header",
"settings.DeleteHeaderHint1": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το header;",
"settings.DeleteIndexer": "Διαγραφή Indexer",
"settings.DeleteIndexerHint1": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτόν τον indexer;",
"settings.DeleteModule": "Διαγραφή μονάδας",
"settings.DeleteProfile": "Διαγραφή προφίλ",
"settings.DeleteProfileDescription": "Διαγραφή υπάρχοντος προφίλ",
"settings.Device": "Συσκευή",
"settings.DiscordDescription": "Ζητήστε δυνατότητες και λάβετε υποστήριξη",
"settings.DismissBanners": "Παράβλεψη Banners",
"settings.DismissBannersHint1": "Είστε σίγουροι ότι θέλετε να απορρίψετε όλα τα banners των tooltip;",
"settings.DismissBannersHint2": "Τα banner συμβουλών εργαλείων θα σας δώσουν συμβουλές για λειτουργίες που είναι διαθέσιμες στο LunaSea.",
"settings.DisplayName": "Όνομα εμφάνισης",
"settings.DownloadUpdate": "Λήψη ενημέρωσης",
"settings.Drawer": "Συρτάρι",
"settings.DrawerDescription": "Προσαρμόστε το Συρτάρι",
"settings.EditModule": "Επεξεργασία μονάδας",
"settings.Email": "Email",
"settings.EmailSentFailure": "Απέτυχε η επαναφορά κωδικού πρόσβασης",
"settings.EmailSentSuccess": "Το email στάλθηκε",
"settings.EmailUpdated": "Το email ενημερώθηκε",
"settings.EmailValidation": "Μη έγκυρη διεύθυνση email",
"settings.EnableInAppNotifications": "Ενεργοποίηση ειδοποιήσεων εντός της εφαρμογής",
"settings.EncryptionKey": "Κλειδί κρυπτογράφησης",
"settings.Exception": "Εξαίρεση",
"settings.Export": "Εξαγωγή",
"settings.ExportedLogs": "Εξαγόμενα αρχεία καταγραφής",
"settings.ExportedLogsMessage": "Τα αρχεία καταγραφής έχουν εξαχθεί με επιτυχία",
"settings.FailedToDeleteAccount": "Απέτυχε η διαγραφή λογαριασμού",
"settings.FailedToUpdateEmail": "Απέτυχε η ενημέρωση email",
"settings.ForgotYourPassword": "Ξεχάσατε το κωδικό σας;",
"settings.FutureDays": "Μελλοντικές ημέρες",
"settings.General": "Γενικά",
"settings.GeneralDescription": "Προσαρμογή του LunaSea",
"settings.GettingStarted": "Ξεκινώντας",
"settings.GettingStartedDescription": "Πληροφορίες & οδηγίες εγκατάστασης",
"settings.HeaderAdded": "Προστέθηκε το header",
"settings.HeaderDeleted": "Διαγράφηκε το header",
"settings.HeaderKey": "Κλειδί header",
"settings.HeaderKeyValidation": "Απαιτείται κλειδί header",
"settings.HeaderValue": "Τιμή header",
"settings.HeaderValueValidation": "Απαιτείται τιμή header",
"settings.Home": "Αρχική σελίδα",
"settings.Host": "Κεντρικός υπολογιστής",
"settings.ImageBackgroundOpacity": "Αδιαφάνεια φόντου εικόνας",
"settings.ImageBackgroundOpacityHint1": "Ορίστε την αδιαφάνεια των εικόνων φόντου.",
"settings.ImageCacheCleared": "Η προσωρινή μνήμη εικόνων εκκαθαρίστηκε",
"settings.ImageCacheClearedDescription": "Η προσωρινή μνήμη εικόνων έχει εκκαθαριστεί",
"settings.InvalidPassword": "Λανθασμένος κωδικός",
"settings.InvalidPasswordMessage": "Ο κωδικός πρόσβασης είναι λανθασμένος",
"settings.Language": "Γλώσσα",
"settings.LogsCleared": "Τα αρχεία καταγραφής εκκαθαρίστηκαν",
"settings.LogsClearedDescription": "Όλα τα καταγεγραμμένα αρχεία καταγραφής έχουν εκκαθαριστεί",
"settings.Method": "Μέθοδος",
"settings.MACAddress": "Διεύθυνση MAC",
"settings.NotificationsDescription": "Ρύθμιση Webhooks για Push ειδοποιήσεις",
"settings.NoAdditionalProfilesAdded": "Δεν έχουν προστεθεί επιπλέον προφίλ",
"settings.NoExternalModulesFound": "Δε βρέθηκαν εξωτερικές μονάδες",
"settings.NoHeadersAdded": "Δεν έχουν προστεθεί headers",
"settings.NoLogsFound": "Δε βρέθηκαν αρχεία καταγραφής",
"settings.NoProfilesFound": "Δε βρέθηκαν Προφίλ",
"settings.OpenDrawerOnBackAction": "Άνοιγμα συρταριού όταν πατάτε Πίσω",
"settings.OpenDrawerOnBackActionDescription": "Άνοιγμα συρταριού αντί για κλείσιμο του LunaSea",
"settings.OpenLinksIn": "Άνοιγμα συνδέσμων σε…",
"settings.Password": "Κωδικός",
"settings.PasswordHint1": "Εάν ο κωδικός σας περιλαμβάνει ειδικούς χαρακτήρες, σκεφτείτε να προσθέσετε μια κεφαλίδα βασικού ελέγχου ταυτότητας με το όνομα χρήστη και τον κωδικό πρόσβασής σας για καλύτερη υποστήριξη",
"settings.Platform": "Πλατφόρμα",
"settings.Profiles": "Προφίλ",
"settings.ProfilesBannerLine2": "Η αναζήτηση με τον Newznab indexer και οι εξωτερικές μονάδες είναι ενεργοποιημένες και κοινόχρηστες σε όλα τα προφίλ.",
"settings.ProfilesDescription": "Διαχειριστείτε τα προφίλ σας",
"settings.ProfileAlreadyExists": "Το προφίλ υπάρχει ήδη",
"settings.ProfileName": "Όνομα προφίλ",
"settings.ProfileNameRequired": "Απαιτείται όνομα προφίλ",
"settings.ProfileToProfile": "\"{}\" έως \"{}\"",
"settings.QuickActions": "Γρήγορες Ενέργειες",
"settings.RedditDescription": "Κάντε ερωτήσεις & λάβετε υποστήριξη",
"settings.ResetPassword": "Επαναφορά κωδικού πρόσβασης",
"settings.Resources": "Πόροι",
"settings.ResourcesDescription": "Χρήσιμοι πόροι και σύνδεσμοι",
"settings.RestoreFromCloud": "Επαναφορά από το Cloud",
"settings.RestoreFromCloudDescription": "Επαναφορά δεδομένων παραμετροποίησης",
"settings.RestoreFromCloudFailure": "Αποτυχία επαναφοράς",
"settings.RestoreFromCloudSuccessMessage": "Η παραμετροποίηση σας έχει αποκατασταθεί",
"settings.SignedOutSuccessMessage": "Αποσυνδεθήκατε από τον λογαριασμό σας στο LunaSea",
"settings.SignIn": "Σύνδεση",
"settings.SignOut": "Αποσύνδεση",
"settings.SignOutHint1": "Είστε σίγουροι ότι θέλετε να αποσυνδεθείτε από το λογαριασμό σας στο LunaSea;",
"settings.ShowCalendarEntries": "Εμφάνιση {} καταχωρίσεων ημερολογίου",
"settings.SortCategory": "Ταξινόμηση κατηγορίας",
"settings.StartingDay": "Ημέρα έναρξης",
"settings.StartingSize": "Αρχικό μέγεθος",
"settings.StartingType": "Αρχικός τύπος",
"settings.StartingView": "Αρχική προβολή",
"settings.System": "Σύστημα",
"settings.SystemDescription": "Βοηθητικά προγράμματα και πληροφορίες συστήματος",
"settings.TLSCertificateValidation": "Επικύρωση πιστοποιητικού TLS",
"settings.Username": "Όνομα Χρήστη",
"settings.UsernameValidation": "Απαιτείται όνομα χρήστη",
"settings.Version": "Έκδοση",
"settings.ViewRecentChanges": "Δείτε τις πρόσφατες αλλαγές",
"settings.ViewTypeLogs": "Προβολή {} αρχείων καταγραφής",
"settings.WeblateDescription": "Βοηθήστε στην τοπική προσαρμογή του LunaSea",
"settings.Website": "Ιστοσελίδα",
"settings.WebsiteDescription": "Επισκεφθείτε την ιστοσελίδα του LunaSea",
"settings.AddedProfile": "Το προφίλ προστέθηκε",
"settings.AmoledThemeDescription": "Καθαρό μαύρο σκοτεινό θέμα",
"settings.AllLogs": "Όλα τα αρχεία καταγραφής",
"settings.AllLogsDescription": "Προβολή αρχείων καταγραφής όλων των τύπων",
"settings.AmoledTheme": "Θέμα AMOLED",
"settings.ApiKey": "Κλειδί API",
"settings.AutomaticallyManageOrder": "Αυτόματη διαχείριση σειράς",
"settings.AutomaticallyManageOrderDescription": "Λίστα μονάδων αλφαβητικά",
"settings.BackgroundImageOpacity": "Αδιαφάνεια εικόνας φόντου",
"settings.BackupConfiguration": "Αντίγραφο ασφαλείας ρυθμίσεων",
"settings.BackupConfigurationHint1": "Όλα τα αντίγραφα ασφαλείας κρυπτογραφούνται πριν εξαχθούν",
"settings.BackupConfigurationHint2": "Το κλειδί κρυπτογράφησης πρέπει να είναι τουλάχιστον 8 χαρακτήρες",
"settings.BackupList": "Λίστα αντιγράφων ασφαλείας",
"settings.BackupToCloud": "Δημιουργία αντιγράφου ασφαλείας στο Cloud",
"settings.AppearanceDescription": "Προσαρμόστε την εμφάνιση και την αίσθηση",
"settings.BackupToCloudDescription": "Δημιουργία αντιγράφου ασφαλείας παραμετροποίησης",
"settings.BackupToDevice": "Δημιουργία αντιγράφων ασφαλείας στη συσκευή",
"settings.BannersNotificationModuleSupportBody": "Οι ειδοποιήσεις μέσω Webhook υποστηρίζονται επί του παρόντος μόνο στις μονάδες που αναφέρονται παρακάτω.\n\nΠερισσότερες μονάδες θα υποστηριχθούν στο μέλλον!",
"settings.BasicAuthentication": "Βασικός έλεγχος ταυτότητας",
"settings.BasicAuthenticationHint2": "Ο κωδικός πρόσβασης μπορεί να περιέχει άνω και κάτω τελεία",
"settings.BasicAuthenticationHint3": "Το όνομα χρήστη και ο κωδικός πρόσβασης μετατρέπονται αυτόματα σε κωδικοποίηση base64",
"settings.BroadcastAddress": "Διεύθυνση μετάδοσης",
"settings.BroadcastAddressHint1": "Αυτή είναι η διεύθυνση μετάδοσης του τοπικού σας δικτύου",
"settings.BroadcastAddressHint2": "Συνήθως πρόκειται για τη διεύθυνση IP του μηχανήματός σας με την τελευταία οκτάδα να είναι 255",
"settings.BackupToDeviceDescription": "Δημιουργία αντιγράφου ασφαλείας παραμετροποίησης",
"settings.BasicAuthenticationHint1": "Το όνομα χρήστη δεν πρέπει να περιέχει άνω και κάτω τελεία",
"settings.BroadcastAddressHint3": "Δεδομένου ενός παραδείγματος διεύθυνσης IP μηχανήματος 192.168.1.111, η διεύθυνση IP μετάδοσης που προκύπτει είναι 192.168.1.255",
"settings.BroadcastAddressValidation": "Μη έγκυρη διεύθυνση μετάδοσης",
"settings.BuildChannelsDescription": "Μάθετε περισσότερα για τα επιπλέον κανάλια εκδόσεων",
"settings.CalendarSettings": "Ρυθμίσεις ημερολογίου",
"settings.Build": "Build",
"settings.BuildChannels": "Κανάλια εκδόσεων",
"settings.CalendarSettingsDescription": "Προσαρμογή του ενοποιημένου ημερολογίου",
"settings.ChangedProfile": "Άλλαξε το προφίλ",
"settings.Channel": "Κανάλι",
"settings.Class": "Κλάση",
"settings.CleanSlate": "Λευκό χαρτί",
"settings.Clear": "Καθαρισμός",
"settings.CopiedDeviceURL": "Αντιγράφηκε η διεύθυνση URL που βασίζεται στη συσκευή σας στο πρόχειρο",
"settings.ConnectedSuccessfullyMessage": "Το {} είναι έτοιμο για χρήση με το LunaSea!",
"settings.ConnectionDetails": "Λεπτομέρειες σύνδεσης",
"settings.CopiedURLFor": "Αντιγράφηκε διεύθυνση URL για {}",
"settings.ConnectionDetailsDescription": "Λεπτομέρειες σύνδεσης για το {}",
"settings.ConnectionTestFailed": "Η δοκιμή σύνδεσης απέτυχε",
"settings.DatabaseCorruptionDetected": "Εντοπίστηκε διαφθορά βάσης δεδομένων",
"settings.CopiedUserURL": "Αντιγράφηκε η διεύθυνση URL βάσει χρήστη στο πρόχειρο",
"settings.CurrentPassword": "Τρέχων κωδικός πρόσβασης",
"settings.CustomHeaders": "Προσαρμοσμένα Headers",
"settings.CustomHeadersDescription": "Προσθήκη προσαρμοσμένων headers σε αιτήματα",
"settings.DatabaseCorruptionDetectedMessageLine1": "Εντοπίστηκε διαφθορά της βάσης δεδομένων και η διαμόρφωσή σας έχει διαγραφεί.",
"settings.DeleteModuleHint1": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την εξωτερική μονάδα;",
"settings.Documentation": "Τεκμηρίωση",
"settings.DebugMenuDescription": "Βοηθητικά προγράμματα εντοπισμού σφαλμάτων και ανάπτυξης",
"settings.DeleteAccountHint2": "Αυτή η διαδικασία θα διαγράψει επίσης όλα τα αποθηκευμένα αντίγραφα ασφαλείας στο cloud και τα δεδομένα που συνδέονται με αυτόν το λογαριασμό.",
"settings.DeleteCloudBackupDescription": "Διαγραφή αρχείου διαμόρφωσης",
"settings.DeleteModuleSuccess": "Η μονάδα διαγράφηκε",
"settings.EmailSentSuccessMessage": "Ένα email για την επαναφορά του κωδικού πρόσβασής σας έχει σταλεί!",
"settings.DocumentationDescription": "Δείτε την τεκμηρίωση",
"settings.Donations": "Δωρεές",
"settings.DonationsDescription": "Κάντε δωρεά στον προγραμματιστή",
"settings.EnabledProfile": "Ενεργοποιημένο προφίλ",
"settings.FailedToClearImageCache": "Απέτυχε η εκκαθάριση της προσωρινής μνήμης εικόνων",
"settings.FailedToClearImageCacheDescription": "Δεν κατέστη δυνατή η εκκαθάριση της προσωρινής μνήμης εικόνων",
"settings.GitHubDescription": "Προβολή του πηγαίου κώδικα",
"settings.HostHint1": "Αυτή είναι η διεύθυνση URL με την οποία αποκτάτε πρόσβαση στο web GUI της υπηρεσίας",
"settings.HostHint2": "Πρέπει να συμπεριλάβετε είτε το http:// είτε το https://",
"settings.HostHint3": "Μην χρησιμοποιείτε localhost ή 127.0.0.1",
"settings.InvalidEmail": "Μη έγκυρη διεύθυνση email",
"settings.InvalidEmailMessage": "Η διεύθυνση email δεν είναι έγκυρη",
"settings.Localization": "Τοπικοποίηση",
"settings.LocalizationDescription": "Προσαρμογή στις τοπικές ρυθμίσεις σας",
"settings.Logs": "Αρχεία καταγραφής",
"settings.MACAddressHint3": "Τα δεκαεξαδικά ψηφία κυμαίνονται από 0-9 και A-F",
"settings.MACAddressHint4": "Κάθε δεκαεξαδική οκτάδα πρέπει να διαχωρίζεται με άνω και κάτω τελεία",
"settings.MACAddressValidation": "Μη έγκυρη διεύθυνση MAC",
"settings.ModuleNotFound": "Η μονάδα δε βρέθηκε",
"settings.MACAddressHint1": "Αυτή είναι η διεύθυνση MAC του μηχανήματος που θέλετε να ξυπνήσετε",
"settings.MACAddressHint2": "Οι διευθύνσεις MAC περιέχουν έξι διψήφιες δεκαεξαδικές ψηφίδες (μια οκτάδα)",
"settings.MinimumCharacters": "Τουλάχιστον {} χαρακτήρες",
"settings.MustBeValueBetween": "Πρέπει να είναι μια τιμή μεταξύ {} και {}",
"settings.Network": "Δίκτυο",
"settings.NetworkDescription": "Προσαρμογή δυνατοτήτων δικτύου",
"settings.NewPassword": "Νέος Κωδικός",
"settings.NotAvailable": "Δεν είναι διαθέσιμο",
"settings.NotAuthorized": "Μη εξουσιοδοτημένο",
"settings.NotAuthorizedMessage": "Το LunaSea δεν είναι εξουσιοδοτημένο να εμφανίζει ειδοποιήσεις. Μεταβείτε στις ρυθμίσεις της συσκευής σας για να ενεργοποιήσετε τις ειδοποιήσεις.",
"settings.Notifications": "Ειδοποιήσεις",
"settings.PasswordUpdated": "Ο κωδικός πρόσβασης ενημερώθηκε",
"settings.PastDays": "Προηγούμενες ημέρες",
"settings.PasswordValidation": "Απαιτείται κωδικός πρόσβασης",
"settings.PastDaysInScheduleView": "Προηγούμενες ημέρες σε προβολή προγράμματος",
"settings.ProfilesBannerLine1": "Τα προφίλ σας επιτρέπουν να προσθέσετε πολλαπλές εγκαταστάσεις μονάδων στο LunaSea. Μπορείτε να εναλλάσσεστε μεταξύ των προφίλ στο κύριο συρτάρι πλοήγησης.",
"settings.QuickActionsBannerLine2": "Μπορεί να οριστεί περιορισμένος αριθμός γρήγορων ενεργειών κάθε φορά και η ενεργοποίηση περισσότερων από όσες μπορεί να υποστηρίξει ο εκκινητής σας δε θα έχει κανένα αποτέλεσμα.",
"settings.QuickActionsDescription": "Γρήγορες ενέργειες στην αρχική οθόνη",
"settings.Register": "Εγγραφή",
"settings.RestoreFromCloudSuccess": "Επιτυχής επαναφορά",
"settings.RestoreFromDevice": "Επαναφορά από συσκευή",
"settings.SignedOutFailure": "Αποτυχία αποσύνδεσης",
"settings.QuickActionsBannerLine1": "Οι γρήγορες ενέργειες σας επιτρέπουν να μεταβείτε γρήγορα σε μονάδες απευθείας από την αρχική οθόνη ή το πρόγραμμα εκκίνησης της συσκευής σας πατώντας παρατεταμένα το εικονίδιο του LunaSea.",
"settings.RestoreFromDeviceDescription": "Επαναφορά δεδομένων παραμετροποίησης",
"settings.SentryLoggingDescription": "Μεταφόρτωση σφαλμάτων στο Sentry",
"settings.SignedInFailure": "Αποτυχία σύνδεσης",
"settings.SignedInSuccess": "Επιτυχής σύνδεση",
"settings.SignedOutSuccess": "Αποσυνδεθήκατε",
"settings.UpdateEmail": "Ενημέρωση Email",
"settings.SystemStatusDescription": "Σελίδα κατάστασης για τις φιλοξενούμενες υπηρεσίες",
"settings.TestConnection": "Δοκιμή σύνδεσης",
"settings.TLSCertificateValidationDescription": "Επικύρωση πιστοποιητικών σε συνδέσεις TLS",
"settings.UpdatePassword": "Ενημέρωση κωδικού",
"settings.Use24HourTime": "Χρήση 24ωρης ώρας",
"settings.Use24HourTimeDescription": "Εμφάνιση χρονοσφραγίδων σε στυλ 24 ωρών",
"settings.User": "Χρήστης",
"sonarr.AddedSeries": "Προστέθηκε σειρά",
"sonarr.AddedTag": "Προσθήκη ετικέτας",
"sonarr.AddReleaseToBlocklist": "Προσθήκη έκδοσης στην λίστα αποκλεισμού",
"sonarr.AddedOn": "Προστέθηκε στις",
"sonarr.AddSeries": "Προσθήκη σειρών",
"sonarr.EpisodesCount": "{} Επεισόδια",
"sonarr.EpisodeFilesDeleted": "Τα αρχεία επεισοδίων διαγράφηκαν",
"sonarr.Monitor": "Παρακολούθηση",
"sonarr.MonitorEpisode": "Παρακολούθηση επεισοδίου",
"sonarr.MonitorSeries": "Παρακολούθηση σειράς",
"sonarr.Monitored": "Παρακολουθείται",
"sonarr.More": "Περισσότερα",
"sonarr.Name": "Όνομα",
"sonarr.NoEpisodesFound": "Δε βρέθηκαν επεισόδια",
"sonarr.Monitoring": "Υπό παρακολούθηση",
"sonarr.MonitoredDescription": "Λήψη παρακολουθούμενων επεισοδίων αυτής της σειράς",
"sonarr.Age": "Ηλικία",
"sonarr.AutomaticSearch": "Αυτόματη αναζήτηση",
"sonarr.BackingUpDatabase": "Δημιουργία αντιγράφου ασφαλείας βάσης δεδομένων{}",
"sonarr.BackingUpDatabaseDescription": "Γίνεται δημιουργία αντιγράφου ασφαλείας στο παρασκήνιο",
"sonarr.CheckDownloadClient": "Ελέγξτε το πρόγραμμα λήψης για περισσότερες λεπτομέρειες",
"sonarr.Codec": "Codec",
"sonarr.DeleteEpisodeFileHint1": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το αρχείο επεισοδίου;",
"sonarr.DeleteFile": "Διαγραφή αρχείου",
"sonarr.DeleteReasonUpgrade": "Το αρχείο διαγράφηκε για την εισαγωγή μιας αναβάθμισης",
"sonarr.DeleteReasonMissingFromDisk": "Το Sonarr δεν μπόρεσε να βρει το αρχείο στο δίσκο, οπότε αφαιρέθηκε",
"sonarr.DeleteReasonManual": "Το αρχείο διαγράφηκε μέσω του UI",
"sonarr.DestinationRelative": "Προορισμός Σχετικός",
"sonarr.Download": "Λήψη",
"sonarr.Downloaded": "Λήφθηκε",
"sonarr.DownloadedImporting": "Κατέβηκε: Γίνεται εισαγωγή",
"sonarr.DownloadedWaitingToImport": "Κατέβηκε: Αναμονή για εισαγωγή",
"sonarr.DownloadedWaitingToProcess": "Κατέβηκε: Αναμονή για επεξεργασία",
"sonarr.Downloading": "Γίνεται Λήψη",
"sonarr.DownloadingWithMessage": "Γίνεται Λήψη: {}",
"sonarr.DownloadingRelease": "Λήψη έκδοσης…",
"sonarr.DownloadClientUnavailable": "Το πρόγραμμα λήψης δεν είναι διαθέσιμο",
"sonarr.DownloadFailed": "Η λήψη απέτυχε",
"sonarr.DownloadID": "Αναγνωριστικό λήψης",
"sonarr.DownloadIgnored": "Η λήψη αγνοήθηκε",
"sonarr.DownloadWarning": "Προειδοποίηση λήψης",
"sonarr.DownloadWarningWithMessage": "Προειδοποίηση λήψης: {}",
"sonarr.EditSeries": "Επεξεργασία σειράς",
"sonarr.EmptyQueue": "Άδεια ουρά",
"sonarr.Ended": "Τελείωσε",
"sonarr.Automatic": "Αυτόματα",
"sonarr.Approved": "Εγκρίθηκε",
"sonarr.AddToExclusionList": "Προσθήκη στη λίστα εξαιρέσεων",
"sonarr.All": "Όλα",
"sonarr.AllSeasons": "Όλες οι σεζόν",
"sonarr.Audio": "Ήχος",
"sonarr.BackupDatabase": "Δημιουργία Αντιγράφου ασφαλείας",
"sonarr.Bitrate": "Bitrate",
"sonarr.DeleteFiles": "Διαγραφή αρχείων",
"sonarr.BitDepth": "Βάθος bit",
"sonarr.Continuing": "Συνεχίζεται",
"sonarr.DeleteEpisodeFile": "Διαγραφή αρχείου επεισοδίου",
"sonarr.Channels": "Κανάλια",
"sonarr.Client": "Client",
"sonarr.Destination": "Προορισμός",
"sonarr.EpisodeFileRenamed": "Το αρχείο επεισοδίου μετονομάστηκε",
"sonarr.Episode": "Επεισόδιο",
"sonarr.Episodes": "Επεισόδια",
"sonarr.EpisodesAvailable": "Διαθέσιμα επεισόδια",
"sonarr.EpisodeFileDeleted": "Το αρχείο επεισοδίου διαγράφηκε",
"sonarr.NoEpisodeFilesFound": "Δε βρέθηκαν αρχεία επεισοδίων",
"sonarr.FailedToDeleteEpisodeFiles": "Αποτυχία διαγραφής αρχείων επεισοδίου",
"sonarr.FailedToRefresh": "Αποτυχία ανανέωσης",
"sonarr.FailedToRemoveFromQueue": "Απέτυχε η αφαίρεση από την ουρά",
"sonarr.FailedToRemoveSeries": "Αποτυχία κατάργησης σειράς",
"sonarr.FailedToRunRSSSync": "Αποτυχία εκτέλεσης συγχρονισμού RSS",
"sonarr.FailedToSearchForEpisodes": "Αποτυχία αναζήτησης επεισοδίων",
"sonarr.FailedToSearch": "Αποτυχία αναζήτησης",
"sonarr.FailedToUnmonitorEpisode": "Αποτυχία κατάργησης παρακολούθησης του επεισοδίου",
"sonarr.FPS": "FPS",
"sonarr.GrabbedFrom": "Αρπάχτηκε από {}",
"sonarr.History": "Ιστορικό",
"sonarr.HistoryDescription": "Προβολή πρόσφατης δραστηριότητας",
"sonarr.Import": "Εισαγωγή",
"sonarr.Indexer": "Indexer",
"sonarr.NoEpisodeFilesFoundDeleteMessage": "Κανένα επιλεγμένο επεισόδιο δεν έχει αρχεία προς διαγραφή",
"sonarr.NoHistoryFound": "Δε βρέθηκε ιστορικό",
"sonarr.NoLongerMonitoring": "Δε παρακολουθείται πλέον",
"sonarr.NoMessagesFound": "Δε βρέθηκαν μηνύματα",
"sonarr.NoReleasesFound": "Δεν βρέθηκαν κυκλοφορίες",
"sonarr.NoResultsFound": "Δε βρέθηκαν αποτελέσματα",
"sonarr.NoSeasonsFound": "Δεν βρέθηκαν σεζόν",
"sonarr.OneEpisode": "1 επεισόδιο",
"sonarr.QueueSize": "Μέγεθος ουράς",
"sonarr.Reason": "Λόγος",
"sonarr.RefreshSeries": "Ανανέωση σειράς",
"sonarr.Rejected": "Απορρίφθηκε",
"sonarr.LanguageProfile": "Προφίλ γλώσσας",
"sonarr.Leechers": "Leechers",
"sonarr.ManualImport": "Χειροκίνητη εισαγωγή",
"sonarr.ManualImportDescription": "Εισαγωγή περιεχομένου από το σύστημα αρχείων",
"sonarr.Releases": "Εκδόσεις",
"sonarr.ReleaseGroup": "Ομάδα κυκλοφορίας",
"sonarr.RemoveSeries": "Αφαίρεση σειράς",
"sonarr.RemovedSeriesWithFiles": "Αφαιρεθείσα σειρά (με αρχεία)",
"sonarr.RemovedSeries": "Αφαιρεθείσα σειρά",
"sonarr.Resolution": "Ανάλυση",
"sonarr.RootFolder": "Κύριος φάκελος",
"sonarr.RunRSSSync": "Εκτέλεση συγχρονισμού RSS",
"sonarr.RunningRSSSync": "Εκτέλεση συγχρονισμού RSS {}",
"sonarr.SearchingForEpisodes": "Αναζήτηση επεισοδίων…",
"sonarr.Season": "Σεζόν",
"sonarr.Seasons": "Σεζόν",
"sonarr.SeasonDetails": "Λεπτομέρειες σεζόν",
"sonarr.SeasonFolders": "Φάκελοι σεζόν",
"sonarr.SeasonFoldersDescription": "Ταξινόμηση επεισοδίων σε φακέλους σεζόν",
"sonarr.SeasonNumber": "Σεζόν {}",
"sonarr.Seeders": "Seeders",
"sonarr.SeriesType": "Τύπος σειράς",
"sonarr.Size": "Μέγεθος",
"sonarr.SortCatalogue": "Ταξινόμηση καταλόγου",
"sonarr.SortReleases": "Ταξινόμηση κυκλοφοριών",
"sonarr.Source": "Πηγή",
"sonarr.SourceRelative": "Σχετική πηγή",
"sonarr.SourceTitle": "Τίτλος πηγής",
"sonarr.Specials": "Σπέσιαλ",
"sonarr.StartSearchFor": "Έναρξη αναζήτησης για…",
"sonarr.StartSearchForMissingEpisodes": "Έναρξη αναζήτησης για επεισόδια που λείπουν",
"sonarr.StartSearchForCutoffUnmetEpisodes": "Ξεκινήστε την αναζήτηση για επεισόδια που δεν έχει καλυφθεί η αποκοπή",
"sonarr.Title": "Τίτλος",
"sonarr.Torrent": "Torrent",
"sonarr.Unaired": "Ακυκλοφόρητο",
"sonarr.Unmonitored": "Δε παρακολουθείται",
"sonarr.Upcoming": "Επερχόμενα",
"sonarr.UpdateLibrary": "Ενημέρωση βιβλιοθήκης",
"sonarr.UpdateSeries": "Ενημέρωση σειράς",
"sonarr.UpdatingLibrary": "Γίνεται ενημέρωση βιβλιοθήκης",
"sonarr.UpdatingLibraryDescription": "Γίνεται ενημέρωση βιβλιοθήκης στο παρασκήνιο",
"sonarr.UpdatedSeries": "Ενημερωμένη σειρά",
"sonarr.Usenet": "Usenet",
"sonarr.UseSeasonFolders": "Χρήση φακέλων σεζόν",
"sonarr.UseSeasonFoldersDescription": "Ταξινόμηση επεισοδίων σε φακέλους σεζόν",
"sonarr.Video": "Βίντεο",
"sonarr.ViewWebGUI": "Προβολή Web GUI",
"sonarr.WordScore": "Βαθμολογία λέξεων",
"sonarr.OneSeason": "1 σεζόν",
"sonarr.Other": "Άλλο",
"sonarr.Overview": "Σύνοψη",
"sonarr.NoSummaryAvailable": "Δεν υπάρχει διαθέσιμη περίληψη",
"sonarr.NoTagsFound": "Δε βρέθηκαν ετικέτες",
"sonarr.Path": "Διαδρομή",
"sonarr.Paused": "Σε παύση",
"sonarr.Quality": "Ποιότητα",
"sonarr.Pending": "Εκκρεμεί",
"sonarr.PendingWithMessage": "Σε εκκρεμότητα: {}",
"sonarr.PublishedDate": "Ημερομηνία δημοσίευσης",
"sonarr.QualityProfile": "Προφίλ ποιότητας",
"sonarr.Queue": "Ουρά",
"sonarr.Queued": "Στην ουρά",
"sonarr.QueueDescription": "Προβολή ενεργού & σε αναμονή περιεχομένου",
"sonarr.RemovedFromQueue": "Αφαιρέθηκε από την ουρά",
"sonarr.RemoveFromQueue": "Αφαίρεση από την ουρά",
"sonarr.RemoveFromDownloadClient": "Αφαίρεση από το πρόγραμμα λήψης",
"sonarr.ScanType": "Τύπος σάρωσης",
"sonarr.Search": "Αναζήτηση",
"sonarr.Searching": "Αναζήτηση{}",
"sonarr.Subtitles": "Υπότιτλοι",
"sonarr.UnmonitorSeries": "Κατάργηση παρακολούθησης σειράς",
"sonarr.UnmonitorEpisode": "Κατάργηση παρακολούθησης επεισοδίου",
"sonarr.EpisodeImported": "Το επεισόδιο εισήχθη ({})",
"sonarr.EpisodeNumber": "Επεισόδιο {}",
"sonarr.FailedToAddSeries": "Αποτυχία προσθήκης σειράς",
"sonarr.FailedToAddTag": "Αποτυχία προσθήκης ετικέτας",
"sonarr.FailedToDeleteEpisodeFile": "Αποτυχία διαγραφής αρχείου επεισοδίου",
"sonarr.FailedToDownloadRelease": "Αποτυχία λήψης της έκδοσης",
"sonarr.FailedToMonitorEpisode": "Αποτυχία παρακολούθησης επεισοδίου",
"sonarr.ImportFailed": "Η εισαγωγή απέτυχε",
"sonarr.ImportedTo": "Εισαγωγή σε",
"sonarr.SearchingDescription": "Αναζήτηση όλων των επεισοδίων που λείπουν",
"sonarr.SearchingForMonitoredEpisodes": "Αναζήτηση επεισοδίων που παρακολουθούνται…",
"sonarr.Runtime": "Διάρκεια",
"sonarr.SearchingForEpisode": "Αναζήτηση επεισοδίου…",
"sonarr.SearchingForSeason": "Αναζήτηση σεζόν…",
"sonarr.SearchFor": "Αναζήτηση για {}",
"sonarr.SearchAllMissing": "Αναζήτηση όλων όσων λείπουν",
"sonarr.SearchMonitored": "Αναζήτηση αυτών που παρακολουθούνται",
"sonarr.SeriesNotFound": "Η σειρά δε βρέθηκε",
"sonarr.SeriesPath": "Διαδρομή σειράς",
"sonarr.Series": "Σειρά",
"sonarr.SeriesDetails": "Λεπτομέρειες σειράς",
"sonarr.SeriesEnded": "Ολοκληρωμένη σειρά",
"sonarr.SeriesFolderImported": "Το επεισόδιο εισήχθη από το φάκελο της σειράς",
"sonarr.Streams": "Ροές",
"sonarr.TagsDescription": "Διαχειριστείτε τις ετικέτες σας",
"sonarr.SystemStatus": "Κατάσταση συστήματος",
"sonarr.SystemStatusDescription": "Κατάσταση συστήματος και χώρος στο δίσκο",
"sonarr.Tags": "Ετικέτες",
"sonarr.TimeLeft": "Υπολειπόμενος χρόνος",
"sonarr.FailedToSeasonSearch": "Αποτυχία αναζήτησης σεζόν",
"sonarr.FailedToUnmonitorSeason": "Αποτυχία κατάργησης παρακολούθησης σεζόν",
"sonarr.FailedToUnmonitorSeries": "Αποτυχία κατάργησης παρακολούθησης σειράς",
"sonarr.FailedToUpdateLibrary": "Αποτυχία ενημέρωσης βιβλιοθήκης",
"sonarr.FilterReleases": "Φιλτράρισμα εκδόσεων",
"sonarr.FailedToUpdateSeries": "Αποτυχία ενημέρωσης σειράς",
"sonarr.FilterCatalogue": "Φιλτράρισμα καταλόγου",
"sonarr.Files": "Αρχεία",
"sonarr.NoSeriesFound": "Δε βρέθηκαν σειρές",
"sonarr.FailedToBackupDatabase": "Αποτυχία δημιουργίας αντιγράφου ασφαλείας",
"sonarr.FailedToMonitorSeason": "Αποτυχία παρακολούθησης σεζόν",
"sonarr.FailedToMonitorSeries": "Αποτυχία παρακολούθησης σειράς",
"sonarr.FailedToSearchForMonitoredEpisodes": "Αποτυχία αναζήτησης επεισοδίων που παρακολουθούνται",
"sonarr.InfoURL": "URL πληροφοριών",
"sonarr.Interactive": "Διαδραστικό",
"sonarr.InteractiveSearch": "Διαδραστική αναζήτηση",
"sonarr.Language": "Γλώσσα",
"sonarr.Languages": "Γλώσσες",
"sonarr.ManySeasons": "{} Σεζόν",
"sonarr.Missing": "Λείπει",
"sonarr.MediaInfo": "Πληροφορίες πολυμέσου",
"sonarr.Message": "Μήνυμα",
"sonarr.Messages": "Μηνύματα",
"sonarr.MissingEpisodes": "Επεισόδια που λείπουν",
"sonarr.MissingEpisodesHint1": "Είστε βέβαιοι ότι θέλετε να αναζητήσετε όλα τα επεισόδια που λείπουν;",
"sonarr.RelativePath": "Σχετική διαδρομή",
"sonarr.RunningRSSSyncDescription": "Εκτέλεση συγχρονισμού RSS στο παρασκήνιο",
"tautulli.Activity": "Δραστηριότητα",
"tautulli.ActivityDetails": "Λεπτομέρειες δραστηριότητας",
"tautulli.ActivityRefreshRate": "Ρυθμός ανανέωσης δραστηριότητας",
"tautulli.Audio": "Ήχος",
"tautulli.BackingUpConfiguration": "Δημιουργία αντιγράφων ασφαλείας διαμόρφωσης…",
"tautulli.DeleteCache": "Διαγραφή Cache",
"tautulli.DeletingImageCache": "Διαγραφή προσωρινής μνήμης εικόνων…",
"tautulli.DirectStream": "Απευθείας ροή",
"tautulli.DirectStreams": "Απευθείας ροές",
"tautulli.Duration": "Διάρκεια",
"tautulli.Episode": "Επεισόδιο {}",
"tautulli.DirectPlay": "Απευθείας αναπαραγωγή",
"tautulli.DirectPlays": "Απευθείας αναπαραγωγές",
"tautulli.Stream": "Ροή",
"tautulli.Subtitle": "Υπότιτλος",
"tautulli.Terminate": "Τερματισμός",
"tautulli.TerminationAttachMessage": "Μπορείτε προαιρετικά να επισυνάψετε ένα μήνυμα τερματισμού παρακάτω.",
"tautulli.TerminationMessage": "Μήνυμα τερματισμού",
"tautulli.TerminateSessionFailed": "Απέτυχε ο τερματισμός της συνεδρίας",
"tautulli.Throttled": "Φρεναρισμένη",
"tautulli.Title": "Τίτλος",
"tautulli.Transcode": "Μετατροπή",
"tautulli.Transcodes": "Μετατροπές",
"tautulli.User": "Χρήστης",
"tautulli.Video": "Βίντεο",
"tautulli.Users": "Χρήστες",
"tautulli.ViewWebGUI": "Προβολή Web GUI",
"tautulli.Year": "Έτος",
"tautulli.BackingUpConfigurationDescription": "Δημιουργία αντιγράφων ασφαλείας της διαμόρφωσής σας στο παρασκήνιο",
"tautulli.BackingUpConfigurationFailed": "Αποτυχία δημιουργίας αντιγράφων ασφαλείας διαμόρφωσης",
"tautulli.BackingUpDatabase": "Δημιουργία αντιγράφων ασφαλείας της βάσης δεδομένων…",
"tautulli.BackingUpDatabaseDescription": "Γίνεται δημιουργία του αντιγράφου ασφαλείας σας στο παρασκήνιο",
"tautulli.BackupConfiguration": "Αντίγραφο ασφαλείας ρυθμίσεων",
"tautulli.BackupDatabase": "Δημιουργία Αντιγράφου ασφαλείας",
"tautulli.Bandwidth": "Bandwidth",
"tautulli.Burn": "Burn",
"tautulli.Converting": "Μετατροπή",
"tautulli.Container": "Container",
"tautulli.Copy": "Αντιγραφή",
"tautulli.DeletingImageCacheFailed": "Απέτυχε η διαγραφή της προσωρινής μνήμης εικόνας",
"tautulli.DeletingTemporarySessions": "Διαγραφή προσωρινών συνεδριών…",
"tautulli.DeletingTemporarySessionsDescription": "Οι προσωρινές συνεδρίες διαγράφονται",
"tautulli.DeletingTemporarySessionsFailed": "Απέτυχε η διαγραφή προσωρινών συνεδριών",
"tautulli.ETA": "ΕΤΑ",
"tautulli.Graphs": "Γραφήματα",
"tautulli.History": "Ιστορικό",
"tautulli.Library": "Βιβλιοθήκη",
"tautulli.LibraryDetails": "Λεπτομέρειες βιβλιοθήκης",
"tautulli.Location": "Τοποθεσία",
"tautulli.MediaDetails": "Λεπτομέρειες πολυμέσου",
"tautulli.Metadata": "Μεταδεδομένα",
"tautulli.Player": "Αναμεταδότης",
"tautulli.Product": "Προϊόν",
"tautulli.Quality": "Ποιότητα",
"tautulli.Season": "Σεζόν {}",
"tautulli.SessionEnded": "Η συνεδρία τελείωσε",
"tautulli.Sessions": "Συνεδρίες",
"tautulli.SessionsOne": "1 συνεδρία",
"tautulli.SessionsMany": "{} Συνεδρίες",
"tautulli.Speed": "Ταχύτητα: {}x",
"tautulli.Statistics": "Στατιστικά",
"tautulli.StatisticsItemCount": "Πλήθος στατιστικών στοιχείων",
"tautulli.TerminationConfirmMessage": "Θέλετε να τερματίσετε αυτή τη συνεδρία;",
"tautulli.TerminatedSession": "Τερματίστηκε η συνεδρία",
"tautulli.TerminateSession": "Τερματισμός συνεδρίας",
"tautulli.UserDetails": "Λεπτομέρειες χρήστη",
"tautulli.BackingUpDatabaseFailed": "Αποτυχία δημιουργίας αντιγράφου ασφαλείας",
"tautulli.DeletingCache": "Διαγραφή cache…",
"tautulli.DefaultTerminationMessage": "Προεπιλεγμένο μήνυμα τερματισμού",
"tautulli.DeleteImageCache": "Διαγραφή προσωρινής μνήμης εικόνων",
"tautulli.DeleteTemporarySessions": "Διαγραφή προσωρινών συνεδριών",
"tautulli.DeletingCacheDescription": "Το Tautulli cache διαγράφεται",
"tautulli.DeletingCacheFailed": "Αποτυχία διαγραφής της προσωρινής μνήμης",
"tautulli.DeletingImageCacheDescription": "Η προσωρινή μνήμη cache εικόνων Tautulli διαγράφεται",
"tautulli.More": "Περισσότερα",
"tautulli.None": "Κανένα",
"tautulli.NoActiveStreams": "Δεν υπάρχουν ενεργές ροές",
"tautulli.Platform": "Πλατφόρμα",
"wake_on_lan.MagicPacketSent": "Αποστολή Magic Packet",
"wake_on_lan.MagicPacketSentMessage": "Το μηχάνημα πρέπει να εκκινεί!",
"wake_on_lan.MagicPacketFailedToSend": "Αποτυχία αποστολής Magic Packet"

View File

@@ -39,7 +39,7 @@
"lunasea.Chores": "Quehaceres",
"lunasea.Clear": "Borrar",
"lunasea.Close": "Cerrar",
"lunasea.ComingSoon": "Próximamente",
"lunasea.ComingSoon": "Muy pronto",
"lunasea.Copied": "Copiado",
"lunasea.CopiedContentToTheClipboard": "Contenido copiado en el portapapeles",
"lunasea.Critical": "Crítica",
@@ -47,15 +47,18 @@
"lunasea.Days": "{} Días",
"lunasea.DaysAgo": "Hace {} días",
"lunasea.Debug": "Depurar",
"lunasea.Delete": "Eliminar",
"lunasea.Delete": "Borrar",
"lunasea.Descending": "Descendente",
"lunasea.Develop": "Desarrollar",
"lunasea.Disable": "Desactivar",
"lunasea.Disabled": "Desactivado",
"lunasea.Dismiss": "Descartar",
"lunasea.Docs": "Documentos",
"lunasea.DownloadClient": "Descargar el cliente",
"lunasea.Edge": "Borde",
"lunasea.Error": "Error",
"lunasea.EverySecond": "Cada segundo",
"lunasea.EverySeconds": "Cada {} segundos",
"lunasea.ExternalModules": "Módulos externos",
"lunasea.Features": "Características",
"lunasea.Fixes": "Arreglos",
@@ -69,6 +72,7 @@
"lunasea.IncorrectEncryptionKey": "Clave de cifrado incorrecta",
"lunasea.Internal": "Interno",
"lunasea.InvalidFileTypeSelected": "Tipo de archivo seleccionado no válido",
"lunasea.Items": "{} Artículos",
"lunasea.JustNow": "Ahora mismo",
"lunasea.Minutes": "{} minutos",
"lunasea.MinutesAgo": "Hace {} minutos",
@@ -77,12 +81,14 @@
"lunasea.Months": "{} meses",
"lunasea.MonthsAgo": "Hace {} meses",
"lunasea.New": "Nuevo",
"lunasea.No": "No",
"lunasea.NoModulesEnabled": "Sin módulos habilitados",
"lunasea.NotSet": "No establecido",
"lunasea.OneDay": "1 día",
"lunasea.OneDayAgo": "Hace 1 día",
"lunasea.OneHour": "1 hora",
"lunasea.OneHourAgo": "Hace 1 hora",
"lunasea.OneItem": "1 Artículo",
"lunasea.OneMinute": "1 minuto",
"lunasea.OneMinuteAgo": "Hace 1 minuto",
"lunasea.OneMonth": "1 mes",
@@ -94,11 +100,12 @@
"lunasea.Options": "Opciones",
"lunasea.Other": "Otro",
"lunasea.Page": "Página",
"lunasea.PlatformSpecific": "Plataforma específica",
"lunasea.PleaseTryAgain": "Por favor, inténtelo de nuevo",
"lunasea.Production": "Producción",
"lunasea.Refresh": "Actualizar",
"lunasea.Refreshing": "Refrescando…",
"lunasea.Remove": "Eliminar",
"lunasea.Remove": "Borrar",
"lunasea.Rename": "Renombrar",
"lunasea.Restore": "Restaurar",
"lunasea.Retry": "Reintentar",
@@ -107,9 +114,11 @@
"lunasea.Seconds": "{} segundos",
"lunasea.SecondsAgo": "Hace {} segundos",
"lunasea.Set": "Establecer",
"lunasea.Settings": "Configuración",
"lunasea.Settings": "Ajustes",
"lunasea.Stable": "Estable",
"lunasea.StartingView": "Vista inicial",
"lunasea.ThankYou": "Gracias",
"lunasea.ThankYouMessage": "¡Gracias por apoyar a la comunidad del código abierto!",
"lunasea.Today": "Hoy",
"lunasea.TransactionFailure": "Error de transacción",
"lunasea.TryAgain": "Volver a intentar",
@@ -125,6 +134,7 @@
"lunasea.Website": "Sitio web",
"lunasea.Years": "{} años",
"lunasea.YearsAgo": "Hace {} años",
"lunasea.Yes": "Sí",
"overseerr.NoRequests": "Sin solicitudes",
"overseerr.OneRequest": "1 solicitud",
"overseerr.SomeRequests": "{} solicitudes",
@@ -170,12 +180,15 @@
"radarr.Codec": "Códec",
"radarr.Configure": "Configurar",
"radarr.Copy": "Copiar",
"radarr.CopyFiles": "Enlace permanente/Copiar archivos",
"radarr.CopyFull": "Enlazar/Copiar archivos",
"radarr.CutoffUnmet": "Límite no alcanzado",
"radarr.DateAdded": "Fecha añadida",
"radarr.DigitalRelease": "Publicación digital",
"radarr.DirectoryNotFound": "Directorio no encontrado",
"radarr.Discover": "Descubra",
"radarr.DiscoverSuggestions": "Descubrir las sugerencias",
"radarr.DiscoverSuggestionsDescription": "Agregar las versiones recomendadas a Discover",
"radarr.Disks": "Discos",
"radarr.DownloadFailed": "Descarga fracasó",
"radarr.DownloadIgnored": "Descarga ignorada",
@@ -206,8 +219,11 @@
"radarr.MonitoredDescription": "Monitorear nuevos lanzamientos",
"radarr.More": "Más",
"radarr.Move": "Mover",
"radarr.MoveFiles": "Mover los archivos",
"radarr.MoveFilesDescription": "¿Quieres mover los archivos?",
"radarr.MoveFull": "Mover archivos",
"radarr.Movie": "Película",
"radarr.MovieDetails": "Detalles de la película",
"radarr.MovieFileDeleted": "Archivo de película eliminado",
"radarr.MovieFileRenamed": "Archivo de película renombrado",
"radarr.MovieImported": "Película importada ({})",
@@ -230,9 +246,10 @@
"radarr.QualityProfile": "Perfil de calidad",
"radarr.Queue": "Cola",
"radarr.QueueDescription": "Ver contenido activo y en cola",
"radarr.QueueSize": "Tamaño de la cola",
"radarr.Quick": "Rápidamente",
"radarr.RefreshMovie": "Actualizar película",
"radarr.Rejected": "Rechazado",
"radarr.RefreshMovie": "Actualizar la película",
"radarr.Rejected": "Rechazada",
"radarr.Released": "Estrenada",
"radarr.ReleasedToday": "Estrena hoy",
"radarr.Releases": "Comunicados",
@@ -266,6 +283,7 @@
"radarr.UnmappedFolders": "{} Carpetas no asignadas",
"radarr.UnmonitorMovie": "No monitorear",
"radarr.Unmonitored": "No monitoreadas",
"radarr.Unreleased": "Sin publicar",
"radarr.Upcoming": "Próximamente",
"radarr.UpdateLibrary": "Actualizar librería",
"radarr.UpdateMovie": "Actualizar película",
@@ -282,6 +300,22 @@
"sabnzbd.Descending": "Descendente",
"sabnzbd.Duplicate": "Duplicado",
"sabnzbd.Failed": "Fallido",
"sabnzbd.StandbyPC": "PC en modo de espera",
"sabnzbd.HibernatePC": "Hibernar el PC",
"sabnzbd.Size": "Tamaño",
"sabnzbd.Normal": "Normal",
"sabnzbd.RepairUnpack": "Reparar/desembalar",
"sabnzbd.None": "Ninguno",
"sabnzbd.RepairUnpackDelete": "Reparar/Deshacer/Borrar",
"sabnzbd.Low": "Bajo",
"sabnzbd.ShutdownSABnzbd": "Apagar SABnzbd",
"sabnzbd.Paused": "En pausa",
"sabnzbd.Stop": "Parar",
"sabnzbd.Repair": "Reparar",
"sabnzbd.Name": "Nombre",
"sabnzbd.High": "Alto",
"sabnzbd.Force": "Fuerza",
"sabnzbd.ShutdownPC": "Apagar el PC",
"search.Alphabetical": "Alfabética",
"search.Category": "Categoria",
"search.Comments": "Comentarios",
@@ -303,6 +337,20 @@
"search.Categories": "Categorias",
"search.NoSubcategoriesFound": "Subcategorías no encontradas",
"search.Results": "Resultados",
"search.DeleteIndexer": "Borrar un indexador",
"search.HideAdultCategoriesDescription": "Ocultar el contenido para adultos",
"search.ShowLinks": "Mostrar los enlaces",
"search.EditIndexer": "Editar un indexador",
"search.IndexerDeleted": "Indexador borrado",
"search.NoIndexersFound": "No se han encontrado indexadores",
"search.HideAdultCategories": "Ocultar las categorías para adultos",
"search.FailedToAddIndexer": "Error al añadir el indexador",
"search.AddIndexer": "Añadir un indexador",
"search.IndexerNotFound": "No se encuentra el indexador",
"search.ShowLinksDescription": "Mostrar los enlaces de la descarga y los comentarios",
"search.IndexerAPIKey": "Clave dela API de indexación",
"search.IndexerAdded": "Indexador añadido",
"search.IndexerAPIHost": "Indexador del Host de la API",
"settings.BroadcastAddressHint1": "Esta es la dirección de transmisión de su red local",
"settings.AccountHelp": "Cuenta LunaSea",
"settings.AddHeader": "Añadir cabecera",
@@ -750,6 +798,16 @@
"tautulli.Transcode": "Transcodificar",
"tautulli.Transcodes": "Transcodificaciones",
"tautulli.ETA": "Tiempo Restante",
"tautulli.Converting": "Conversión",
"tautulli.Speed": "Velocidad: {}x",
"tautulli.ActivityRefreshRate": "Frecuencia de actualización de la actividad",
"tautulli.DefaultTerminationMessage": "Mensaje de finalización predeterminado",
"tautulli.Graphs": "Gráficos",
"tautulli.LibraryDetails": "Detalles de la biblioteca",
"tautulli.MediaDetails": "Detalles de los medios",
"tautulli.Statistics": "Estadísticas",
"tautulli.StatisticsItemCount": "Estadísticas del recuento de artículos",
"tautulli.UserDetails": "Detalles del usuario",
"wake_on_lan.MagicPacketSent": "Paquete mágico enviado",
"wake_on_lan.MagicPacketSentMessage": "¡Su máquina debería estar despertando!",
"wake_on_lan.MagicPacketFailedToSend": "Error al enviar Magic Packet"

View File

@@ -13,5 +13,46 @@
"dashboard.TwoWeeks": "Două săptămâni",
"dashboard.Wednesday": "Miercuri",
"dashboard.FutureDays": "Zile în viitor",
"dashboard.Monday": "Luni"
"dashboard.Monday": "Luni",
"lidarr.StartSearchFor": "Începe Căutarea Pentru…",
"lidarr.StartSearchForMissingAlbums": "Începe căutarea pentru albume lipsă",
"sonarr.AddedOn": "Adăugat La",
"sonarr.AddedSeries": "Seriale Adăugate",
"sonarr.AddedTag": "Etichetă Adăugată",
"sonarr.AddSeries": "Adaugă Serial",
"sonarr.AddReleaseToBlocklist": "Adaugă la Lista de Blocate",
"sonarr.AddToExclusionList": "Adaugă la Lista de Excluderi",
"sonarr.Age": "Vârstă",
"sonarr.All": "Toate",
"sonarr.AllSeasons": "Toate Sezoanele",
"sonarr.Approved": "Aprobat",
"sonarr.Audio": "Audio",
"sonarr.BackingUpDatabase": "Copie de rezervă a bazei de date{}",
"sonarr.BackingUpDatabaseDescription": "Copie de rezervă a bazei de date în fundal",
"sonarr.BackupDatabase": "Copie de rezervă a bazei de date",
"sonarr.Bitrate": "Rata de biți",
"sonarr.BitDepth": "Adâncime de biți",
"sonarr.Channels": "Canale",
"sonarr.CheckDownloadClient": "Verifică clientul de descărcare pentru mai multe detalii",
"sonarr.Codec": "Codec",
"sonarr.Client": "Client",
"sonarr.Continuing": "Continuând",
"sonarr.DeleteEpisodeFile": "Șterge Fișier Episod",
"sonarr.DeleteEpisodeFileHint1": "Sigur dorești să ștergi acest fișier de episod?",
"sonarr.DeleteFile": "Șterge Fișier",
"sonarr.DeleteFiles": "Șterge Fișiere",
"sonarr.DeleteReasonUpgrade": "Fișierul a fost șters pentru a importa o actualizare",
"sonarr.DeleteReasonMissingFromDisk": "Sonarr nu a putut găsi fișierul pe disc, așa că a fost eliminat",
"sonarr.Destination": "Destinație",
"sonarr.DestinationRelative": "Destinație Relativă",
"sonarr.Download": "Descărcare",
"sonarr.Downloaded": "Descărcat",
"sonarr.DownloadedImporting": "Descărcat: Se Importă",
"sonarr.DownloadedWaitingToImport": "Descărcat: Se Așteaptă Importarea",
"sonarr.DownloadedWaitingToProcess": "Descărcat: Se Așteaptă Procesarea",
"sonarr.Downloading": "Se Descarcă",
"sonarr.DownloadingWithMessage": "Se Descarcă: {}",
"sonarr.Automatic": "Automat",
"sonarr.AutomaticSearch": "Căutare Automată",
"sonarr.DeleteReasonManual": "Fișierul a fost șters de către UI"
}

View File

@@ -15,8 +15,3 @@ environment_config:
type: String
default: edge
env_var: FLAVOR
sentryDSN:
type: String
default: ""
env_var: SENTRY_DSN

View File

@@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>11.0</string>
<string>12.0</string>
</dict>
</plist>

View File

@@ -1,3 +0,0 @@
#include? "Pods/Target Support Files/Pods-ImageNotification/Pods-ImageNotification.debug.xcconfig"
#include "Pods/Target Support Files/Pods-ImageNotification/Pods-ImageNotification.debug.xcconfig"
#include "Generated.xcconfig"

View File

@@ -1,3 +0,0 @@
#include? "Pods/Target Support Files/Pods-ImageNotification/Pods-ImageNotification.release.xcconfig"
#include "Pods/Target Support Files/Pods-ImageNotification/Pods-ImageNotification.release.xcconfig"
#include "Generated.xcconfig"

View File

@@ -2,3 +2,7 @@ source "https://rubygems.org"
gem "fastlane"
gem "cocoapods"
gem "abbrev"
gem "logger"
gem "mutex_m"
gem "csv"

View File

@@ -1,44 +1,59 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.6)
CFPropertyList (3.0.7)
base64
nkf
rexml
activesupport (7.0.5)
concurrent-ruby (~> 1.0, >= 1.0.2)
abbrev (0.1.2)
activesupport (7.2.2.1)
base64
benchmark (>= 0.3)
bigdecimal
concurrent-ruby (~> 1.0, >= 1.3.1)
connection_pool (>= 2.2.5)
drb
i18n (>= 1.6, < 2)
logger (>= 1.4.2)
minitest (>= 5.1)
tzinfo (~> 2.0)
addressable (2.8.4)
public_suffix (>= 2.0.2, < 6.0)
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
algoliasearch (1.27.5)
httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1)
artifactory (3.0.15)
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.2.0)
aws-partitions (1.781.0)
aws-sdk-core (3.175.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
aws-eventstream (1.3.2)
aws-partitions (1.1077.0)
aws-sdk-core (3.222.1)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
base64
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.67.0)
aws-sdk-core (~> 3, >= 3.174.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.126.0)
aws-sdk-core (~> 3, >= 3.174.0)
logger
aws-sdk-kms (1.99.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.182.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
aws-sigv4 (1.5.2)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.11.0)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
benchmark (0.4.0)
bigdecimal (3.1.9)
claide (1.1.0)
cocoapods (1.12.1)
cocoapods (1.16.2)
addressable (~> 2.8)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.12.1)
cocoapods-core (= 1.16.2)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 1.6.0, < 2.0)
cocoapods-downloader (>= 2.1, < 3.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
cocoapods-search (>= 1.0.0, < 2.0)
cocoapods-trunk (>= 1.6.0, < 2.0)
@@ -50,8 +65,8 @@ GEM
molinillo (~> 0.8.0)
nap (~> 1.0)
ruby-macho (>= 2.3.0, < 3.0)
xcodeproj (>= 1.21.0, < 2.0)
cocoapods-core (1.12.1)
xcodeproj (>= 1.27.0, < 2.0)
cocoapods-core (1.16.2)
activesupport (>= 5.0, < 8)
addressable (~> 2.8)
algoliasearch (~> 1.0)
@@ -62,7 +77,7 @@ GEM
public_suffix (~> 4.0)
typhoeus (~> 1.0)
cocoapods-deintegrate (1.0.5)
cocoapods-downloader (1.6.3)
cocoapods-downloader (2.1)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.1)
@@ -74,19 +89,21 @@ GEM
colored2 (3.1.2)
commander (4.6.0)
highline (~> 2.0.0)
concurrent-ruby (1.2.2)
concurrent-ruby (1.3.5)
connection_pool (2.5.0)
csv (3.3.3)
declarative (0.0.20)
digest-crc (0.6.4)
digest-crc (0.7.0)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
domain_name (0.6.20240107)
dotenv (2.8.1)
drb (2.2.1)
emoji_regex (3.2.3)
escape (0.0.4)
ethon (0.16.0)
ffi (>= 1.15.0)
excon (0.100.0)
faraday (1.10.3)
excon (0.112.0)
faraday (1.10.4)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
@@ -105,24 +122,24 @@ GEM
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.0.4)
multipart-post (~> 2)
faraday-net_http (1.0.1)
faraday-multipart (1.1.0)
multipart-post (~> 2.0)
faraday-net_http (1.0.2)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday_middleware (1.2.1)
faraday (~> 1.0)
fastimage (2.2.7)
fastlane (2.213.0)
fastimage (2.4.0)
fastlane (2.227.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.3, < 2.0.0)
bundler (>= 1.12.0, < 3.0.0)
colored
colored (~> 1.2)
commander (~> 4.6)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0)
@@ -131,36 +148,41 @@ GEM
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
fastlane-sirp (>= 1.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-env (>= 1.6.0, < 2.0.0)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
json (< 3.0.0)
jwt (>= 2.1.0, < 3)
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
naturally (~> 2.2)
optparse (~> 0.1.1)
optparse (>= 0.1.1, < 1.0.0)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3)
security (= 0.1.5)
simctl (~> 1.6.3)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (>= 1.4.5, < 2.0.0)
terminal-table (~> 3)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
ffi (1.15.5)
xcpretty (~> 0.4.0)
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
fastlane-sirp (1.0.0)
sysrandom (~> 1.0)
ffi (1.17.1-arm64-darwin)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.44.0)
google-apis-androidpublisher_v3 (0.54.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.0)
google-apis-core (0.11.3)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
@@ -168,71 +190,74 @@ GEM
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
rexml
webrick
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.19.0)
google-apis-core (>= 0.9.0, < 2.a)
google-cloud-core (1.6.0)
google-cloud-env (~> 1.0)
google-apis-storage_v1 (0.31.0)
google-apis-core (>= 0.11.0, < 2.a)
google-cloud-core (1.8.0)
google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.3.1)
google-cloud-storage (1.44.0)
google-cloud-errors (1.5.0)
google-cloud-storage (1.47.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.19.0)
google-apis-storage_v1 (~> 0.31.0)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (1.5.2)
googleauth (1.8.1)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.5)
http-cookie (1.0.8)
domain_name (~> 0.5)
httpclient (2.8.3)
i18n (1.14.1)
httpclient (2.9.0)
mutex_m
i18n (1.14.7)
concurrent-ruby (~> 1.0)
jmespath (1.6.2)
json (2.6.3)
jwt (2.7.1)
memoist (0.16.2)
mini_magick (4.12.0)
mini_mime (1.1.2)
minitest (5.18.1)
json (2.10.2)
jwt (2.10.1)
base64
logger (1.7.0)
mini_magick (4.13.2)
mini_mime (1.1.5)
minitest (5.25.5)
molinillo (0.8.0)
multi_json (1.15.0)
multipart-post (2.3.0)
nanaimo (0.3.0)
multipart-post (2.4.1)
mutex_m (0.3.0)
nanaimo (0.4.0)
nap (1.1.0)
naturally (2.2.1)
netrc (0.11.0)
optparse (0.1.1)
nkf (0.2.0)
optparse (0.6.0)
os (1.1.4)
plist (3.7.0)
plist (3.7.2)
public_suffix (4.0.7)
rake (13.0.6)
rake (13.2.1)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.2.5)
rouge (2.0.7)
rexml (3.4.1)
rouge (3.28.0)
ruby-macho (2.5.1)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
security (0.1.3)
signet (0.17.0)
rubyzip (2.4.1)
securerandom (0.4.1)
security (0.1.5)
signet (0.19.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0)
@@ -240,43 +265,45 @@ GEM
simctl (1.6.10)
CFPropertyList
naturally
sysrandom (1.0.5)
terminal-notifier (2.0.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
trailblazer-option (0.1.2)
tty-cursor (0.7.1)
tty-screen (0.8.1)
tty-screen (0.8.2)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
typhoeus (1.4.0)
typhoeus (1.4.1)
ethon (>= 0.9.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (1.8.0)
webrick (1.8.1)
unicode-display_width (2.6.0)
word_wrap (1.0.0)
xcodeproj (1.22.0)
xcodeproj (1.27.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
xcpretty (0.3.0)
rouge (~> 2.0.7)
nanaimo (~> 0.4.0)
rexml (>= 3.3.6, < 4.0)
xcpretty (0.4.1)
rouge (~> 3.28.0)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS
ruby
arm64-darwin-22
arm64-darwin-24
DEPENDENCIES
abbrev
cocoapods
csv
fastlane
logger
mutex_m
BUNDLED WITH
2.3.25
2.6.6

View File

@@ -1,31 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>ImageNotification</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.usernotifications.service</string>
<key>NSExtensionPrincipalClass</key>
<string>NotificationService</string>
</dict>
</dict>
</plist>

View File

@@ -1,13 +0,0 @@
//
// NotificationService.h
// ImageNotification
//
// Created by Jagandeep Brar on 2021-02-25.
// Copyright © 2021 The Chromium Authors. All rights reserved.
//
#import <UserNotifications/UserNotifications.h>
@interface NotificationService : UNNotificationServiceExtension
@end

View File

@@ -1,34 +0,0 @@
//
// NotificationService.m
// ImageNotification
//
// Created by Jagandeep Brar on 2021-02-25.
// Copyright © 2021 The Chromium Authors. All rights reserved.
//
#import "NotificationService.h"
#import "FirebaseMessaging.h"
@interface NotificationService ()
@property (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver);
@property (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent;
@end
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
[[FIRMessaging extensionHelper] populateNotificationContent:self.bestAttemptContent withContentHandler:contentHandler];
}
- (void)serviceExtensionTimeWillExpire {
// Called just before the extension will be terminated by the system.
// Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
self.contentHandler(self.bestAttemptContent);
}
@end

View File

@@ -1,5 +1,4 @@
platform :ios, '11.0'
$FirebaseSDKVersion = '10.10.0'
platform :ios, '12.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
@@ -28,7 +27,6 @@ require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelpe
flutter_ios_podfile_setup
target 'Runner' do
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => $FirebaseSDKVersion
use_frameworks!
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
@@ -59,8 +57,3 @@ post_install do |installer|
end
end
end
target 'ImageNotification' do
use_frameworks!
pod 'Firebase/Messaging'
end

View File

@@ -1,314 +1,120 @@
PODS:
- cloud_firestore (4.8.1):
- Firebase/Firestore (= 10.10.0)
- firebase_core
- Flutter
- nanopb (< 2.30910.0, >= 2.30908.0)
- DKImagePickerController/Core (4.3.4):
- DKImagePickerController/Core (4.3.9):
- DKImagePickerController/ImageDataManager
- DKImagePickerController/Resource
- DKImagePickerController/ImageDataManager (4.3.4)
- DKImagePickerController/PhotoGallery (4.3.4):
- DKImagePickerController/ImageDataManager (4.3.9)
- DKImagePickerController/PhotoGallery (4.3.9):
- DKImagePickerController/Core
- DKPhotoGallery
- DKImagePickerController/Resource (4.3.4)
- DKPhotoGallery (0.0.17):
- DKPhotoGallery/Core (= 0.0.17)
- DKPhotoGallery/Model (= 0.0.17)
- DKPhotoGallery/Preview (= 0.0.17)
- DKPhotoGallery/Resource (= 0.0.17)
- DKImagePickerController/Resource (4.3.9)
- DKPhotoGallery (0.0.19):
- DKPhotoGallery/Core (= 0.0.19)
- DKPhotoGallery/Model (= 0.0.19)
- DKPhotoGallery/Preview (= 0.0.19)
- DKPhotoGallery/Resource (= 0.0.19)
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Core (0.0.17):
- DKPhotoGallery/Core (0.0.19):
- DKPhotoGallery/Model
- DKPhotoGallery/Preview
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Model (0.0.17):
- DKPhotoGallery/Model (0.0.19):
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Preview (0.0.17):
- DKPhotoGallery/Preview (0.0.19):
- DKPhotoGallery/Model
- DKPhotoGallery/Resource
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Resource (0.0.17):
- DKPhotoGallery/Resource (0.0.19):
- SDWebImage
- SwiftyGif
- file_picker (0.0.1):
- DKImagePickerController/PhotoGallery
- Flutter
- Firebase/Auth (10.10.0):
- Firebase/CoreOnly
- FirebaseAuth (~> 10.10.0)
- Firebase/CoreOnly (10.10.0):
- FirebaseCore (= 10.10.0)
- Firebase/Firestore (10.10.0):
- Firebase/CoreOnly
- FirebaseFirestore (~> 10.10.0)
- Firebase/Messaging (10.10.0):
- Firebase/CoreOnly
- FirebaseMessaging (~> 10.10.0)
- Firebase/Storage (10.10.0):
- Firebase/CoreOnly
- FirebaseStorage (~> 10.10.0)
- firebase_auth (4.6.3):
- Firebase/Auth (= 10.10.0)
- firebase_core
- Flutter
- firebase_core (2.14.0):
- Firebase/CoreOnly (= 10.10.0)
- Flutter
- firebase_messaging (14.6.3):
- Firebase/Messaging (= 10.10.0)
- firebase_core
- Flutter
- firebase_storage (11.2.3):
- Firebase/Storage (= 10.10.0)
- firebase_core
- Flutter
- FirebaseAppCheckInterop (10.11.0)
- FirebaseAuth (10.10.0):
- FirebaseAppCheckInterop (~> 10.0)
- FirebaseCore (~> 10.0)
- GoogleUtilities/AppDelegateSwizzler (~> 7.8)
- GoogleUtilities/Environment (~> 7.8)
- GTMSessionFetcher/Core (< 4.0, >= 2.1)
- FirebaseAuthInterop (10.11.0)
- FirebaseCore (10.10.0):
- FirebaseCoreInternal (~> 10.0)
- GoogleUtilities/Environment (~> 7.8)
- GoogleUtilities/Logger (~> 7.8)
- FirebaseCoreExtension (10.11.0):
- FirebaseCore (~> 10.0)
- FirebaseCoreInternal (10.11.0):
- "GoogleUtilities/NSData+zlib (~> 7.8)"
- FirebaseFirestore (10.10.0):
- FirebaseFirestore/AutodetectLeveldb (= 10.10.0)
- FirebaseFirestore/AutodetectLeveldb (10.10.0):
- FirebaseFirestore/Base
- FirebaseFirestore/WithLeveldb
- FirebaseFirestore/Base (10.10.0)
- FirebaseFirestore/WithLeveldb (10.10.0):
- FirebaseFirestore/Base
- FirebaseInstallations (10.11.0):
- FirebaseCore (~> 10.0)
- GoogleUtilities/Environment (~> 7.8)
- GoogleUtilities/UserDefaults (~> 7.8)
- PromisesObjC (~> 2.1)
- FirebaseMessaging (10.10.0):
- FirebaseCore (~> 10.0)
- FirebaseInstallations (~> 10.0)
- GoogleDataTransport (~> 9.2)
- GoogleUtilities/AppDelegateSwizzler (~> 7.8)
- GoogleUtilities/Environment (~> 7.8)
- GoogleUtilities/Reachability (~> 7.8)
- GoogleUtilities/UserDefaults (~> 7.8)
- nanopb (< 2.30910.0, >= 2.30908.0)
- FirebaseStorage (10.10.0):
- FirebaseAppCheckInterop (~> 10.0)
- FirebaseAuthInterop (~> 10.0)
- FirebaseCore (~> 10.0)
- FirebaseCoreExtension (~> 10.0)
- GTMSessionFetcher/Core (< 4.0, >= 2.1)
- Flutter (1.0.0)
- flutter_native_splash (0.0.1):
- flutter_native_splash (2.4.3):
- Flutter
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
- GoogleDataTransport (9.2.3):
- GoogleUtilities/Environment (~> 7.7)
- nanopb (< 2.30910.0, >= 2.30908.0)
- PromisesObjC (< 3.0, >= 1.2)
- GoogleUtilities/AppDelegateSwizzler (7.11.1):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- GoogleUtilities/Environment (7.11.1):
- PromisesObjC (< 3.0, >= 1.2)
- GoogleUtilities/Logger (7.11.1):
- GoogleUtilities/Environment
- GoogleUtilities/Network (7.11.1):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Reachability
- "GoogleUtilities/NSData+zlib (7.11.1)"
- GoogleUtilities/Reachability (7.11.1):
- GoogleUtilities/Logger
- GoogleUtilities/UserDefaults (7.11.1):
- GoogleUtilities/Logger
- GTMSessionFetcher/Core (3.1.1)
- in_app_purchase_storekit (0.0.1):
- Flutter
- FlutterMacOS
- nanopb (2.30909.0):
- nanopb/decode (= 2.30909.0)
- nanopb/encode (= 2.30909.0)
- nanopb/decode (2.30909.0)
- nanopb/encode (2.30909.0)
- package_info_plus (0.4.5):
- Flutter
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- PromisesObjC (2.2.0)
- quick_actions_ios (0.0.1):
- Flutter
- SDWebImage (5.16.0):
- SDWebImage/Core (= 5.16.0)
- SDWebImage/Core (5.16.0)
- Sentry/HybridSDK (8.8.0):
- SentryPrivate (= 8.8.0)
- sentry_flutter (0.0.1):
- Flutter
- FlutterMacOS
- Sentry/HybridSDK (= 8.8.0)
- SentryPrivate (8.8.0)
- SDWebImage (5.21.0):
- SDWebImage/Core (= 5.21.0)
- SDWebImage/Core (5.21.0)
- share_plus (0.0.1):
- Flutter
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
- sqflite (0.0.3):
- sqflite_darwin (0.0.4):
- Flutter
- FMDB (>= 2.7.5)
- SwiftyGif (5.4.4)
- FlutterMacOS
- SwiftyGif (5.4.5)
- url_launcher_ios (0.0.1):
- Flutter
DEPENDENCIES:
- cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- Firebase/Messaging
- firebase_auth (from `.symlinks/plugins/firebase_auth/ios`)
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
- firebase_storage (from `.symlinks/plugins/firebase_storage/ios`)
- FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, tag `10.10.0`)
- Flutter (from `Flutter`)
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
- in_app_purchase_storekit (from `.symlinks/plugins/in_app_purchase_storekit/darwin`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- quick_actions_ios (from `.symlinks/plugins/quick_actions_ios/ios`)
- sentry_flutter (from `.symlinks/plugins/sentry_flutter/ios`)
- share_plus (from `.symlinks/plugins/share_plus/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- sqflite (from `.symlinks/plugins/sqflite/ios`)
- sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
SPEC REPOS:
trunk:
- DKImagePickerController
- DKPhotoGallery
- Firebase
- FirebaseAppCheckInterop
- FirebaseAuth
- FirebaseAuthInterop
- FirebaseCore
- FirebaseCoreExtension
- FirebaseCoreInternal
- FirebaseInstallations
- FirebaseMessaging
- FirebaseStorage
- FMDB
- GoogleDataTransport
- GoogleUtilities
- GTMSessionFetcher
- nanopb
- PromisesObjC
- SDWebImage
- Sentry
- SentryPrivate
- SwiftyGif
EXTERNAL SOURCES:
cloud_firestore:
:path: ".symlinks/plugins/cloud_firestore/ios"
file_picker:
:path: ".symlinks/plugins/file_picker/ios"
firebase_auth:
:path: ".symlinks/plugins/firebase_auth/ios"
firebase_core:
:path: ".symlinks/plugins/firebase_core/ios"
firebase_messaging:
:path: ".symlinks/plugins/firebase_messaging/ios"
firebase_storage:
:path: ".symlinks/plugins/firebase_storage/ios"
FirebaseFirestore:
:git: https://github.com/invertase/firestore-ios-sdk-frameworks.git
:tag: 10.10.0
Flutter:
:path: Flutter
flutter_native_splash:
:path: ".symlinks/plugins/flutter_native_splash/ios"
in_app_purchase_storekit:
:path: ".symlinks/plugins/in_app_purchase_storekit/darwin"
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
quick_actions_ios:
:path: ".symlinks/plugins/quick_actions_ios/ios"
sentry_flutter:
:path: ".symlinks/plugins/sentry_flutter/ios"
share_plus:
:path: ".symlinks/plugins/share_plus/ios"
shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
sqflite:
:path: ".symlinks/plugins/sqflite/ios"
sqflite_darwin:
:path: ".symlinks/plugins/sqflite_darwin/darwin"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
CHECKOUT OPTIONS:
FirebaseFirestore:
:git: https://github.com/invertase/firestore-ios-sdk-frameworks.git
:tag: 10.10.0
SPEC CHECKSUMS:
cloud_firestore: eb6bea100a5957ac15e911a317a52738813e72ef
DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
file_picker: ce3938a0df3cc1ef404671531facef740d03f920
Firebase: facd334e557a979bd03a0b58d90fd56b52b8aba0
firebase_auth: 9905bc3d82328b5050a8b7cb410a959f150b6549
firebase_core: 85b6664038311940ad60584eaabc73103c61f5de
firebase_messaging: db0dab2713aafcf69591a1dc4ee8af7d8bba2abd
firebase_storage: 1fe4f5725285159f87dd30aca1a5825105a09dcd
FirebaseAppCheckInterop: 255b6c0292fe5da995c8b2df0c02f6a3ca7f61b4
FirebaseAuth: 5ddbe23ebc4e647469261f5c59cd12a04f37c8e6
FirebaseAuthInterop: 44e34efef7145776a107b9e7f79ed44beb4738fa
FirebaseCore: d027ff503d37edb78db98429b11f580a24a7df2a
FirebaseCoreExtension: cacdad57fdb60e0b86dcbcac058ec78237946759
FirebaseCoreInternal: 9e46c82a14a3b3a25be4e1e151ce6d21536b89c0
FirebaseFirestore: b4b875bbcf4c2f7edac19064e5fc31bf814e963e
FirebaseInstallations: 2a2c6859354cbec0a228a863d4daf6de7c74ced4
FirebaseMessaging: 8a3b9a8b98ce72a42d22e69865cf662e38d2d6f5
FirebaseStorage: a12297f786e81e653864d87723ec30381eb90220
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
GoogleDataTransport: f0308f5905a745f94fb91fea9c6cbaf3831cb1bd
GoogleUtilities: 9aa0ad5a7bc171f8bae016300bfcfa3fb8425749
GTMSessionFetcher: e8647203b65cee28c5f73d0f473d096653945e72
in_app_purchase_storekit: 4fb7ee9e824b1f09107fbfbbce8c4b276366dc43
nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431
package_info_plus: fd030dabf36271f146f1f3beacd48f564b0f17f7
path_provider_foundation: eaf5b3e458fc0e5fbb9940fb09980e853fe058b8
PromisesObjC: 09985d6d70fbe7878040aa746d78236e6946d2ef
quick_actions_ios: 9e80dcfadfbc5d47d9cf8f47bcf428b11cf383d4
SDWebImage: 2aea163b50bfcb569a2726b6a754c54a4506fcf6
Sentry: 927dfb29d18a14d924229a59cc2ad149f43349f2
sentry_flutter: cf7da03b65520b631330ecb498deb592aa7640be
SentryPrivate: 4350d865f898224ab9fa02b37d6ee7fbb623f47e
share_plus: 599aa54e4ea31d4b4c0e9c911bcc26c55e791028
shared_preferences_foundation: e2dae3258e06f44cc55f49d42024fd8dd03c590c
sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a
SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f
url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_native_splash: c32d145d68aeda5502d5f543ee38c192065986cf
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
quick_actions_ios: 4b07fb49d8d8f3518d7565fbb7a91014067a7d82
SDWebImage: f84b0feeb08d2d11e6a9b843cb06d75ebf5b8868
share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
PODFILE CHECKSUM: 7d6f4079a4732744fb66360892b0f67dd3bc6b85
PODFILE CHECKSUM: aa5a39f013eef601567224be482f0c62b9bc7bb3
COCOAPODS: 1.12.1

View File

@@ -8,28 +8,14 @@
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
1C9E766CFE5995EA84CF3A05 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58F09DEDC33DBF8717EC9CF7 /* Pods_Runner.framework */; };
2197515D49D182EC2FFDDBC2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC7CBA55F0EC9F2930AED47 /* Pods_Runner.framework */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
9C2991242453FE3100B93AB2 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C2991232453FE3100B93AB2 /* StoreKit.framework */; };
9C7092B325E77E470056AE0B /* NotificationService.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C7092B225E77E470056AE0B /* NotificationService.m */; };
9C7092B725E77E470056AE0B /* ImageNotification.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 9C7092AF25E77E470056AE0B /* ImageNotification.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
B3E01A6E82278334590CFFB8 /* Pods_ImageNotification.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E70C4E30E956CF2855F3EE4 /* Pods_ImageNotification.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
9C7092B525E77E470056AE0B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 97C146E61CF9000F007C117D /* Project object */;
proxyType = 1;
remoteGlobalIDString = 9C7092AE25E77E470056AE0B;
remoteInfo = ImageNotification;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
@@ -47,7 +33,6 @@
dstPath = "";
dstSubfolderSpec = 13;
files = (
9C7092B725E77E470056AE0B /* ImageNotification.appex in Embed App Extensions */,
);
name = "Embed App Extensions";
runOnlyForDeploymentPostprocessing = 0;
@@ -55,19 +40,15 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
0518C562F1A93B6CFBC76CAB /* Pods-ImageNotification.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ImageNotification.profile.xcconfig"; path = "Target Support Files/Pods-ImageNotification/Pods-ImageNotification.profile.xcconfig"; sourceTree = "<group>"; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
1A61E842B29AA4C4DEE28EDE /* Pods-ImageNotification.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ImageNotification.debug.xcconfig"; path = "Target Support Files/Pods-ImageNotification/Pods-ImageNotification.debug.xcconfig"; sourceTree = "<group>"; };
2B0EC9E113D3B567E7EB7A16 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
1ABECE135322A3268D505E31 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
38E2584AB15AE99F89C5AF77 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
41C8A354026F2EAC476D0FF6 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
58F09DEDC33DBF8717EC9CF7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
5CC7CBA55F0EC9F2930AED47 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
8E70C4E30E956CF2855F3EE4 /* Pods_ImageNotification.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ImageNotification.framework; sourceTree = BUILT_PRODUCTS_DIR; };
949A157272F0977267339849 /* Pods-ImageNotification.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ImageNotification.release.xcconfig"; path = "Target Support Files/Pods-ImageNotification/Pods-ImageNotification.release.xcconfig"; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -76,14 +57,7 @@
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
9C0A396F23E0F00900EC8127 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
9C2991232453FE3100B93AB2 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
9C63379625F08BCB00C44AF3 /* Release-ImageNotification.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Release-ImageNotification.xcconfig"; path = "Flutter/Release-ImageNotification.xcconfig"; sourceTree = "<group>"; };
9C63379725F08BCB00C44AF3 /* Debug-ImageNotification.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Debug-ImageNotification.xcconfig"; path = "Flutter/Debug-ImageNotification.xcconfig"; sourceTree = "<group>"; };
9C7092AF25E77E470056AE0B /* ImageNotification.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ImageNotification.appex; sourceTree = BUILT_PRODUCTS_DIR; };
9C7092B125E77E470056AE0B /* NotificationService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NotificationService.h; sourceTree = "<group>"; };
9C7092B225E77E470056AE0B /* NotificationService.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NotificationService.m; sourceTree = "<group>"; };
9C7092B425E77E470056AE0B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
C5C41D15654448BC4DA2E895 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
B93DBDA4906D428F6B87143D /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -91,16 +65,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
9C2991242453FE3100B93AB2 /* StoreKit.framework in Frameworks */,
1C9E766CFE5995EA84CF3A05 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
9C7092AC25E77E470056AE0B /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
B3E01A6E82278334590CFFB8 /* Pods_ImageNotification.framework in Frameworks */,
2197515D49D182EC2FFDDBC2 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -110,8 +75,6 @@
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
9C63379725F08BCB00C44AF3 /* Debug-ImageNotification.xcconfig */,
9C63379625F08BCB00C44AF3 /* Release-ImageNotification.xcconfig */,
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
@@ -125,7 +88,6 @@
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
9C7092B025E77E470056AE0B /* ImageNotification */,
97C146EF1CF9000F007C117D /* Products */,
F5D05D221249C73674C5DB0D /* Pods */,
B52D05C72433A9F059B6393D /* Frameworks */,
@@ -136,7 +98,6 @@
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
9C7092AF25E77E470056AE0B /* ImageNotification.appex */,
);
name = Products;
sourceTree = "<group>";
@@ -165,22 +126,10 @@
name = "Supporting Files";
sourceTree = "<group>";
};
9C7092B025E77E470056AE0B /* ImageNotification */ = {
isa = PBXGroup;
children = (
9C7092B125E77E470056AE0B /* NotificationService.h */,
9C7092B225E77E470056AE0B /* NotificationService.m */,
9C7092B425E77E470056AE0B /* Info.plist */,
);
path = ImageNotification;
sourceTree = "<group>";
};
B52D05C72433A9F059B6393D /* Frameworks */ = {
isa = PBXGroup;
children = (
9C2991232453FE3100B93AB2 /* StoreKit.framework */,
8E70C4E30E956CF2855F3EE4 /* Pods_ImageNotification.framework */,
58F09DEDC33DBF8717EC9CF7 /* Pods_Runner.framework */,
5CC7CBA55F0EC9F2930AED47 /* Pods_Runner.framework */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -188,12 +137,9 @@
F5D05D221249C73674C5DB0D /* Pods */ = {
isa = PBXGroup;
children = (
1A61E842B29AA4C4DEE28EDE /* Pods-ImageNotification.debug.xcconfig */,
949A157272F0977267339849 /* Pods-ImageNotification.release.xcconfig */,
0518C562F1A93B6CFBC76CAB /* Pods-ImageNotification.profile.xcconfig */,
2B0EC9E113D3B567E7EB7A16 /* Pods-Runner.debug.xcconfig */,
C5C41D15654448BC4DA2E895 /* Pods-Runner.release.xcconfig */,
41C8A354026F2EAC476D0FF6 /* Pods-Runner.profile.xcconfig */,
B93DBDA4906D428F6B87143D /* Pods-Runner.debug.xcconfig */,
38E2584AB15AE99F89C5AF77 /* Pods-Runner.release.xcconfig */,
1ABECE135322A3268D505E31 /* Pods-Runner.profile.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
@@ -205,45 +151,25 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
D670900334F678B67DC0DDC7 /* [CP] Check Pods Manifest.lock */,
25F83B88C0078E00B62BF1B7 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9C7092B825E77E470056AE0B /* Embed App Extensions */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
9C7092B825E77E470056AE0B /* Embed App Extensions */,
36E498A92AF6479A68EF7C46 /* [CP] Embed Pods Frameworks */,
EE9DA6BBE28F03508CB05591 /* [CP] Copy Pods Resources */,
8E8D9E68B8096E08AC0365EF /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
dependencies = (
9C7092B625E77E470056AE0B /* PBXTargetDependency */,
);
name = Runner;
productName = Runner;
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
productType = "com.apple.product-type.application";
};
9C7092AE25E77E470056AE0B /* ImageNotification */ = {
isa = PBXNativeTarget;
buildConfigurationList = 9C7092BC25E77E470056AE0B /* Build configuration list for PBXNativeTarget "ImageNotification" */;
buildPhases = (
EE8210042C5635E7F97B098F /* [CP] Check Pods Manifest.lock */,
9C7092AB25E77E470056AE0B /* Sources */,
9C7092AC25E77E470056AE0B /* Frameworks */,
9C7092AD25E77E470056AE0B /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = ImageNotification;
productName = ImageNotification;
productReference = 9C7092AF25E77E470056AE0B /* ImageNotification.appex */;
productType = "com.apple.product-type.app-extension";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@@ -251,7 +177,7 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 1230;
LastUpgradeCheck = 1300;
LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "The Chromium Authors";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
@@ -260,11 +186,6 @@
LastSwiftMigration = 1100;
ProvisioningStyle = Manual;
};
9C7092AE25E77E470056AE0B = {
CreatedOnToolsVersion = 12.4;
DevelopmentTeam = VPH33JQH4R;
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
@@ -281,7 +202,6 @@
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
9C7092AE25E77E470056AE0B /* ImageNotification */,
);
};
/* End PBXProject section */
@@ -298,128 +218,10 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
9C7092AD25E77E470056AE0B /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
36E498A92AF6479A68EF7C46 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
"${BUILT_PRODUCTS_DIR}/DKImagePickerController/DKImagePickerController.framework",
"${BUILT_PRODUCTS_DIR}/DKPhotoGallery/DKPhotoGallery.framework",
"${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework",
"${BUILT_PRODUCTS_DIR}/FirebaseAppCheckInterop/FirebaseAppCheckInterop.framework",
"${BUILT_PRODUCTS_DIR}/FirebaseAuth/FirebaseAuth.framework",
"${BUILT_PRODUCTS_DIR}/FirebaseAuthInterop/FirebaseAuthInterop.framework",
"${BUILT_PRODUCTS_DIR}/FirebaseCore/FirebaseCore.framework",
"${BUILT_PRODUCTS_DIR}/FirebaseCoreExtension/FirebaseCoreExtension.framework",
"${BUILT_PRODUCTS_DIR}/FirebaseCoreInternal/FirebaseCoreInternal.framework",
"${BUILT_PRODUCTS_DIR}/FirebaseInstallations/FirebaseInstallations.framework",
"${BUILT_PRODUCTS_DIR}/FirebaseMessaging/FirebaseMessaging.framework",
"${BUILT_PRODUCTS_DIR}/FirebaseStorage/FirebaseStorage.framework",
"${BUILT_PRODUCTS_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework",
"${BUILT_PRODUCTS_DIR}/GoogleDataTransport/GoogleDataTransport.framework",
"${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework",
"${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework",
"${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework",
"${BUILT_PRODUCTS_DIR}/Sentry/Sentry.framework",
"${BUILT_PRODUCTS_DIR}/SentryPrivate/SentryPrivate.framework",
"${BUILT_PRODUCTS_DIR}/SwiftyGif/SwiftyGif.framework",
"${BUILT_PRODUCTS_DIR}/file_picker/file_picker.framework",
"${BUILT_PRODUCTS_DIR}/flutter_native_splash/flutter_native_splash.framework",
"${BUILT_PRODUCTS_DIR}/in_app_purchase_storekit/in_app_purchase_storekit.framework",
"${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework",
"${BUILT_PRODUCTS_DIR}/package_info_plus/package_info_plus.framework",
"${BUILT_PRODUCTS_DIR}/path_provider_foundation/path_provider_foundation.framework",
"${BUILT_PRODUCTS_DIR}/quick_actions_ios/quick_actions_ios.framework",
"${BUILT_PRODUCTS_DIR}/sentry_flutter/sentry_flutter.framework",
"${BUILT_PRODUCTS_DIR}/share_plus/share_plus.framework",
"${BUILT_PRODUCTS_DIR}/shared_preferences_foundation/shared_preferences_foundation.framework",
"${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework",
"${BUILT_PRODUCTS_DIR}/url_launcher_ios/url_launcher_ios.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKImagePickerController.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKPhotoGallery.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseAppCheckInterop.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseAuth.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseAuthInterop.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCore.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreExtension.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreInternal.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseInstallations.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseMessaging.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseStorage.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMSessionFetcher.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleDataTransport.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleUtilities.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBLPromises.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sentry.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SentryPrivate.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyGif.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_picker.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_native_splash.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/in_app_purchase_storekit.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info_plus.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_foundation.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/quick_actions_ios.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sentry_flutter.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/share_plus.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_foundation.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher_ios.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n";
};
D670900334F678B67DC0DDC7 /* [CP] Check Pods Manifest.lock */ = {
25F83B88C0078E00B62BF1B7 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -441,45 +243,78 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
EE8210042C5635E7F97B098F /* [CP] Check Pods Manifest.lock */ = {
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
8E8D9E68B8096E08AC0365EF /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
"${BUILT_PRODUCTS_DIR}/DKImagePickerController/DKImagePickerController.framework",
"${BUILT_PRODUCTS_DIR}/DKPhotoGallery/DKPhotoGallery.framework",
"${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework",
"${BUILT_PRODUCTS_DIR}/SwiftyGif/SwiftyGif.framework",
"${BUILT_PRODUCTS_DIR}/file_picker/file_picker.framework",
"${BUILT_PRODUCTS_DIR}/flutter_native_splash/flutter_native_splash.framework",
"${BUILT_PRODUCTS_DIR}/package_info_plus/package_info_plus.framework",
"${BUILT_PRODUCTS_DIR}/path_provider_foundation/path_provider_foundation.framework",
"${BUILT_PRODUCTS_DIR}/quick_actions_ios/quick_actions_ios.framework",
"${BUILT_PRODUCTS_DIR}/share_plus/share_plus.framework",
"${BUILT_PRODUCTS_DIR}/shared_preferences_foundation/shared_preferences_foundation.framework",
"${BUILT_PRODUCTS_DIR}/sqflite_darwin/sqflite_darwin.framework",
"${BUILT_PRODUCTS_DIR}/url_launcher_ios/url_launcher_ios.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-ImageNotification-checkManifestLockResult.txt",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKImagePickerController.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKPhotoGallery.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyGif.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_picker.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_native_splash.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info_plus.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_foundation.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/quick_actions_ios.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/share_plus.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_foundation.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite_darwin.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher_ios.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
EE9DA6BBE28F03508CB05591 /* [CP] Copy Pods Resources */ = {
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh",
"${PODS_ROOT}/FirebaseFirestore/FirebaseFirestore/Resources/gRPCCertificates-Cpp.bundle",
);
name = "[CP] Copy Pods Resources";
name = "Run Script";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/gRPCCertificates-Cpp.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n";
};
/* End PBXShellScriptBuildPhase section */
@@ -493,24 +328,8 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
9C7092AB25E77E470056AE0B /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9C7092B325E77E470056AE0B /* NotificationService.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
9C7092B625E77E470056AE0B /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 9C7092AE25E77E470056AE0B /* ImageNotification */;
targetProxy = 9C7092B525E77E470056AE0B /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
@@ -572,7 +391,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -598,7 +417,7 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -663,7 +482,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -712,7 +531,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -739,7 +558,7 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -777,7 +596,7 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -796,103 +615,6 @@
};
name = Release;
};
9C7092B925E77E470056AE0B /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9C63379725F08BCB00C44AF3 /* Debug-ImageNotification.xcconfig */;
buildSettings = {
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = VPH33JQH4R;
ENABLE_BITCODE = NO;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = ImageNotification/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = app.lunasea.lunasea.ImageNotification;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "match Development app.lunasea.lunasea.ImageNotification";
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
9C7092BA25E77E470056AE0B /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9C63379625F08BCB00C44AF3 /* Release-ImageNotification.xcconfig */;
buildSettings = {
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = VPH33JQH4R;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = VPH33JQH4R;
ENABLE_BITCODE = NO;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = ImageNotification/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = app.lunasea.lunasea.ImageNotification;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "match AppStore app.lunasea.lunasea.ImageNotification";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore app.lunasea.lunasea.ImageNotification";
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
9C7092BB25E77E470056AE0B /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9C63379625F08BCB00C44AF3 /* Release-ImageNotification.xcconfig */;
buildSettings = {
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = VPH33JQH4R;
ENABLE_BITCODE = NO;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = ImageNotification/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = app.lunasea.lunasea.ImageNotification;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "match Development app.lunasea.lunasea.ImageNotification";
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Profile;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@@ -916,16 +638,6 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
9C7092BC25E77E470056AE0B /* Build configuration list for PBXNativeTarget "ImageNotification" */ = {
isa = XCConfigurationList;
buildConfigurations = (
9C7092B925E77E470056AE0B /* Debug */,
9C7092BA25E77E470056AE0B /* Release */,
9C7092BB25E77E470056AE0B /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 97C146E61CF9000F007C117D /* Project object */;

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1300"
LastUpgradeVersion = "1510"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -48,6 +48,7 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
enableGPUValidationMode = "1"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">

View File

@@ -1,7 +1,7 @@
import UIKit
import Flutter
@UIApplicationMain
@main
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,

View File

@@ -1,91 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>LunaSea</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array/>
</dict>
</array>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>LunaSea</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array/>
</dict>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>LunaSea would like to access your location for determining local-remote host switching</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>LunaSea would like to access your location for determining local-remote host switching</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>LunaSea would like to save photos from the app to your gallery</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>LunaSea would like to access your photo gallery for uploading images to LunaSea</string>
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
<string>remote-notification</string>
</array>
<key>UIFileSharingEnabled</key>
</array>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>FLTEnableImpeller</key>
<true/>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>plex</string>
<string>https</string>
</array>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIStatusBarHidden</key>
<false/>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>plex</string>
<string>https</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>FLTEnableImpeller</key>
<true/>
</dict>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>LunaSea would like to access your location for determining local-remote host switching</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>LunaSea would like to access your location for determining local-remote host switching</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>LunaSea would like to save photos from the app to your gallery</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>LunaSea would like to access your photo gallery for uploading images to LunaSea</string>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UIFileSharingEnabled</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIStatusBarHidden</key>
<false/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>

View File

@@ -2,15 +2,11 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.associated-domains</key>
<array>
<string>webcredentials:www.lunasea.app</string>
</array>
<key>com.apple.developer.networking.wifi-info</key>
<true/>
<key>com.apple.developer.usernotifications.time-sensitive</key>
<true/>
</dict>
</plist>

View File

@@ -64,8 +64,7 @@ platform :ios do
codesigning_identity: ENV["IOS_CODESIGNING_IDENTITY"],
export_options: {
provisioningProfiles: {
"app.lunasea.lunasea" => "match AppStore app.lunasea.lunasea",
"app.lunasea.lunasea.ImageNotification" => "match AppStore app.lunasea.lunasea.ImageNotification",
"app.lunasea.lunasea" => "match AppStore app.lunasea.lunasea"
}
}
)

View File

@@ -1,4 +1,4 @@
git_url("git@github.com:JagandeepBrar/fastlane-match-storage.git")
storage_mode("git")
app_identifier(["app.lunasea.lunasea", "app.lunasea.lunasea.ImageNotification"])
app_identifier(["app.lunasea.lunasea"])
platform("ios")

View File

@@ -1,103 +0,0 @@
import 'package:lunasea/api/overseerr/models/content/movie.dart';
import 'package:lunasea/api/overseerr/models/content/series.dart';
import 'package:lunasea/api/overseerr/models/issues/issue.dart';
import 'package:lunasea/api/overseerr/models/issues/issue_page.dart';
import 'package:lunasea/api/overseerr/models/requests/request.dart';
import 'package:lunasea/api/overseerr/models/requests/request_count.dart';
import 'package:lunasea/api/overseerr/models/requests/request_page.dart';
import 'package:lunasea/api/overseerr/models/status/status.dart';
import 'package:lunasea/api/overseerr/models/status/status_appdata.dart';
import 'package:lunasea/api/overseerr/models/users/user_page.dart';
import 'package:lunasea/api/overseerr/models/users/user_quota.dart';
import 'package:lunasea/vendor.dart';
part 'api.g.dart';
@RestApi()
abstract class OverseerrAPI {
factory OverseerrAPI({
required String host,
required String apiKey,
Map<String, dynamic> headers = const {},
}) {
String _baseUrl = host.endsWith('/') ? '${host}api/v1/' : '$host/api/v1/';
Dio _dio = Dio(
BaseOptions(
headers: {
'X-Api-Key': apiKey,
...headers,
},
contentType: Headers.jsonContentType,
responseType: ResponseType.json,
followRedirects: true,
maxRedirects: 5,
),
);
return _OverseerrAPI(_dio, baseUrl: _baseUrl);
}
@GET('issue')
Future<OverseerrIssuePage> getIssues({
@Query('take') int? take,
@Query('skip') int? skip,
@Query('filter') String? filter,
@Query('sort') String? sort,
});
@GET('issue/{id}')
Future<OverseerrIssue> getIssue(
@Path('id') int id,
);
@GET('movie/{id}')
Future<OverseerrMovie> getMovie(
@Path('id') int id, {
@Query('language') String? language,
});
@GET('request')
Future<OverseerrRequestPage> getRequests({
@Query('take') int? take,
@Query('skip') int? skip,
@Query('filter') String? filter,
@Query('sort') String? sort,
@Query('requestedBy') int? requestedBy,
});
@GET('request/{id}')
Future<OverseerrRequest> getRequest(
@Path('id') String id,
);
@GET('request/count')
Future<OverseerrRequestCount> getRequestCount();
@GET('status')
Future<OverseerrStatus> getStatus();
@GET('status/appdata')
Future<OverseerrStatusAppData> getStatusAppData();
@GET('tv/{id}')
Future<OverseerrSeries> getSeries(
@Path('id') int id, {
@Query('language') String? language,
});
@GET('user')
Future<OverseerrUserPage> getUsers({
@Query('take') int? take,
@Query('skip') int? skip,
@Query('sort') String? sort,
});
@GET('user/{id}')
Future<OverseerrUserPage> getUser(
@Path('id') String id,
);
@GET('user/{id}/quota')
Future<OverseerrUserQuota> getUserQuota(
@Path('id') String id,
);
}

View File

@@ -1,33 +0,0 @@
export 'models/content/collection.dart';
export 'models/content/content_ratings.dart';
export 'models/content/created_by.dart';
export 'models/content/credits.dart';
export 'models/content/episode.dart';
export 'models/content/external_ids.dart';
export 'models/content/genre.dart';
export 'models/content/keyword.dart';
export 'models/content/movie.dart';
export 'models/content/movie_releases.dart';
export 'models/content/network.dart';
export 'models/content/production_company.dart';
export 'models/content/production_country.dart';
export 'models/content/related_video.dart';
export 'models/content/season.dart';
export 'models/content/series.dart';
export 'models/content/spoken_language.dart';
export 'models/content/watch_provider.dart';
export 'models/issues/issue_comment.dart';
export 'models/issues/issue_page.dart';
export 'models/issues/issue.dart';
export 'models/media/media.dart';
export 'models/media/season.dart';
export 'models/requests/request_count.dart';
export 'models/requests/request_page.dart';
export 'models/requests/request.dart';
export 'models/status/status.dart';
export 'models/status/status_appdata.dart';
export 'models/users/user_page.dart';
export 'models/users/user_quota.dart';
export 'models/users/user.dart';
export 'models/page.dart';
export 'models/quota.dart';

View File

@@ -1,33 +0,0 @@
import 'package:lunasea/core.dart';
part 'collection.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrCollection {
@JsonKey()
int? id;
@JsonKey()
String? name;
@JsonKey()
String? posterPath;
@JsonKey()
String? backdropPath;
OverseerrCollection({
this.id,
this.name,
this.posterPath,
this.backdropPath,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrCollection.fromJson(Map<String, dynamic> json) =>
_$OverseerrCollectionFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrCollectionToJson(this);
}

View File

@@ -1,43 +0,0 @@
import 'package:lunasea/core.dart';
part 'content_ratings.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrContentRatings {
@JsonKey()
List<OverseerrContentRating>? results;
OverseerrContentRatings({
this.results,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrContentRatings.fromJson(Map<String, dynamic> json) =>
_$OverseerrContentRatingsFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrContentRatingsToJson(this);
}
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrContentRating {
@JsonKey(name: 'iso_3166_1')
String? iso31661;
@JsonKey()
String? rating;
OverseerrContentRating({
this.iso31661,
this.rating,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrContentRating.fromJson(Map<String, dynamic> json) =>
_$OverseerrContentRatingFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrContentRatingToJson(this);
}

View File

@@ -1,37 +0,0 @@
import 'package:lunasea/core.dart';
part 'created_by.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrCreatedBy {
@JsonKey()
int? id;
@JsonKey(name: 'credit_id')
String? creditId;
@JsonKey()
String? name;
@JsonKey()
int? gender;
@JsonKey(name: 'profile_path')
String? profilePath;
OverseerrCreatedBy({
this.id,
this.creditId,
this.name,
this.gender,
this.profilePath,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrCreatedBy.fromJson(Map<String, dynamic> json) =>
_$OverseerrCreatedByFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrCreatedByToJson(this);
}

View File

@@ -1,113 +0,0 @@
import 'package:lunasea/core.dart';
part 'credits.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrCredits {
@JsonKey()
List<OverseerrCast>? cast;
@JsonKey()
List<OverseerrCrew>? crew;
OverseerrCredits({
this.cast,
this.crew,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrCredits.fromJson(Map<String, dynamic> json) =>
_$OverseerrCreditsFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrCreditsToJson(this);
}
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrCast {
@JsonKey()
int? id;
@JsonKey()
int? castId;
@JsonKey()
String? character;
@JsonKey()
String? creditId;
@JsonKey()
int? gender;
@JsonKey()
String? name;
@JsonKey()
int? order;
@JsonKey()
String? profilePath;
OverseerrCast({
this.id,
this.castId,
this.character,
this.creditId,
this.gender,
this.name,
this.order,
this.profilePath,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrCast.fromJson(Map<String, dynamic> json) =>
_$OverseerrCastFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrCastToJson(this);
}
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrCrew {
@JsonKey()
int? id;
@JsonKey()
String? creditId;
@JsonKey()
String? department;
@JsonKey()
int? gender;
@JsonKey()
String? job;
@JsonKey()
String? name;
@JsonKey()
String? profilePath;
OverseerrCrew({
this.id,
this.creditId,
this.department,
this.gender,
this.job,
this.name,
this.profilePath,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrCrew.fromJson(Map<String, dynamic> json) =>
_$OverseerrCrewFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrCrewToJson(this);
}

View File

@@ -1,53 +0,0 @@
import 'package:lunasea/core.dart';
part 'episode.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrEpisode {
@JsonKey()
int? id;
@JsonKey()
String? airDate;
@JsonKey()
int? episodeNumber;
@JsonKey()
String? name;
@JsonKey()
String? overview;
@JsonKey()
String? productionCode;
@JsonKey()
int? seasonNumber;
@JsonKey()
double? voteAverage;
@JsonKey()
String? stillPath;
OverseerrEpisode({
this.id,
this.airDate,
this.episodeNumber,
this.name,
this.overview,
this.productionCode,
this.seasonNumber,
this.voteAverage,
this.stillPath,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrEpisode.fromJson(Map<String, dynamic> json) =>
_$OverseerrEpisodeFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrEpisodeToJson(this);
}

View File

@@ -1,49 +0,0 @@
import 'package:lunasea/core.dart';
part 'external_ids.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrExternalIds {
@JsonKey()
String? imdbId;
@JsonKey()
String? freebaseMid;
@JsonKey()
String? freebaseId;
@JsonKey()
int? tvdbId;
@JsonKey()
int? tvrageId;
@JsonKey()
String? facebookId;
@JsonKey()
String? instagramId;
@JsonKey()
String? twitterId;
OverseerrExternalIds({
this.imdbId,
this.freebaseMid,
this.freebaseId,
this.tvdbId,
this.tvrageId,
this.facebookId,
this.instagramId,
this.twitterId,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrExternalIds.fromJson(Map<String, dynamic> json) =>
_$OverseerrExternalIdsFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrExternalIdsToJson(this);
}

View File

@@ -1,25 +0,0 @@
import 'package:lunasea/core.dart';
part 'genre.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrGenre {
@JsonKey()
int? id;
@JsonKey()
String? name;
OverseerrGenre({
this.id,
this.name,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrGenre.fromJson(Map<String, dynamic> json) =>
_$OverseerrGenreFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrGenreToJson(this);
}

View File

@@ -1,25 +0,0 @@
import 'package:lunasea/core.dart';
part 'keyword.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrKeyword {
@JsonKey()
int? id;
@JsonKey()
String? name;
OverseerrKeyword({
this.id,
this.name,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrKeyword.fromJson(Map<String, dynamic> json) =>
_$OverseerrKeywordFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrKeywordToJson(this);
}

View File

@@ -1,145 +0,0 @@
import 'package:lunasea/api/overseerr/models.dart';
import 'package:lunasea/core.dart';
part 'movie.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrMovie {
@JsonKey()
int? id;
@JsonKey()
String? imdbId;
@JsonKey()
bool? adult;
@JsonKey()
String? backdropPath;
@JsonKey()
int? budget;
@JsonKey()
List<OverseerrGenre>? genres;
@JsonKey()
String? homepage;
@JsonKey()
String? originalLanguage;
@JsonKey()
String? originalTitle;
@JsonKey()
String? overview;
@JsonKey()
double? popularity;
@JsonKey()
List<OverseerrRelatedVideo>? relatedVideos;
@JsonKey()
String? posterPath;
@JsonKey()
List<OverseerrProductionCompany>? productionCompanies;
@JsonKey()
List<OverseerrProductionCountry>? productionCountries;
@JsonKey()
String? releaseDate;
@JsonKey()
int? revenue;
@JsonKey()
int? runtime;
@JsonKey()
String? status;
@JsonKey()
String? tagline;
@JsonKey()
String? title;
@JsonKey()
bool? video;
@JsonKey()
double? voteAverage;
@JsonKey()
int? voteCount;
@JsonKey()
String? plexUrl;
@JsonKey()
OverseerrCollection? collection;
@JsonKey()
OverseerrExternalIds? externalIds;
@JsonKey()
OverseerrMedia? mediaInfo;
@JsonKey()
List<OverseerrWatchProvider>? watchProviders;
@JsonKey()
OverseerrCredits? credits;
@JsonKey()
List<OverseerrSpokenLanguage>? spokenLanguages;
@JsonKey()
OverseerrMovieReleases? releases;
OverseerrMovie({
this.id,
this.imdbId,
this.adult,
this.backdropPath,
this.budget,
this.genres,
this.homepage,
this.originalLanguage,
this.originalTitle,
this.overview,
this.popularity,
this.relatedVideos,
this.posterPath,
this.productionCompanies,
this.productionCountries,
this.releaseDate,
this.revenue,
this.runtime,
this.status,
this.tagline,
this.title,
this.video,
this.voteAverage,
this.voteCount,
this.plexUrl,
this.collection,
this.externalIds,
this.mediaInfo,
this.watchProviders,
this.credits,
this.spokenLanguages,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrMovie.fromJson(Map<String, dynamic> json) =>
_$OverseerrMovieFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrMovieToJson(this);
}

View File

@@ -1,78 +0,0 @@
import 'package:lunasea/core.dart';
part 'movie_releases.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrMovieReleases {
@JsonKey()
List<OverseerrMovieReleaseResult>? results;
OverseerrMovieReleases({
this.results,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrMovieReleases.fromJson(Map<String, dynamic> json) =>
_$OverseerrMovieReleasesFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrMovieReleasesToJson(this);
}
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrMovieReleaseResult {
@JsonKey(name: 'iso_3166_1')
String? iso31661;
@JsonKey(name: 'release_dates')
List<OverseerrMovieReleaseResultDate>? releaseDates;
OverseerrMovieReleaseResult({
this.iso31661,
this.releaseDates,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrMovieReleaseResult.fromJson(Map<String, dynamic> json) =>
_$OverseerrMovieReleaseResultFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrMovieReleaseResultToJson(this);
}
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrMovieReleaseResultDate {
@JsonKey()
String? certification;
@JsonKey(name: 'iso_639_1')
String? iso6391;
@JsonKey()
String? note;
@JsonKey(name: 'release_date')
String? releaseDate;
@JsonKey()
int? type;
OverseerrMovieReleaseResultDate({
this.certification,
this.iso6391,
this.note,
this.releaseDate,
this.type,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrMovieReleaseResultDate.fromJson(Map<String, dynamic> json) =>
_$OverseerrMovieReleaseResultDateFromJson(json);
Map<String, dynamic> toJson() =>
_$OverseerrMovieReleaseResultDateToJson(this);
}

View File

@@ -1,33 +0,0 @@
import 'package:lunasea/core.dart';
part 'network.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrNetwork {
@JsonKey()
int? id;
@JsonKey()
String? name;
@JsonKey()
String? originCountry;
@JsonKey()
String? logoPath;
OverseerrNetwork({
this.id,
this.name,
this.originCountry,
this.logoPath,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrNetwork.fromJson(Map<String, dynamic> json) =>
_$OverseerrNetworkFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrNetworkToJson(this);
}

View File

@@ -1,45 +0,0 @@
import 'package:lunasea/core.dart';
part 'production_company.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrProductionCompany {
@JsonKey()
int? id;
@JsonKey()
String? logoPath;
@JsonKey()
String? originCountry;
@JsonKey()
String? name;
@JsonKey()
String? description;
@JsonKey()
String? headquarters;
@JsonKey()
String? homepage;
OverseerrProductionCompany({
this.id,
this.logoPath,
this.originCountry,
this.name,
this.description,
this.headquarters,
this.homepage,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrProductionCompany.fromJson(Map<String, dynamic> json) =>
_$OverseerrProductionCompanyFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrProductionCompanyToJson(this);
}

View File

@@ -1,25 +0,0 @@
import 'package:lunasea/core.dart';
part 'production_country.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrProductionCountry {
@JsonKey(name: 'iso_3166_1')
String? iso31661;
@JsonKey()
String? name;
OverseerrProductionCountry({
this.iso31661,
this.name,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrProductionCountry.fromJson(Map<String, dynamic> json) =>
_$OverseerrProductionCountryFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrProductionCountryToJson(this);
}

View File

@@ -1,41 +0,0 @@
import 'package:lunasea/core.dart';
part 'related_video.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrRelatedVideo {
@JsonKey()
String? site;
@JsonKey()
String? key;
@JsonKey()
String? name;
@JsonKey()
int? size;
@JsonKey()
String? type;
@JsonKey()
String? url;
OverseerrRelatedVideo({
this.site,
this.key,
this.name,
this.size,
this.type,
this.url,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrRelatedVideo.fromJson(Map<String, dynamic> json) =>
_$OverseerrRelatedVideoFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrRelatedVideoToJson(this);
}

View File

@@ -1,45 +0,0 @@
import 'package:lunasea/core.dart';
part 'season.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrSeason {
@JsonKey()
int? id;
@JsonKey()
String? airDate;
@JsonKey()
int? episodeCount;
@JsonKey()
String? name;
@JsonKey()
String? overview;
@JsonKey()
int? seasonNumber;
@JsonKey()
String? posterPath;
OverseerrSeason({
this.id,
this.airDate,
this.episodeCount,
this.name,
this.overview,
this.seasonNumber,
this.posterPath,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrSeason.fromJson(Map<String, dynamic> json) =>
_$OverseerrSeasonFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrSeasonToJson(this);
}

View File

@@ -1,167 +0,0 @@
import 'package:lunasea/core.dart';
import 'package:lunasea/api/overseerr/models.dart';
part 'series.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrSeries {
@JsonKey()
int? id;
@JsonKey()
List<OverseerrCreatedBy>? createdBy;
@JsonKey()
String? homepage;
@JsonKey()
String? name;
@JsonKey()
List<int>? episodeRunTime;
@JsonKey()
String? firstAirDate;
@JsonKey()
String? lastAirDate;
@JsonKey()
List<OverseerrGenre>? genres;
@JsonKey()
String? backdropPath;
@JsonKey()
String? posterPath;
@JsonKey()
bool? inProduction;
@JsonKey()
List<String>? languages;
@JsonKey()
int? numberOfEpisodes;
@JsonKey()
int? numberOfSeasons;
@JsonKey()
List<String>? originCountry;
@JsonKey()
String? originalLanguage;
@JsonKey()
String? originalName;
@JsonKey()
String? overview;
@JsonKey()
double? popularity;
@JsonKey()
List<OverseerrProductionCompany>? productionCompanies;
@JsonKey()
List<OverseerrProductionCountry>? productionCountries;
@JsonKey()
List<OverseerrSpokenLanguage>? spokenLanguages;
@JsonKey()
List<OverseerrRelatedVideo>? relatedVideos;
@JsonKey()
List<OverseerrNetwork>? networks;
@JsonKey()
String? status;
@JsonKey()
String? type;
@JsonKey()
double? voteAverage;
@JsonKey()
int? voteCount;
@JsonKey()
String? tagline;
@JsonKey()
OverseerrCredits? credits;
@JsonKey()
List<OverseerrWatchProvider>? watchProviders;
@JsonKey()
List<OverseerrKeyword>? keywords;
@JsonKey()
OverseerrExternalIds? externalIds;
@JsonKey()
OverseerrContentRatings? contentRatings;
@JsonKey()
List<OverseerrMediaSeason>? seasons;
@JsonKey()
OverseerrMedia? mediaInfo;
@JsonKey()
OverseerrEpisode? lastEpisodeToAir;
@JsonKey()
OverseerrEpisode? nextEpisodeToAir;
OverseerrSeries({
this.id,
this.createdBy,
this.homepage,
this.name,
this.episodeRunTime,
this.firstAirDate,
this.lastAirDate,
this.genres,
this.backdropPath,
this.posterPath,
this.inProduction,
this.languages,
this.numberOfEpisodes,
this.numberOfSeasons,
this.originCountry,
this.originalLanguage,
this.originalName,
this.overview,
this.popularity,
this.productionCompanies,
this.productionCountries,
this.relatedVideos,
this.spokenLanguages,
this.networks,
this.status,
this.type,
this.voteAverage,
this.voteCount,
this.tagline,
this.credits,
this.watchProviders,
this.keywords,
this.externalIds,
this.seasons,
this.mediaInfo,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrSeries.fromJson(Map<String, dynamic> json) =>
_$OverseerrSeriesFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrSeriesToJson(this);
}

View File

@@ -1,33 +0,0 @@
import 'package:lunasea/core.dart';
part 'spoken_language.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrSpokenLanguage {
@JsonKey()
String? englishName;
@JsonKey(name: 'english_name')
String? englishNameSecondary;
@JsonKey(name: 'iso_639_1')
String? iso6391;
@JsonKey()
String? name;
OverseerrSpokenLanguage({
this.englishName,
this.englishNameSecondary,
this.iso6391,
this.name,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrSpokenLanguage.fromJson(Map<String, dynamic> json) =>
_$OverseerrSpokenLanguageFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrSpokenLanguageToJson(this);
}

View File

@@ -1,63 +0,0 @@
import 'package:lunasea/core.dart';
part 'watch_provider.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrWatchProvider {
@JsonKey(name: 'iso_3166_1')
String? iso31661;
@JsonKey()
String? link;
@JsonKey()
List<OverseerrWatchProviderDetails>? buy;
@JsonKey()
List<OverseerrWatchProviderDetails>? flatrate;
OverseerrWatchProvider({
this.iso31661,
this.link,
this.buy,
this.flatrate,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrWatchProvider.fromJson(Map<String, dynamic> json) =>
_$OverseerrWatchProviderFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrWatchProviderToJson(this);
}
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrWatchProviderDetails {
@JsonKey()
int? id;
@JsonKey()
String? name;
@JsonKey()
int? displayPriority;
@JsonKey()
String? logoPath;
OverseerrWatchProviderDetails({
this.id,
this.name,
this.displayPriority,
this.logoPath,
});
@override
String toString() => json.encode(this.toJson());
factory OverseerrWatchProviderDetails.fromJson(Map<String, dynamic> json) =>
_$OverseerrWatchProviderDetailsFromJson(json);
Map<String, dynamic> toJson() => _$OverseerrWatchProviderDetailsToJson(this);
}

View File

@@ -1,73 +0,0 @@
import 'package:lunasea/api/overseerr/models.dart';
import 'package:lunasea/api/overseerr/types.dart';
import 'package:lunasea/core.dart';
import 'package:lunasea/utils/parser.dart';
part 'issue.g.dart';
@JsonSerializable()
class OverseerrIssue {
@JsonKey()
int id;
@JsonKey()
OverseerrIssueType? issueType;
@JsonKey()
OverseerrIssueStatus? status;
@JsonKey()
int? problemSeason;
@JsonKey()
int? problemEpisode;
@JsonKey(
fromJson: LunaParser.dateTimeFromString,
toJson: LunaParser.dateTimeToISO8601,
)
DateTime? createdAt;
@JsonKey(
fromJson: LunaParser.dateTimeFromString,
toJson: LunaParser.dateTimeToISO8601,
)
DateTime? updatedAt;
@JsonKey()
OverseerrMedia? media;
@JsonKey()
OverseerrUser? createdBy;
@JsonKey()
OverseerrUser? modifiedBy;
@JsonKey()
List<OverseerrIssueComment>? comments;
OverseerrIssue({
required this.id,
this.issueType,
this.status,
this.problemSeason,
this.problemEpisode,
this.createdAt,
this.updatedAt,
this.media,
this.createdBy,
this.modifiedBy,
this.comments,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrIssue] object.
factory OverseerrIssue.fromJson(Map<String, dynamic> json) =>
_$OverseerrIssueFromJson(json);
/// Serialize a [OverseerrIssue] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrIssueToJson(this);
}

View File

@@ -1,48 +0,0 @@
import 'package:lunasea/core.dart';
import 'package:lunasea/api/overseerr/models.dart';
import 'package:lunasea/utils/parser.dart';
part 'issue_comment.g.dart';
@JsonSerializable()
class OverseerrIssueComment {
@JsonKey()
int id;
@JsonKey()
String message;
@JsonKey(
fromJson: LunaParser.dateTimeFromString,
toJson: LunaParser.dateTimeToISO8601,
)
DateTime? createdAt;
@JsonKey(
fromJson: LunaParser.dateTimeFromString,
toJson: LunaParser.dateTimeToISO8601,
)
DateTime? updatedAt;
@JsonKey()
OverseerrUser? user;
OverseerrIssueComment({
required this.id,
required this.message,
this.createdAt,
this.updatedAt,
this.user,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrIssueComment] object.
factory OverseerrIssueComment.fromJson(Map<String, dynamic> json) =>
_$OverseerrIssueCommentFromJson(json);
/// Serialize a [OverseerrIssueComment] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrIssueCommentToJson(this);
}

View File

@@ -1,29 +0,0 @@
import 'package:lunasea/core.dart';
import 'package:lunasea/api/overseerr/models.dart';
part 'issue_page.g.dart';
@JsonSerializable()
class OverseerrIssuePage {
@JsonKey()
OverseerrPageInfo? pageInfo;
@JsonKey()
List<OverseerrIssue>? results;
OverseerrIssuePage({
this.pageInfo,
this.results,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrIssuePage] object.
factory OverseerrIssuePage.fromJson(Map<String, dynamic> json) =>
_$OverseerrIssuePageFromJson(json);
/// Serialize a [OverseerrIssuePage] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrIssuePageToJson(this);
}

View File

@@ -1,122 +0,0 @@
import 'package:lunasea/core.dart';
import 'package:lunasea/modules/overseerr.dart';
import 'package:lunasea/utils/parser.dart';
part 'media.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrMedia {
@JsonKey()
int? id;
@JsonKey()
OverseerrMediaType? mediaType;
@JsonKey()
int? tmdbId;
@JsonKey()
int? tvdbId;
@JsonKey()
String? imdbId;
@JsonKey()
OverseerrMediaStatus? status;
@JsonKey()
OverseerrMediaStatus? status4k;
@JsonKey(
fromJson: LunaParser.dateTimeFromString,
toJson: LunaParser.dateTimeToISO8601,
)
DateTime? createdAt;
@JsonKey(
fromJson: LunaParser.dateTimeFromString,
toJson: LunaParser.dateTimeToISO8601,
)
DateTime? updatedAt;
@JsonKey(
fromJson: LunaParser.dateTimeFromString,
toJson: LunaParser.dateTimeToISO8601,
)
DateTime? lastSeasonChange;
@JsonKey(
fromJson: LunaParser.dateTimeFromString,
toJson: LunaParser.dateTimeToISO8601,
)
DateTime? mediaAddedAt;
@JsonKey()
int? serviceId;
@JsonKey()
int? serviceId4k;
@JsonKey()
int? externalServiceId;
@JsonKey()
int? externalServiceId4k;
@JsonKey()
String? externalServiceSlug;
@JsonKey()
String? externalServiceSlug4k;
@JsonKey()
String? ratingKey;
@JsonKey()
String? ratingKey4k;
@JsonKey()
List<OverseerrSeason>? seasons;
@JsonKey()
String? plexUrl;
@JsonKey()
String? serviceUrl;
OverseerrMedia({
this.id,
this.mediaType,
this.tmdbId,
this.tvdbId,
this.imdbId,
this.status,
this.status4k,
this.createdAt,
this.updatedAt,
this.lastSeasonChange,
this.mediaAddedAt,
this.serviceId,
this.serviceId4k,
this.externalServiceId,
this.externalServiceId4k,
this.externalServiceSlug,
this.externalServiceSlug4k,
this.ratingKey,
this.ratingKey4k,
this.seasons,
this.plexUrl,
this.serviceUrl,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrMedia] object.
factory OverseerrMedia.fromJson(Map<String, dynamic> json) =>
_$OverseerrMediaFromJson(json);
/// Serialize a [OverseerrMedia] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrMediaToJson(this);
}

View File

@@ -1,54 +0,0 @@
import 'package:lunasea/core.dart';
import 'package:lunasea/modules/overseerr.dart';
import 'package:lunasea/utils/parser.dart';
part 'season.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrMediaSeason {
@JsonKey(name: 'id')
int? id;
@JsonKey(name: 'seasonNumber')
int? seasonNumber;
@JsonKey(name: 'status')
OverseerrRequestStatus? status;
@JsonKey(name: 'status4k')
OverseerrRequestStatus? status4k;
@JsonKey(
name: 'createdAt',
fromJson: LunaParser.dateTimeFromString,
toJson: LunaParser.dateTimeToISO8601,
)
DateTime? createdAt;
@JsonKey(
name: 'updatedAt',
fromJson: LunaParser.dateTimeFromString,
toJson: LunaParser.dateTimeToISO8601,
)
DateTime? updatedAt;
OverseerrMediaSeason({
this.id,
this.seasonNumber,
this.status,
this.status4k,
this.createdAt,
this.updatedAt,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrMediaSeason] object.
factory OverseerrMediaSeason.fromJson(Map<String, dynamic> json) =>
_$OverseerrMediaSeasonFromJson(json);
/// Serialize a [OverseerrMediaSeason] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrMediaSeasonToJson(this);
}

View File

@@ -1,37 +0,0 @@
import 'dart:convert';
import 'package:json_annotation/json_annotation.dart';
part 'page.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrPageInfo {
@JsonKey(name: 'pages')
int? pages;
@JsonKey(name: 'pageSize')
int? pageSize;
@JsonKey(name: 'results')
int? results;
@JsonKey(name: 'page')
int? page;
OverseerrPageInfo({
this.pages,
this.pageSize,
this.results,
this.page,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrPageInfo] object.
factory OverseerrPageInfo.fromJson(Map<String, dynamic> json) =>
_$OverseerrPageInfoFromJson(json);
/// Serialize a [OverseerrPageInfo] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrPageInfoToJson(this);
}

View File

@@ -1,41 +0,0 @@
import 'dart:convert';
import 'package:json_annotation/json_annotation.dart';
part 'quota.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrQuota {
@JsonKey(name: 'days')
int? days;
@JsonKey(name: 'limit')
int? limit;
@JsonKey(name: 'used')
int? used;
@JsonKey(name: 'remaining')
int? remaining;
@JsonKey(name: 'restricted')
bool? restricted;
OverseerrQuota({
this.days,
this.limit,
this.used,
this.remaining,
this.restricted,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrQuota] object.
factory OverseerrQuota.fromJson(Map<String, dynamic> json) =>
_$OverseerrQuotaFromJson(json);
/// Serialize a [OverseerrQuota] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrQuotaToJson(this);
}

View File

@@ -1,94 +0,0 @@
import 'package:lunasea/core.dart';
import 'package:lunasea/modules/overseerr.dart';
import 'package:lunasea/utils/parser.dart';
part 'request.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrRequest {
@JsonKey(name: 'id')
int? id;
@JsonKey(name: 'status')
OverseerrRequestStatus? status;
@JsonKey(
name: 'createdAt',
fromJson: LunaParser.dateTimeFromString,
toJson: LunaParser.dateTimeToISO8601,
)
DateTime? createdAt;
@JsonKey(
name: 'updatedAt',
fromJson: LunaParser.dateTimeFromString,
toJson: LunaParser.dateTimeToISO8601,
)
DateTime? updatedAt;
@JsonKey(name: 'type')
OverseerrMediaType? type;
@JsonKey(name: 'is4k')
bool? is4k;
@JsonKey(name: 'serverId')
int? serverId;
@JsonKey(name: 'profileId')
int? profileId;
@JsonKey(name: 'rootFolder')
String? rootFolder;
@JsonKey(name: 'languageProfileId')
int? languageProfileId;
@JsonKey(name: 'tags')
List<int>? tags;
@JsonKey(name: 'media')
OverseerrMedia? media;
@JsonKey(name: 'requestedBy')
OverseerrUser? requestedBy;
@JsonKey(name: 'modifiedBy')
OverseerrUser? modifiedBy;
@JsonKey(name: 'seasons')
List<OverseerrSeason>? seasons;
@JsonKey(name: 'seasonCount')
int? seasonCount;
OverseerrRequest({
this.id,
this.status,
this.createdAt,
this.updatedAt,
this.type,
this.is4k,
this.serverId,
this.profileId,
this.rootFolder,
this.languageProfileId,
this.tags,
this.media,
this.requestedBy,
this.modifiedBy,
this.seasons,
this.seasonCount,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrRequest] object.
factory OverseerrRequest.fromJson(Map<String, dynamic> json) =>
_$OverseerrRequestFromJson(json);
/// Serialize a [OverseerrRequest] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrRequestToJson(this);
}

View File

@@ -1,36 +0,0 @@
import 'package:lunasea/core.dart';
part 'request_count.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrRequestCount {
@JsonKey(name: 'pending')
int? pending;
@JsonKey(name: 'approved')
int? approved;
@JsonKey(name: 'processing')
int? processing;
@JsonKey(name: 'available')
int? available;
OverseerrRequestCount({
this.pending,
this.approved,
this.processing,
this.available,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrRequestCount] object.
factory OverseerrRequestCount.fromJson(Map<String, dynamic> json) =>
_$OverseerrRequestCountFromJson(json);
/// Serialize a [OverseerrRequestCount] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrRequestCountToJson(this);
}

View File

@@ -1,29 +0,0 @@
import 'package:lunasea/core.dart';
import 'package:lunasea/modules/overseerr.dart';
part 'request_page.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrRequestPage {
@JsonKey(name: 'pageInfo')
OverseerrPageInfo? pageInfo;
@JsonKey(name: 'results')
List<OverseerrRequest>? results;
OverseerrRequestPage({
this.pageInfo,
this.results,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrRequestPage] object.
factory OverseerrRequestPage.fromJson(Map<String, dynamic> json) =>
_$OverseerrRequestPageFromJson(json);
/// Serialize a [OverseerrRequestPage] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrRequestPageToJson(this);
}

View File

@@ -1,36 +0,0 @@
import 'package:lunasea/core.dart';
part 'status.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrStatus {
@JsonKey(name: 'version')
String? version;
@JsonKey(name: 'commitTag')
String? commitTag;
@JsonKey(name: 'updateAvailable')
bool? updateAvailable;
@JsonKey(name: 'commitsBehind')
int? commitsBehind;
OverseerrStatus({
this.version,
this.commitTag,
this.updateAvailable,
this.commitsBehind,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrStatus] object.
factory OverseerrStatus.fromJson(Map<String, dynamic> json) =>
_$OverseerrStatusFromJson(json);
/// Serialize a [OverseerrStatus] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrStatusToJson(this);
}

View File

@@ -1,28 +0,0 @@
import 'package:lunasea/core.dart';
part 'status_appdata.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrStatusAppData {
@JsonKey(name: 'appData')
bool? appData;
@JsonKey(name: 'appDataPath')
String? appDataPath;
OverseerrStatusAppData({
this.appData,
this.appDataPath,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrStatusAppData] object.
factory OverseerrStatusAppData.fromJson(Map<String, dynamic> json) =>
_$OverseerrStatusAppDataFromJson(json);
/// Serialize a [OverseerrStatusAppData] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrStatusAppDataToJson(this);
}

View File

@@ -1,97 +0,0 @@
import 'package:lunasea/core.dart';
import 'package:lunasea/utils/parser.dart';
part 'user.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrUser {
@JsonKey(name: 'permissions')
int? permissions;
@JsonKey(name: 'id')
int? id;
@JsonKey(name: 'email')
String? email;
@JsonKey(name: 'plexId')
int? plexId;
@JsonKey(name: 'plexUsername')
String? plexUsername;
@JsonKey(name: 'username')
String? username;
@JsonKey(name: 'recoveryLinkExpirationDate')
String? recoveryLinkExpirationDate;
@JsonKey(name: 'userType')
int? userType;
@JsonKey(name: 'avatar')
String? avatar;
@JsonKey(name: 'movieQuotaLimit')
int? movieQuotaLimit;
@JsonKey(name: 'movieQuotaDays')
int? movieQuotaDays;
@JsonKey(name: 'tvQuotaLimit')
int? tvQuotaLimit;
@JsonKey(name: 'tvQuotaDays')
int? tvQuotaDays;
@JsonKey(
name: 'createdAt',
fromJson: LunaParser.dateTimeFromString,
toJson: LunaParser.dateTimeToISO8601,
)
DateTime? createdAt;
@JsonKey(
name: 'updatedAt',
fromJson: LunaParser.dateTimeFromString,
toJson: LunaParser.dateTimeToISO8601,
)
DateTime? updatedAt;
@JsonKey(name: 'requestCount')
int? requestCount;
@JsonKey(name: 'displayName')
String? displayName;
OverseerrUser({
this.permissions,
this.id,
this.email,
this.plexId,
this.plexUsername,
this.username,
this.recoveryLinkExpirationDate,
this.userType,
this.avatar,
this.movieQuotaLimit,
this.movieQuotaDays,
this.tvQuotaLimit,
this.tvQuotaDays,
this.createdAt,
this.updatedAt,
this.requestCount,
this.displayName,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrUser] object.
factory OverseerrUser.fromJson(Map<String, dynamic> json) =>
_$OverseerrUserFromJson(json);
/// Serialize a [OverseerrUser] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrUserToJson(this);
}

View File

@@ -1,29 +0,0 @@
import 'package:lunasea/core.dart';
import 'package:lunasea/modules/overseerr.dart';
part 'user_page.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrUserPage {
@JsonKey(name: 'pageInfo')
OverseerrPageInfo? pageInfo;
@JsonKey(name: 'results')
List<OverseerrUser>? results;
OverseerrUserPage({
this.pageInfo,
this.results,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrUserPage] object.
factory OverseerrUserPage.fromJson(Map<String, dynamic> json) =>
_$OverseerrUserPageFromJson(json);
/// Serialize a [OverseerrUserPage] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrUserPageToJson(this);
}

View File

@@ -1,29 +0,0 @@
import 'package:lunasea/core.dart';
import 'package:lunasea/modules/overseerr.dart';
part 'user_quota.g.dart';
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class OverseerrUserQuota {
@JsonKey(name: 'movie')
OverseerrQuota? movie;
@JsonKey(name: 'tv')
OverseerrQuota? tv;
OverseerrUserQuota({
this.movie,
this.tv,
});
/// Returns a JSON-encoded string version of this object.
@override
String toString() => json.encode(this.toJson());
/// Deserialize a JSON map to a [OverseerrUserQuota] object.
factory OverseerrUserQuota.fromJson(Map<String, dynamic> json) =>
_$OverseerrUserQuotaFromJson(json);
/// Serialize a [OverseerrUserQuota] object to a JSON map.
Map<String, dynamic> toJson() => _$OverseerrUserQuotaToJson(this);
}

View File

@@ -1,10 +0,0 @@
export 'types/issue_filter_type.dart';
export 'types/issue_sort_type.dart';
export 'types/issue_status.dart';
export 'types/issue_type.dart';
export 'types/media_status.dart';
export 'types/media_type.dart';
export 'types/request_filter_type.dart';
export 'types/request_sort_type.dart';
export 'types/request_status.dart';
export 'types/user_sort_type.dart';

View File

@@ -1,28 +0,0 @@
import 'package:lunasea/core.dart';
const _ALL = 'all';
const _OPEN = 'open';
const _RESOLVED = 'resolved';
@JsonEnum()
enum OverseerrIssueFilterType {
@JsonValue(_ALL)
ALL,
@JsonValue(_OPEN)
OPEN,
@JsonValue(_RESOLVED)
RESOLVED,
}
extension OverseerrIssueFilterTypeExtension on OverseerrIssueFilterType {
String get key {
switch (this) {
case OverseerrIssueFilterType.ALL:
return _ALL;
case OverseerrIssueFilterType.OPEN:
return _OPEN;
case OverseerrIssueFilterType.RESOLVED:
return _RESOLVED;
}
}
}

View File

@@ -1,23 +0,0 @@
import 'package:lunasea/core.dart';
const _MOST_RECENT = 'added';
const _LAST_MODIFIED = 'modified';
@JsonEnum()
enum OverseerrIssueSortType {
@JsonValue(_MOST_RECENT)
MOST_RECENT,
@JsonValue(_LAST_MODIFIED)
LAST_MODIFIED,
}
extension OverseerrIssueSortTypeExtension on OverseerrIssueSortType {
String get key {
switch (this) {
case OverseerrIssueSortType.MOST_RECENT:
return _MOST_RECENT;
case OverseerrIssueSortType.LAST_MODIFIED:
return _LAST_MODIFIED;
}
}
}

View File

@@ -1,42 +0,0 @@
import 'package:flutter/material.dart';
import 'package:lunasea/core.dart';
const _OPEN = 1;
const _RESOLVED = 2;
@JsonEnum()
enum OverseerrIssueStatus {
@JsonValue(_OPEN)
OPEN,
@JsonValue(_RESOLVED)
RESOLVED,
}
extension OverseerrIssueStatusExtension on OverseerrIssueStatus {
int get key {
switch (this) {
case OverseerrIssueStatus.OPEN:
return _OPEN;
case OverseerrIssueStatus.RESOLVED:
return _RESOLVED;
}
}
String get name {
switch (this) {
case OverseerrIssueStatus.OPEN:
return 'overseerr.Open'.tr();
case OverseerrIssueStatus.RESOLVED:
return 'overseerr.Resolved'.tr();
}
}
Color get color {
switch (this) {
case OverseerrIssueStatus.OPEN:
return LunaColours.orange;
case OverseerrIssueStatus.RESOLVED:
return LunaColours.accent;
}
}
}

View File

@@ -1,46 +0,0 @@
import 'package:lunasea/core.dart';
const _VIDEO = 1;
const _AUDIO = 2;
const _SUBTITLE = 3;
const _OTHER = 4;
@JsonEnum()
enum OverseerrIssueType {
@JsonValue(_VIDEO)
VIDEO,
@JsonValue(_AUDIO)
AUDIO,
@JsonValue(_SUBTITLE)
SUBTITLE,
@JsonValue(_OTHER)
OTHER,
}
extension OverseerrIssueTypeExtension on OverseerrIssueType {
int get key {
switch (this) {
case OverseerrIssueType.VIDEO:
return _VIDEO;
case OverseerrIssueType.AUDIO:
return _AUDIO;
case OverseerrIssueType.SUBTITLE:
return _SUBTITLE;
case OverseerrIssueType.OTHER:
return _OTHER;
}
}
String get name {
switch (this) {
case OverseerrIssueType.VIDEO:
return 'overseerr.Video'.tr();
case OverseerrIssueType.AUDIO:
return 'overseerr.Audio'.tr();
case OverseerrIssueType.SUBTITLE:
return 'overseerr.Subtitle'.tr();
case OverseerrIssueType.OTHER:
return 'overseerr.Other'.tr();
}
}
}

View File

@@ -1,39 +0,0 @@
import 'package:lunasea/core.dart';
const _UNKNOWN = 1;
const _PENDING = 2;
const _PROCESSING = 3;
const _PARTIALLY_AVAILABLE = 4;
const _AVAILABLE = 5;
@JsonEnum()
enum OverseerrMediaStatus {
@JsonValue(_UNKNOWN)
UNKNOWN,
@JsonValue(_PENDING)
PENDING,
@JsonValue(_PROCESSING)
PROCESSING,
@JsonValue(_PARTIALLY_AVAILABLE)
PARTIALLY_AVAILABLE,
@JsonValue(_AVAILABLE)
AVAILABLE,
}
/// Extension on [OverseerrMediaStatus] to implement extended functionality.
extension OverseerrMediaStatusExtension on OverseerrMediaStatus {
int get key {
switch (this) {
case OverseerrMediaStatus.UNKNOWN:
return _UNKNOWN;
case OverseerrMediaStatus.PENDING:
return _PENDING;
case OverseerrMediaStatus.PROCESSING:
return _PROCESSING;
case OverseerrMediaStatus.PARTIALLY_AVAILABLE:
return _PARTIALLY_AVAILABLE;
case OverseerrMediaStatus.AVAILABLE:
return _AVAILABLE;
}
}
}

View File

@@ -1,23 +0,0 @@
import 'package:lunasea/core.dart';
const _MOVIE = 'movie';
const _TV = 'tv';
@JsonEnum()
enum OverseerrMediaType {
@JsonValue(_MOVIE)
MOVIE,
@JsonValue(_TV)
TV,
}
extension OverseerrMediaTypeExtension on OverseerrMediaType {
String get key {
switch (this) {
case OverseerrMediaType.MOVIE:
return _MOVIE;
case OverseerrMediaType.TV:
return _TV;
}
}
}

View File

@@ -1,44 +0,0 @@
import 'package:lunasea/core.dart';
const _ALL = 'all';
const _APPROVED = 'approved';
const _AVAILABLE = 'available';
const _PENDING = 'pending';
const _PROCESSING = 'processing';
const _UNAVAILABLE = 'unavailable';
@JsonEnum()
enum OverseerrRequestFilterType {
@JsonValue(_ALL)
ALL,
@JsonValue(_APPROVED)
APPROVED,
@JsonValue(_AVAILABLE)
AVAILABLE,
@JsonValue(_PENDING)
PENDING,
@JsonValue(_PROCESSING)
PROCESSING,
@JsonValue(_UNAVAILABLE)
UNAVAILABLE,
}
/// Extension on [OverseerrRequestFilterType] to implement extended functionality.
extension OverseerrRequestFilterTypeExtension on OverseerrRequestFilterType {
String get key {
switch (this) {
case OverseerrRequestFilterType.ALL:
return _ALL;
case OverseerrRequestFilterType.APPROVED:
return _APPROVED;
case OverseerrRequestFilterType.AVAILABLE:
return _AVAILABLE;
case OverseerrRequestFilterType.PENDING:
return _PENDING;
case OverseerrRequestFilterType.PROCESSING:
return _PROCESSING;
case OverseerrRequestFilterType.UNAVAILABLE:
return _UNAVAILABLE;
}
}
}

View File

@@ -1,23 +0,0 @@
import 'package:lunasea/core.dart';
const _ADDED = 'added';
const _MODIFIED = 'modified';
@JsonEnum()
enum OverseerrRequestSortType {
@JsonValue(_ADDED)
ADDED,
@JsonValue(_MODIFIED)
MODIFIED,
}
extension OverseerrRequestSortTypeExtension on OverseerrRequestSortType {
String get key {
switch (this) {
case OverseerrRequestSortType.ADDED:
return _ADDED;
case OverseerrRequestSortType.MODIFIED:
return _MODIFIED;
}
}
}

View File

@@ -1,29 +0,0 @@
import 'package:lunasea/core.dart';
const _PENDING = 1;
const _APPROVED = 2;
const _DECLINED = 3;
@JsonEnum()
enum OverseerrRequestStatus {
@JsonValue(_PENDING)
PENDING,
@JsonValue(_APPROVED)
APPROVED,
@JsonValue(_DECLINED)
DECLINED,
}
/// Extension on [OverseerrRequestStatus] to implement extended functionality.
extension OverseerrRequestStatusExtension on OverseerrRequestStatus {
int get value {
switch (this) {
case OverseerrRequestStatus.PENDING:
return _PENDING;
case OverseerrRequestStatus.APPROVED:
return _APPROVED;
case OverseerrRequestStatus.DECLINED:
return _DECLINED;
}
}
}

View File

@@ -1,33 +0,0 @@
import 'package:lunasea/core.dart';
const _CREATED = 'created';
const _DISPLAY_NAME = 'displayname';
const _REQUESTS = 'requests';
const _UPDATED = 'updated';
@JsonEnum()
enum OverseerrUserSortType {
@JsonValue(_CREATED)
CREATED,
@JsonValue(_DISPLAY_NAME)
DISPLAY_NAME,
@JsonValue(_REQUESTS)
REQUESTS,
@JsonValue(_UPDATED)
UPDATED,
}
extension OverseerrUserSortTypeExtension on OverseerrUserSortType {
String get key {
switch (this) {
case OverseerrUserSortType.CREATED:
return _CREATED;
case OverseerrUserSortType.DISPLAY_NAME:
return _DISPLAY_NAME;
case OverseerrUserSortType.REQUESTS:
return _REQUESTS;
case OverseerrUserSortType.UPDATED:
return _UPDATED;
}
}
}

View File

@@ -28,7 +28,7 @@ class SonarrControllerWanted {
}) async =>
_commandGetMissing(
_client,
sortDir: sortDir,
sortDirection: sortDir,
sortKey: sortKey,
page: page,
pageSize: pageSize,

Some files were not shown because too many files have changed in this diff Show More