Skip to content

Commit

Permalink
Update dependencies, fix ui, and more
Browse files Browse the repository at this point in the history
  • Loading branch information
lillithkt committed Nov 27, 2023
1 parent 6cf4389 commit 0ef31ad
Show file tree
Hide file tree
Showing 28 changed files with 417 additions and 308 deletions.
14 changes: 7 additions & 7 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,37 +27,37 @@ jobs:
uses: actions/cache@v3
with:
path: appAndroid/build
key: ${{ runner.os }}-appAndroid-${{ hashFiles('appAndroid/**') }}
key: ${{ runner.os }}-appAndroid-${{ hashFiles('appAndroid/**', 'build.gradle.kts', 'gradle.properties', 'gradle/libs.versions.toml') }}
- name: Cache appDesktop
uses: actions/cache@v3
with:
path: appDesktop/build
key: ${{ runner.os }}-appDesktop-${{ hashFiles('appDesktop/**') }}
key: ${{ runner.os }}-appDesktop-${{ hashFiles('appDesktop/**', 'build.gradle.kts', 'gradle.properties', 'gradle/libs.versions.toml') }}
- name: Cache genesisApp
uses: actions/cache@v3
with:
path: genesis/app/build
key: ${{ runner.os }}-genesis-app-${{ hashFiles('genesis/app/**') }}
key: ${{ runner.os }}-genesis-app-${{ hashFiles('genesis/app/**', 'build.gradle.kts', 'gradle.properties', 'gradle/libs.versions.toml') }}
- name: Cache genesisCommon
uses: actions/cache@v3
with:
path: genesis/common/build
key: ${{ runner.os }}-genesis-common-${{ hashFiles('genesis/common/**') }}
key: ${{ runner.os }}-genesis-common-${{ hashFiles('genesis/common/**', 'build.gradle.kts', 'gradle.properties', 'gradle/libs.versions.toml') }}
- name: Cache genesisDiscordApi
uses: actions/cache@v3
with:
path: genesis/discord/api/build
key: ${{ runner.os }}-genesis-discord-api-${{ hashFiles('genesis/discord/api/**') }}
key: ${{ runner.os }}-genesis-discord-api-${{ hashFiles('genesis/discord/api/**', 'build.gradle.kts', 'gradle.properties', 'gradle/libs.versions.toml') }}
- name: Cache genesisDiscordClient
uses: actions/cache@v3
with:
path: genesis/discord/client/build
key: ${{ runner.os }}-genesis-discord-client-${{ hashFiles('genesis/discord/client/**') }}
key: ${{ runner.os }}-genesis-discord-client-${{ hashFiles('genesis/discord/client/**', 'build.gradle.kts', 'gradle.properties', 'gradle/libs.versions.toml') }}
- name: Cache genesisApi
uses: actions/cache@v3
with:
path: genesis/genesisApi/build
key: ${{ runner.os }}-genesis-genesisApi-${{ hashFiles('genesis/genesisApi/**') }}
key: ${{ runner.os }}-genesis-genesisApi-${{ hashFiles('genesis/genesisApi/**', 'build.gradle.kts', 'gradle.properties', 'gradle/libs.versions.toml') }}



