Skip to content

Commit 68f71ad

Browse files
committed
update desktop ui
1 parent 3c6d0ad commit 68f71ad

File tree

13 files changed

+85
-147
lines changed

13 files changed

+85
-147
lines changed

app/src/main/java/dev/dimension/flare/ui/component/BottomSheetSceneStrategy.kt

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,21 @@ package dev.dimension.flare.ui.component
33
import androidx.compose.material3.ExperimentalMaterial3Api
44
import androidx.compose.material3.ModalBottomSheet
55
import androidx.compose.material3.ModalBottomSheetProperties
6+
import androidx.compose.material3.rememberModalBottomSheetState
67
import androidx.compose.runtime.Composable
78
import androidx.navigation3.runtime.NavEntry
89
import androidx.navigation3.scene.OverlayScene
910
import androidx.navigation3.scene.Scene
1011
import androidx.navigation3.scene.SceneStrategy
1112
import androidx.navigation3.scene.SceneStrategyScope
1213

13-
internal class BottomSheetScene<T : Any>
14+
private class BottomSheetScene<T : Any>
1415
@OptIn(ExperimentalMaterial3Api::class)
1516
constructor(
1617
override val key: Any,
1718
override val previousEntries: List<NavEntry<T>>,
1819
override val overlaidEntries: List<NavEntry<T>>,
19-
private val properties: ModalBottomSheetProperties,
20+
private val properties: BottomSheetProperties,
2021
private val entry: NavEntry<T>,
2122
private val onBack: () -> Unit,
2223
) : OverlayScene<T> {
@@ -26,7 +27,8 @@ internal class BottomSheetScene<T : Any>
2627
override val content: @Composable (() -> Unit) = {
2728
ModalBottomSheet(
2829
onDismissRequest = { onBack() },
29-
properties = properties,
30+
properties = properties.properties,
31+
sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = properties.expandFully),
3032
) {
3133
entry.Content()
3234
}
@@ -37,7 +39,7 @@ internal class BottomSheetScene<T : Any>
3739
internal class BottomSheetSceneStrategy<T : Any> : SceneStrategy<T> {
3840
override fun SceneStrategyScope<T>.calculateScene(entries: List<NavEntry<T>>): Scene<T>? {
3941
val lastEntry = entries.lastOrNull()
40-
val properties = lastEntry?.metadata?.get(BOTTOMSHEET_KEY) as? ModalBottomSheetProperties
42+
val properties = lastEntry?.metadata?.get(BOTTOMSHEET_KEY) as? BottomSheetProperties
4143
return properties?.let { properties ->
4244
BottomSheetScene(
4345
key = lastEntry.contentKey,
@@ -53,7 +55,22 @@ internal class BottomSheetSceneStrategy<T : Any> : SceneStrategy<T> {
5355
companion object {
5456
private const val BOTTOMSHEET_KEY = "bottom_sheet"
5557

56-
fun bottomSheet(properties: ModalBottomSheetProperties = ModalBottomSheetProperties()): Map<String, Any> =
57-
mapOf(BOTTOMSHEET_KEY to properties)
58+
fun bottomSheet(
59+
properties: ModalBottomSheetProperties = ModalBottomSheetProperties(),
60+
expandFully: Boolean = false,
61+
): Map<String, Any> =
62+
mapOf(
63+
BOTTOMSHEET_KEY to
64+
BottomSheetProperties(
65+
properties = properties,
66+
expandFully = expandFully,
67+
),
68+
)
5869
}
5970
}
71+
72+
@OptIn(ExperimentalMaterial3Api::class)
73+
private data class BottomSheetProperties(
74+
val properties: ModalBottomSheetProperties,
75+
val expandFully: Boolean,
76+
)

app/src/main/java/dev/dimension/flare/ui/screen/status/StatusEntryBuilder.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,9 @@ internal fun EntryProviderScope<NavKey>.statusEntryBuilder(
105105
}
106106

107107
entry<Route.Status.ShareSheet>(
108-
metadata = BottomSheetSceneStrategy.bottomSheet()
108+
metadata = BottomSheetSceneStrategy.bottomSheet(
109+
expandFully = true,
110+
)
109111
) { args ->
110112
StatusShareSheet(
111113
statusKey = args.statusKey,

app/src/main/java/dev/dimension/flare/ui/screen/status/action/StatusShareSheet.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dev.dimension.flare.ui.screen.status.action
22

3+
import android.annotation.SuppressLint
34
import android.content.Context
45
import android.content.Intent
56
import android.graphics.Bitmap
@@ -17,6 +18,7 @@ import androidx.compose.foundation.layout.padding
1718
import androidx.compose.foundation.layout.sizeIn
1819
import androidx.compose.foundation.layout.width
1920
import androidx.compose.foundation.rememberScrollState
21+
import androidx.compose.foundation.verticalScroll
2022
import androidx.compose.material3.Button
2123
import androidx.compose.material3.ButtonGroupDefaults
2224
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
@@ -94,6 +96,7 @@ internal fun StatusShareSheet(
9496
Column(
9597
modifier =
9698
modifier
99+
.verticalScroll(rememberScrollState())
97100
.padding(horizontal = screenHorizontalPadding)
98101
.padding(bottom = 12.dp),
99102
verticalArrangement = Arrangement.spacedBy(12.dp),
@@ -228,6 +231,7 @@ internal fun StatusShareSheet(
228231
context.startActivity(
229232
Intent.createChooser(
230233
intent,
234+
@SuppressLint("LocalContextGetResourceValueCall")
231235
context.getString(R.string.media_menu_share_image),
232236
),
233237
)

compose-ui/src/androidMain/kotlin/dev/dimension/flare/ui/common/PlatformShare.android.kt

Lines changed: 0 additions & 24 deletions
This file was deleted.

compose-ui/src/commonMain/kotlin/dev/dimension/flare/ui/common/PlatformShare.kt

Lines changed: 0 additions & 10 deletions
This file was deleted.

compose-ui/src/commonMain/kotlin/dev/dimension/flare/ui/component/status/CommonStatusComponent.kt

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ import androidx.compose.ui.text.intl.Locale
4646
import androidx.compose.ui.text.style.TextOverflow
4747
import androidx.compose.ui.unit.dp
4848
import androidx.compose.ui.util.fastForEach
49-
import coil3.compose.LocalPlatformContext
5049
import compose.icons.FontAwesomeIcons
5150
import compose.icons.fontawesomeicons.Brands
5251
import compose.icons.fontawesomeicons.Regular
@@ -123,7 +122,6 @@ import dev.dimension.flare.data.datasource.microblog.ActionMenu
123122
import dev.dimension.flare.data.model.PostActionStyle
124123
import dev.dimension.flare.model.MicroBlogKey
125124
import dev.dimension.flare.model.PlatformType
126-
import dev.dimension.flare.ui.common.PlatformShare
127125
import dev.dimension.flare.ui.component.AdaptiveGrid
128126
import dev.dimension.flare.ui.component.AvatarComponent
129127
import dev.dimension.flare.ui.component.DateTimeText
@@ -219,6 +217,19 @@ public fun CommonStatusComponent(
219217
verticalAlignment = Alignment.CenterVertically,
220218
horizontalArrangement = Arrangement.spacedBy(4.dp),
221219
) {
220+
when (val content = item.topEndContent) {
221+
is UiTimeline.ItemContent.Status.TopEndContent.Visibility -> {
222+
StatusVisibilityComponent(
223+
visibility = content.visibility,
224+
modifier =
225+
Modifier
226+
.size(PlatformTheme.typography.caption.fontSize.value.dp),
227+
tint = PlatformTheme.colorScheme.caption,
228+
)
229+
}
230+
231+
null -> Unit
232+
}
222233
if (appearanceSettings.showPlatformLogo) {
223234
val icon =
224235
when (item.platformType) {
@@ -242,19 +253,6 @@ public fun CommonStatusComponent(
242253
tint = PlatformTheme.colorScheme.caption,
243254
)
244255
}
245-
when (val content = item.topEndContent) {
246-
is UiTimeline.ItemContent.Status.TopEndContent.Visibility -> {
247-
StatusVisibilityComponent(
248-
visibility = content.visibility,
249-
modifier =
250-
Modifier
251-
.size(PlatformTheme.typography.caption.fontSize.value.dp),
252-
tint = PlatformTheme.colorScheme.caption,
253-
)
254-
}
255-
256-
null -> Unit
257-
}
258256
if (!isDetail) {
259257
DateTimeText(
260258
item.createdAt,
@@ -883,7 +881,6 @@ private fun PlatformDropdownMenuScope.StatusActionItemMenu(
883881
closeMenu: () -> Unit,
884882
launcher: UriHandler,
885883
) {
886-
val context = LocalPlatformContext.current
887884
val color = subActions.color?.toComposeColor() ?: PlatformContentColor.current
888885
PlatformDropdownMenuItem(
889886
leadingIcon = {
@@ -912,12 +909,6 @@ private fun PlatformDropdownMenuScope.StatusActionItemMenu(
912909
},
913910
),
914911
)
915-
subActions.shareContent?.let {
916-
PlatformShare.shareText(
917-
context = context,
918-
text = it,
919-
)
920-
}
921912
},
922913
)
923914
}

compose-ui/src/iosMain/kotlin/dev/dimension/flare/ui/common/PlatformShare.ios.kt

Lines changed: 0 additions & 11 deletions
This file was deleted.

compose-ui/src/jvmMain/kotlin/dev/dimension/flare/ui/common/PlatformShare.jvm.kt

Lines changed: 0 additions & 20 deletions
This file was deleted.

desktopApp/src/main/kotlin/dev/dimension/flare/common/DesktopShareImpl.kt

Lines changed: 0 additions & 27 deletions
This file was deleted.

desktopApp/src/main/kotlin/dev/dimension/flare/di/DesktopModule.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package dev.dimension.flare.di
22

3-
import dev.dimension.flare.common.DesktopShareImpl
43
import dev.dimension.flare.common.InAppNotification
54
import dev.dimension.flare.common.NativeWindowBridge
65
import dev.dimension.flare.common.WebViewBridge
76
import dev.dimension.flare.common.windows.WindowsBridge
8-
import dev.dimension.flare.ui.common.DesktopShare
97
import dev.dimension.flare.ui.component.ComposeInAppNotification
108
import org.koin.core.module.dsl.singleOf
119
import org.koin.dsl.binds
@@ -17,5 +15,4 @@ val desktopModule =
1715
singleOf(::NativeWindowBridge)
1816
singleOf(::WindowsBridge)
1917
singleOf(::WebViewBridge)
20-
singleOf(::DesktopShareImpl) binds arrayOf(DesktopShare::class)
2118
}

0 commit comments

Comments
 (0)