Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/build-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ jobs:
steps:
- uses: actions/checkout@v2

- name: Set up JDK 11
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: 11
java-version: 17
distribution: 'zulu'
cache: 'gradle'

Expand All @@ -42,10 +42,10 @@ jobs:
keyStorePassword: ${{ secrets.KEYSTOREPASSWORD }}
keyPassword: ${{ secrets.KEYPASSWORD }}
env:
BUILD_TOOLS_VERSION: "33.0.0"
BUILD_TOOLS_VERSION: "34.0.0"

- name: Upload the APK
uses: actions/upload-artifact@v2
with:
name: uwuradio
path: ${{steps.signing.outputs.signedReleaseFile}}
path: ${{steps.signing.outputs.signedReleaseFile}}
56 changes: 18 additions & 38 deletions clients/android/app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
id("com.android.application")
kotlin("android")
kotlin("plugin.serialization")
kotlin("plugin.compose")
}

android {
namespace = "network.uwu.radio"
compileSdk = 33
compileSdk = 34

defaultConfig {
applicationId = "network.uwu.radio"
minSdk = 21
targetSdk = 33
versionCode = 100
versionName = "1.0.0"
targetSdk = 34
versionCode = 200
versionName = "2.0.0"

vectorDrawables {
useSupportLibrary = true
Expand All @@ -25,10 +24,7 @@ android {
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}

Expand All @@ -43,45 +39,31 @@ android {

buildFeatures {
compose = true
buildConfig = true
}

composeOptions {
kotlinCompilerExtensionVersion = "1.4.0"
}

packagingOptions {
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
}

tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs += listOf(
"-P",
"plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" +
project.buildDir.absolutePath + "/compose_compiler"
)
// freeCompilerArgs += listOf(
// "-P",
// "plugin:androidx.compose.compiler.plugins.kotlin:metricsDestination=" +
// project.buildDir.absolutePath + "/compose_compiler"
// )
}
}

dependencies {
implementation("androidx.core:core-ktx:1.9.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1")
implementation("androidx.activity:activity-compose:1.6.1")
implementation("androidx.core:core-ktx:1.13.1")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.7.0")
implementation("androidx.activity:activity-compose:1.9.0")

implementation("androidx.compose.foundation:foundation:1.3.1")
implementation("androidx.compose.material3:material3:1.0.1")
debugImplementation("androidx.compose.ui:ui-tooling:1.3.3")
debugImplementation("androidx.compose.ui:ui-test-manifest:1.3.3")
implementation("androidx.compose.foundation:foundation:1.6.7")
debugImplementation("androidx.compose.ui:ui-tooling:1.6.7")
debugImplementation("androidx.compose.ui:ui-test-manifest:1.6.7")

val media3Version = "1.0.0-beta03"
val media3Version = "1.3.1"
implementation("androidx.media3:media3-exoplayer:$media3Version")
implementation("androidx.media3:media3-session:$media3Version")

Expand All @@ -92,11 +74,9 @@ dependencies {
implementation("io.ktor:ktor-client-content-negotiation:$ktorVersion")
implementation("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion")

implementation("com.google.accompanist:accompanist-systemuicontroller:0.28.0")

implementation("io.coil-kt:coil-compose:2.2.2")
implementation("io.coil-kt:coil-compose:2.4.0")

implementation("io.insert-koin:koin-androidx-compose:3.4.1")
implementation("io.insert-koin:koin-androidx-compose:3.4.5")

implementation("com.microsoft.signalr:signalr:7.0.0")

Expand Down
4 changes: 3 additions & 1 deletion clients/android/app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,6 @@
# Microsoft SignalR Java API sucks
-keep class network.uwu.radio.network.dto.ApiSong { *; }
-keep class com.microsoft.signalr.** { *; }
-keep interface com.microsoft.signalr.** { *; }
-keep interface com.microsoft.signalr.** { *; }

-dontwarn org.slf4j.impl.StaticLoggerBinder

This file was deleted.

5 changes: 3 additions & 2 deletions clients/android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />

<application
android:name=".UwuRadio"
Expand All @@ -12,7 +13,7 @@
android:supportsRtl="true"
android:theme="@style/Theme.UwuRadio">
<activity
android:name=".MainActivity"
android:name=".ui.MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand All @@ -23,7 +24,7 @@

<service
android:name=".service.AudioPlaybackService"
android:exported="true"
android:exported="false"
android:foregroundServiceType="mediaPlayback"
android:stopWithTask="true">
<intent-filter>
Expand Down

This file was deleted.

15 changes: 7 additions & 8 deletions clients/android/app/src/main/java/network/uwu/radio/UwuRadio.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,13 @@ import org.koin.core.context.startKoin

class UwuRadio : Application() {

override fun onCreate() {
super.onCreate()
override fun onCreate() {
super.onCreate()

startKoin {
androidContext(this@UwuRadio)

modules(clientModule, mainModule, homeModule)
}
}
startKoin {
androidContext(this@UwuRadio)

modules(clientModule, mainModule, homeModule)
}
}
}
58 changes: 29 additions & 29 deletions clients/android/app/src/main/java/network/uwu/radio/di/Client.kt
Original file line number Diff line number Diff line change
@@ -1,39 +1,39 @@
package network.uwu.radio.di

import com.microsoft.signalr.HubConnectionBuilder
import io.ktor.client.*
import io.ktor.client.engine.android.*
import io.ktor.client.plugins.contentnegotiation.*
import io.ktor.client.plugins.logging.*
import io.ktor.serialization.kotlinx.json.*
import io.ktor.client.HttpClient
import io.ktor.client.engine.android.Android
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
import io.ktor.client.plugins.logging.ANDROID
import io.ktor.client.plugins.logging.LogLevel
import io.ktor.client.plugins.logging.Logger
import io.ktor.client.plugins.logging.Logging
import io.ktor.serialization.kotlinx.json.json
import kotlinx.serialization.json.Json
import network.uwu.radio.BuildConfig
import network.uwu.radio.network.service.UwuRadioApiService
import network.uwu.radio.network.service.UwuRadioApiServiceImpl
import network.uwu.radio.network.service.UwuRadioSyncService
import network.uwu.radio.network.service.UwuRadioSyncServiceImpl
import network.uwu.radio.network.UwuRadioApiService
import network.uwu.radio.network.UwuRadioSyncService
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.bind
import org.koin.dsl.module

val clientModule = module {
single {
HubConnectionBuilder.create("https://radio.k6.tf/sync")
.build()
}
single {
HttpClient(Android) {
install(ContentNegotiation) {
json(Json { ignoreUnknownKeys = true })
}
if (BuildConfig.DEBUG) {
install(Logging) {
logger = Logger.ANDROID
level = LogLevel.ALL
}
}
}
}
singleOf(::UwuRadioSyncServiceImpl) bind UwuRadioSyncService::class
singleOf(::UwuRadioApiServiceImpl) bind UwuRadioApiService::class
single {
HubConnectionBuilder.create("https://radio.k6.tf/sync")
.build()
}
single {
HttpClient(Android) {
install(ContentNegotiation) {
json(Json { ignoreUnknownKeys = true })
}
if (BuildConfig.DEBUG) {
install(Logging) {
logger = Logger.ANDROID
level = LogLevel.ALL
}
}
}
}
singleOf(::UwuRadioSyncService)
singleOf(::UwuRadioApiService)
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package network.uwu.radio.di

import network.uwu.radio.ui.viewmodel.HomeViewModel
import network.uwu.radio.ui.screen.home.HomeViewModel
import org.koin.androidx.viewmodel.dsl.viewModelOf
import org.koin.dsl.module

val homeModule = module {
viewModelOf(::HomeViewModel)
viewModelOf(::HomeViewModel)
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package network.uwu.radio.di

import network.uwu.radio.domain.repository.SessionRepository
import network.uwu.radio.domain.repository.SessionRepositoryImpl
import network.uwu.radio.domain.SessionRepository
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.bind
import org.koin.dsl.module

val mainModule = module {
singleOf(::SessionRepositoryImpl) bind SessionRepository::class
singleOf(::SessionRepository)
}
Loading