diff --git a/app/frontend/build.gradle.kts b/app/frontend/build.gradle.kts index 6441ae2..1433da0 100644 --- a/app/frontend/build.gradle.kts +++ b/app/frontend/build.gradle.kts @@ -16,6 +16,23 @@ android { versionName = "1.0" } + signingConfigs { + create("release") { + storeFile = file("../release-key.jks") + storePassword = "youtubeapp" + keyAlias = "youtubeapp" + keyPassword = "youtubeapp" + enableV1Signing = true + enableV2Signing = true + } + } + + buildTypes { + getByName("release") { + signingConfig = signingConfigs.getByName("release") + } + } + buildFeatures { compose = true } diff --git a/app/frontend/src/main/AndroidManifest.xml b/app/frontend/src/main/AndroidManifest.xml index fc6e766..c15933d 100644 --- a/app/frontend/src/main/AndroidManifest.xml +++ b/app/frontend/src/main/AndroidManifest.xml @@ -15,7 +15,8 @@ + android:exported="true" + android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize"> diff --git a/app/frontend/src/main/java/com/youtubeapp/data/ApiClient.kt b/app/frontend/src/main/java/com/youtubeapp/data/ApiClient.kt index fdca5b6..c51d4ec 100644 --- a/app/frontend/src/main/java/com/youtubeapp/data/ApiClient.kt +++ b/app/frontend/src/main/java/com/youtubeapp/data/ApiClient.kt @@ -8,7 +8,7 @@ object ApiClient { val BASE_URL: String = if (Build.FINGERPRINT.contains("generic") || Build.FINGERPRINT.contains("sdk")) "http://10.0.2.2:8000/" else - "http://marha.local:8000/" + "http://192.168.178.34:8000/" val api: VideoApi by lazy { Retrofit.Builder() diff --git a/app/frontend/src/main/java/com/youtubeapp/data/LocalStorageService.kt b/app/frontend/src/main/java/com/youtubeapp/data/LocalStorageService.kt index 5be8431..b57688e 100644 --- a/app/frontend/src/main/java/com/youtubeapp/data/LocalStorageService.kt +++ b/app/frontend/src/main/java/com/youtubeapp/data/LocalStorageService.kt @@ -1,12 +1,15 @@ package com.youtubeapp.data import android.content.Context +import com.google.gson.Gson import java.io.File import java.io.FileOutputStream import java.net.URL class LocalStorageService(private val context: Context) { + private val gson = Gson() + private fun videosDir(): File { val dir = File(context.filesDir, "videos") if (!dir.exists()) dir.mkdirs() @@ -15,6 +18,8 @@ class LocalStorageService(private val context: Context) { private fun videoFile(videoId: Int): File = File(videosDir(), "$videoId.mp4") + private fun metadataFile(videoId: Int): File = File(videosDir(), "$videoId.json") + fun isLocallyAvailable(videoId: Int): Boolean = videoFile(videoId).exists() fun getLocalFile(videoId: Int): File? { @@ -22,7 +27,10 @@ class LocalStorageService(private val context: Context) { return if (file.exists()) file else null } - fun deleteLocalFile(videoId: Int): Boolean = videoFile(videoId).delete() + fun deleteLocalFile(videoId: Int): Boolean { + metadataFile(videoId).delete() + return videoFile(videoId).delete() + } fun getLocalVideoIds(): List { return videosDir().listFiles() @@ -31,6 +39,24 @@ class LocalStorageService(private val context: Context) { ?: emptyList() } + fun saveMetadata(video: Video) { + metadataFile(video.id).writeText(gson.toJson(video)) + } + + fun getLocalVideos(): List