Merge branch 'master' into remote-desktop
This commit is contained in:
commit
8546c937b2
@ -8,7 +8,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion(33)
|
compileSdkVersion(34)
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "chat.simplex.app"
|
applicationId = "chat.simplex.app"
|
||||||
@ -144,7 +144,7 @@ dependencies {
|
|||||||
androidTestImplementation("androidx.test.ext:junit:1.1.3")
|
androidTestImplementation("androidx.test.ext:junit:1.1.3")
|
||||||
androidTestImplementation("androidx.test.espresso:espresso-core:3.4.0")
|
androidTestImplementation("androidx.test.espresso:espresso-core:3.4.0")
|
||||||
//androidTestImplementation("androidx.compose.ui:ui-test-junit4:$compose_version")
|
//androidTestImplementation("androidx.compose.ui:ui-test-junit4:$compose_version")
|
||||||
debugImplementation("androidx.compose.ui:ui-tooling:${rootProject.extra["compose.version"] as String}")
|
debugImplementation("androidx.compose.ui:ui-tooling:1.4.3")
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
|
@ -36,7 +36,7 @@ buildscript {
|
|||||||
extra.set("desktop.mac.signing.keychain", prop["desktop.mac.signing.keychain"] ?: extra.getOrNull("compose.desktop.mac.signing.keychain"))
|
extra.set("desktop.mac.signing.keychain", prop["desktop.mac.signing.keychain"] ?: extra.getOrNull("compose.desktop.mac.signing.keychain"))
|
||||||
extra.set("desktop.mac.notarization.apple_id", prop["desktop.mac.notarization.apple_id"] ?: extra.getOrNull("compose.desktop.mac.notarization.appleID"))
|
extra.set("desktop.mac.notarization.apple_id", prop["desktop.mac.notarization.apple_id"] ?: extra.getOrNull("compose.desktop.mac.notarization.appleID"))
|
||||||
extra.set("desktop.mac.notarization.password", prop["desktop.mac.notarization.password"] ?: extra.getOrNull("compose.desktop.mac.notarization.password"))
|
extra.set("desktop.mac.notarization.password", prop["desktop.mac.notarization.password"] ?: extra.getOrNull("compose.desktop.mac.notarization.password"))
|
||||||
extra.set("desktop.mac.notarization.team_id", prop["desktop.mac.notarization.team_id"] ?: extra.getOrNull("compose.desktop.mac.notarization.ascProvider"))
|
extra.set("desktop.mac.notarization.team_id", prop["desktop.mac.notarization.team_id"] ?: extra.getOrNull("compose.desktop.mac.notarization.teamID"))
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
|
@ -107,7 +107,7 @@ kotlin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion(33)
|
compileSdkVersion(34)
|
||||||
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
|
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion(26)
|
minSdkVersion(26)
|
||||||
@ -138,6 +138,7 @@ buildConfig {
|
|||||||
buildConfigField("String", "ANDROID_VERSION_NAME", "\"${extra["android.version_name"]}\"")
|
buildConfigField("String", "ANDROID_VERSION_NAME", "\"${extra["android.version_name"]}\"")
|
||||||
buildConfigField("int", "ANDROID_VERSION_CODE", "${extra["android.version_code"]}")
|
buildConfigField("int", "ANDROID_VERSION_CODE", "${extra["android.version_code"]}")
|
||||||
buildConfigField("String", "DESKTOP_VERSION_NAME", "\"${extra["desktop.version_name"]}\"")
|
buildConfigField("String", "DESKTOP_VERSION_NAME", "\"${extra["desktop.version_name"]}\"")
|
||||||
|
buildConfigField("int", "DESKTOP_VERSION_CODE", "${extra["desktop.version_code"]}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,3 +23,5 @@ actual fun Modifier.desktopOnExternalDrag(
|
|||||||
onImage: (Painter) -> Unit,
|
onImage: (Painter) -> Unit,
|
||||||
onText: (String) -> Unit
|
onText: (String) -> Unit
|
||||||
): Modifier = this
|
): Modifier = this
|
||||||
|
|
||||||
|
actual fun Modifier.onRightClick(action: () -> Unit): Modifier = this
|
||||||
|
@ -7,6 +7,7 @@ import androidx.compose.runtime.*
|
|||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import chat.simplex.common.platform.onRightClick
|
||||||
import chat.simplex.common.views.helpers.*
|
import chat.simplex.common.views.helpers.*
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
package chat.simplex.common.views.helpers
|
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.ColumnScope
|
|
||||||
import androidx.compose.runtime.Composable
|
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.ui.Modifier
|
|
||||||
import androidx.compose.ui.unit.DpOffset
|
|
||||||
import androidx.compose.ui.unit.dp
|
|
||||||
import androidx.compose.ui.window.PopupProperties
|
|
||||||
|
|
||||||
actual fun Modifier.onRightClick(action: () -> Unit): Modifier = this
|
|
||||||
|
|
||||||
actual interface DefaultExposedDropdownMenuBoxScope {
|
|
||||||
@Composable
|
|
||||||
actual fun DefaultExposedDropdownMenu(
|
|
||||||
expanded: Boolean,
|
|
||||||
onDismissRequest: () -> Unit,
|
|
||||||
modifier: Modifier,
|
|
||||||
content: @Composable ColumnScope.() -> Unit
|
|
||||||
) {
|
|
||||||
DropdownMenu(expanded, onDismissRequest, modifier, content = content)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
fun DropdownMenu(
|
|
||||||
expanded: Boolean,
|
|
||||||
onDismissRequest: () -> Unit,
|
|
||||||
modifier: Modifier = Modifier,
|
|
||||||
offset: DpOffset = DpOffset(0.dp, 0.dp),
|
|
||||||
properties: PopupProperties = PopupProperties(focusable = true),
|
|
||||||
content: @Composable ColumnScope.() -> Unit
|
|
||||||
) {
|
|
||||||
androidx.compose.material.DropdownMenu(expanded, onDismissRequest, modifier, offset, properties, content)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
actual fun DefaultExposedDropdownMenuBox(
|
|
||||||
expanded: Boolean,
|
|
||||||
onExpandedChange: (Boolean) -> Unit,
|
|
||||||
modifier: Modifier,
|
|
||||||
content: @Composable DefaultExposedDropdownMenuBoxScope.() -> Unit
|
|
||||||
) {
|
|
||||||
val scope = remember { object : DefaultExposedDropdownMenuBoxScope {} }
|
|
||||||
androidx.compose.material.ExposedDropdownMenuBox(expanded, onExpandedChange, modifier, content = {
|
|
||||||
scope.content()
|
|
||||||
})
|
|
||||||
}
|
|
@ -21,7 +21,7 @@ expect val appPlatform: AppPlatform
|
|||||||
val appVersionInfo: Pair<String, Int?> = if (appPlatform == AppPlatform.ANDROID)
|
val appVersionInfo: Pair<String, Int?> = if (appPlatform == AppPlatform.ANDROID)
|
||||||
BuildConfigCommon.ANDROID_VERSION_NAME to BuildConfigCommon.ANDROID_VERSION_CODE
|
BuildConfigCommon.ANDROID_VERSION_NAME to BuildConfigCommon.ANDROID_VERSION_CODE
|
||||||
else
|
else
|
||||||
BuildConfigCommon.DESKTOP_VERSION_NAME to null
|
BuildConfigCommon.DESKTOP_VERSION_NAME to BuildConfigCommon.DESKTOP_VERSION_CODE
|
||||||
|
|
||||||
class FifoQueue<E>(private var capacity: Int) : LinkedList<E>() {
|
class FifoQueue<E>(private var capacity: Int) : LinkedList<E>() {
|
||||||
override fun add(element: E): Boolean {
|
override fun add(element: E): Boolean {
|
||||||
|
@ -20,3 +20,5 @@ expect fun Modifier.desktopOnExternalDrag(
|
|||||||
onImage: (Painter) -> Unit = {},
|
onImage: (Painter) -> Unit = {},
|
||||||
onText: (String) -> Unit = {}
|
onText: (String) -> Unit = {}
|
||||||
): Modifier
|
): Modifier
|
||||||
|
|
||||||
|
expect fun Modifier.onRightClick(action: () -> Unit): Modifier
|
||||||
|
@ -24,6 +24,7 @@ import androidx.compose.ui.text.style.TextOverflow
|
|||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import chat.simplex.common.model.*
|
import chat.simplex.common.model.*
|
||||||
|
import chat.simplex.common.platform.onRightClick
|
||||||
import chat.simplex.common.views.chat.item.ItemAction
|
import chat.simplex.common.views.chat.item.ItemAction
|
||||||
import chat.simplex.common.views.chat.item.MarkdownText
|
import chat.simplex.common.views.chat.item.MarkdownText
|
||||||
import chat.simplex.common.views.helpers.*
|
import chat.simplex.common.views.helpers.*
|
||||||
|
@ -12,7 +12,7 @@ import androidx.compose.ui.unit.dp
|
|||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import chat.simplex.common.model.*
|
import chat.simplex.common.model.*
|
||||||
import chat.simplex.common.model.ChatModel.getChatItemIndexOrNull
|
import chat.simplex.common.model.ChatModel.getChatItemIndexOrNull
|
||||||
import chat.simplex.common.views.helpers.onRightClick
|
import chat.simplex.common.platform.onRightClick
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun CIChatFeatureView(
|
fun CIChatFeatureView(
|
||||||
|
@ -20,10 +20,9 @@ import androidx.compose.ui.text.font.FontStyle
|
|||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.*
|
import androidx.compose.ui.unit.*
|
||||||
import chat.simplex.common.model.*
|
import chat.simplex.common.model.*
|
||||||
import chat.simplex.common.platform.appPlatform
|
import chat.simplex.common.platform.*
|
||||||
import chat.simplex.common.ui.theme.*
|
import chat.simplex.common.ui.theme.*
|
||||||
import chat.simplex.common.views.helpers.*
|
import chat.simplex.common.views.helpers.*
|
||||||
import chat.simplex.common.platform.base64ToBitmap
|
|
||||||
import chat.simplex.common.views.chat.MEMBER_IMAGE_SIZE
|
import chat.simplex.common.views.chat.MEMBER_IMAGE_SIZE
|
||||||
import chat.simplex.res.MR
|
import chat.simplex.res.MR
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
@ -32,7 +32,12 @@ interface ImageGalleryProvider {
|
|||||||
@Composable
|
@Composable
|
||||||
fun ImageFullScreenView(imageProvider: () -> ImageGalleryProvider, close: () -> Unit) {
|
fun ImageFullScreenView(imageProvider: () -> ImageGalleryProvider, close: () -> Unit) {
|
||||||
val provider = remember { imageProvider() }
|
val provider = remember { imageProvider() }
|
||||||
val pagerState = rememberPagerState(provider.initialIndex)
|
val pagerState = rememberPagerState(
|
||||||
|
initialPage = provider.initialIndex,
|
||||||
|
initialPageOffsetFraction = 0f
|
||||||
|
) {
|
||||||
|
provider.totalMediaSize.value
|
||||||
|
}
|
||||||
val goBack = { provider.onDismiss(pagerState.currentPage); close() }
|
val goBack = { provider.onDismiss(pagerState.currentPage); close() }
|
||||||
BackHandler(onBack = goBack)
|
BackHandler(onBack = goBack)
|
||||||
// Pager doesn't ask previous page at initialization step who knows why. By not doing this, prev page is not checked and can be blank,
|
// Pager doesn't ask previous page at initialization step who knows why. By not doing this, prev page is not checked and can be blank,
|
||||||
@ -138,7 +143,7 @@ fun ImageFullScreenView(imageProvider: () -> ImageGalleryProvider, close: () ->
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (appPlatform.isAndroid) {
|
if (appPlatform.isAndroid) {
|
||||||
HorizontalPager(pageCount = remember { provider.totalMediaSize }.value, state = pagerState) { index -> Content(index) }
|
HorizontalPager(state = pagerState) { index -> Content(index) }
|
||||||
} else {
|
} else {
|
||||||
Content(pagerState.currentPage)
|
Content(pagerState.currentPage)
|
||||||
}
|
}
|
||||||
|
@ -11,26 +11,6 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.unit.DpOffset
|
import androidx.compose.ui.unit.DpOffset
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
|
||||||
expect fun Modifier.onRightClick(action: () -> Unit): Modifier
|
|
||||||
|
|
||||||
expect interface DefaultExposedDropdownMenuBoxScope {
|
|
||||||
@Composable
|
|
||||||
open fun DefaultExposedDropdownMenu(
|
|
||||||
expanded: Boolean,
|
|
||||||
onDismissRequest: () -> Unit,
|
|
||||||
modifier: Modifier = Modifier,
|
|
||||||
content: @Composable ColumnScope.() -> Unit
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
expect fun DefaultExposedDropdownMenuBox(
|
|
||||||
expanded: Boolean,
|
|
||||||
onExpandedChange: (Boolean) -> Unit,
|
|
||||||
modifier: Modifier = Modifier,
|
|
||||||
content: @Composable DefaultExposedDropdownMenuBoxScope.() -> Unit
|
|
||||||
)
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DefaultDropdownMenu(
|
fun DefaultDropdownMenu(
|
||||||
showMenu: MutableState<Boolean>,
|
showMenu: MutableState<Boolean>,
|
||||||
@ -55,7 +35,7 @@ fun DefaultDropdownMenu(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DefaultExposedDropdownMenuBoxScope.DefaultExposedDropdownMenu(
|
fun ExposedDropdownMenuBoxScope.DefaultExposedDropdownMenu(
|
||||||
expanded: MutableState<Boolean>,
|
expanded: MutableState<Boolean>,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
dropdownMenuItems: (@Composable () -> Unit)?
|
dropdownMenuItems: (@Composable () -> Unit)?
|
||||||
@ -63,7 +43,7 @@ fun DefaultExposedDropdownMenuBoxScope.DefaultExposedDropdownMenu(
|
|||||||
MaterialTheme(
|
MaterialTheme(
|
||||||
shapes = MaterialTheme.shapes.copy(medium = RoundedCornerShape(corner = CornerSize(25.dp)))
|
shapes = MaterialTheme.shapes.copy(medium = RoundedCornerShape(corner = CornerSize(25.dp)))
|
||||||
) {
|
) {
|
||||||
DefaultExposedDropdownMenu(
|
ExposedDropdownMenu(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.widthIn(min = 200.dp)
|
.widthIn(min = 200.dp)
|
||||||
.background(MaterialTheme.colors.surface)
|
.background(MaterialTheme.colors.surface)
|
||||||
|
@ -29,7 +29,7 @@ fun <T> ExposedDropDownSettingRow(
|
|||||||
) {
|
) {
|
||||||
SettingsActionItemWithContent(icon, title, iconColor = iconTint, disabled = !enabled.value) {
|
SettingsActionItemWithContent(icon, title, iconColor = iconTint, disabled = !enabled.value) {
|
||||||
val expanded = remember { mutableStateOf(false) }
|
val expanded = remember { mutableStateOf(false) }
|
||||||
DefaultExposedDropdownMenuBox(
|
ExposedDropdownMenuBox(
|
||||||
expanded = expanded.value,
|
expanded = expanded.value,
|
||||||
onExpandedChange = {
|
onExpandedChange = {
|
||||||
expanded.value = !expanded.value && enabled.value
|
expanded.value = !expanded.value && enabled.value
|
||||||
|
@ -12,6 +12,7 @@ import dev.icerock.moko.resources.compose.painterResource
|
|||||||
import androidx.compose.ui.text.AnnotatedString
|
import androidx.compose.ui.text.AnnotatedString
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.*
|
import androidx.compose.ui.unit.*
|
||||||
|
import chat.simplex.common.platform.onRightClick
|
||||||
import chat.simplex.common.platform.windowWidth
|
import chat.simplex.common.platform.windowWidth
|
||||||
import chat.simplex.common.ui.theme.*
|
import chat.simplex.common.ui.theme.*
|
||||||
import chat.simplex.common.views.helpers.*
|
import chat.simplex.common.views.helpers.*
|
||||||
|
@ -254,7 +254,7 @@ fun IntSettingRow(title: String, selection: MutableState<Int>, values: List<Int>
|
|||||||
|
|
||||||
Text(title)
|
Text(title)
|
||||||
|
|
||||||
DefaultExposedDropdownMenuBox(
|
ExposedDropdownMenuBox(
|
||||||
expanded = expanded.value,
|
expanded = expanded.value,
|
||||||
onExpandedChange = {
|
onExpandedChange = {
|
||||||
expanded.value = !expanded.value
|
expanded.value = !expanded.value
|
||||||
@ -313,7 +313,7 @@ fun TimeoutSettingRow(title: String, selection: MutableState<Long>, values: List
|
|||||||
|
|
||||||
Text(title)
|
Text(title)
|
||||||
|
|
||||||
DefaultExposedDropdownMenuBox(
|
ExposedDropdownMenuBox(
|
||||||
expanded = expanded.value,
|
expanded = expanded.value,
|
||||||
onExpandedChange = {
|
onExpandedChange = {
|
||||||
expanded.value = !expanded.value
|
expanded.value = !expanded.value
|
||||||
|
@ -24,6 +24,7 @@ fun VersionInfoView(info: CoreVersionInfo) {
|
|||||||
Text(String.format(stringResource(MR.strings.app_version_code), BuildConfigCommon.ANDROID_VERSION_CODE))
|
Text(String.format(stringResource(MR.strings.app_version_code), BuildConfigCommon.ANDROID_VERSION_CODE))
|
||||||
} else {
|
} else {
|
||||||
Text(String.format(stringResource(MR.strings.app_version_name), BuildConfigCommon.DESKTOP_VERSION_NAME))
|
Text(String.format(stringResource(MR.strings.app_version_name), BuildConfigCommon.DESKTOP_VERSION_NAME))
|
||||||
|
Text(String.format(stringResource(MR.strings.app_version_code), BuildConfigCommon.DESKTOP_VERSION_CODE))
|
||||||
}
|
}
|
||||||
Text(String.format(stringResource(MR.strings.core_version), info.version))
|
Text(String.format(stringResource(MR.strings.core_version), info.version))
|
||||||
val simplexmqCommit = if (info.simplexmqCommit.length >= 7) info.simplexmqCommit.substring(startIndex = 0, endIndex = 7) else info.simplexmqCommit
|
val simplexmqCommit = if (info.simplexmqCommit.length >= 7) info.simplexmqCommit.substring(startIndex = 0, endIndex = 7) else info.simplexmqCommit
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package chat.simplex.common.platform
|
package chat.simplex.common.platform
|
||||||
|
|
||||||
|
import androidx.compose.foundation.contextMenuOpenDetector
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.*
|
import androidx.compose.ui.*
|
||||||
import androidx.compose.ui.graphics.painter.Painter
|
import androidx.compose.ui.graphics.painter.Painter
|
||||||
@ -29,3 +30,5 @@ onExternalDrag(enabled) {
|
|||||||
is DragData.Text -> onText(data.readText())
|
is DragData.Text -> onText(data.readText())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
actual fun Modifier.onRightClick(action: () -> Unit): Modifier = contextMenuOpenDetector { action() }
|
||||||
|
@ -6,9 +6,7 @@ import androidx.compose.runtime.*
|
|||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.platform.LocalDensity
|
import androidx.compose.ui.platform.LocalDensity
|
||||||
import androidx.compose.ui.unit.Dp
|
import androidx.compose.ui.unit.Dp
|
||||||
import chat.simplex.common.platform.VideoPlayer
|
import chat.simplex.common.platform.*
|
||||||
import chat.simplex.common.platform.isPlaying
|
|
||||||
import chat.simplex.common.views.helpers.onRightClick
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
actual fun PlayerView(player: VideoPlayer, width: Dp, onClick: () -> Unit, onLongClick: () -> Unit, stop: () -> Unit) {
|
actual fun PlayerView(player: VideoPlayer, width: Dp, onClick: () -> Unit, onLongClick: () -> Unit, stop: () -> Unit) {
|
||||||
|
@ -11,6 +11,7 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.graphics.drawscope.ContentDrawScope
|
import androidx.compose.ui.graphics.drawscope.ContentDrawScope
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import chat.simplex.common.platform.onRightClick
|
||||||
import chat.simplex.common.views.helpers.*
|
import chat.simplex.common.views.helpers.*
|
||||||
|
|
||||||
object NoIndication : Indication {
|
object NoIndication : Indication {
|
||||||
|
@ -1,44 +0,0 @@
|
|||||||
package chat.simplex.common.views.helpers
|
|
||||||
|
|
||||||
import androidx.compose.foundation.*
|
|
||||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
|
||||||
import androidx.compose.foundation.layout.*
|
|
||||||
import androidx.compose.material.DropdownMenu
|
|
||||||
import androidx.compose.runtime.Composable
|
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.ui.Modifier
|
|
||||||
import androidx.compose.ui.unit.DpOffset
|
|
||||||
import androidx.compose.ui.unit.dp
|
|
||||||
|
|
||||||
actual fun Modifier.onRightClick(action: () -> Unit): Modifier = contextMenuOpenDetector { action() }
|
|
||||||
|
|
||||||
actual interface DefaultExposedDropdownMenuBoxScope {
|
|
||||||
@Composable
|
|
||||||
actual fun DefaultExposedDropdownMenu(
|
|
||||||
expanded: Boolean,
|
|
||||||
onDismissRequest: () -> Unit,
|
|
||||||
modifier: Modifier,
|
|
||||||
content: @Composable ColumnScope.() -> Unit
|
|
||||||
) {
|
|
||||||
DropdownMenu(expanded, onDismissRequest, offset = DpOffset(0.dp, (-40).dp)) {
|
|
||||||
Column {
|
|
||||||
content()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
actual fun DefaultExposedDropdownMenuBox(
|
|
||||||
expanded: Boolean,
|
|
||||||
onExpandedChange: (Boolean) -> Unit,
|
|
||||||
modifier: Modifier,
|
|
||||||
content: @Composable DefaultExposedDropdownMenuBoxScope.() -> Unit
|
|
||||||
) {
|
|
||||||
val obj = remember { object : DefaultExposedDropdownMenuBoxScope {} }
|
|
||||||
Box(Modifier
|
|
||||||
.clickable(interactionSource = remember { MutableInteractionSource() }, indication = null, onClick = { onExpandedChange(!expanded) })
|
|
||||||
) {
|
|
||||||
obj.content()
|
|
||||||
}
|
|
||||||
}
|
|
@ -88,7 +88,7 @@ compose {
|
|||||||
notarization {
|
notarization {
|
||||||
this.appleID.set(appleId)
|
this.appleID.set(appleId)
|
||||||
this.password.set(password)
|
this.password.set(password)
|
||||||
this.ascProvider.set(teamId)
|
this.teamID.set(teamId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,4 +33,4 @@ desktop.version_code=15
|
|||||||
|
|
||||||
kotlin.version=1.8.20
|
kotlin.version=1.8.20
|
||||||
gradle.plugin.version=7.4.2
|
gradle.plugin.version=7.4.2
|
||||||
compose.version=1.4.3
|
compose.version=1.5.10
|
||||||
|
@ -19,7 +19,7 @@ source-repository-package
|
|||||||
source-repository-package
|
source-repository-package
|
||||||
type: git
|
type: git
|
||||||
location: https://github.com/kazu-yamamoto/http2.git
|
location: https://github.com/kazu-yamamoto/http2.git
|
||||||
tag: 804fa283f067bd3fd89b8c5f8d25b3047813a517
|
tag: f5525b755ff2418e6e6ecc69e877363b0d0bcaeb
|
||||||
|
|
||||||
source-repository-package
|
source-repository-package
|
||||||
type: git
|
type: git
|
||||||
|
@ -112,6 +112,11 @@ if [ -n "$LIBCRYPTO_PATH" ]; then
|
|||||||
install_name_tool -change $LIBCRYPTO_PATH @rpath/libcrypto.1.1.$LIB_EXT libHSsmplxmq*.$LIB_EXT
|
install_name_tool -change $LIBCRYPTO_PATH @rpath/libcrypto.1.1.$LIB_EXT libHSsmplxmq*.$LIB_EXT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
LIBCRYPTO_PATH=$(otool -l libHSsqlcphr-*.$LIB_EXT | grep libcrypto | cut -d' ' -f11)
|
||||||
|
if [ -n "$LIBCRYPTO_PATH" ]; then
|
||||||
|
install_name_tool -change $LIBCRYPTO_PATH @rpath/libcrypto.1.1.$LIB_EXT libHSsqlcphr-*.$LIB_EXT
|
||||||
|
fi
|
||||||
|
|
||||||
for lib in $(find . -type f -name "*.$LIB_EXT"); do
|
for lib in $(find . -type f -name "*.$LIB_EXT"); do
|
||||||
RPATHS=`otool -l $lib | grep -E "path /Users/|path /usr/local|path /opt/" | cut -d' ' -f11`
|
RPATHS=`otool -l $lib | grep -E "path /Users/|path /usr/local|path /opt/" | cut -d' ' -f11`
|
||||||
for RPATH in $RPATHS; do
|
for RPATH in $RPATHS; do
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"https://github.com/simplex-chat/simplexmq.git"."0410948b56ea630dfa86441bbcf8ec97aeb1df01" = "1y4a28dkccbv8cbh164iirsnxa62qwac0pd5c8lqr5kddqvkz970";
|
"https://github.com/simplex-chat/simplexmq.git"."e9b5a849ab18de085e8c69d239a9706b99bcf787" = "0b50mlnzwian4l9kx4niwnj9qkyp21ryc8x9d3il9jkdfxrx8kqi";
|
||||||
"https://github.com/simplex-chat/hs-socks.git"."a30cc7a79a08d8108316094f8f2f82a0c5e1ac51" = "0yasvnr7g91k76mjkamvzab2kvlb1g5pspjyjn2fr6v83swjhj38";
|
"https://github.com/simplex-chat/hs-socks.git"."a30cc7a79a08d8108316094f8f2f82a0c5e1ac51" = "0yasvnr7g91k76mjkamvzab2kvlb1g5pspjyjn2fr6v83swjhj38";
|
||||||
"https://github.com/kazu-yamamoto/http2.git"."804fa283f067bd3fd89b8c5f8d25b3047813a517" = "1j67wp7rfybfx3ryx08z6gqmzj85j51hmzhgx47ihgmgr47sl895";
|
"https://github.com/kazu-yamamoto/http2.git"."f5525b755ff2418e6e6ecc69e877363b0d0bcaeb" = "0fyx0047gvhm99ilp212mmz37j84cwrfnpmssib5dw363fyb88b6";
|
||||||
"https://github.com/simplex-chat/direct-sqlcipher.git"."f814ee68b16a9447fbb467ccc8f29bdd3546bfd9" = "0kiwhvml42g9anw4d2v0zd1fpc790pj9syg5x3ik4l97fnkbbwpp";
|
"https://github.com/simplex-chat/direct-sqlcipher.git"."f814ee68b16a9447fbb467ccc8f29bdd3546bfd9" = "0kiwhvml42g9anw4d2v0zd1fpc790pj9syg5x3ik4l97fnkbbwpp";
|
||||||
"https://github.com/simplex-chat/sqlcipher-simple.git"."a46bd361a19376c5211f1058908fc0ae6bf42446" = "1z0r78d8f0812kxbgsm735qf6xx8lvaz27k1a0b4a2m0sshpd5gl";
|
"https://github.com/simplex-chat/sqlcipher-simple.git"."a46bd361a19376c5211f1058908fc0ae6bf42446" = "1z0r78d8f0812kxbgsm735qf6xx8lvaz27k1a0b4a2m0sshpd5gl";
|
||||||
"https://github.com/simplex-chat/aeson.git"."aab7b5a14d6c5ea64c64dcaee418de1bb00dcc2b" = "0jz7kda8gai893vyvj96fy962ncv8dcsx71fbddyy8zrvc88jfrr";
|
"https://github.com/simplex-chat/aeson.git"."aab7b5a14d6c5ea64c64dcaee418de1bb00dcc2b" = "0jz7kda8gai893vyvj96fy962ncv8dcsx71fbddyy8zrvc88jfrr";
|
||||||
|
@ -49,9 +49,9 @@ extra-deps:
|
|||||||
# - simplexmq-1.0.0@sha256:34b2004728ae396e3ae449cd090ba7410781e2b3cefc59259915f4ca5daa9ea8,8561
|
# - simplexmq-1.0.0@sha256:34b2004728ae396e3ae449cd090ba7410781e2b3cefc59259915f4ca5daa9ea8,8561
|
||||||
# - ../simplexmq
|
# - ../simplexmq
|
||||||
- github: simplex-chat/simplexmq
|
- github: simplex-chat/simplexmq
|
||||||
commit: 0410948b56ea630dfa86441bbcf8ec97aeb1df01
|
commit: e9b5a849ab18de085e8c69d239a9706b99bcf787
|
||||||
- github: kazu-yamamoto/http2
|
- github: kazu-yamamoto/http2
|
||||||
commit: 804fa283f067bd3fd89b8c5f8d25b3047813a517
|
commit: f5525b755ff2418e6e6ecc69e877363b0d0bcaeb
|
||||||
# - ../direct-sqlcipher
|
# - ../direct-sqlcipher
|
||||||
- github: simplex-chat/direct-sqlcipher
|
- github: simplex-chat/direct-sqlcipher
|
||||||
commit: f814ee68b16a9447fbb467ccc8f29bdd3546bfd9
|
commit: f814ee68b16a9447fbb467ccc8f29bdd3546bfd9
|
||||||
|
Loading…
Reference in New Issue
Block a user