Skip to content

Commit 9981dd1

Browse files
authored
Merge pull request #10 from parkcoool/dev
dev
2 parents 7855bfb + 8f7a419 commit 9981dd1

174 files changed

Lines changed: 3563 additions & 5417 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: Deploy Firebase Functions
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
paths:
8+
- "apps/functions/**"
9+
- "packages/schemas/**"
10+
- ".github/workflows/deploy-functions.yml"
11+
12+
jobs:
13+
deploy_functions:
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- name: Checkout Repo
18+
uses: actions/checkout@v4
19+
20+
- name: Setup Node.js
21+
uses: actions/setup-node@v4
22+
with:
23+
node-version: "20"
24+
cache: "npm"
25+
26+
- name: Install Dependencies
27+
run: npm ci
28+
29+
- name: Build Functions
30+
working-directory: apps/functions
31+
run: npm run build
32+
33+
- name: Deploy to Firebase
34+
uses: firebase/[email protected]
35+
with:
36+
args: deploy --only functions
37+
env:
38+
FIREBASE_CONFIG: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_KEY }}
39+
PROJECT_ID: ${{ secrets.FIREBASE_PROJECT_ID }}

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,6 @@
55
firebase-debug.log
66
firestore-debug.log
77

8-
dist
8+
dist
9+
10+
dev-data

apps/frontend/android/app/src/main/java/com/anonymous/lymoapp/MediaModule.kt

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,28 +51,39 @@ class MediaModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaM
5151
return Base64.encodeToString(byteArray, Base64.DEFAULT)
5252
}
5353

54-
private fun sendMediaData() {
54+
private fun createMediaDataMap(): WritableMap? {
5555
val controller = mediaController
5656
val metadata = controller?.metadata
5757
val state = controller?.playbackState
5858

5959
if (controller == null || metadata == null || state == null) {
60-
sendEvent("onMediaDataChanged", null)
61-
return
60+
return null
6261
}
6362

6463
val albumArtBitmap = metadata.getBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART)
6564
val albumArtBase64 = "data:image/png;base64," + bitmapToBase64(albumArtBitmap)
6665

67-
val mediaData = Arguments.createMap().apply {
66+
return Arguments.createMap().apply {
6867
putString("title", metadata.getString(MediaMetadata.METADATA_KEY_TITLE))
6968
putString("artist", metadata.getString(MediaMetadata.METADATA_KEY_ARTIST))
7069
putString("album", metadata.getString(MediaMetadata.METADATA_KEY_ALBUM))
7170
putDouble("duration", metadata.getLong(MediaMetadata.METADATA_KEY_DURATION).toDouble())
7271
putBoolean("isPlaying", state.state == PlaybackState.STATE_PLAYING)
73-
putString("coverUrl", albumArtBase64)
72+
putString("albumArt", albumArtBase64)
73+
}
74+
}
75+
76+
private fun sendMediaData() {
77+
sendEvent("onMediaDataChanged", createMediaDataMap())
78+
}
79+
80+
@ReactMethod
81+
fun getCurrentMediaState(promise: Promise) {
82+
try {
83+
promise.resolve(createMediaDataMap())
84+
} catch (e: Exception) {
85+
promise.reject("GET_MEDIA_STATE_ERROR", e.message)
7486
}
75-
sendEvent("onMediaDataChanged", mediaData)
7687
}
7788

7889
private fun sendEvent(eventName: String, params: WritableMap?) {

apps/frontend/apis/addTrack.ts

Lines changed: 0 additions & 10 deletions
This file was deleted.

apps/frontend/apis/generateDetail.ts

Lines changed: 0 additions & 15 deletions
This file was deleted.

apps/frontend/apis/getLyrics.ts

Lines changed: 0 additions & 26 deletions
This file was deleted.

apps/frontend/apis/getNewTracks.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { TrackDoc } from "@lymo/schemas/doc";
1+
import type { Track } from "@lymo/schemas/doc";
22
import {
33
collection,
44
getDocs,
@@ -11,9 +11,9 @@ import {
1111
import db from "@/core/firestore";
1212

1313
export default async function getNewTracks() {
14-
const tracksCollection = collection(db, "tracks");
15-
const q = query(tracksCollection, orderBy("createdAt", "desc"), limit(10));
16-
const trackDocs = (await getDocs(q)) as FirebaseFirestoreTypes.QuerySnapshot<TrackDoc>;
14+
const trackCollectionRef = collection(db, "tracks");
15+
const q = query(trackCollectionRef, orderBy("createdAt", "desc"), limit(10));
16+
const trackDocs = (await getDocs(q)) as FirebaseFirestoreTypes.QuerySnapshot<Track>;
1717

1818
const result = trackDocs.docs.map((doc) => ({ ...doc.data(), id: doc.id }));
1919
return result;

apps/frontend/apis/getPopularTracks.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { TrackDoc } from "@lymo/schemas/doc";
1+
import type { Track } from "@lymo/schemas/doc";
22
import {
33
collection,
44
getDocs,
@@ -11,14 +11,14 @@ import {
1111
import db from "@/core/firestore";
1212

1313
export default async function getPopularTracks() {
14-
const tracksCollection = collection(db, "tracks");
14+
const trackCollectionRef = collection(db, "tracks");
1515
const q = query(
16-
tracksCollection,
17-
orderBy("play", "desc"),
16+
trackCollectionRef,
17+
orderBy("stats.viewCount", "desc"),
1818
orderBy("createdAt", "asc"),
1919
limit(20)
2020
);
21-
const trackDocs = (await getDocs(q)) as FirebaseFirestoreTypes.QuerySnapshot<TrackDoc>;
21+
const trackDocs = (await getDocs(q)) as FirebaseFirestoreTypes.QuerySnapshot<Track>;
2222

2323
const result = trackDocs.docs.map((doc) => ({ ...doc.data(), id: doc.id }));
2424
return result;

apps/frontend/apis/getProvider.ts

Lines changed: 0 additions & 23 deletions
This file was deleted.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import type { Story } from "@lymo/schemas/doc";
2+
import { Language } from "@lymo/schemas/shared";
3+
import {
4+
collection,
5+
getDocs,
6+
limit,
7+
query,
8+
where,
9+
type FirebaseFirestoreTypes,
10+
} from "@react-native-firebase/firestore";
11+
12+
import db from "@/core/firestore";
13+
14+
interface GetStoryByTrackIdParams {
15+
trackId: string;
16+
language: Language;
17+
}
18+
19+
export default async function getStoryByTrackId({ trackId, language }: GetStoryByTrackIdParams) {
20+
const storyCollectionRef = collection(db, "stories");
21+
const q = query(
22+
storyCollectionRef,
23+
where("language", "==", language),
24+
where("trackId", "==", trackId),
25+
limit(1)
26+
);
27+
28+
const storyDoc = (await getDocs(q)).docs[0] as
29+
| FirebaseFirestoreTypes.QueryDocumentSnapshot<Story>
30+
| undefined;
31+
return storyDoc?.data() ?? null;
32+
}

0 commit comments

Comments
 (0)