From cb4aa2954984ba52bd9aedfe03066ed93023e96a Mon Sep 17 00:00:00 2001
From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
Date: Sun, 30 Jul 2023 15:15:41 +0100
Subject: [PATCH 01/11] core: update preset smp relays (#2804)
---
src/Simplex/Chat.hs | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs
index df8120b9cb..d5770065ef 100644
--- a/src/Simplex/Chat.hs
+++ b/src/Simplex/Chat.hs
@@ -139,9 +139,11 @@ defaultChatConfig =
_defaultSMPServers :: NonEmpty SMPServerWithAuth
_defaultSMPServers =
L.fromList
- [ "smp://1OwYGt-yqOfe2IyVHhxz3ohqo3aCCMjtB-8wn4X_aoY=@smp11.simplex.im,6ioorbm6i3yxmuoezrhjk6f6qgkc4syabh7m3so74xunb5nzr4pwgfqd.onion",
- "smp://UkMFNAXLXeAAe0beCa4w6X_zp18PwxSaSjY17BKUGXQ=@smp12.simplex.im,ie42b5weq7zdkghocs3mgxdjeuycheeqqmksntj57rmejagmg4eor5yd.onion",
- "smp://enEkec4hlR3UtKx2NMpOUK_K4ZuDxjWBO1d9Y4YXVaA=@smp14.simplex.im,aspkyu2sopsnizbyfabtsicikr2s4r3ti35jogbcekhm3fsoeyjvgrid.onion"
+ [ "smp://h--vW7ZSkXPeOUpfxlFGgauQmXNFOzGoizak7Ult7cw=@smp15.simplex.im,oauu4bgijybyhczbnxtlggo6hiubahmeutaqineuyy23aojpih3dajad.onion",
+ "smp://hejn2gVIqNU6xjtGM3OwQeuk8ZEbDXVJXAlnSBJBWUA=@smp16.simplex.im,p3ktngodzi6qrf7w64mmde3syuzrv57y55hxabqcq3l5p6oi7yzze6qd.onion",
+ "smp://ZKe4uxF4Z_aLJJOEsC-Y6hSkXgQS5-oc442JQGkyP8M=@smp17.simplex.im,ogtwfxyi3h2h5weftjjpjmxclhb5ugufa5rcyrmg7j4xlch7qsr5nuqd.onion",
+ "smp://PtsqghzQKU83kYTlQ1VKg996dW4Cw4x_bvpKmiv8uns=@smp18.simplex.im,lyqpnwbs2zqfr45jqkncwpywpbtq7jrhxnib5qddtr6npjyezuwd3nqd.onion",
+ "smp://N_McQS3F9TGoh4ER0QstUf55kGnNSd-wXfNPZ7HukcM=@smp19.simplex.im,i53bbtoqhlc365k6kxzwdp5w3cdt433s7bwh3y32rcbml2vztiyyz5id.onion"
]
_defaultNtfServers :: [NtfServer]
From 98e53fb35b5371dcea0d59febb2bd215771bf9c7 Mon Sep 17 00:00:00 2001
From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Date: Mon, 31 Jul 2023 11:54:39 +0400
Subject: [PATCH 02/11] core: read unparsable item status as unknown (#2805)
---
.../Shared/Views/Chat/ChatItem/CIFileView.swift | 2 ++
.../Shared/Views/Chat/ChatItem/CIImageView.swift | 1 +
.../Shared/Views/Chat/ChatItem/CIVideoView.swift | 1 +
.../Shared/Views/Chat/ChatItem/CIVoiceView.swift | 1 +
apps/ios/SimpleXChat/ChatTypes.swift | 7 +++++++
.../main/java/chat/simplex/app/model/ChatModel.kt | 5 +++++
.../chat/simplex/app/views/chat/item/CIFileView.kt | 1 +
.../simplex/app/views/chat/item/CIImageView.kt | 1 +
.../simplex/app/views/chat/item/CIVideoView.kt | 1 +
.../resources/MR/images/ic_question_mark.svg | 1 +
src/Simplex/Chat/Messages.hs | 14 ++++++++++++--
src/Simplex/Chat/View.hs | 1 +
12 files changed, 34 insertions(+), 2 deletions(-)
create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_question_mark.svg
diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIFileView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIFileView.swift
index 134c9679d9..6e792e825d 100644
--- a/apps/ios/Shared/Views/Chat/ChatItem/CIFileView.swift
+++ b/apps/ios/Shared/Views/Chat/ChatItem/CIFileView.swift
@@ -62,6 +62,7 @@ struct CIFileView: View {
case .rcvComplete: return true
case .rcvCancelled: return false
case .rcvError: return false
+ case .invalid: return false
}
}
return false
@@ -149,6 +150,7 @@ struct CIFileView: View {
case .rcvComplete: fileIcon("doc.fill")
case .rcvCancelled: fileIcon("doc.fill", innerIcon: "xmark", innerIconSize: 10)
case .rcvError: fileIcon("doc.fill", innerIcon: "xmark", innerIconSize: 10)
+ case .invalid: fileIcon("doc.fill", innerIcon: "questionmark", innerIconSize: 10)
}
} else {
fileIcon("doc.fill")
diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIImageView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIImageView.swift
index a9eadc5aa2..b13ee52829 100644
--- a/apps/ios/Shared/Views/Chat/ChatItem/CIImageView.swift
+++ b/apps/ios/Shared/Views/Chat/ChatItem/CIImageView.swift
@@ -99,6 +99,7 @@ struct CIImageView: View {
case .rcvTransfer: progressView()
case .rcvCancelled: fileIcon("xmark", 10, 13)
case .rcvError: fileIcon("xmark", 10, 13)
+ case .invalid: fileIcon("questionmark", 10, 13)
default: EmptyView()
}
}
diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift
index 0232be700b..4387614918 100644
--- a/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift
+++ b/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift
@@ -212,6 +212,7 @@ struct CIVideoView: View {
}
case .rcvCancelled: fileIcon("xmark", 10, 13)
case .rcvError: fileIcon("xmark", 10, 13)
+ case .invalid: fileIcon("questionmark", 10, 13)
default: EmptyView()
}
}
diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIVoiceView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIVoiceView.swift
index e6ce74953b..9541ac9483 100644
--- a/apps/ios/Shared/Views/Chat/ChatItem/CIVoiceView.swift
+++ b/apps/ios/Shared/Views/Chat/ChatItem/CIVoiceView.swift
@@ -144,6 +144,7 @@ struct VoiceMessagePlayer: View {
case .rcvComplete: playbackButton()
case .rcvCancelled: playPauseIcon("play.fill", Color(uiColor: .tertiaryLabel))
case .rcvError: playPauseIcon("play.fill", Color(uiColor: .tertiaryLabel))
+ case .invalid: playPauseIcon("play.fill", Color(uiColor: .tertiaryLabel))
}
} else {
playPauseIcon("play.fill", Color(uiColor: .tertiaryLabel))
diff --git a/apps/ios/SimpleXChat/ChatTypes.swift b/apps/ios/SimpleXChat/ChatTypes.swift
index 31930fd31c..cfad3cc691 100644
--- a/apps/ios/SimpleXChat/ChatTypes.swift
+++ b/apps/ios/SimpleXChat/ChatTypes.swift
@@ -2273,6 +2273,7 @@ public struct CIMeta: Decodable {
case .sndErrorAuth: return ("multiply", .red)
case .sndError: return ("exclamationmark.triangle.fill", .yellow)
case .rcvNew: return ("circlebadge.fill", Color.accentColor)
+ case .invalid: return ("questionmark", metaColor)
default: return nil
}
}
@@ -2343,6 +2344,7 @@ public enum CIStatus: Decodable {
case sndError(agentError: String)
case rcvNew
case rcvRead
+ case invalid(text: String)
var id: String {
switch self {
@@ -2353,6 +2355,7 @@ public enum CIStatus: Decodable {
case .sndError: return "sndError"
case .rcvNew: return "rcvNew"
case .rcvRead: return "rcvRead"
+ case .invalid: return "invalid"
}
}
}
@@ -2615,6 +2618,7 @@ public struct CIFile: Decodable {
case .rcvCancelled: return false
case .rcvComplete: return true
case .rcvError: return false
+ case .invalid: return false
}
}
}
@@ -2638,6 +2642,7 @@ public struct CIFile: Decodable {
case .rcvCancelled: return nil
case .rcvComplete: return nil
case .rcvError: return nil
+ case .invalid: return nil
}
}
}
@@ -2698,6 +2703,7 @@ public enum CIFileStatus: Decodable, Equatable {
case rcvComplete
case rcvCancelled
case rcvError
+ case invalid(text: String)
var id: String {
switch self {
@@ -2712,6 +2718,7 @@ public enum CIFileStatus: Decodable, Equatable {
case .rcvComplete: return "rcvComplete"
case .rcvCancelled: return "rcvCancelled"
case .rcvError: return "rcvError"
+ case .invalid: return "invalid"
}
}
}
diff --git a/apps/multiplatform/android/src/main/java/chat/simplex/app/model/ChatModel.kt b/apps/multiplatform/android/src/main/java/chat/simplex/app/model/ChatModel.kt
index 1a76510a0b..5adc17fc61 100644
--- a/apps/multiplatform/android/src/main/java/chat/simplex/app/model/ChatModel.kt
+++ b/apps/multiplatform/android/src/main/java/chat/simplex/app/model/ChatModel.kt
@@ -1626,6 +1626,7 @@ data class CIMeta (
is CIStatus.SndErrorAuth -> MR.images.ic_close to Color.Red
is CIStatus.SndError -> MR.images.ic_warning_filled to WarningYellow
is CIStatus.RcvNew -> MR.images.ic_circle_filled to primaryColor
+ is CIStatus.Invalid -> MR.images.ic_question_mark to metaColor
else -> null
}
@@ -1712,6 +1713,7 @@ sealed class CIStatus {
@Serializable @SerialName("sndError") class SndError(val agentError: String): CIStatus()
@Serializable @SerialName("rcvNew") class RcvNew: CIStatus()
@Serializable @SerialName("rcvRead") class RcvRead: CIStatus()
+ @Serializable @SerialName("invalid") class Invalid(val text: String): CIStatus()
}
@Serializable
@@ -1949,6 +1951,7 @@ class CIFile(
is CIFileStatus.RcvCancelled -> false
is CIFileStatus.RcvComplete -> true
is CIFileStatus.RcvError -> false
+ is CIFileStatus.Invalid -> false
}
@Transient
@@ -1969,6 +1972,7 @@ class CIFile(
is CIFileStatus.RcvCancelled -> null
is CIFileStatus.RcvComplete -> null
is CIFileStatus.RcvError -> null
+ is CIFileStatus.Invalid -> null
}
companion object {
@@ -2038,6 +2042,7 @@ sealed class CIFileStatus {
@Serializable @SerialName("rcvComplete") object RcvComplete: CIFileStatus()
@Serializable @SerialName("rcvCancelled") object RcvCancelled: CIFileStatus()
@Serializable @SerialName("rcvError") object RcvError: CIFileStatus()
+ @Serializable @SerialName("invalid") class Invalid(val text: String): CIFileStatus()
}
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
diff --git a/apps/multiplatform/android/src/main/java/chat/simplex/app/views/chat/item/CIFileView.kt b/apps/multiplatform/android/src/main/java/chat/simplex/app/views/chat/item/CIFileView.kt
index 7c9e49766b..82ecefaf20 100644
--- a/apps/multiplatform/android/src/main/java/chat/simplex/app/views/chat/item/CIFileView.kt
+++ b/apps/multiplatform/android/src/main/java/chat/simplex/app/views/chat/item/CIFileView.kt
@@ -170,6 +170,7 @@ fun CIFileView(
is CIFileStatus.RcvComplete -> fileIcon()
is CIFileStatus.RcvCancelled -> fileIcon(innerIcon = painterResource(MR.images.ic_close))
is CIFileStatus.RcvError -> fileIcon(innerIcon = painterResource(MR.images.ic_close))
+ is CIFileStatus.Invalid -> fileIcon(innerIcon = painterResource(MR.images.ic_question_mark))
}
} else {
fileIcon()
diff --git a/apps/multiplatform/android/src/main/java/chat/simplex/app/views/chat/item/CIImageView.kt b/apps/multiplatform/android/src/main/java/chat/simplex/app/views/chat/item/CIImageView.kt
index 642757f271..f5ebf4753b 100644
--- a/apps/multiplatform/android/src/main/java/chat/simplex/app/views/chat/item/CIImageView.kt
+++ b/apps/multiplatform/android/src/main/java/chat/simplex/app/views/chat/item/CIImageView.kt
@@ -86,6 +86,7 @@ fun CIImageView(
is CIFileStatus.RcvTransfer -> progressIndicator()
is CIFileStatus.RcvCancelled -> fileIcon(painterResource(MR.images.ic_close), MR.strings.icon_descr_file)
is CIFileStatus.RcvError -> fileIcon(painterResource(MR.images.ic_close), MR.strings.icon_descr_file)
+ is CIFileStatus.Invalid -> fileIcon(painterResource(MR.images.ic_question_mark), MR.strings.icon_descr_file)
else -> {}
}
}
diff --git a/apps/multiplatform/android/src/main/java/chat/simplex/app/views/chat/item/CIVideoView.kt b/apps/multiplatform/android/src/main/java/chat/simplex/app/views/chat/item/CIVideoView.kt
index f6123e7bed..ee8422d46d 100644
--- a/apps/multiplatform/android/src/main/java/chat/simplex/app/views/chat/item/CIVideoView.kt
+++ b/apps/multiplatform/android/src/main/java/chat/simplex/app/views/chat/item/CIVideoView.kt
@@ -309,6 +309,7 @@ private fun loadingIndicator(file: CIFile?) {
}
is CIFileStatus.RcvCancelled -> fileIcon(painterResource(MR.images.ic_close), MR.strings.icon_descr_file)
is CIFileStatus.RcvError -> fileIcon(painterResource(MR.images.ic_close), MR.strings.icon_descr_file)
+ is CIFileStatus.Invalid -> fileIcon(painterResource(MR.images.ic_question_mark), MR.strings.icon_descr_file)
else -> {}
}
}
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_question_mark.svg b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_question_mark.svg
new file mode 100644
index 0000000000..9c2e7e110b
--- /dev/null
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_question_mark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/Simplex/Chat/Messages.hs b/src/Simplex/Chat/Messages.hs
index f2d6553a5a..7e8331b202 100644
--- a/src/Simplex/Chat/Messages.hs
+++ b/src/Simplex/Chat/Messages.hs
@@ -501,6 +501,7 @@ data CIFileStatus (d :: MsgDirection) where
CIFSRcvComplete :: CIFileStatus 'MDRcv
CIFSRcvCancelled :: CIFileStatus 'MDRcv
CIFSRcvError :: CIFileStatus 'MDRcv
+ CIFSInvalid :: {text :: Text} -> CIFileStatus 'MDSnd
deriving instance Eq (CIFileStatus d)
@@ -519,6 +520,7 @@ ciFileEnded = \case
CIFSRcvCancelled -> True
CIFSRcvComplete -> True
CIFSRcvError -> True
+ CIFSInvalid {} -> True
instance ToJSON (CIFileStatus d) where
toJSON = J.toJSON . jsonCIFileStatus
@@ -545,6 +547,7 @@ instance MsgDirectionI d => StrEncoding (CIFileStatus d) where
CIFSRcvComplete -> "rcv_complete"
CIFSRcvCancelled -> "rcv_cancelled"
CIFSRcvError -> "rcv_error"
+ CIFSInvalid {} -> "invalid"
strP = (\(AFS _ st) -> checkDirection st) <$?> strP
instance StrEncoding ACIFileStatus where
@@ -562,7 +565,7 @@ instance StrEncoding ACIFileStatus where
"rcv_complete" -> pure $ AFS SMDRcv CIFSRcvComplete
"rcv_cancelled" -> pure $ AFS SMDRcv CIFSRcvCancelled
"rcv_error" -> pure $ AFS SMDRcv CIFSRcvError
- _ -> fail "bad file status"
+ text -> pure $ AFS SMDSnd (CIFSInvalid $ safeDecodeUtf8 text)
where
progress :: (Int64 -> Int64 -> a) -> A.Parser a
progress f = f <$> num <*> num <|> pure (f 0 1)
@@ -580,6 +583,7 @@ data JSONCIFileStatus
| JCIFSRcvComplete
| JCIFSRcvCancelled
| JCIFSRcvError
+ | JCIFSInvalid {text :: Text}
deriving (Generic)
instance ToJSON JSONCIFileStatus where
@@ -599,6 +603,7 @@ jsonCIFileStatus = \case
CIFSRcvComplete -> JCIFSRcvComplete
CIFSRcvCancelled -> JCIFSRcvCancelled
CIFSRcvError -> JCIFSRcvError
+ CIFSInvalid text -> JCIFSInvalid text
aciFileStatusJSON :: JSONCIFileStatus -> ACIFileStatus
aciFileStatusJSON = \case
@@ -613,6 +618,7 @@ aciFileStatusJSON = \case
JCIFSRcvComplete -> AFS SMDRcv CIFSRcvComplete
JCIFSRcvCancelled -> AFS SMDRcv CIFSRcvCancelled
JCIFSRcvError -> AFS SMDRcv CIFSRcvError
+ JCIFSInvalid text -> AFS SMDSnd $ CIFSInvalid text
-- to conveniently read file data from db
data CIFileInfo = CIFileInfo
@@ -630,6 +636,7 @@ data CIStatus (d :: MsgDirection) where
CISSndError :: String -> CIStatus 'MDSnd
CISRcvNew :: CIStatus 'MDRcv
CISRcvRead :: CIStatus 'MDRcv
+ CISInvalid :: Text -> CIStatus 'MDSnd
deriving instance Show (CIStatus d)
@@ -654,6 +661,7 @@ instance MsgDirectionI d => StrEncoding (CIStatus d) where
CISSndError e -> "snd_error " <> encodeUtf8 (T.pack e)
CISRcvNew -> "rcv_new"
CISRcvRead -> "rcv_read"
+ CISInvalid {} -> "invalid"
strP = (\(ACIStatus _ st) -> checkDirection st) <$?> strP
instance StrEncoding ACIStatus where
@@ -667,7 +675,7 @@ instance StrEncoding ACIStatus where
"snd_error" -> ACIStatus SMDSnd . CISSndError . T.unpack . safeDecodeUtf8 <$> (A.space *> A.takeByteString)
"rcv_new" -> pure $ ACIStatus SMDRcv CISRcvNew
"rcv_read" -> pure $ ACIStatus SMDRcv CISRcvRead
- _ -> fail "bad status"
+ text -> pure $ ACIStatus SMDSnd (CISInvalid $ safeDecodeUtf8 text)
data JSONCIStatus
= JCISSndNew
@@ -677,6 +685,7 @@ data JSONCIStatus
| JCISSndError {agentError :: String}
| JCISRcvNew
| JCISRcvRead
+ | JCISInvalid {text :: Text}
deriving (Show, Generic)
instance ToJSON JSONCIStatus where
@@ -692,6 +701,7 @@ jsonCIStatus = \case
CISSndError e -> JCISSndError e
CISRcvNew -> JCISRcvNew
CISRcvRead -> JCISRcvRead
+ CISInvalid text -> JCISInvalid text
ciStatusNew :: forall d. MsgDirectionI d => CIStatus d
ciStatusNew = case msgDirection @d of
diff --git a/src/Simplex/Chat/View.hs b/src/Simplex/Chat/View.hs
index 0b7db12f94..d079e1fccb 100644
--- a/src/Simplex/Chat/View.hs
+++ b/src/Simplex/Chat/View.hs
@@ -1360,6 +1360,7 @@ viewFileTransferStatusXFTP (AChatItem _ _ _ ChatItem {file = Just CIFile {fileId
CIFSRcvComplete -> ["receiving " <> fstr <> " complete" <> maybe "" (\fp -> ", path: " <> plain fp) filePath]
CIFSRcvCancelled -> ["receiving " <> fstr <> " cancelled"]
CIFSRcvError -> ["receiving " <> fstr <> " error"]
+ CIFSInvalid text -> [fstr <> " invalid status: " <> plain text]
where
fstr = fileTransferStr fileId fileName
viewFileTransferStatusXFTP _ = ["no file status"]
From af33f4e2d9ab3c88ba19bf317395f80c4bba9abf Mon Sep 17 00:00:00 2001
From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Date: Mon, 31 Jul 2023 12:18:38 +0400
Subject: [PATCH 03/11] core: 5.2.1.0
---
package.yaml | 2 +-
simplex-chat.cabal | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.yaml b/package.yaml
index c4dcecd981..c4ac644da3 100644
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
name: simplex-chat
-version: 5.2.0.4
+version: 5.2.1.0
#synopsis:
#description:
homepage: https://github.com/simplex-chat/simplex-chat#readme
diff --git a/simplex-chat.cabal b/simplex-chat.cabal
index bba4d69689..c43adfb3e8 100644
--- a/simplex-chat.cabal
+++ b/simplex-chat.cabal
@@ -5,7 +5,7 @@ cabal-version: 1.12
-- see: https://github.com/sol/hpack
name: simplex-chat
-version: 5.2.0.4
+version: 5.2.1.0
category: Web, System, Services, Cryptography
homepage: https://github.com/simplex-chat/simplex-chat#readme
author: simplex.chat
From 9e7a45c7349fe0e3fdbd3ad3f8cae9f1a0485fef Mon Sep 17 00:00:00 2001
From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Date: Mon, 31 Jul 2023 14:20:24 +0400
Subject: [PATCH 04/11] core: fix status parsing (#2807)
---
src/Simplex/Chat/Messages.hs | 49 ++++++++++++++++++++----------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/src/Simplex/Chat/Messages.hs b/src/Simplex/Chat/Messages.hs
index 7e8331b202..9e7be62332 100644
--- a/src/Simplex/Chat/Messages.hs
+++ b/src/Simplex/Chat/Messages.hs
@@ -553,20 +553,22 @@ instance MsgDirectionI d => StrEncoding (CIFileStatus d) where
instance StrEncoding ACIFileStatus where
strEncode (AFS _ s) = strEncode s
strP =
- A.takeTill (== ' ') >>= \case
- "snd_stored" -> pure $ AFS SMDSnd CIFSSndStored
- "snd_transfer" -> AFS SMDSnd <$> progress CIFSSndTransfer
- "snd_cancelled" -> pure $ AFS SMDSnd CIFSSndCancelled
- "snd_complete" -> pure $ AFS SMDSnd CIFSSndComplete
- "snd_error" -> pure $ AFS SMDSnd CIFSSndError
- "rcv_invitation" -> pure $ AFS SMDRcv CIFSRcvInvitation
- "rcv_accepted" -> pure $ AFS SMDRcv CIFSRcvAccepted
- "rcv_transfer" -> AFS SMDRcv <$> progress CIFSRcvTransfer
- "rcv_complete" -> pure $ AFS SMDRcv CIFSRcvComplete
- "rcv_cancelled" -> pure $ AFS SMDRcv CIFSRcvCancelled
- "rcv_error" -> pure $ AFS SMDRcv CIFSRcvError
- text -> pure $ AFS SMDSnd (CIFSInvalid $ safeDecodeUtf8 text)
+ statusP <|> (AFS SMDSnd . CIFSInvalid . safeDecodeUtf8 <$> A.takeByteString)
where
+ statusP =
+ A.takeTill (== ' ') >>= \case
+ "snd_stored" -> pure $ AFS SMDSnd CIFSSndStored
+ "snd_transfer" -> AFS SMDSnd <$> progress CIFSSndTransfer
+ "snd_cancelled" -> pure $ AFS SMDSnd CIFSSndCancelled
+ "snd_complete" -> pure $ AFS SMDSnd CIFSSndComplete
+ "snd_error" -> pure $ AFS SMDSnd CIFSSndError
+ "rcv_invitation" -> pure $ AFS SMDRcv CIFSRcvInvitation
+ "rcv_accepted" -> pure $ AFS SMDRcv CIFSRcvAccepted
+ "rcv_transfer" -> AFS SMDRcv <$> progress CIFSRcvTransfer
+ "rcv_complete" -> pure $ AFS SMDRcv CIFSRcvComplete
+ "rcv_cancelled" -> pure $ AFS SMDRcv CIFSRcvCancelled
+ "rcv_error" -> pure $ AFS SMDRcv CIFSRcvError
+ _ -> fail "bad file status"
progress :: (Int64 -> Int64 -> a) -> A.Parser a
progress f = f <$> num <*> num <|> pure (f 0 1)
num = A.space *> A.decimal
@@ -667,15 +669,18 @@ instance MsgDirectionI d => StrEncoding (CIStatus d) where
instance StrEncoding ACIStatus where
strEncode (ACIStatus _ s) = strEncode s
strP =
- A.takeTill (== ' ') >>= \case
- "snd_new" -> pure $ ACIStatus SMDSnd CISSndNew
- "snd_sent" -> pure $ ACIStatus SMDSnd CISSndSent
- "snd_rcvd" -> ACIStatus SMDSnd . CISSndRcvd <$> (A.space *> strP)
- "snd_error_auth" -> pure $ ACIStatus SMDSnd CISSndErrorAuth
- "snd_error" -> ACIStatus SMDSnd . CISSndError . T.unpack . safeDecodeUtf8 <$> (A.space *> A.takeByteString)
- "rcv_new" -> pure $ ACIStatus SMDRcv CISRcvNew
- "rcv_read" -> pure $ ACIStatus SMDRcv CISRcvRead
- text -> pure $ ACIStatus SMDSnd (CISInvalid $ safeDecodeUtf8 text)
+ statusP <|> (ACIStatus SMDSnd . CISInvalid . safeDecodeUtf8 <$> A.takeByteString)
+ where
+ statusP =
+ A.takeTill (== ' ') >>= \case
+ "snd_new" -> pure $ ACIStatus SMDSnd CISSndNew
+ "snd_sent" -> pure $ ACIStatus SMDSnd CISSndSent
+ "snd_rcvd" -> ACIStatus SMDSnd . CISSndRcvd <$> (A.space *> strP)
+ "snd_error_auth" -> pure $ ACIStatus SMDSnd CISSndErrorAuth
+ "snd_error" -> ACIStatus SMDSnd . CISSndError . T.unpack . safeDecodeUtf8 <$> (A.space *> A.takeByteString)
+ "rcv_new" -> pure $ ACIStatus SMDRcv CISRcvNew
+ "rcv_read" -> pure $ ACIStatus SMDRcv CISRcvRead
+ _ -> fail "bad status"
data JSONCIStatus
= JCISSndNew
From fff8935b9458e63959d60a78ded17f770777f91b Mon Sep 17 00:00:00 2001
From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Date: Mon, 31 Jul 2023 15:26:29 +0400
Subject: [PATCH 05/11] core: fix status parsing 2 (#2809)
---
src/Simplex/Chat/Messages.hs | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/Simplex/Chat/Messages.hs b/src/Simplex/Chat/Messages.hs
index 9e7be62332..1464f6247b 100644
--- a/src/Simplex/Chat/Messages.hs
+++ b/src/Simplex/Chat/Messages.hs
@@ -553,7 +553,8 @@ instance MsgDirectionI d => StrEncoding (CIFileStatus d) where
instance StrEncoding ACIFileStatus where
strEncode (AFS _ s) = strEncode s
strP =
- statusP <|> (AFS SMDSnd . CIFSInvalid . safeDecodeUtf8 <$> A.takeByteString)
+ (statusP <* A.endOfInput) -- endOfInput to make it fail on partial correct parse
+ <|> (AFS SMDSnd . CIFSInvalid . safeDecodeUtf8 <$> A.takeByteString)
where
statusP =
A.takeTill (== ' ') >>= \case
@@ -669,7 +670,8 @@ instance MsgDirectionI d => StrEncoding (CIStatus d) where
instance StrEncoding ACIStatus where
strEncode (ACIStatus _ s) = strEncode s
strP =
- statusP <|> (ACIStatus SMDSnd . CISInvalid . safeDecodeUtf8 <$> A.takeByteString)
+ (statusP <* A.endOfInput) -- endOfInput to make it fail on partial correct parse, e.g. "snd_rcvd ok complete"
+ <|> (ACIStatus SMDSnd . CISInvalid . safeDecodeUtf8 <$> A.takeByteString)
where
statusP =
A.takeTill (== ' ') >>= \case
From af98e703eca56ac47f15c52c28f52f36cb078c2c Mon Sep 17 00:00:00 2001
From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Date: Mon, 31 Jul 2023 16:16:29 +0400
Subject: [PATCH 06/11] ios: update library (status parsing) (#2811)
---
apps/ios/SimpleX.xcodeproj/project.pbxproj | 40 +++++++++++-----------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj
index 2a5735990a..b9dc533239 100644
--- a/apps/ios/SimpleX.xcodeproj/project.pbxproj
+++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj
@@ -137,11 +137,6 @@
5CE2BA97284537A800EC33A6 /* dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CE2BA96284537A800EC33A6 /* dummy.m */; };
5CE2BA9D284555F500EC33A6 /* SimpleX NSE.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 5CDCAD452818589900503DA2 /* SimpleX NSE.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
5CE2BAA62845617C00EC33A6 /* SimpleXChat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE2BA682845308900EC33A6 /* SimpleXChat.framework */; platformFilter = ios; };
- 5CE381E12A6C103D004FB9E1 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE381DC2A6C103D004FB9E1 /* libffi.a */; };
- 5CE381E22A6C103D004FB9E1 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE381DD2A6C103D004FB9E1 /* libgmpxx.a */; };
- 5CE381E32A6C103D004FB9E1 /* libHSsimplex-chat-5.2.0.4-HUgQMHMGu1K8FDeUwC5hCd-ghc8.10.7.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE381DE2A6C103D004FB9E1 /* libHSsimplex-chat-5.2.0.4-HUgQMHMGu1K8FDeUwC5hCd-ghc8.10.7.a */; };
- 5CE381E42A6C103D004FB9E1 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE381DF2A6C103D004FB9E1 /* libgmp.a */; };
- 5CE381E52A6C103D004FB9E1 /* libHSsimplex-chat-5.2.0.4-HUgQMHMGu1K8FDeUwC5hCd.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE381E02A6C103D004FB9E1 /* libHSsimplex-chat-5.2.0.4-HUgQMHMGu1K8FDeUwC5hCd.a */; };
5CE4407227ADB1D0007B033A /* Emoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CE4407127ADB1D0007B033A /* Emoji.swift */; };
5CE4407927ADB701007B033A /* EmojiItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CE4407827ADB701007B033A /* EmojiItemView.swift */; };
5CEACCE327DE9246000BD591 /* ComposeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEACCE227DE9246000BD591 /* ComposeView.swift */; };
@@ -176,6 +171,11 @@
64AA1C6C27F3537400AC7277 /* DeletedItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64AA1C6B27F3537400AC7277 /* DeletedItemView.swift */; };
64C06EB52A0A4A7C00792D4D /* ChatItemInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64C06EB42A0A4A7C00792D4D /* ChatItemInfoView.swift */; };
64C3B0212A0D359700E19930 /* CustomTimePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64C3B0202A0D359700E19930 /* CustomTimePicker.swift */; };
+ 64C9F3ED2A77D65B002C80AF /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C9F3E82A77D65B002C80AF /* libffi.a */; };
+ 64C9F3EE2A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML-ghc8.10.7.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C9F3E92A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML-ghc8.10.7.a */; };
+ 64C9F3EF2A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C9F3EA2A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML.a */; };
+ 64C9F3F02A77D65B002C80AF /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C9F3EB2A77D65B002C80AF /* libgmpxx.a */; };
+ 64C9F3F12A77D65B002C80AF /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C9F3EC2A77D65B002C80AF /* libgmp.a */; };
64D0C2C029F9688300B38D5F /* UserAddressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D0C2BF29F9688300B38D5F /* UserAddressView.swift */; };
64D0C2C229FA57AB00B38D5F /* UserAddressLearnMore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D0C2C129FA57AB00B38D5F /* UserAddressLearnMore.swift */; };
64D0C2C629FAC1EC00B38D5F /* AddContactLearnMore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D0C2C529FAC1EC00B38D5F /* AddContactLearnMore.swift */; };
@@ -415,11 +415,6 @@
5CE2BA78284530CC00EC33A6 /* SimpleXChat.docc */ = {isa = PBXFileReference; lastKnownFileType = folder.documentationcatalog; path = SimpleXChat.docc; sourceTree = ""; };
5CE2BA8A2845332200EC33A6 /* SimpleX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SimpleX.h; sourceTree = ""; };
5CE2BA96284537A800EC33A6 /* dummy.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = dummy.m; sourceTree = ""; };
- 5CE381DC2A6C103D004FB9E1 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; };
- 5CE381DD2A6C103D004FB9E1 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; };
- 5CE381DE2A6C103D004FB9E1 /* libHSsimplex-chat-5.2.0.4-HUgQMHMGu1K8FDeUwC5hCd-ghc8.10.7.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.2.0.4-HUgQMHMGu1K8FDeUwC5hCd-ghc8.10.7.a"; sourceTree = ""; };
- 5CE381DF2A6C103D004FB9E1 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; };
- 5CE381E02A6C103D004FB9E1 /* libHSsimplex-chat-5.2.0.4-HUgQMHMGu1K8FDeUwC5hCd.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.2.0.4-HUgQMHMGu1K8FDeUwC5hCd.a"; sourceTree = ""; };
5CE4407127ADB1D0007B033A /* Emoji.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Emoji.swift; sourceTree = ""; };
5CE4407827ADB701007B033A /* EmojiItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiItemView.swift; sourceTree = ""; };
5CEACCE227DE9246000BD591 /* ComposeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeView.swift; sourceTree = ""; };
@@ -454,6 +449,11 @@
64AA1C6B27F3537400AC7277 /* DeletedItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeletedItemView.swift; sourceTree = ""; };
64C06EB42A0A4A7C00792D4D /* ChatItemInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemInfoView.swift; sourceTree = ""; };
64C3B0202A0D359700E19930 /* CustomTimePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomTimePicker.swift; sourceTree = ""; };
+ 64C9F3E82A77D65B002C80AF /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; };
+ 64C9F3E92A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML-ghc8.10.7.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML-ghc8.10.7.a"; sourceTree = ""; };
+ 64C9F3EA2A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML.a"; sourceTree = ""; };
+ 64C9F3EB2A77D65B002C80AF /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; };
+ 64C9F3EC2A77D65B002C80AF /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; };
64D0C2BF29F9688300B38D5F /* UserAddressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAddressView.swift; sourceTree = ""; };
64D0C2C129FA57AB00B38D5F /* UserAddressLearnMore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAddressLearnMore.swift; sourceTree = ""; };
64D0C2C529FAC1EC00B38D5F /* AddContactLearnMore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddContactLearnMore.swift; sourceTree = ""; };
@@ -501,12 +501,12 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 5CE381E22A6C103D004FB9E1 /* libgmpxx.a in Frameworks */,
+ 64C9F3F02A77D65B002C80AF /* libgmpxx.a in Frameworks */,
+ 64C9F3F12A77D65B002C80AF /* libgmp.a in Frameworks */,
+ 64C9F3EE2A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML-ghc8.10.7.a in Frameworks */,
5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */,
- 5CE381E32A6C103D004FB9E1 /* libHSsimplex-chat-5.2.0.4-HUgQMHMGu1K8FDeUwC5hCd-ghc8.10.7.a in Frameworks */,
- 5CE381E52A6C103D004FB9E1 /* libHSsimplex-chat-5.2.0.4-HUgQMHMGu1K8FDeUwC5hCd.a in Frameworks */,
- 5CE381E12A6C103D004FB9E1 /* libffi.a in Frameworks */,
- 5CE381E42A6C103D004FB9E1 /* libgmp.a in Frameworks */,
+ 64C9F3EF2A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML.a in Frameworks */,
+ 64C9F3ED2A77D65B002C80AF /* libffi.a in Frameworks */,
5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -568,11 +568,11 @@
5C764E5C279C70B7000C6508 /* Libraries */ = {
isa = PBXGroup;
children = (
- 5CE381DC2A6C103D004FB9E1 /* libffi.a */,
- 5CE381DF2A6C103D004FB9E1 /* libgmp.a */,
- 5CE381DD2A6C103D004FB9E1 /* libgmpxx.a */,
- 5CE381DE2A6C103D004FB9E1 /* libHSsimplex-chat-5.2.0.4-HUgQMHMGu1K8FDeUwC5hCd-ghc8.10.7.a */,
- 5CE381E02A6C103D004FB9E1 /* libHSsimplex-chat-5.2.0.4-HUgQMHMGu1K8FDeUwC5hCd.a */,
+ 64C9F3E82A77D65B002C80AF /* libffi.a */,
+ 64C9F3EC2A77D65B002C80AF /* libgmp.a */,
+ 64C9F3EB2A77D65B002C80AF /* libgmpxx.a */,
+ 64C9F3E92A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML-ghc8.10.7.a */,
+ 64C9F3EA2A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML.a */,
);
path = Libraries;
sourceTree = "";
From bd4b445cbf12ce9b5e0b4cc3982e1900ed196c31 Mon Sep 17 00:00:00 2001
From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
Date: Mon, 31 Jul 2023 13:56:23 +0100
Subject: [PATCH 07/11] mobile: increase default network timeouts (#2801)
* ios: increase default network timeouts
* android: increase default timeouts
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
---
.../Views/UserSettings/AdvancedNetworkSettings.swift | 10 ++++++----
apps/ios/SimpleXChat/APITypes.swift | 12 ++++++------
.../main/java/chat/simplex/app/model/SimpleXAPI.kt | 12 ++++++------
.../views/usersettings/AdvancedNetworkSettings.kt | 10 ++++++----
4 files changed, 24 insertions(+), 20 deletions(-)
diff --git a/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift b/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift
index 821464be0f..554daaebb1 100644
--- a/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift
+++ b/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift
@@ -51,9 +51,9 @@ struct AdvancedNetworkSettings: View {
}
.disabled(currentNetCfg == NetCfg.proxyDefaults)
- timeoutSettingPicker("TCP connection timeout", selection: $netCfg.tcpConnectTimeout, values: [2_500000, 5_000000, 7_500000, 10_000000, 15_000000, 20_000000], label: secondsLabel)
- timeoutSettingPicker("Protocol timeout", selection: $netCfg.tcpTimeout, values: [1_500000, 3_000000, 5_000000, 7_000000, 10_000000, 15_000000], label: secondsLabel)
- timeoutSettingPicker("Protocol timeout per KB", selection: $netCfg.tcpTimeoutPerKb, values: [5_000, 10_000, 20_000, 40_000], label: secondsLabel)
+ timeoutSettingPicker("TCP connection timeout", selection: $netCfg.tcpConnectTimeout, values: [5_000000, 7_500000, 10_000000, 15_000000, 20_000000, 30_000000, 45_000000], label: secondsLabel)
+ timeoutSettingPicker("Protocol timeout", selection: $netCfg.tcpTimeout, values: [3_000000, 5_000000, 7_000000, 10_000000, 15_000000, 20_000000, 30_000000], label: secondsLabel)
+ timeoutSettingPicker("Protocol timeout per KB", selection: $netCfg.tcpTimeoutPerKb, values: [10_000, 20_000, 40_000, 75_000, 100_000], label: secondsLabel)
timeoutSettingPicker("PING interval", selection: $netCfg.smpPingInterval, values: [120_000000, 300_000000, 600_000000, 1200_000000, 2400_000000, 3600_000000], label: secondsLabel)
intSettingPicker("PING count", selection: $netCfg.smpPingCount, values: [1, 2, 3, 5, 8], label: "")
Toggle("Enable TCP keep-alive", isOn: $enableKeepAlive)
@@ -153,7 +153,9 @@ struct AdvancedNetworkSettings: View {
private func timeoutSettingPicker(_ title: LocalizedStringKey, selection: Binding, values: [Int], label: String) -> some View {
Picker(title, selection: selection) {
- ForEach(values, id: \.self) { value in
+ let v = selection.wrappedValue
+ let vs = values.contains(v) ? values : values + [v]
+ ForEach(vs, id: \.self) { value in
Text("\(String(format: "%g", (Double(value) / 1000000))) \(secondsLabel)")
}
}
diff --git a/apps/ios/SimpleXChat/APITypes.swift b/apps/ios/SimpleXChat/APITypes.swift
index ea16af7157..3bc918efe2 100644
--- a/apps/ios/SimpleXChat/APITypes.swift
+++ b/apps/ios/SimpleXChat/APITypes.swift
@@ -1052,9 +1052,9 @@ public struct NetCfg: Codable, Equatable {
public static let defaults: NetCfg = NetCfg(
socksProxy: nil,
sessionMode: TransportSessionMode.user,
- tcpConnectTimeout: 10_000_000,
- tcpTimeout: 7_000_000,
- tcpTimeoutPerKb: 10_000,
+ tcpConnectTimeout: 15_000_000,
+ tcpTimeout: 10_000_000,
+ tcpTimeoutPerKb: 20_000,
tcpKeepAlive: KeepAliveOpts.defaults,
smpPingInterval: 1200_000_000,
smpPingCount: 3,
@@ -1064,9 +1064,9 @@ public struct NetCfg: Codable, Equatable {
public static let proxyDefaults: NetCfg = NetCfg(
socksProxy: nil,
sessionMode: TransportSessionMode.user,
- tcpConnectTimeout: 20_000_000,
- tcpTimeout: 15_000_000,
- tcpTimeoutPerKb: 20_000,
+ tcpConnectTimeout: 30_000_000,
+ tcpTimeout: 20_000_000,
+ tcpTimeoutPerKb: 40_000,
tcpKeepAlive: KeepAliveOpts.defaults,
smpPingInterval: 1200_000_000,
smpPingCount: 3,
diff --git a/apps/multiplatform/android/src/main/java/chat/simplex/app/model/SimpleXAPI.kt b/apps/multiplatform/android/src/main/java/chat/simplex/app/model/SimpleXAPI.kt
index 281b630109..55084c34ba 100644
--- a/apps/multiplatform/android/src/main/java/chat/simplex/app/model/SimpleXAPI.kt
+++ b/apps/multiplatform/android/src/main/java/chat/simplex/app/model/SimpleXAPI.kt
@@ -2336,9 +2336,9 @@ data class NetCfg(
hostMode = HostMode.OnionViaSocks,
requiredHostMode = false,
sessionMode = TransportSessionMode.User,
- tcpConnectTimeout = 10_000_000,
- tcpTimeout = 7_000_000,
- tcpTimeoutPerKb = 10_000,
+ tcpConnectTimeout = 15_000_000,
+ tcpTimeout = 10_000_000,
+ tcpTimeoutPerKb = 20_000,
tcpKeepAlive = KeepAliveOpts.defaults,
smpPingInterval = 1200_000_000,
smpPingCount = 3
@@ -2350,9 +2350,9 @@ data class NetCfg(
hostMode = HostMode.OnionViaSocks,
requiredHostMode = false,
sessionMode = TransportSessionMode.User,
- tcpConnectTimeout = 20_000_000,
- tcpTimeout = 15_000_000,
- tcpTimeoutPerKb = 20_000,
+ tcpConnectTimeout = 30_000_000,
+ tcpTimeout = 20_000_000,
+ tcpTimeoutPerKb = 40_000,
tcpKeepAlive = KeepAliveOpts.defaults,
smpPingInterval = 1200_000_000,
smpPingCount = 3
diff --git a/apps/multiplatform/android/src/main/java/chat/simplex/app/views/usersettings/AdvancedNetworkSettings.kt b/apps/multiplatform/android/src/main/java/chat/simplex/app/views/usersettings/AdvancedNetworkSettings.kt
index 0c2341c69b..898f02e883 100644
--- a/apps/multiplatform/android/src/main/java/chat/simplex/app/views/usersettings/AdvancedNetworkSettings.kt
+++ b/apps/multiplatform/android/src/main/java/chat/simplex/app/views/usersettings/AdvancedNetworkSettings.kt
@@ -155,19 +155,19 @@ fun AdvancedNetworkSettingsView(chatModel: ChatModel) {
SectionItemView {
TimeoutSettingRow(
stringResource(MR.strings.network_option_tcp_connection_timeout), networkTCPConnectTimeout,
- listOf(2_500000, 5_000000, 7_500000, 10_000000, 15_000000, 20_000000), secondsLabel
+ listOf(5_000000, 7_500000, 10_000000, 15_000000, 20_000000, 30_000_000, 45_000_000), secondsLabel
)
}
SectionItemView {
TimeoutSettingRow(
stringResource(MR.strings.network_option_protocol_timeout), networkTCPTimeout,
- listOf(1_500000, 3_000000, 5_000000, 7_000000, 10_000000, 15_000000), secondsLabel
+ listOf(3_000000, 5_000000, 7_000000, 10_000000, 15_000000, 20_000_000, 30_000_000), secondsLabel
)
}
SectionItemView {
TimeoutSettingRow(
stringResource(MR.strings.network_option_protocol_timeout_per_kb), networkTCPTimeoutPerKb,
- listOf(5_000, 10_000, 20_000, 40_000), secondsLabel
+ listOf(10_000, 20_000, 40_000, 75_000, 100_000), secondsLabel
)
}
SectionItemView {
@@ -342,7 +342,9 @@ fun TimeoutSettingRow(title: String, selection: MutableState, values: List
DefaultExposedDropdownMenu(
expanded = expanded
) {
- values.forEach { selectionOption ->
+ val v = selection.value
+ val vs = if (values.contains(v)) values else values + v
+ vs.forEach { selectionOption ->
DropdownMenuItem(
onClick = {
selection.value = selectionOption
From 90be54ff8204b0b17d7df6495f64039a12b4c29a Mon Sep 17 00:00:00 2001
From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Date: Mon, 31 Jul 2023 17:00:28 +0400
Subject: [PATCH 08/11] core: 5.2.1.1
---
package.yaml | 2 +-
simplex-chat.cabal | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.yaml b/package.yaml
index c4ac644da3..45765ae8b0 100644
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
name: simplex-chat
-version: 5.2.1.0
+version: 5.2.1.1
#synopsis:
#description:
homepage: https://github.com/simplex-chat/simplex-chat#readme
diff --git a/simplex-chat.cabal b/simplex-chat.cabal
index c43adfb3e8..9299f21222 100644
--- a/simplex-chat.cabal
+++ b/simplex-chat.cabal
@@ -5,7 +5,7 @@ cabal-version: 1.12
-- see: https://github.com/sol/hpack
name: simplex-chat
-version: 5.2.1.0
+version: 5.2.1.1
category: Web, System, Services, Cryptography
homepage: https://github.com/simplex-chat/simplex-chat#readme
author: simplex.chat
From 1bdbea4f6d45043e5800735b0ada7f63c1197ab0 Mon Sep 17 00:00:00 2001
From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Date: Mon, 31 Jul 2023 17:23:16 +0400
Subject: [PATCH 09/11] ios: update library (5.2.1.1)
---
apps/ios/SimpleX.xcodeproj/project.pbxproj | 40 +++++++++++-----------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj
index b9dc533239..3bb9b80c6f 100644
--- a/apps/ios/SimpleX.xcodeproj/project.pbxproj
+++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj
@@ -171,15 +171,15 @@
64AA1C6C27F3537400AC7277 /* DeletedItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64AA1C6B27F3537400AC7277 /* DeletedItemView.swift */; };
64C06EB52A0A4A7C00792D4D /* ChatItemInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64C06EB42A0A4A7C00792D4D /* ChatItemInfoView.swift */; };
64C3B0212A0D359700E19930 /* CustomTimePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64C3B0202A0D359700E19930 /* CustomTimePicker.swift */; };
- 64C9F3ED2A77D65B002C80AF /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C9F3E82A77D65B002C80AF /* libffi.a */; };
- 64C9F3EE2A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML-ghc8.10.7.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C9F3E92A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML-ghc8.10.7.a */; };
- 64C9F3EF2A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C9F3EA2A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML.a */; };
- 64C9F3F02A77D65B002C80AF /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C9F3EB2A77D65B002C80AF /* libgmpxx.a */; };
- 64C9F3F12A77D65B002C80AF /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C9F3EC2A77D65B002C80AF /* libgmp.a */; };
64D0C2C029F9688300B38D5F /* UserAddressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D0C2BF29F9688300B38D5F /* UserAddressView.swift */; };
64D0C2C229FA57AB00B38D5F /* UserAddressLearnMore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D0C2C129FA57AB00B38D5F /* UserAddressLearnMore.swift */; };
64D0C2C629FAC1EC00B38D5F /* AddContactLearnMore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D0C2C529FAC1EC00B38D5F /* AddContactLearnMore.swift */; };
64E972072881BB22008DBC02 /* CIGroupInvitationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64E972062881BB22008DBC02 /* CIGroupInvitationView.swift */; };
+ 64EC94052A77EC4F0025EAA3 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64EC94002A77EC4F0025EAA3 /* libffi.a */; };
+ 64EC94062A77EC4F0025EAA3 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64EC94012A77EC4F0025EAA3 /* libgmpxx.a */; };
+ 64EC94072A77EC4F0025EAA3 /* libHSsimplex-chat-5.2.1.1-GvH62P2b8AGLxqODv4h64K-ghc8.10.7.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64EC94022A77EC4F0025EAA3 /* libHSsimplex-chat-5.2.1.1-GvH62P2b8AGLxqODv4h64K-ghc8.10.7.a */; };
+ 64EC94082A77EC4F0025EAA3 /* libHSsimplex-chat-5.2.1.1-GvH62P2b8AGLxqODv4h64K.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64EC94032A77EC4F0025EAA3 /* libHSsimplex-chat-5.2.1.1-GvH62P2b8AGLxqODv4h64K.a */; };
+ 64EC94092A77EC4F0025EAA3 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64EC94042A77EC4F0025EAA3 /* libgmp.a */; };
64F1CC3B28B39D8600CD1FB1 /* IncognitoHelp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64F1CC3A28B39D8600CD1FB1 /* IncognitoHelp.swift */; };
D7197A1829AE89660055C05A /* WebRTC in Frameworks */ = {isa = PBXBuildFile; productRef = D7197A1729AE89660055C05A /* WebRTC */; };
D72A9088294BD7A70047C86D /* NativeTextEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D72A9087294BD7A70047C86D /* NativeTextEditor.swift */; };
@@ -449,16 +449,16 @@
64AA1C6B27F3537400AC7277 /* DeletedItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeletedItemView.swift; sourceTree = ""; };
64C06EB42A0A4A7C00792D4D /* ChatItemInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemInfoView.swift; sourceTree = ""; };
64C3B0202A0D359700E19930 /* CustomTimePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomTimePicker.swift; sourceTree = ""; };
- 64C9F3E82A77D65B002C80AF /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; };
- 64C9F3E92A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML-ghc8.10.7.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML-ghc8.10.7.a"; sourceTree = ""; };
- 64C9F3EA2A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML.a"; sourceTree = ""; };
- 64C9F3EB2A77D65B002C80AF /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; };
- 64C9F3EC2A77D65B002C80AF /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; };
64D0C2BF29F9688300B38D5F /* UserAddressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAddressView.swift; sourceTree = ""; };
64D0C2C129FA57AB00B38D5F /* UserAddressLearnMore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAddressLearnMore.swift; sourceTree = ""; };
64D0C2C529FAC1EC00B38D5F /* AddContactLearnMore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddContactLearnMore.swift; sourceTree = ""; };
64DAE1502809D9F5000DA960 /* FileUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileUtils.swift; sourceTree = ""; };
64E972062881BB22008DBC02 /* CIGroupInvitationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIGroupInvitationView.swift; sourceTree = ""; };
+ 64EC94002A77EC4F0025EAA3 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; };
+ 64EC94012A77EC4F0025EAA3 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; };
+ 64EC94022A77EC4F0025EAA3 /* libHSsimplex-chat-5.2.1.1-GvH62P2b8AGLxqODv4h64K-ghc8.10.7.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.2.1.1-GvH62P2b8AGLxqODv4h64K-ghc8.10.7.a"; sourceTree = ""; };
+ 64EC94032A77EC4F0025EAA3 /* libHSsimplex-chat-5.2.1.1-GvH62P2b8AGLxqODv4h64K.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.2.1.1-GvH62P2b8AGLxqODv4h64K.a"; sourceTree = ""; };
+ 64EC94042A77EC4F0025EAA3 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; };
64F1CC3A28B39D8600CD1FB1 /* IncognitoHelp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IncognitoHelp.swift; sourceTree = ""; };
D72A9087294BD7A70047C86D /* NativeTextEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NativeTextEditor.swift; sourceTree = ""; };
D741547729AF89AF0022400A /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; };
@@ -501,12 +501,12 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 64C9F3F02A77D65B002C80AF /* libgmpxx.a in Frameworks */,
- 64C9F3F12A77D65B002C80AF /* libgmp.a in Frameworks */,
- 64C9F3EE2A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML-ghc8.10.7.a in Frameworks */,
+ 64EC94072A77EC4F0025EAA3 /* libHSsimplex-chat-5.2.1.1-GvH62P2b8AGLxqODv4h64K-ghc8.10.7.a in Frameworks */,
+ 64EC94092A77EC4F0025EAA3 /* libgmp.a in Frameworks */,
+ 64EC94062A77EC4F0025EAA3 /* libgmpxx.a in Frameworks */,
5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */,
- 64C9F3EF2A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML.a in Frameworks */,
- 64C9F3ED2A77D65B002C80AF /* libffi.a in Frameworks */,
+ 64EC94082A77EC4F0025EAA3 /* libHSsimplex-chat-5.2.1.1-GvH62P2b8AGLxqODv4h64K.a in Frameworks */,
+ 64EC94052A77EC4F0025EAA3 /* libffi.a in Frameworks */,
5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -568,11 +568,11 @@
5C764E5C279C70B7000C6508 /* Libraries */ = {
isa = PBXGroup;
children = (
- 64C9F3E82A77D65B002C80AF /* libffi.a */,
- 64C9F3EC2A77D65B002C80AF /* libgmp.a */,
- 64C9F3EB2A77D65B002C80AF /* libgmpxx.a */,
- 64C9F3E92A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML-ghc8.10.7.a */,
- 64C9F3EA2A77D65B002C80AF /* libHSsimplex-chat-5.2.1.0-8zKKBCLzPPbLX7Ox8lexML.a */,
+ 64EC94002A77EC4F0025EAA3 /* libffi.a */,
+ 64EC94042A77EC4F0025EAA3 /* libgmp.a */,
+ 64EC94012A77EC4F0025EAA3 /* libgmpxx.a */,
+ 64EC94022A77EC4F0025EAA3 /* libHSsimplex-chat-5.2.1.1-GvH62P2b8AGLxqODv4h64K-ghc8.10.7.a */,
+ 64EC94032A77EC4F0025EAA3 /* libHSsimplex-chat-5.2.1.1-GvH62P2b8AGLxqODv4h64K.a */,
);
path = Libraries;
sourceTree = "";
From dd51f032d2252f013f0335903435d2e0b30ca740 Mon Sep 17 00:00:00 2001
From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Date: Mon, 31 Jul 2023 17:44:47 +0400
Subject: [PATCH 10/11] ios: 5.2.1 (162)
---
apps/ios/SimpleX.xcodeproj/project.pbxproj | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj
index 3bb9b80c6f..d6bb4120aa 100644
--- a/apps/ios/SimpleX.xcodeproj/project.pbxproj
+++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj
@@ -1478,7 +1478,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 160;
+ CURRENT_PROJECT_VERSION = 162;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
ENABLE_PREVIEWS = YES;
@@ -1499,7 +1499,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- MARKETING_VERSION = 5.2;
+ MARKETING_VERSION = 5.2.1;
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app;
PRODUCT_NAME = SimpleX;
SDKROOT = iphoneos;
@@ -1520,7 +1520,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 160;
+ CURRENT_PROJECT_VERSION = 162;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
ENABLE_PREVIEWS = YES;
@@ -1541,7 +1541,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- MARKETING_VERSION = 5.2;
+ MARKETING_VERSION = 5.2.1;
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app;
PRODUCT_NAME = SimpleX;
SDKROOT = iphoneos;
@@ -1600,7 +1600,7 @@
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 160;
+ CURRENT_PROJECT_VERSION = 162;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
GENERATE_INFOPLIST_FILE = YES;
@@ -1613,7 +1613,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
- MARKETING_VERSION = 5.2;
+ MARKETING_VERSION = 5.2.1;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -1632,7 +1632,7 @@
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 160;
+ CURRENT_PROJECT_VERSION = 162;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
GENERATE_INFOPLIST_FILE = YES;
@@ -1645,7 +1645,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
- MARKETING_VERSION = 5.2;
+ MARKETING_VERSION = 5.2.1;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
From 920b56e3d8f55c7a1f0ad810dd044a1ff20b10e7 Mon Sep 17 00:00:00 2001
From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Date: Mon, 31 Jul 2023 18:01:25 +0400
Subject: [PATCH 11/11] android: 5.2.1 (139)
---
apps/multiplatform/gradle.properties | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/apps/multiplatform/gradle.properties b/apps/multiplatform/gradle.properties
index 77cbc79b93..4381a9134d 100644
--- a/apps/multiplatform/gradle.properties
+++ b/apps/multiplatform/gradle.properties
@@ -25,8 +25,8 @@ android.nonTransitiveRClass=true
android.enableJetifier=true
kotlin.mpp.androidSourceSetLayoutVersion=2
-android.version_name=5.2
-android.version_code=134
+android.version_name=5.2.1
+android.version_code=139
desktop.version_name=1.0