From ad90c11ab0c9f1aaba9ae9226d6076ea590f1a29 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Wed, 1 Feb 2023 22:05:37 +0600 Subject: [PATCH] feat: configure pocketbase, generate dart types, update playback to use server instead of hive cache This commit currently turns off sponsor block segment for compatibility reasons --- .github/workflows/spotube-nightly.yml | 4 + .github/workflows/spotube-release.yml | 4 + .gitignore | 2 + lib/collections/env.dart | 11 +++ lib/extensions/video.dart | 6 ++ lib/main.dart | 16 +++- lib/models/track.dart | 29 +++++++ lib/models/track.g.dart | 30 +++++++ lib/provider/playback_provider.dart | 87 ++++++++++++------- lib/services/pocketbase.dart | 14 +++ pubspec.lock | 23 ++++- pubspec.yaml | 5 ++ server/.pocketbase | 1 + .../1675256468_created_tracks.js | 63 ++++++++++++++ .../1675256557_updated_tracks.js | 17 ++++ .../pb_migrations/1675256593_updated_users.js | 19 ++++ .../1675256678_updated_tracks.js | 17 ++++ .../1675257121_updated_tracks.js | 17 ++++ .../1675257148_updated_tracks.js | 39 +++++++++ 19 files changed, 369 insertions(+), 35 deletions(-) create mode 100644 lib/collections/env.dart create mode 100644 lib/models/track.dart create mode 100644 lib/models/track.g.dart create mode 100644 lib/services/pocketbase.dart create mode 100644 server/.pocketbase create mode 100644 server/pb_migrations/1675256468_created_tracks.js create mode 100644 server/pb_migrations/1675256557_updated_tracks.js create mode 100644 server/pb_migrations/1675256593_updated_users.js create mode 100644 server/pb_migrations/1675256678_updated_tracks.js create mode 100644 server/pb_migrations/1675257121_updated_tracks.js create mode 100644 server/pb_migrations/1675257148_updated_tracks.js diff --git a/.github/workflows/spotube-nightly.yml b/.github/workflows/spotube-nightly.yml index 2be5ba277..a73b4be70 100644 --- a/.github/workflows/spotube-nightly.yml +++ b/.github/workflows/spotube-nightly.yml @@ -28,6 +28,7 @@ jobs: curl -sS https://webi.sh/yq | sh yq -i '.version |= sub("\+\d+", "-nightly-")' pubspec.yaml yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml + echo '${{ secrets.DOT_ENV }}' > .env flutter config --enable-linux-desktop flutter pub get dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' @@ -63,6 +64,7 @@ jobs: curl -sS https://webi.sh/yq | sh yq -i '.version |= sub("\+\d+", "-nightly-")' pubspec.yaml yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml + echo '${{ secrets.DOT_ENV }}' > .env flutter pub get dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' echo '${{ secrets.KEYSTORE }}' | base64 --decode > android/app/upload-keystore.jks @@ -93,6 +95,7 @@ jobs: yq -i '.version |= sub("\+\d+", "-nightly-")' pubspec.yaml yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml sed -i "s/%{{SPOTUBE_VERSION}}%/${{ env.GITHUB_RUN_NUMBER }}/" windows/runner/Runner.rc + echo '${{ secrets.DOT_ENV }}' > .env flutter config --enable-windows-desktop flutter pub get dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' @@ -120,6 +123,7 @@ jobs: - run: brew install yq - run: yq -i '.version |= sub("\+\d+", "-nightly-")' pubspec.yaml - run: yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml + - run: echo '${{ secrets.DOT_ENV }}' > .env - run: flutter config --enable-macos-desktop - run: flutter pub get - run: dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' diff --git a/.github/workflows/spotube-release.yml b/.github/workflows/spotube-release.yml index f00d20a9b..11045c7d8 100644 --- a/.github/workflows/spotube-release.yml +++ b/.github/workflows/spotube-release.yml @@ -31,6 +31,7 @@ jobs: with: cache: true - run: | + echo '${{ secrets.DOT_ENV }}' > .env flutter config --enable-windows-desktop flutter pub get dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' @@ -72,6 +73,7 @@ jobs: - uses: subosito/flutter-action@v2.8.0 with: cache: true + - run: echo '${{ secrets.DOT_ENV }}' > .env - run: flutter config --enable-macos-desktop - run: flutter pub get - run: dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' @@ -112,6 +114,7 @@ jobs: # replacing & adding new release version with older version - run: | sed -i 's|%{{APPDATA_RELEASE}}%||' linux/com.github.KRTirtho.Spotube.appdata.xml + echo '${{ secrets.DOT_ENV }}' > .env - run: | flutter config --enable-linux-desktop @@ -146,6 +149,7 @@ jobs: sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse - run: | + echo '${{ secrets.DOT_ENV }}' > .env flutter pub get dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' echo '${{ secrets.KEYSTORE }}' | base64 --decode > android/app/upload-keystore.jks diff --git a/.gitignore b/.gitignore index 55a9a29f3..1782ec11b 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,5 @@ appimage-build android/key.properties .fvm/flutter_sdk + +**/pb_data \ No newline at end of file diff --git a/lib/collections/env.dart b/lib/collections/env.dart new file mode 100644 index 000000000..0361a7bc2 --- /dev/null +++ b/lib/collections/env.dart @@ -0,0 +1,11 @@ +import 'package:flutter_dotenv/flutter_dotenv.dart'; + +abstract class Env { + static final String pocketbaseUrl = dotenv.get('POCKETBASE_URL'); + static final String username = dotenv.get('USERNAME'); + static final String password = dotenv.get('PASSWORD'); + + static configure() async { + await dotenv.load(fileName: ".env"); + } +} diff --git a/lib/extensions/video.dart b/lib/extensions/video.dart index 37eca8336..6b5a537c6 100644 --- a/lib/extensions/video.dart +++ b/lib/extensions/video.dart @@ -1,4 +1,5 @@ import 'package:spotube/entities/cache_track.dart'; +import 'package:spotube/models/track.dart'; import 'package:spotube/utils/duration.dart'; import 'package:youtube_explode_dart/youtube_explode_dart.dart'; @@ -30,6 +31,11 @@ extension VideoFromCacheTrackExtension on Video { false, ); } + + static Future