Skip to content

Commit 2e59ffb

Browse files
authored
Merge pull request #2242 from DimensionDev/feature/fanbox
Feature/fanbox
2 parents 52facec + dd0ef93 commit 2e59ffb

159 files changed

Lines changed: 12574 additions & 6561 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.

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ dependencies {
127127
implementation(libs.compose.webview)
128128
implementation(projects.shared)
129129
implementation(projects.social.bluesky)
130+
implementation(projects.social.fanbox)
130131
implementation(projects.social.mastodon)
131132
implementation(projects.social.misskey)
132133
implementation(projects.social.nostr)

app/src/main/java/dev/dimension/flare/di/AndroidKoinApplication.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package dev.dimension.flare.di
22

33
import dev.dimension.flare.data.platform.AllRssTimelineLoaderFactory
44
import dev.dimension.flare.data.platform.BlueskyPlatformSpec
5+
import dev.dimension.flare.data.platform.FanboxPlatformSpec
56
import dev.dimension.flare.data.platform.MastodonPlatformSpec
67
import dev.dimension.flare.data.platform.MisskeyPlatformSpec
78
import dev.dimension.flare.data.platform.NostrPlatformSpec
@@ -33,6 +34,7 @@ internal fun runtimeData(allRssTimelineLoaderFactory: AllRssTimelineLoaderFactor
3334
MastodonPlatformSpec,
3435
MisskeyPlatformSpec,
3536
BlueskyPlatformSpec,
37+
FanboxPlatformSpec,
3638
PixivPlatformSpec,
3739
XqtPlatformSpec,
3840
VvoPlatformSpec,

app/src/main/java/dev/dimension/flare/ui/AppContainer.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ fun AppContainer(afterInit: () -> Unit) {
3737
@Composable
3838
fun FlareApp(content: @Composable () -> Unit) {
3939
BindAmberSignerLauncher()
40-
val state by producePresenter("env") { EnvironmentSettingsPresenter().invoke() }
40+
val state by producePresenter("env") {
41+
remember { EnvironmentSettingsPresenter() }.invoke()
42+
}
4143
val globalAppearance = state.globalAppearance.takeSuccessOr(GlobalAppearance.Default)
4244
val timelineAppearance = state.timelineAppearance.takeSuccessOr(TimelineAppearance.Default)
4345
val originalUriHandler = LocalUriHandler.current

app/src/main/java/dev/dimension/flare/ui/route/Route.kt

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ package dev.dimension.flare.ui.route
22

33
import androidx.compose.runtime.Immutable
44
import androidx.navigation3.runtime.NavKey
5+
import dev.dimension.flare.common.SerializableImmutableList
56
import dev.dimension.flare.data.model.tab.UiSourceTimelineTabItem
67
import dev.dimension.flare.data.model.tab.UiTimelineTabItem
78
import dev.dimension.flare.data.model.tab.xqtDeviceFollow
89
import dev.dimension.flare.feature.agent.localhistory.LocalHistoryAgentTarget
910
import dev.dimension.flare.model.AccountType
1011
import dev.dimension.flare.model.MicroBlogKey
12+
import dev.dimension.flare.ui.model.UiMedia
1113
import kotlinx.collections.immutable.ImmutableMap
1214
import kotlinx.collections.immutable.toImmutableMap
1315
import kotlinx.serialization.Serializable
@@ -441,6 +443,13 @@ internal sealed interface Route : NavKey {
441443
val customHeaders: Map<String, String>? = null,
442444
) : Media
443445

446+
@Serializable
447+
data class RawMedia(
448+
val medias: SerializableImmutableList<UiMedia>,
449+
val index: Int = 0,
450+
val preview: String? = null,
451+
) : Media
452+
444453
@Serializable
445454
data class StatusMedia(
446455
val statusKey: MicroBlogKey,
@@ -466,10 +475,9 @@ internal sealed interface Route : NavKey {
466475
) : Route
467476

468477
@Serializable
469-
data class TwitterArticle(
478+
data class Article(
470479
val accountType: AccountType,
471-
val tweetId: String,
472-
val articleId: String? = null,
480+
val articleKey: MicroBlogKey,
473481
) : Route
474482

475483
@Serializable
@@ -613,11 +621,10 @@ internal sealed interface Route : NavKey {
613621
)
614622
}
615623

616-
is DeeplinkRoute.TwitterArticle -> {
617-
TwitterArticle(
624+
is DeeplinkRoute.Article -> {
625+
Article(
618626
accountType = deeplinkRoute.accountType,
619-
tweetId = deeplinkRoute.tweetId,
620-
articleId = deeplinkRoute.articleId,
627+
articleKey = deeplinkRoute.articleKey,
621628
)
622629
}
623630

app/src/main/java/dev/dimension/flare/ui/route/Router.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import androidx.navigation3.scene.DialogSceneStrategy
1818
import androidx.navigation3.ui.NavDisplay
1919
import dev.dimension.flare.ui.component.BottomSheetSceneStrategy
2020
import dev.dimension.flare.ui.component.platform.isBigScreen
21+
import dev.dimension.flare.ui.screen.article.articleEntryBuilder
2122
import dev.dimension.flare.ui.screen.bluesky.blueskyEntryBuilder
2223
import dev.dimension.flare.ui.screen.compose.composeEntryBuilder
2324
import dev.dimension.flare.ui.screen.dm.dmEntryBuilder
@@ -96,6 +97,7 @@ internal fun Router(
9697
entryProvider =
9798
entryProvider {
9899
homeEntryBuilder(navigate, onBack, openDrawer, uriHandler = uriHandler)
100+
articleEntryBuilder(navigate, onBack)
99101
blueskyEntryBuilder(navigate, onBack)
100102
composeEntryBuilder(navigate, onBack)
101103
dmEntryBuilder(navigate, onBack)

app/src/main/java/dev/dimension/flare/ui/screen/agent/AgentChatHistoryScreen.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import androidx.compose.material3.Text
1616
import androidx.compose.material3.TopAppBarDefaults
1717
import androidx.compose.runtime.Composable
1818
import androidx.compose.runtime.getValue
19+
import androidx.compose.runtime.remember
1920
import androidx.compose.ui.Modifier
2021
import androidx.compose.ui.input.nestedscroll.nestedScroll
2122
import androidx.compose.ui.res.stringResource
@@ -48,7 +49,7 @@ internal fun AgentChatHistoryScreen(
4849
modifier: Modifier = Modifier,
4950
) {
5051
val state by producePresenter {
51-
AgentChatHistoryPresenter().invoke()
52+
remember { AgentChatHistoryPresenter() }.invoke()
5253
}
5354
val topAppBarScrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior()
5455
FlareScaffold(
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package dev.dimension.flare.ui.screen.article
2+
3+
import androidx.navigation3.runtime.EntryProviderScope
4+
import androidx.navigation3.runtime.NavKey
5+
import dev.dimension.flare.ui.route.Route
6+
7+
internal fun EntryProviderScope<NavKey>.articleEntryBuilder(
8+
navigate: (Route) -> Unit,
9+
onBack: () -> Unit,
10+
) {
11+
entry<Route.Article> { args ->
12+
ArticleScreen(
13+
accountType = args.accountType,
14+
articleKey = args.articleKey,
15+
navigate = navigate,
16+
onBack = onBack,
17+
)
18+
}
19+
}

0 commit comments

Comments
 (0)