Skip to content

Commit 9c94dfe

Browse files
committed
update media window
1 parent 83074fd commit 9c94dfe

File tree

8 files changed

+242
-170
lines changed

8 files changed

+242
-170
lines changed

desktopApp/src/main/kotlin/dev/dimension/flare/App.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import androidx.compose.ui.Modifier
3434
import androidx.compose.ui.platform.LocalUriHandler
3535
import androidx.compose.ui.platform.UriHandler
3636
import androidx.compose.ui.unit.dp
37+
import androidx.compose.ui.window.WindowScope
3738
import compose.icons.FontAwesomeIcons
3839
import compose.icons.fontawesomeicons.Solid
3940
import compose.icons.fontawesomeicons.solid.Gear
@@ -89,7 +90,7 @@ import org.apache.commons.lang3.SystemUtils
8990
import org.jetbrains.compose.resources.stringResource
9091

9192
@Composable
92-
internal fun FlareApp(onWindowRoute: (Route.WindowRoute) -> Unit) {
93+
internal fun WindowScope.FlareApp(onWindowRoute: (Route.WindowRoute) -> Unit) {
9394
val state by producePresenter { presenter() }
9495
val uriHandler = LocalUriHandler.current
9596

desktopApp/src/main/kotlin/dev/dimension/flare/Main.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,18 @@ fun main(args: Array<String>) {
8787
}
8888

8989
extraWindowRoutes.forEach { (key, value) ->
90+
val windowState =
91+
rememberWindowState(
92+
position = WindowPosition(Alignment.Center),
93+
size = DpSize(1200.dp, 800.dp),
94+
)
9095
Window(
9196
title = stringResource(Res.string.app_name),
9297
icon = painterResource(Res.drawable.flare_logo),
9398
onCloseRequest = {
9499
extraWindowRoutes.remove(key)
95100
},
101+
state = windowState,
96102
onKeyEvent = {
97103
if (it.key == Key.Escape) {
98104
extraWindowRoutes.remove(key)

desktopApp/src/main/kotlin/dev/dimension/flare/ui/route/Router.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.padding
55
import androidx.compose.runtime.Composable
66
import androidx.compose.ui.Modifier
77
import androidx.compose.ui.unit.dp
8+
import androidx.compose.ui.window.WindowScope
89
import dev.dimension.flare.common.OnDeepLink
910
import dev.dimension.flare.data.model.Bluesky.FeedTabItem
1011
import dev.dimension.flare.data.model.IconType
@@ -57,7 +58,7 @@ import io.github.composefluent.component.Flyout
5758
import io.github.composefluent.component.Text
5859

5960
@Composable
60-
internal fun Router(
61+
internal fun WindowScope.Router(
6162
manager: StackManager,
6263
onWindowRoute: (Route.WindowRoute) -> Unit,
6364
modifier: Modifier = Modifier,
@@ -104,7 +105,7 @@ internal fun Router(
104105
}
105106

106107
@Composable
107-
internal fun RouteContent(
108+
internal fun WindowScope.RouteContent(
108109
route: Route,
109110
onBack: () -> Unit,
110111
navigate: (Route) -> Unit,

desktopApp/src/main/kotlin/dev/dimension/flare/ui/route/WindowRouter.kt

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

33
import androidx.compose.runtime.Composable
4-
import androidx.compose.ui.window.FrameWindowScope
4+
import androidx.compose.ui.window.WindowScope
55

66
@Composable
7-
internal fun FrameWindowScope.WindowRouter(
7+
internal fun WindowScope.WindowRouter(
88
route: Route.WindowRoute,
99
onBack: () -> Unit,
1010
) {

desktopApp/src/main/kotlin/dev/dimension/flare/ui/screen/home/HomeTimelineScreen.kt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package dev.dimension.flare.ui.screen.home
33
import androidx.compose.animation.AnimatedVisibility
44
import androidx.compose.animation.slideInVertically
55
import androidx.compose.animation.slideOutVertically
6+
import androidx.compose.foundation.clickable
67
import androidx.compose.foundation.layout.Box
78
import androidx.compose.foundation.layout.PaddingValues
89
import androidx.compose.foundation.layout.fillMaxWidth
@@ -79,7 +80,10 @@ internal fun HomeTimelineScreen(
7980
visible = state.isTopBarExpanded,
8081
modifier =
8182
Modifier
82-
.fillMaxWidth(),
83+
.fillMaxWidth()
84+
.clickable {
85+
// prevent click through
86+
},
8387
enter = slideInVertically { -it },
8488
exit = slideOutVertically { -it },
8589
) {
@@ -101,7 +105,15 @@ internal fun HomeTimelineScreen(
101105
PillButton(
102106
selected = tab.timelineTabItem.key == currentTab.timelineTabItem.key,
103107
onSelectedChanged = {
104-
state.setSelectedIndex(index)
108+
if (tab.timelineTabItem.key == currentTab.timelineTabItem.key) {
109+
if (currentTab.lazyListState.firstVisibleItemIndex == 0) {
110+
currentTab.refreshSync()
111+
} else {
112+
currentTab.lazyListState.requestScrollToItem(0)
113+
}
114+
} else {
115+
state.setSelectedIndex(index)
116+
}
105117
},
106118
) {
107119
TabIcon(

desktopApp/src/main/kotlin/dev/dimension/flare/ui/screen/media/RawMediaScreen.kt

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,15 @@ package dev.dimension.flare.ui.screen.media
33
import androidx.compose.foundation.layout.fillMaxSize
44
import androidx.compose.runtime.Composable
55
import androidx.compose.ui.Modifier
6-
import dev.dimension.flare.ui.component.NetworkImage
7-
import me.saket.telephoto.zoomable.rememberZoomableState
8-
import me.saket.telephoto.zoomable.zoomable
96

107
@Composable
118
internal fun RawMediaScreen(url: String) {
12-
NetworkImage(
13-
modifier =
14-
Modifier
15-
.fillMaxSize()
16-
.zoomable(rememberZoomableState()),
17-
model = url,
18-
contentDescription = null,
9+
ImageItem(
10+
url = url,
11+
previewUrl = url,
12+
description = null,
13+
setLockPager = {},
14+
isFocused = true,
15+
modifier = Modifier.fillMaxSize(),
1916
)
2017
}

0 commit comments

Comments
 (0)