Expand Down
2 changes: 1 addition & 1 deletion .idea/.name

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 0 additions & 20 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -29,24 +29,4 @@ buildscript {
// classpath(libs.moko.resources.generator)
}
}
allprojects {
val iosSpec = object : Spec<Task> {
override fun isSatisfiedBy(element: Task?): Boolean {
return System.getenv("GITHUB_ACTIONS") == "true" || System.getenv("ENABLE_IOS") == "true"
}

}

// tasks.withType(KotlinCompile::class).all {
// kotlinOptions {
// freeCompilerArgs += "-Xexpect-actual-classes"
// }
// }

tasks.matching {
name.contains("FrameworkIos")
}.forEach {
it.setOnlyIf(iosSpec)
}
}
true // Needed to make the Suppress annotation work for the plugins block
11 changes: 1 addition & 10 deletions genesis/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ kotlin {

implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")

implementation("media.kamel:kamel-image:0.8.2")
implementation(libs.kamel)


implementation(project(":genesis:common"))
Expand All @@ -68,15 +68,6 @@ kotlin {
implementation(libs.ktor.client.okhttp)
}
}
val iosArm64Main by getting
val iosMain by creating {
dependsOn(commonMain)
iosArm64Main.dependsOn(this)
dependencies {
implementation(libs.ktor.client.darwin)
}

}
val desktopMain by getting {
dependencies {
implementation(compose.desktop.common)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,18 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.Layout
import cafe.adriel.voyager.navigator.Navigator
import cafe.adriel.voyager.navigator.currentOrThrow
import io.github.aakira.napier.Antilog
import io.github.aakira.napier.DebugAntilog
import io.github.aakira.napier.Napier
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.koin.compose.KoinApplication
import org.koin.compose.getKoin
import xyz.genesisapp.common.compose.koin.uninitModule
import xyz.genesisapp.common.preferences.PreferencesManager
import xyz.genesisapp.discord.client.GenesisClient
import xyz.genesisapp.discord.client.enum.LogLevel
Expand All @@ -24,12 +25,12 @@ import xyz.genesisapp.genesis.app.di.dataStoreModule
import xyz.genesisapp.genesis.app.di.genesisApiModule
import xyz.genesisapp.genesis.app.di.genesisClientModule
import xyz.genesisapp.genesis.app.di.httpModule
import xyz.genesisapp.genesis.app.di.platformHttpEngineFactory
import xyz.genesisapp.genesis.app.di.preferencesModule
import xyz.genesisapp.genesis.app.theme.LocalContextColors
import xyz.genesisapp.genesis.app.theme.ThemeProvider
import xyz.genesisapp.genesis.app.ui.screens.RootScreen

@OptIn(ExperimentalResourceApi::class)
@Composable
fun App() {
Napier.base(getAntiLog())
Expand All @@ -40,7 +41,9 @@ fun App() {
httpModule(),
genesisClientModule(),
genesisApiModule(),
dataStoreModule()
dataStoreModule(),

uninitModule(httpFactory = platformHttpEngineFactory)
)
}) {
val koin = getKoin()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,21 @@ class DataStore() : EventBus("DataStore") {
fun compositionOnClientTabSelect(block: Event<ClientTab>.(ClientTab) -> Unit) =
compositionLocalOn("CLIENT_TAB_SELECT", block)

/**
* Explicit typing for [emit] function, event is [Boolean]
*/
fun toggleGuilds() = emit("GUILDS_TOGGLE", true)

/**
* Explicit typing for [on] function, event is [Boolean]
*/
fun onToggleGuilds(block: Event<Boolean>.(Boolean) -> Unit) =
on("GUILDS_TOGGLE", block)

/**
* Explicit typing for [compositionLocalOn] function, event is [Boolean]
*/
@Composable
fun compositionOnToggleGuilds(block: Event<Boolean>.(Boolean) -> Unit) =
compositionLocalOn("GUILDS_TOGGLE", block)
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ import xyz.genesisapp.discord.client.GenesisClient


fun genesisClientModule() = module {
single { GenesisClient(get()) }
single { GenesisClient(get(), enableAssetCache = true) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,40 +6,52 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.dp
import io.github.aakira.napier.Napier
import io.kamel.image.KamelImage
import io.kamel.image.asyncPainterResource
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.painterResource
import xyz.genesisapp.discord.api.types.AssetType
import xyz.genesisapp.discord.api.types.toUrl
import xyz.genesisapp.discord.client.entities.guild.User

@OptIn(ExperimentalResourceApi::class)
@Composable
fun Avatar(author: User, modifier: Modifier = Modifier) {
val scope = rememberCoroutineScope()
Box(
modifier = modifier
.width(32.dp)
.height(32.dp)
.clip(shape = CircleShape)
) {
val defaultAvatar = painterResource("images/defaults/default_avatar_${author.id % 5}.png")
if (author.avatar != null) {
KamelImage(
resource = asyncPainterResource(
author.avatar!!.toUrl(
AssetType.Avatar,
author.id,
128
)
),
resource = author.avatar!!.render(128),
contentDescription = "Avatar",
onLoading = {
Image(
painter = defaultAvatar,
contentDescription = "Avatar Loading",
)
},
onFailure = {
Napier.e(
"Avatar for ${author.displayName} failed to load",
it,
"Avatar Component"
)
Image(
painter = defaultAvatar,
contentDescription = "Avatar Failed to load",
)
}
)
} else {
Image(
painter = painterResource("images/default/default_avatar_${author.id % 5}.png"),
painter = defaultAvatar,
contentDescription = "Avatar",
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,12 @@ import io.github.aakira.napier.Napier
import io.kamel.core.ExperimentalKamelApi
import io.kamel.image.KamelImage
import io.kamel.image.KamelImageBox
import io.kamel.image.asyncPainterResource
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.painterResource
import org.koin.compose.getKoin
import xyz.genesisapp.common.preferences.PreferencesManager
import xyz.genesisapp.discord.api.types.AssetType
import xyz.genesisapp.discord.api.types.Snowflake
import xyz.genesisapp.discord.api.types.timestamp
import xyz.genesisapp.discord.api.types.toUrl
import xyz.genesisapp.discord.client.GenesisClient
import xyz.genesisapp.discord.client.entities.guild.Channel
import xyz.genesisapp.discord.client.entities.guild.Guild
Expand Down Expand Up @@ -89,12 +86,8 @@ fun Channel(channel: Channel, select: (Channel) -> Unit) {
) {
if (channel.icon != null) {
KamelImage(
resource = asyncPainterResource(
channel.icon!!.toUrl(
AssetType.Avatar,
channel.id,
128
)
resource = channel.icon!!.render(
128
),
contentDescription = channel.name,
)
Expand Down Expand Up @@ -175,11 +168,10 @@ class ChannelsScreen(
mutableStateOf(currentChannel)
}

Events(
dataStore.events.quietRegister<Snowflake>("GUILD_SELECT") {
navigator.push(ChannelsScreen(genesisClient.guilds[it], guild.id))
}
)
dataStore.compositionOnGuildSelect {
navigator.push(ChannelsScreen(genesisClient.guilds[it]!!, guild.id))
}


Scaffold(
modifier = Modifier
Expand Down Expand Up @@ -263,9 +255,7 @@ class ChannelsScreen(
.height(48.dp)
if (guild.banner != null) {
KamelImageBox(
resource = asyncPainterResource(
guild.banner!!.toUrl(AssetType.Banner, guild.id, 480),
),
resource = guild.banner!!.render(480),
modifier = modifier,
onFailure = {
Text(guild.name)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ class ChatScreen(
AnimatedVisibility(visible = dataStore.mobileUi) {
Button(
onClick = {
dataStore.events.emit("GUILDS_TOGGLE", true)
dataStore.toggleGuilds()
},
modifier = Modifier.align(alignment = Alignment.CenterVertically)
) {
Expand Down
Loading

0 comments on commit 0ef31ad

Please sign in to comment.