mirror of
https://github.com/Shabinder/SpotiFlyer.git
synced 2024-11-24 09:54:33 +01:00
(WIP) Web Target
This commit is contained in:
parent
1a7363993c
commit
176141bed5
1
android/proguard-rules.pro
vendored
1
android/proguard-rules.pro
vendored
@ -32,6 +32,7 @@
|
||||
kotlinx.serialization.KSerializer serializer(...);
|
||||
}
|
||||
-keep class com.shabinder.** { *; }
|
||||
-keep class com.mpatric.** { *; }
|
||||
-keep,includedescriptorclasses class com.shabinder.**$$serializer { *; } # <-- change package name to your app's
|
||||
-keepclassmembers class com.shabinder.** { # <-- change package name to your app's
|
||||
*** Companion;
|
||||
|
@ -11,7 +11,8 @@ allprojects {
|
||||
maven(url = "https://dl.bintray.com/ekito/koin")
|
||||
maven(url = "https://kotlin.bintray.com/kotlinx/")
|
||||
maven(url = "https://dl.bintray.com/icerockdev/moko")
|
||||
maven(url = "https://kotlin.bintray.com/kotlin-js-wrappers/")
|
||||
//maven(url = "https://kotlin.bintray.com/kotlin-js-wrappers/")
|
||||
maven(url = "https://dl.bintray.com/kotlin/kotlin-js-wrappers")
|
||||
maven(url = "https://maven.pkg.jetbrains.space/public/p/compose/dev")
|
||||
}
|
||||
}
|
||||
|
@ -9,16 +9,18 @@ version = "2.1"
|
||||
repositories {
|
||||
jcenter()
|
||||
mavenLocal()
|
||||
mavenCentral()
|
||||
google()
|
||||
maven(url = "https://jitpack.io")
|
||||
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
|
||||
maven(url = "https://dl.bintray.com/kotlin/kotlin-js-wrappers")
|
||||
maven(url = "https://maven.pkg.jetbrains.space/public/p/compose/dev")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation("com.android.tools.build:gradle:4.0.1")
|
||||
implementation("com.android.tools.build:gradle:4.0.2")
|
||||
implementation("com.google.gms:google-services:4.3.5")
|
||||
implementation("com.google.firebase:perf-plugin:1.3.4")
|
||||
implementation("com.google.firebase:firebase-crashlytics-gradle:2.5.0")
|
||||
implementation("com.google.firebase:perf-plugin:1.3.5")
|
||||
implementation("com.google.firebase:firebase-crashlytics-gradle:2.5.1")
|
||||
implementation(JetBrains.Compose.gradlePlugin)
|
||||
implementation(JetBrains.Kotlin.gradlePlugin)
|
||||
implementation(JetBrains.Kotlin.serialization)
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
object Versions {
|
||||
const val versionName = "2.2.0"
|
||||
const val kotlinVersion = "1.4.30"
|
||||
const val kotlinVersion = "1.4.31"
|
||||
|
||||
const val coroutinesVersion = "1.4.2"
|
||||
//const val compose = "1.0.0-alpha12"
|
||||
@ -67,7 +67,7 @@ object JetBrains {
|
||||
|
||||
object Compose {
|
||||
// __LATEST_COMPOSE_RELEASE_VERSION__
|
||||
const val VERSION = "0.4.0-build168"
|
||||
const val VERSION = "0.3.2"
|
||||
const val gradlePlugin = "org.jetbrains.compose:compose-gradle-plugin:$VERSION"
|
||||
}
|
||||
}
|
||||
|
@ -7,36 +7,36 @@ plugins {
|
||||
kotlin {
|
||||
jvm("desktop")
|
||||
android()
|
||||
// Remove After upgrading dependency
|
||||
/*configurations.all {
|
||||
resolutionStrategy.eachDependency {
|
||||
if (requested.group.contains("org.jetbrains.compose")) {
|
||||
useVersion(JetBrains.Compose.VERSION)
|
||||
js {
|
||||
browser()
|
||||
nodejs()
|
||||
}
|
||||
if (requested.group.contains("androidx.compose")) {
|
||||
useVersion(Versions.compose)
|
||||
}
|
||||
}
|
||||
}*/
|
||||
sourceSets {
|
||||
named("commonMain") {
|
||||
dependencies {
|
||||
api(compose.runtime)
|
||||
api(compose.foundation)
|
||||
api(compose.material)
|
||||
implementation(compose.runtime)
|
||||
implementation(compose.foundation)
|
||||
implementation(compose.material)
|
||||
}
|
||||
}
|
||||
|
||||
named("androidMain") {
|
||||
dependencies {
|
||||
api("androidx.appcompat:appcompat:1.2.0")
|
||||
api(Androidx.core)
|
||||
implementation("androidx.appcompat:appcompat:1.2.0")
|
||||
implementation(Androidx.core)
|
||||
}
|
||||
}
|
||||
|
||||
named("desktopMain") {
|
||||
dependencies {
|
||||
api(compose.desktop.common)
|
||||
implementation(compose.desktop.common)
|
||||
}
|
||||
}
|
||||
named("jsMain") {
|
||||
dependencies {
|
||||
implementation("org.jetbrains:kotlin-react:17.0.1-pre.148-kotlin-1.4.30")
|
||||
implementation("org.jetbrains:kotlin-styled:1.0.0-pre.115-kotlin-1.4.10")
|
||||
implementation("org.jetbrains:kotlin-react-dom:17.0.1-pre.148-kotlin-1.4.30")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,10 @@ kotlin {
|
||||
jvm("desktop")
|
||||
android()
|
||||
//ios()
|
||||
|
||||
js {
|
||||
browser()
|
||||
nodejs()
|
||||
}
|
||||
sourceSets {
|
||||
named("commonTest") {
|
||||
dependencies {
|
||||
@ -26,6 +29,11 @@ kotlin {
|
||||
implementation(JetBrains.Kotlin.testJunit)
|
||||
}
|
||||
}
|
||||
named("jsTest") {
|
||||
dependencies {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
|
||||
|
@ -15,7 +15,8 @@ lateinit var appContext: Context
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
lateinit var activityContext: Context
|
||||
|
||||
actual fun createDatabase(): Database {
|
||||
@Suppress("RedundantNullableReturnType")
|
||||
actual fun createDatabase(): Database? {
|
||||
val driver = AndroidSqliteDriver(Database.Schema, appContext, "Database.db")
|
||||
return Database(driver)
|
||||
}
|
||||
|
@ -3,5 +3,5 @@ package com.shabinder.common.database
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.shabinder.database.Database
|
||||
|
||||
expect fun createDatabase() : Database
|
||||
expect fun createDatabase() : Database?
|
||||
expect fun getLogger(): Logger
|
@ -6,7 +6,8 @@ import com.shabinder.database.Database
|
||||
import com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver
|
||||
import java.io.File
|
||||
|
||||
actual fun createDatabase(): Database {
|
||||
@Suppress("RedundantNullableReturnType")
|
||||
actual fun createDatabase(): Database? {
|
||||
val databasePath = File(System.getProperty("java.io.tmpdir"), "Database.db")
|
||||
val driver = JdbcSqliteDriver(url = "jdbc:sqlite:${databasePath.absolutePath}")
|
||||
.also { Database.Schema.create(it) }
|
||||
|
@ -0,0 +1,8 @@
|
||||
package com.shabinder.common.database
|
||||
|
||||
import co.touchlab.kermit.CommonLogger
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.shabinder.database.Database
|
||||
|
||||
actual fun createDatabase(): Database? = null
|
||||
actual fun getLogger(): Logger = CommonLogger()
|
@ -15,7 +15,7 @@ kotlin {
|
||||
implementation(project(":common:database"))
|
||||
implementation(project(":fuzzywuzzy:app"))
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.1")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.1.0")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.1.1")
|
||||
implementation(Ktor.clientCore)
|
||||
implementation(Ktor.clientCio)
|
||||
@ -43,7 +43,6 @@ kotlin {
|
||||
}
|
||||
desktopMain {
|
||||
dependencies{
|
||||
implementation("com.github.kokorin.jaffree:jaffree:0.9.10")
|
||||
implementation(Ktor.clientApache)
|
||||
implementation(Ktor.slf4j)
|
||||
}
|
||||
|
@ -0,0 +1,62 @@
|
||||
package com.shabinder.common.di
|
||||
|
||||
import com.shabinder.common.models.DownloadStatus
|
||||
import com.shabinder.common.models.TrackDetails
|
||||
import io.ktor.client.request.*
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
|
||||
actual fun openPlatform(packageID:String, platformLink:String){
|
||||
//TODO
|
||||
}
|
||||
|
||||
actual fun shareApp(){
|
||||
//TODO
|
||||
}
|
||||
|
||||
actual fun giveDonation(){
|
||||
//TODO
|
||||
}
|
||||
|
||||
actual fun queryActiveTracks(){}
|
||||
actual fun showPopUpMessage(text:String){}
|
||||
|
||||
actual val dispatcherIO: CoroutineDispatcher = Dispatchers.Default
|
||||
|
||||
/*
|
||||
* Refactor This
|
||||
* */
|
||||
private suspend fun isInternetAvailable(): Boolean {
|
||||
return withContext(dispatcherIO) {
|
||||
try {
|
||||
ktorHttpClient.head<String>("http://google.com")
|
||||
true
|
||||
} catch (e: Exception) {
|
||||
println(e.message)
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
actual val isInternetAvailable:Boolean
|
||||
get(){
|
||||
var result = false
|
||||
val job = GlobalScope.launch { result = isInternetAvailable() }
|
||||
while(job.isActive){}
|
||||
return result
|
||||
}
|
||||
|
||||
val DownloadProgressFlow: MutableSharedFlow<HashMap<String,DownloadStatus>> = MutableSharedFlow(1)
|
||||
|
||||
actual suspend fun downloadTracks(
|
||||
list: List<TrackDetails>,
|
||||
getYTIDBestMatch:suspend (String,TrackDetails)->String?,
|
||||
saveFileWithMetaData:suspend (mp3ByteArray:ByteArray, trackDetails: TrackDetails) -> Unit
|
||||
){
|
||||
list.forEach {
|
||||
if (!it.videoID.isNullOrBlank()) {//Video ID already known!
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package com.shabinder.common.di
|
||||
|
||||
import co.touchlab.kermit.Kermit
|
||||
import com.shabinder.common.models.TrackDetails
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
||||
import org.w3c.dom.ImageBitmap
|
||||
|
||||
actual class Dir actual constructor(private val logger: Kermit) {
|
||||
|
||||
/*init {
|
||||
createDirectories()
|
||||
}*/
|
||||
/*
|
||||
* TODO
|
||||
* */
|
||||
actual fun fileSeparator(): String = "/"
|
||||
|
||||
actual fun imageCacheDir(): String = "TODO" +
|
||||
fileSeparator() + "SpotiFlyer/.images" + fileSeparator()
|
||||
|
||||
actual fun defaultDir(): String = "TODO" + fileSeparator() +
|
||||
"SpotiFlyer" + fileSeparator()
|
||||
|
||||
actual fun isPresent(path: String): Boolean = false
|
||||
|
||||
actual fun createDirectory(dirPath:String){
|
||||
|
||||
}
|
||||
|
||||
actual suspend fun clearCache() {
|
||||
}
|
||||
|
||||
actual suspend fun cacheImage(image: Any,path:String) {}
|
||||
|
||||
@Suppress("BlockingMethodInNonBlockingContext")
|
||||
actual suspend fun saveFileWithMetadata(
|
||||
mp3ByteArray: ByteArray,
|
||||
trackDetails: TrackDetails
|
||||
) {
|
||||
}
|
||||
|
||||
actual fun addToLibrary(path:String){}
|
||||
|
||||
actual suspend fun loadImage(url: String): ImageBitmap? {
|
||||
return null
|
||||
}
|
||||
|
||||
private fun loadCachedImage(cachePath: String): ImageBitmap? {
|
||||
return null
|
||||
}
|
||||
|
||||
private suspend fun freshImage(url:String): ImageBitmap?{
|
||||
return null
|
||||
}
|
||||
}
|
@ -12,7 +12,6 @@ kotlin {
|
||||
dependencies {
|
||||
implementation(compose.materialIconsExtended)
|
||||
implementation(project(":common:dependency-injection"))
|
||||
//implementation("com.alialbaali.kamel:kamel-image:0.1.0")
|
||||
implementation(project(":common:data-models"))
|
||||
implementation(project(":common:database"))
|
||||
implementation(project(":common:list"))
|
||||
|
@ -6,7 +6,7 @@ import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import com.arkivanov.decompose.ComponentContext
|
||||
import com.arkivanov.decompose.extensions.compose.jetbrains.rootComponent
|
||||
import com.arkivanov.decompose.extensions.compose.jetbrains.rememberRootComponent
|
||||
import com.arkivanov.mvikotlin.core.lifecycle.LifecycleRegistry
|
||||
import com.arkivanov.mvikotlin.core.lifecycle.resume
|
||||
import com.arkivanov.mvikotlin.main.store.DefaultStoreFactory
|
||||
@ -15,11 +15,7 @@ import com.shabinder.common.di.DownloadProgressFlow
|
||||
import com.shabinder.common.di.FetchPlatformQueryResult
|
||||
import com.shabinder.common.di.initKoin
|
||||
import com.shabinder.common.root.SpotiFlyerRoot
|
||||
import com.shabinder.common.root.SpotiFlyerRootContent
|
||||
import com.shabinder.common.uikit.SpotiFlyerColors
|
||||
import com.shabinder.common.uikit.SpotiFlyerShapes
|
||||
import com.shabinder.common.uikit.SpotiFlyerTypography
|
||||
import com.shabinder.common.uikit.colorOffWhite
|
||||
import com.shabinder.common.uikit.*
|
||||
import com.shabinder.database.Database
|
||||
import kotlinx.coroutines.flow.collect
|
||||
import kotlinx.coroutines.launch
|
||||
@ -42,13 +38,7 @@ fun main(){
|
||||
typography = SpotiFlyerTypography,
|
||||
shapes = SpotiFlyerShapes
|
||||
) {
|
||||
val callBacks = SpotiFlyerRootContent(rootComponent(factory = ::spotiFlyerRoot)).callBacks
|
||||
val scope = rememberCoroutineScope()
|
||||
scope.launch {
|
||||
DownloadProgressFlow.collect {
|
||||
|
||||
}
|
||||
}
|
||||
val callBacks = SpotiFlyerRootContent(rememberRootComponent(factory = ::spotiFlyerRoot)).callBacks
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user